반응형

정말 감사합니다.
쉽게 해결될 듯도 합니다.

>안녕하세요?
>oracle 8i이상버전에서는 지원가능합니다.
>datafile을 copy하고 , tablespace의 metadata를 export받아서 다른서버에 import하면 됩니다.
>
>방법
>
>1. 제약사항
>*O/S 종류가 동일해야 한다.
>*nls_characterset, nls_ncharcaterset이 동일해야 한다.
>*db_block_size가 동일해야 한다.
>*transport할려는 tablespaces에 object를 만든 user는 반드시 다른 서버에 존재해야 한다.
>*transport할려는 tablespace set은 self-contained tablespace이여야 한다.
>*sys user로 exp/imp한다.
>(tablespace ts01에 연관된 object가 ts02에도 존재 한다면 두개의 tablespace를 transport해야 한다.
>LOB data, partitioned table, index, table등의 기타 object들은 transport할려는 tablespace set에 포함되어야 한다. 따라서 이것을 옮기기전에 옮길려구 하는 테이블이 self-contained tablespace인지를 파악후에 작업하는것이 필요하다.)
>
>2. self-containd tablespace인 확인방법
>declare
>begin
>dbms_tts.transport_set_check('TS01,TS02',TRUE);
>end;
>/
>실행후
>SELECT * FROM TRANSPORT_SET_VIOLATIONS;
>뷰를 확인해서 선택된 것이 없다면 self-contained tablespace들이다.
>TS01,TS02 : transport할려는 tablespace들이다.
>TRUE : referencial constraint에 대해 self-contained 여부를 check해준다
>
>2. source 서버에서의 작업
>* 옮기려는 tablespace들에 대해 read only로 만든다.(파일 copy시 변경작업이 일어 나지 못하도록 하기위해서)
>alter tablespace ts01 read only;
>alter tablespace ts02 read only;
>
>*tablespaces에 속해 있는 모든 datafile을 대상 서버로 copy한다.(ts01.dbf, ts02.dbf)
>
>*console에서 tablespace의 metadata를 export받는다.
>exp 'sys/oracle as sysdba' file=transtest10.dmp transport_tablespace=y tablespaces=ts01,ts02(windows)
>
>exp 'sys/oracle as sysdba' file=transtest10.dmp transport_tablespace=y tablespaces=ts01,ts02(unix : 816 이상에서)
>
>* export받은 metadata(transtest10.dmp )를 대상서버로 copy한다.
>
>3. 대상 서버에서의 작업
>* transport tablespace에 object를 만든 user에 대해 대상서버에도 user를 생성해준다.
>*console에서 import한다.
>imp 'sys/oracle as sysdba' file=transtest10.dmp transport_tablespace=y
>datafiles=/경로/ts01.dbf,/경로/ts02.dbf (windows)
>
>imp 'sys/oracle as sysdba' file=transtest10.dmp transport_tablespace=y
>datafiles=/경로/ts01.dbf,/경로/ts02.dbf (unix : 816 이상에서)
>
>4. source 서버에서 기존의 tablespaces들을 이용하려면 read write로 바꿔준다.
>alter tablespace tp01 read write;
>alter tablespace tp02 read write;
>
>5. source 서버에서 기존의 tablespaces들이 필요없을 경우 삭제한다.
>alter tablespace tp01 including contents;-->datafile을 console에서 삭제한다.(9i이전 버전)
>alter tablespace tp02 including contents and datafiles;(9i 이상에서 tablespace 및 datafile도 자동으로 삭제한다.)
>
>
>수고하세요
>Good Job
>-----------------------------------------------------------------
>
>
>
>>현재 사용하고 있는 서버에서 한개의 테이블스페이스만 다른 서버로 옮기려고합니다.
>>대상 TableSpace가 워낙 자료가 많아 Export를 받기에는 역부족이고 (시간상으로)
>>해서 DataFile을 이용하여 옮길수 있는 방법이 없는지 문의를 드립니다.
>

출처 : http://www.koug.net/xe/4116
반응형
반응형

테이블 스페이스 생성

SQL> CREATE TABLESPACE XINET_DATA
    DATAFILE /경로/xinet_01.dbf'
    SIZE 100M
    AUTOEXTEND ON
    NEXT 30M
    SEGMENT SPACE MANAGEMENT AUTO;

SEGMENT SPACE MANAGEMENT AUTO 설정을 해야 SHRINK를 나중에 사용 가능 ~~

 

테이블 스페이스 변경

ALTER USER XINET DEFAULT TABLESPACE XINET_DATA;

사용 테이블 스페이스 조회

SELECT username, default_tablespace, temporary_tablespace FROM DBA_USERS;

반응형
반응형

- 테이블 스페이스 별 공간 조회

SELECT
     a.tablespace_name, ROUND(SUM(a.total)/1024/1024, 2) "Total(M)",
     ROUND((SUM(a.total) - SUM(NVL(b.free, 0)))/1024/1024, 2) "Used(M)",
     ROUND(SUM(NVL(b.free, 0))/1024/1024,2) "Free(M)",
     ROUND((SUM(a.total) - SUM(NVL(b.free, 0))) / SUM(a.total) * 100 , 2) "Used(%)"
FROM
     (
       SELECT d.tablespace_name, d.file_id, sum(d.bytes) total
       FROM dba_data_files d
       GROUP BY d.tablespace_name, d.file_id
      ) a,
     (
       SELECT f.file_id, sum(f.bytes) free
       FROM dba_free_space f
       GROUP BY f.file_id
     ) b
WHERE
     a.file_id = b.file_id(+)
GROUP BY a.tablespace_name;

 

- 물리적 위치 조회

SELECT
          TABLESPACE_NAME,FILE_NAME
FROM
          DBA_DATA_FILES;


 

반응형

'Database > ORACLE' 카테고리의 다른 글

SQLPLUS 환경에서 이쁘게 출력하기 ~  (0) 2009.03.07
UNDO TABLESPACE SIZE  (0) 2009.03.07
SQLPLUS 환경 설정 하기  (0) 2009.03.07
ORA-01659 해결방법  (1) 2009.03.07
ORA-12541 오류 대처 방법  (0) 2009.03.07
반응형


IMP-00003: ORACLE 오류 1659 가 발생했습니다.
ORA-01659: 146 을(를) 넘어서 테이블스페이스 USERS에 MINEXTENTS를 할당할 수 없습니다.


=====  상    황  =====

발생 : 대용량의 오라클백업파일(10기가이상)을 복구(import)하는 중 위와같은 에러가 발생하였다

오라클버젼 : oracle9i

OS : window xp pro sp2

작업자 : 오라클 만진지 3주 접어들어가는 쭈우...


===== 해 결 방 법 =====

1. oracleclub.com에 검색해도 별다른것을 찾지 못함..

2. - Oracle Enterprise Manager Console > 데이터베이스 > 저장영역 > 테이블스페이드

    - USERS 더블클릭!

    - USERS01.DBF의 저장영역이 ' 값 : 32767MB'로 설정되어있음

    - 해당 파일은 이미 32기가가 풀로 가득 차 버린 상태...

3. 저 저장영역을 '무제한'으로 풀어버림

ALTER DATABASE
DATAFILE 'D:\ORADATA\CHINA\USERS01.DBF' AUTOEXTEND
ON MAXSIZE UNLIMITED
 

4. 무제한으로 풀은 후 다시 봐도 값이 32767MB임... 

5. 그럼 숫자를 강제로 64기가로 조절해버림

 ALTER DATABASE
DATAFILE 'D:\ORADATA\CHINA\USERS01.DBF' AUTOEXTEND
ON MAXSIZE  64767M

 

5. 에러발생

ORA-03206: maximum file size of (8290176) blocks in AUTOEXTEND clause is out of range

ORA-03206: AUTOEXTEN절에 (8290176)블록의 최대 파일 크기가 범위를 넘었습니다

6. 아..오라클의 데이터 파일은 32기가가 안넘나보군..


7. 데이터파일을 하나 더 등록해줌

   USERS01.DBF는 32기가로 가득 차 있고 USERS02.DBF파일을 하나 더 만들어줌

 ALTER TABLESPACE "USERS"
    ADD
    DATAFILE 'D:\ORADATA\CHINA\USERS02.DBF' SIZE 5M AUTOEXTEND
    ON MAXSIZE UNLIMITED


8. 완료..

[출처] 오라클 : ORA-01659 에러|작성자 쭈우

* 여담으로...

일반적으로 tablespace에 붙이는 각 DBF 파일의 크기는 약 20GB정도가 적당한 것 같다....

또한 인덱스 공간은 약 10GB으로 쪼개는 것이 적당하다고 생각한다.

이유는 너무 작으면 연속된 데이터를 쓰는데 부적합하며

너무 크다면 관리하기가 어렵고, i/o 속도 저하가 발생한다 (작은것에 비례하여 물론 너무 작다면 마찬가지다...)

반응형

'Database > ORACLE' 카테고리의 다른 글

테이블 스페이스 조회 쿼리  (0) 2009.03.07
SQLPLUS 환경 설정 하기  (0) 2009.03.07
ORA-12541 오류 대처 방법  (0) 2009.03.07
오라클 IMP 사용방법  (0) 2009.03.07
오라클 EXP 사용하기  (0) 2009.03.07

+ Recent posts