실수로 dbf 파일을 rm -rf 으로 먼저 삭제하고 drop tablespace 하면 셧다운이 안된다.

1. 데이터베이스 셧다운 : shutdown immediate;
2. 데이터베이스 마운트 : startup mount;
3. 테이블스페이스 오프라인 드롭을 하자
    alter database datafile '[file path]' offline drop;
4. 데이터베이스 오픈 : alter database open;

이렇게 한 다음에 논리적으로 테이블스페이스를 삭제하면 된다.
drop tablespace [테이블스페이스명] including contents and datafiles;



http://mo0721.tistory.com/81 에서 퍼옴...
Posted by 배터리

SELECT status,enabled, t.name,d.name
     FROM  V$DATAFILE d, V$TABLESPACE t
     WHERE t.ts#=d.ts#;
=> 현재 dbf 파일과 테이블 스페이스명의 위치를 확인

 select name,enabled from v$datafile;
=> dbf 파일들 위치 확인

select distinct owner from dba_segments where tablespace_name='TS_XEP_D'
=> 테이블 스페이스 명으로 소유자 계정을 확인

drop tablespace TSCAL_T including contents AND DATAFILES;
drop tablespace TSCAL_I including contents AND DATAFILES;
drop tablespace TS_PORTAL_I including contents AND DATAFILES;

drop tablespace HDATA_3_WEB including contents AND DATAFILES;
drop tablespace HDATA_4_WEB including contents AND DATAFILES;
drop tablespace HINDEX_1 including contents AND DATAFILES;
drop tablespace HINDEX_2_WEB including contents AND DATAFILES;
drop tablespace HINDEX_3_WEB including contents AND DATAFILES;

=> TSCAL_T 의 테이블 스페이스 및 실제 물리 dbf 파일도 같이 다 삭제
 
DROP USER INTRAG7 CASCADE;
=> intrag7 계정을 삭제


 



drop tablespace 테이블스페이스명 including contents cascade constaints;

이후

실제 dbf 파일을 rm 또는 탐색기에서 삭제한다

Posted by 배터리
http://cspark.egloos.com/2132931 에서 퍼옴..

오라클9i 기준이다.
datafile인 dbf파일이 해당용량을 넘어 버려서 새그멘트가 확장할수 없는 수준까지 도달해버렸다. -_-
(AUTOEXTEND  OFF 모드) ..dbf파일의 용량을 다시 조정하자..

- dbf파일은 /oradata/test.dbf  이라 가정.
우선 오라클어드민으로 접근후 500M로 사이즈를 조정하자
   SQL> alter database datafile '/oradata/test.dbf'  resize 500M;    
   Database altered.

위의 경우는 파일시스템이 넉넉할때 할수있다.. 넉넉하지 않다면 다른 dbf파일중에 쓸데없이 용량만 먹는녀석은 줄이고 정작 필요한 녀석은 몸집을 키워주자.

1) 우선 현재 DB의 블럭사이즈를 확인하자.
                SQL > show parameter db_block_size;

                VALUE 값이 현재 DB의 블럭사이즈 되시겟다.

  2) 쓸모 없는 dbf파일의 실제 사용량과 전체사이즈를 구해보자. ( TableSpace가 'temp' 라 가정)
   SQL> SELECT file_name, BYTES AS "FULL_SIZE",
                        (SELECT (MAX (block_id) * 8192 + MAX (blocks * 8192))
                            FROM dba_extents 
                          WHERE file_id = a.file_id) AS "use_size"
               FROM dba_data_files a
             WHERE tablespace_name = 'temp'

  -  8192 수치는 위에서 구한 DB 블럭사이즈이다.  결과는 아래와 같다.
      FILE_NAME                  FULL_SIZE     USE_SIZE      
     /oradata/temp.dbf          419430400        229457920       
   
  3) temp.dbf가 사용하고 있는 용량은 229MB정도인데 실제 기본값으로 잡아준 값이 419MB이므로 약 190메가 가량의 용량이 낭비되고 있다는걸 확인할수 있다.
    낭비되는 용량은 줄이고 새로 추가될 DBF파일의 용량을 늘려주도록하자.

-----------------------------------------------------------------
추가로
DB tablespace 별 용량 확인 sql

select substr(a.tablespace_name,1,30) tablespace,
round(sum(a.total1)/1024/1024,1) "TotalMB",
round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "USEDMB",
round(sum(a.sum1)/1024/1024,1) "FreeMB",
round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "USED%"
from
(select tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
from dba_free_space
group by tablespace_name
union
select tablespace_name,sum(bytes) total1,0,0,0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name
order by tablespace;
Posted by 배터리

select distinct owner from dba_segments where tablespace_name='EXAMPLE';

OWNER
------------------------------
G7TW
GW653
REALSITE

이렇게 하면 example 테이블스페이스를 사용하는 유저가 나옵니다.
삭제 가능한 테스트 유저인지를 확인하고 유저를 drop 시킵니다.
여기서 꼭 삭제가능한 유저인지를 확인하세요.


가령 ORA-01940: 현재 접속되어 있는 사용자는 삭제할 수 없습니다 (혹여 다른 DB툴을 이용해 접속한 경우 삭제되지 않는다)

계정 삭제 시 위와 같은 메시지를 만났을 땐 아래 방법으로 접속된 계정을 강제로 끊을 수 있습니다.

--------------------------------------------------------------------------------------------------------
'TEST' 계정을 강제로 끊고 싶을 때

1. system 계정으로 로그인 한다.

2. 아래 명령으로 'TEST' 계정의 세션ID와 시리얼 번호를 확인한다.
SELECT SID, SERIAL#, USERNAME FROM V$SESSION WHERE SCHEMANAME = 'TEST';

SID              SERIAL#             USERNAME
---              --------             ------------
20                1929                   TEST

3. 위에서 조회된 정보와 를 활용해 'TEST' 계정을 강제로 끊는다.
    ALTER SYSTEM KILL SESSION 명령을 활용한다.

    ALTER SYSTEM KILL SESSION '20, 1929';

drop user 유저명 cascade;
(유저의 모든 객체를 삭제)





데이타파일 정보와 테이블스페이스 정보 조회
V$DATAFILE와 V$DATAFILE 이용

SQL> CONN / AS SYSDBA
SQL> SELECT status,enabled, t.name,d.name
     FROM  V$DATAFILE d, V$TABLESPACE t
     WHERE t.ts#=d.ts#;
 
STATUS   ENABLED     NAME            NAME
-------  ----------  ------------  -------------------------------------
SYSTEM   READ WRITE  SYSTEM        C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF
ONLINE   READ WRITE  RBS           C:\ORACLE\ORADATA\ORACLE\RBS01.DBF
ONLINE   READ WRITE  USERS         C:\ORACLE\ORADATA\ORACLE\USERS01.DBF
ONLINE   READ WRITE  TEMP          C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF
ONLINE   READ WRITE  TOOLS         C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF
ONLINE   READ WRITE  INDX          C:\ORACLE\ORADATA\ORACLE\INDX01.DBF
ONLINE   READ WRITE  DRSYS         C:\ORACLE\ORADATA\ORACLE\DR01.DBF
ONLINE   READ WRITE  STORM         C:\ORACLE\ORADATA\ORACLE\STORM.DBF

   
테이블스페이스의 데이터파일과 테이블스페이스 크기 확인
DBA_DATA_FILES 데이터 사전을 이용 하면 됩니다.

 
SQL> SELECT file_name, tablespace_name, bytes, status
     FROM  DBA_DATA_FILES;
 
FILE_NAME                              TABLESPACE_NAME  BYTES        STATUS
-------------------------------------  ---------------  -----------  ------------
C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF  SYSTEM           248250368    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\RBS01.DBF     RBS              545259520    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\USERS01.DBF   USERS            113246208    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF    TEMP              75497472    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF   TOOLS             12582912    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\INDX01.DBF    INDX              60817408    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\DR01.DBF      DRSYS             92274688    AVAILABLE


-- FILE_NAME : DATAFILE의 물리적인 위치와 파일명
-- TABLESPACE_NAME : 테이블스페이스의 이름
-- BYTES : 테이블스페이스의 크기
-- STATUS : 테이블스페이스의 이용가능 여부

Posted by 배터리


리눅스에서 시간이 리얼 타임과 다를 경우 동기화 하는 방법임

*추가 AIX 장비에서 시간동기화 하기

# setclock time.bora.net

와 같이 setclock 를 이용해야함

간혹 rdate -s time.bora.net 명령어를 넣었을때 아래와 같이 호스트를 인식할 수 없다면 ip로 직접 찍어주자
rdate: Unknown host time.bora.net: Unknown host

=> rdate -s 203.248.240.140 && hwclock -w
Posted by 배터리

이번엔, 오라클 sqlplus를 원격에서 접속하는 방법을 소개하겠습니다.

자신의 컴퓨터에 서버가 있다면 접속방법은 다음과 같겠죠
c:\> sqlplus 아이디/암호

외부의 DB서버에 접속하기 위해서는 해당 DB서버의 위치를 확인할 수 있어야 하는데,
오라클에서는 다음과 같은 방법으로 세팅을 해줍니다.

1. names 설정파일 찾기

위치 ;
오라클설치폴더/product/10.2.0\db_1\NETWORK\ADMIN
파일이름 ;
tnsnames.ora

설정 파일 찾기


2. 설정 파일 열기
이 설정 파일을 notepad등 텍스트 파일 수정 프로그램으로 엽니다.

설정 파일 열기

3. 설정 파일 수정
여기에 다음과 같은 내용을 추가합니다.

맨앞의 200SERVER 부분은 앞으로 DB서버를 부를 별칭입니다.
원하는 대로 수정해도 됩니다
HOST 에는 DB서버의 아이피 주소를 적어주시면 되며,
PORT번호나 SERVICE_NAME이 기본 세팅과 다를 경우,
자신의 세팅에 맞게 변경해줘야 합니다

설정파일 내용 수정



4. 접속방법

c:\> sqlplus 아이디/암호@200SERVER    입니다.

아이디, 암호, 서버네임은 사용자 설정에 맞게 변경해주시면 됩니다.


http://afresh.tistory.com/trackback/15 에서 가져옴~
Posted by 배터리
핸디소프트/일일일~2009. 5. 27. 20:29
오라클 사용자를 위한 팁
 
오라클은 트레이스 파일, 로그 파일, 덤프 파일 등의 다양한 파일을 생성, 관리합니다. 이 파일을 정기적으로 삭제하지 않는 경우 파일 시스템의 용량 부족으로 데이터베이스 실행이 중단될 수도 있습니다.
이런 문제를 예방하기 위해, "trc" 확장자를 갖는 파일을 검색한 후 3 일 이상 경과한 파일을 삭제하도록 명령할 수 있습니다. 이를 위한 명령이 아래와 같습니다.
find . -name "*.trc" -ctime +3 -exec rm {} \;
3일 이상 경과한 파일을 강제로 삭제하려면 -f 옵션을 사용합니다.
		
find . -name "*.trc" -ctime +3 -exec rm -f {} \;
아래 명령은 파일의 목록만을 표시합니다.
find . -name "*.trc" -ctime +3 -exec ls -l {} \;
오라클 계정이 100% full 상태라서 지울 파일을 검색하려고 위 명령어를 했더니
카운팅이 안될정도로 주루륵;;;;



저걸로 용량 10% 확보;;;

 

출처: http://www.oracle.com/technology/global/kr/pub/articles/advanced-linux-commands/part2.html

Posted by 배터리
핸디소프트/일일일~2009. 5. 27. 15:52

grep 'pattern' *

나는 jhoms/ 아래 내용중에서 "PHOENIX_HOME" 을 가지는 파일들을 뽑았다

명령어는

grep -R PHOENIX_HOME *
Posted by 배터리