반응형

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

>안녕하세요?
>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
반응형
반응형

sysaux 테이블스페이스는 오라클 10g 버전을 통하여 새롭게 소개되는 테이블스페이스로서 기존의 시스템 테이블스페이스에 저장되어 관리되어 오던 여러 요소들 가운데, 일부 또는 별도의 테이블스페이스의 생성을 요구하는 이들 요소를 한 공간에 저장, 관리하는 기능을 제공하게 될 시스템 관리 테이블스페이스이다.

sysaux 테이블스페이스에 저장, 관리되어지는 기능은 다음과 같다.

STATSPACK statspack 패키지, 정보저장공간 perstat
LOGMGR Logminer 정보저장공간 system
STREAMS 오라클 스트림 정보저장공간 sys
SMC 서버관리 요소 저장공간 sys
ODM 오라클 데이터 mining 정보 저장공간 dmsys
WM workspace manager 정보 저장공간 wmsys
ORDIM 오라클 인터미니어 ORDPLUG 요소 정보 저장공간 ordsys
TEXT 오라클 text 정보 저장공간 ctxsys
ULTRASEARCH 오라클 ultrasearch 정보 저장공간 wksys
JOB_SCHEDULER 오라클 job scheduler 정보 저장공간 sys
XSOQHIST OLAP API 테이블 정보 저장공간 sys
LOGSTDBY logical standby system
EM enterprise manager 정보 저장공간 sysman

기본적으로 오라클을 설치하면 sysaux 테이블스페이스가 설정되지만, 사용자가 다음과 같이 임의로 데이터 파일의 위치와 이름을 지정하여 만들 수도 있다.

SQL> crerate database jo  2  datafile '/export/home0/oracle/app/oracle/oradata/orcl/jo_system.dbf' size 500M 3  sysaux datafile '/export/home0/oracle/app/oracle/oradata/orcl/jo_sysaux.dbf' size 200M 4  default temporary tablespace temp_ts 5  tempfile '/export/home0/oracle/app/oracle/oradata/orcl/jo_temp.dbf' size 50M 6  undo tablespace undo 7  datafile '/export/home0/oracle/app/oracle/oradata/orcl/jo_undo.dbf' size 100M; 그리고 다음과 같이 이미 생성된 sysaux 테이블스페이스의 공간을 인위적으로 조절할 수 도 있다. SQL> alter tablespace sysaux add datafile 2  '/export/home0/oracle/app/oracle/oradata/orcl/jo_sysaux02.dbf' size 200M; sysaux 테이블스페이스는 다음과 같은 점에 유의해야 한다.

. 일단 데이터베이스를 시작하게 되면 sysaux 테이블스페이스를 제거할 수 없다.
. sysaux 테이블스페이스는 오라클 이동 가능 테이블스페이스(transportable tablespace) 기능을 사용하여 다른 데이터베이스에 이동할 수 없다.
. 데이터베이스가 시작되어진 상태에서 sysaux 테이블스페이스의 이름을 변경(rename)할 수 없다.
. 오라클 10g 버전으로 migration하는 경우 sysaux 테이블스페이스를 생성해 줄 수 있는데 이때 반드시 데이터베이스는 migrate 모드에서 오픈 되어져 있어야 한다.
. sysaux 테이블스페이스에 손상이 발생한 경우 전체 시스템에는 별 영향을 주지 않는다.
단, sysaux 테이블스페이스에 저장, 관리되고 있는 아큐펀트에 대한 기능을 사용할 수 없다.

SQL>  select occupant_name,schema_name from v$sysaux_occupants; 
 
OCCUPANT_NAME      SCHEMA_NAME
------------------ -----------------------
LOGMNR             SYSTEM
LOGSTDBY           SYSTEM
STREAMS            SYS
XDB                XDB
AO                 SYS
XSOQHIST           SYS
XSAMD              OLAPSYS
SM/AWR             SYS
SM/ADVISOR         SYS
SM/OPTSTAT         SYS
SM/OTHER           SYS
STATSPACK          PERFSTAT
ODM                DMSYS
SDO                MDSYS
WM                 WMSYS
ORDIM              ORDSYS
ORDIM/PLUGINS      ORDPLUGINS
ORDIM/SQLMM        SI_INFORMTN_SCHEMA
EM                 SYSMAN
TEXT               CTXSYS
ULTRASEARCH        WKSYS
JOB_SCHEDULER      SYS
 
22 rows selected.
 
SQL>

[출처] sysaux 테이블스페이스란?|작성자 레인보우

 

 

 

-- 조회방법


select OCCUPANT_NAME,SCHEMA_NAME,SPACE_USAGE_KBYTES from V$sysaux_occupants;


select sum(bytes)/1024/1024/1024 from dba_segments where tablespace_name='SYSAUX';

 

반응형
반응형

결정 요소 : UNDO_RETENTION, DB_BLOCK_SIZE, 초당 생성되는 UNDO 데이터 블럭 수

SELECT SUM(UNDOBLKS)/SUM((EDN_TIME-BEGIN_TIME)*86400) FROM V$UNDOSTAT;

==> 초당 UNDO 데이터 블럭 수

 

SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"

FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),

          (SELECT (SUM(undoblks)/SUM(((end_time-begin_time)*86400))) AS UPS

           FROM v$undostat),

          (SELECT value AS DBS FROM v$parameter WHERE name = 'db_block_size');

반응형
반응형

얼마전 UNDO TABLESPACE SIZE 가 비대하게 늘어나 ONLINE 중에 이를 줄이는 작업이 있었습니다.

다음과 같이 UNDO TABLESPACE 를 추가로 하나 만들고 SWITCH 하는 방법으로 ONLINE 에 영향 없이 UNOD SIZE 를 줄일수 있습니다.

참고하세요

1. UNDO TABLESPACE 생성

create undo tablespace UNDOTBS2 datafile '/dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' size 16384m;

 

2. UNDO DATAFILE 추가

alter tablespace UNDOTBS2 add datafile  '/dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' size 16384m ;

 

3. AUTOEXTED ON 으로 변경

alter database datafile /dev/vx/rdsk/dg_us2db06/df_pusdb2_16g_0085' autoextend on maxsize 16384m;

4. UNDO TABLESPACE SWITCH  

alter system set undo_tablespace = UNDOTBS2

5. 기존 UNDO TABLESPACE 삭제

drop tablespace UNDOTBS1;

6. 기존 이름으로 UNDO TABLESPACE RENAME  ( TABLESPACE RENAME 은 10G 이후에서 가능 )

 alter tablespace UNDOTBS2 rename to  UNDOTBS1;

PS : 만약 기존UNDO TABLESPACE 명이 새로운 UNDO TABLESPACE 로 변경이된다면 반드시 INIT 파라미터에서 UNDO 파라미터값 변경해야합니다.

반응형
반응형

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

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