생계/Oracle2017. 11. 6. 13:32

오라클 DB 를 운영시에 datafile 의 autoextend 속성을 on 으로 운영하면, 데이터 파일이

저절로 파일이 증가해서 따로 신경쓰지 않아도 되는 운영상의 이점이 있다. 

반면, 신경을 안쓰다보니, 필요이상으로 파일이 커지는 일도 종종 발생한다. 

그럴때는 datafile 을 resize 해보자.

 

● Datafile resize

 

### 1. 데이터 datafile  ###

   테이블 : alter table move -> resize

  인덱스 : alter index move, 재생성 -> resize

 

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/ts_test_dat.277.921462245' RESIZE 5G;

ORA-03297: file contains used data beyond requested RESIZE value

=> datafile resize 가 실행되지 않는다면 move tablespace 명령으로 옮기자.

 

ALTER TABLE test.PART_TAB MOVE PARTITION P_201710 TABLESPACE TS_TEST_IMSI;

ALTER INDEX testdb.PK_PART_TAB rebuild TABLESPACE TS_TEST_IMSI;

ERROR at line 1:

ORA-14086: a partitioned index may not be rebuilt as a whole

local partitioned index 는 그냥 재생성 하자. move tablespace 가 안된다. 

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/ts_test_dat.277.921462245' RESIZE 5G;

다시 해보면 된다. 

 

### 2. Temp datafile  ###

 

  TEMP 는 resize 가 안된다.  그냥 교체 하자. 

SQL> select FILE_NAME, TABLESPACE_NAME, TRUNC(BYTES/1024/1024) MB, STATUS  from DBA_TEMP_FILES;

FILE_NAME TABLESPACE_NAME   MB STATUS

---------------------------------------- ---------------------------------------- ---------- -------

+DATA/testdb/tempfile/temp.263.920253251 TEMP        21410 ONLINE

 

SQL> ALTER DATABASE DATAFILE '+DATA/testdb/tempfile/temp.263.920253251' RESIZE 10G;

ALTER DATABASE DATAFILE '+DATA/testdb/tempfile/temp.263.920253251' RESIZE 10G

*

ERROR at line 1:

ORA-01516: nonexistent log file, data file, or temporary file "+DATA/testdb/tempfile/temp.263.920253251"

 

CREATE TEMPORARY TABLESPACE TS_TEMP;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TS_TEMP;

DROP TABLESPACE TEMP;

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '+DATA' SIZE 10G;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

DROP TABLESPACE TEMP TS_TEMP;

ALTER DATABASE TEMPFILE'+DATA/testdb/tempfile/temp.xxx.xxxxxxx' AUTOEXTEND OFF;   

** db가 생성해주는 일련번호를 확인하자.

 

### 3. Undo datafile  ###

 

   resize 가능하다.

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/undotbs1.262.920253249' RESIZE 10G;    

ALTER DATABASE DATAFILE '+DATA/testdb/datafile/undotbs1.262.920253249' AUTOEXTEND OFF;   

 

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle 12c silent mode 설치  (0) 2017.12.13
스키마모드 datapump 테스트  (0) 2017.12.06
오라클 스크립트 생성 SQL  (0) 2017.09.13
ORACLE 파티션테이블  (0) 2017.09.10
오라클 autotrace 옵션  (0) 2017.09.08
Posted by 돌고래트레이너