Tablespace와 Datafile 관리하기.


1.Undo Tablespace

- Undo Data : 사용자가 DML을  수행할 경우 발생하는 원본데이터.

- Undo Segment: Undo Data만 저장하는 Segment

- Undo Tablespace: Undo Segment를 저장하는 Tablespace

                                Undo Data만 저장 가능하며, Oracle Server process가 직접관리한다.


1-1) Undo Tablespace의 특징.

- Oracle server process는 이 테이블 스페이스에 Undo Segment를 생성하고 각 사용자별로 Undo Segment를 할당하여 undo data를 관리하며 사용자는 관여할 수 없다.

- Undo Tablespace는 Instance당 여러 개가 존재할 수 있으나, 사용되는것은 한번에 1개뿐.

- 관리방법으로는 자동 모드와 수동 모드가 있으며, 9i버젼부터 Automatic Undo Management(AUM)을 권장한다.

사용하기 위해서는 초기화 파라미터 파일에 Undo_management = auto로 설정하고 수동 mode 관리를 위해서는 manual로 설정하면된다.

- 자동모드가 기본이며, manual값은 주로 장애가 발생될 경우 복구용도로 사용된다. 변경 후 적용을 위해서는 Instance를 재기동 해야한다.


SYS@PROD>show parameter undo

 

NAME     TYPE VALUE

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

undo_management      string AUTO

undo_retention     integer 900

undo_tablespace      string UNDOTBS1


1-2) Undo Tablespace의 사용목적.

- Transaction Rollback : 사용자가 Rollback 명령어를 사용하면, 이곳에 저장된 Undo Data를 사용하여 Rollback 수행.

- Read Consistency : CR 작업을 통해 트랜잭션이 끝나지 않은 데이터는 변경 전 데이터를 보여준다.

* CR 작업 : 1. 데이터를 DB Buffer Cache로 복사

                  2. Redo Log Buffer에 변경내용기록

                  3. Undo Segment에 기록

                  4. DB Buffer cache의 원본 변경


*읽기 일관성 실습

- 터미널 1에서 EMPNO 7369의 이름을 GOOD BOY로 변경

  DB BUFFER CACHE에 이름이 변경되고, LOCK이 설정되어 터미널1에서 COMMIT 이나 ROLLBACK 수행 전까지는 터미널2에서 변경된 데이터를 볼 수 없음.

- 터미널 2에서 변경된 데이터에 대한 조회를 수행

  사용자의 SERVER PROCESS는 UNDO에 있는 데이터를 DB BUFFER CACHE로 복사해서 사용자에게 제공


 터미널 1

터미널2 

SCOTT@PROD> 

select EMPNO, ENAME from EMP;

 

     EMPNO ENAME

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

      7369 HELLO

      7499 ALLEN

      7521 WARD

      7566 JONES

      7654 MARTIN

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER



 

 SCOTT@PROD>

      UPDATE EMP 

      SET ENAME ='GOODBOY'

      WHERE EMPNO=7369;

 

 

 SCOTT@PROD>

select EMPNO, ENAME from EMP;

 

     EMPNO ENAME

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

      7369 GOODBOY

      7499 ALLEN

      7521 WARD

      7566 JONES

      7654 MARTIN

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

 SCOTT@PROD>

select EMPNO, ENAME from EMP;

 

     EMPNO ENAME

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

      7369 HELLO

      7499 ALLEN

      7521 WARD

      7566 JONES

      7654 MARTIN

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

SCOTT@PROD> COMMIT;

 

SCOTT@PROD>

select EMPNO, ENAME from EMP;

 

     EMPNO ENAME

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

      7369 GOODBOY

      7499 ALLEN

      7521 WARD

      7566 JONES

      7654 MARTIN

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER 

SCOTT@PROD>

select EMPNO, ENAME from EMP;

 

     EMPNO ENAME

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

      7369 GOODBOY

      7499 ALLEN

      7521 WARD

      7566 JONES

      7654 MARTIN

      7698 BLAKE

      7782 CLARK

      7788 SCOTT

      7839 KING

      7844 TURNER

      7876 ADAMS

      7900 JAMES

      7902 FORD

      7934 MILLER

 


- Transaction Recovery (Instance Recovery라고도함)

운영중인 DB서버가 비정상적으로 종료가 되었을 때 Roll Forward와 Roll back 작업을 수행해서 Dirty database를 Clean Database로 만들어주는 과정에서 Undo Data 사용


1-3) Undo Segment 할당되는 원리

- Undo Tablespace의 특징 중 하나는 Undo Data File의 크기가 증가만 되고 줄어들지는 않는다.



 

- Undo Tablespace 안에 4개의 Undo Segment 가 할당되어 있다.






- E라는 사용자가 신규접속하여 DML을 수행할 경우 E 사용자의 Server Process는 가장먼저 Undo Segment를 할당받게된다.

 기존에 만들어져 있던 Segment 중 트랜잭션이 완료된것이 있는지를 우선적으로 확인 후, 그시점에 A가 Commit 을 수행하여 트랜잭션이 끝났다면, A가 사용했던 Undo Segement를 덮어쓰게된다.




 

- F 라는 사용자가 접속하여, DML을 수행하려하는데 Commit 이나 Rollback을 수행하지 않아서 트랜잭션이 완료된게 없는 경우 새로운 Undo Segment를 하나 더 생성해서 기록한다.


- Undo Segment가 Data file의 저장공간이 허용하는 범위까지 늘어나다가 Data File에 더 공간이 없게되면 하나의 Segment에 두개 세션이상의 Undo Data를 함께 기록하다가 그 조차도 공간이 없으면 해당 트랜잭션은 에러가나게됨.


* Undo Data가 늘어나도 늘어난 데이터파일의 크기를 줄일 수는 없다. Commit을 수행해도 Undo Segment안에 Undo Data는 지워지지 않고 남아있기 때문. 

* Commit 수행 시 다른 서버 프로세스가 덮어 쓸 수 있게 해주는 것일 뿐 Undo Segment 안의 자료를 지우는것은 아니다.

* Undo Tablespace 크기가 비정상적으로 클 경우에는 관리자가 다른 작은 Undo Tablespace를 신규로 만들고, Undo Tablespace를 신규 Undo Tablespace로 변경시킨 후 기존 Undo Tablespace를 삭제해 주어야한다.





1-4) Undo tablespace 변경하기.


1. Undo 상태확인.

SYS@PROD>show parameter undo;

 

NAME     TYPE VALUE

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

undo_management      string AUTO

undo_retention     integer 900

undo_tablespace      string UNDOTBS1


=> 현재 인스턴스의 Undo tablespace 는 UNDOTBS1로 지정되어 있다.


2. 신규 Undo Tablespace  생성

SYS@PROD>create undo tablespace undo01

  datafile '/u01/app/oracle/oradata/PROD/undo01.dbf' size 10M

  autoextend on;


3. 현재 Tablespace 목록 확인

TABLESPACE   MB FILE_NAME  AUT ONLINE_

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

SYSTEM   400 /home/oracle/systemdest/system01.dbf NO  SYSTEM

SYSAUX   200 /u01/app/oracle/oradata/PROD/sysaux01.dbf  NO  ONLINE

UNDOTBS1   200 /u01/app/oracle/oradata/PROD/undotbs01.dbf NO  ONLINE

USERS   50 /u01/app/oracle/oradata/PROD/users01.dbf NO  ONLINE

EXAMPLE   100 /u01/app/oracle/oradata/PROD/example01.dbf NO  ONLINE

UNDO01   10 /u01/app/oracle/oradata/PROD/undo01.dbf YES ONLINE

 

6 rows selected.

=> UNDO01 Tablespace가 생성됨.


4. 새로 생성한 Undo Tablespace로 변경

 

SYS@PROD>alter system set undo_tablespace=undo01;


=> Pfile인 경우 이 작업 이후 파라미터파일의 내용도 변경해야 DB 재시작 후 장애가 없음.

(작업환경은 SPFILE  사용)


** 참고(value에 경로 없을경우 SPFILE 사용 경로 있을 경우 Pfile사용)

SYS@PROD>show parameter pfile

 

NAME     TYPE VALUE

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

spfile     string



5. 변경된 Undo Tablespace 확인.

SYS@PROD>show parameter undo

 

NAME     TYPE VALUE

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

undo_management      string AUTO

undo_retention     integer 900

undo_tablespace      string UNDO01


 

1-5) Undo 사용세션 확인.


 1) 확인스크립트

select s.sid, s.serial#, s.username, r.name "ROLLBACK SEG"

from v$session s, v$transaction t, v$rollname r

where s.taddr=t.addr

and t.xidusn=r.usn;


 2) 실습

 터미널1 (SYS 계정)

터미널 2 (SCOTT 계정)

SYS@PROD>@undo_ses

 

no rows selected 

 

 

 SCOTT@PROD>update emp

    set job='DBA'

    where empno=7369;

 

1 row updated.

SYS@PROD>@undo_status

       SID    SERIAL# USERNAME       USED_UREC  USED_UBLK

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

34   93 SCOTT       1  1

 

 

 

 SCOTT@PROD>update emp

     set JOB='ADMIN'

     where empno=7499  ;

SYS@PROD>@undo_status

 

       SID    SERIAL# USERNAME       USED_UREC  USED_UBLK

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

34   93 SCOTT       2  1 

 

 

 SCOTT@PROD> commit;

 SYS@PROD>@undo_ses

 

no rows selected

 

 


* 추가 테스트 1. 다른 세션에서 SCOTT 계정으로 변경작업을 시도할 경우

 

 

       SID    SERIAL# USERNAME       USED_UREC  USED_UBLK

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

45   60 SCOTT       1  1

34   93 SCOTT       3  1

32   103 SCOTT       1  1

 


* 추가 테스트 2. SID 34 세션에서 Commit 이나 Rollback을 수행하지 않고 종료할 경우

 

 

       SID    SERIAL# USERNAME       USED_UREC  USED_UBLK

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

45   60 SCOTT       1  1

32   103 SCOTT       1  1

 




1-6) Undo 관련 주요 파라미터.

- UNDO_RETENTION(초단위)

 COMMIT 수행 후에도 해당 UNDO SEGMENT 내의 데이터를 다른 서버 프로세스가 덮어 쓰지 못하도록 막아주는 시간.

 그러나, Undo segment 여분이 있을 경우에만 적용되며, 만약 모든Undo Segment가 사용중일 경우에는 적용되지않는다.

  * ORA-01555. Snapshot too old

사용자 A: 1시간정도 수행되는 특정 데이터의 집계작업을 수행중

사용자 B: 사용자A가 집계중인 데이터를 update 한 후 commit할 경우 

사용자 A: 사용자 B가 변경전의 데이터를 Undo Segment에서 찾아서 집계하게됨.

               만약 B가 Commit 한 후 사용자 C가 사용자 B의  Undo Segment를 덮어 썻다면 사용자 A는 집계쿼리를                완성할 수 없고. 이때 발생하는 에러가 Snap shot too old Error 이다.


- UNDO_RETENTION_GURANTEE

 UNDO_RETENTION이란 파라미터는 UNDO SEGMENT양이 부족하면 설정된 시간이 무시되고 UNDO SEGMENT가 재사용되지만, UNDO_RETENTION_GURANTEE 파라미터를 설정하면, 설정된 시간동안 재활용을 하지않고 지켜준다.

 * 이 기능을 사용할 경우 COMMIT을 수행해도 UNDO SEGMENT를 특정 시간동안 재사용 하지 않음으로써, UNDO TABLESPACE의 용량이 증가될 수 있기 때문에 기본값은 NOGURANTEE 이다.


 SYS@PROD>select tablespace_name, retention from dba_tablespaces;

 

TABLESPACE_NAME        RETENTION

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

SYSTEM       NOT APPLY

SYSAUX       NOT APPLY

UNDOTBS1       NOGUARANTEE

TEMP       NOT APPLY

USERS       NOT APPLY

EXAMPLE        NOT APPLY

UNDO01       NOGUARANTEE

 




 




 




Tablespace와 Datafile 관리하기


1. Data File  이동

- 특정 디스크에 있는 데이터 파일들의 용량이 점점 증가하여 다른 더 큰 용량의 디스크를 설치 한 후 Data file을 이동시 사용.

- 절대 Datafile을 사용중일 때는 절대로 이동시키거나 복사하면 안된다.

* Tablespace를 Offline 하거나, Shutdown 한 후 작업.


1-1 Tablespace Offline 후 경로변경.


- 기존 경로 : /u01/app/oracle/oradata/PROD/

- 변경 경로 : /home/oracle/datamovedest1

                  /home/oracle/datamovedest2


1. 디렉토리 생성


[oracle@edydr1p0-PROD ~]$ pwd

/home/oracle

[oracle@edydr1p0-PROD ~]$ mkdir datamovedest1

[oracle@edydr1p0-PROD ~]$ mkdir datamovedest2



2. DB 접속 후 테이블 스페이스 Off Line 변경.

 

SYS@PROD>@tbs_auto_status

 

TABLESPACE   MB FILE_NAME  AUT ONLINE_

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

SYSTEM   400 /u01/app/oracle/oradata/PROD/system01.dbf  NO  SYSTEM

SYSAUX   200 /u01/app/oracle/oradata/PROD/sysaux01.dbf  NO  ONLINE

UNDOTBS1   200 /u01/app/oracle/oradata/PROD/undotbs01.dbf NO  ONLINE

USERS   50 /u01/app/oracle/oradata/PROD/users01.dbf NO  ONLINE

EXAMPLE   100 /u01/app/oracle/oradata/PROD/example01.dbf NO  ONLINE

HAKSA   20 /u01/app/oracle/oradata/PROD/haksa01.dbf YES ONLINE

HAKSA   20 /u01/app/oracle/oradata/PROD/haksa02.dbf NO  ONLINE

 

7 rows selected.

 

SYS@PROD>alter tablespace haksa offline;

 

Tablespace altered.

 

SYS@PROD>@tbs_auto_status

 

TABLESPACE   MB FILE_NAME  AUT ONLINE_

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

SYSTEM   400 /u01/app/oracle/oradata/PROD/system01.dbf  NO  SYSTEM

SYSAUX   200 /u01/app/oracle/oradata/PROD/sysaux01.dbf  NO  ONLINE

UNDOTBS1   200 /u01/app/oracle/oradata/PROD/undotbs01.dbf NO  ONLINE

USERS   50 /u01/app/oracle/oradata/PROD/users01.dbf NO  ONLINE

EXAMPLE   100 /u01/app/oracle/oradata/PROD/example01.dbf NO  ONLINE

HAKSA       /u01/app/oracle/oradata/PROD/haksa01.dbf     OFFLINE

HAKSA       /u01/app/oracle/oradata/PROD/haksa02.dbf     OFFLINE

 

7 rows selected.

 


3. Off Line 이후 해당 옮기는 경로로 데이터파일 복사

 

[oracle@edydr1p0-PROD script]$ cp /u01/app/oracle/oradata/PROD/haksa01.dbf /home/oracle/datamovedest1  

[oracle@edydr1p0-PROD script]$ cp /u01/app/oracle/oradata/PROD/haksa02.dbf /home/oracle/datamovedest2



4. DB에서 테이블스페이스 설정경로 확인 및 변경.


 

SYS@PROD>select name from v$datafile;

 

NAME

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

/u01/app/oracle/oradata/PROD/system01.dbf

/u01/app/oracle/oradata/PROD/sysaux01.dbf

/u01/app/oracle/oradata/PROD/undotbs01.dbf

/u01/app/oracle/oradata/PROD/users01.dbf

/u01/app/oracle/oradata/PROD/example01.dbf

/u01/app/oracle/oradata/PROD/haksa01.dbf

/u01/app/oracle/oradata/PROD/haksa02.dbf

 

7 rows selected.

 => Haksa data file기존경로


 

 

SYS@PROD>alter tablespace haksa rename

    datafile '/u01/app/oracle/oradata/PROD/haksa01.dbf'

    to '/home/oracle/datamovedest1/haksa01.dbf';

 

Tablespace altered.

 

SYS@PROD>alter tablespace haksa rename

   datafile '/u01/app/oracle/oradata/PROD/haksa02.dbf'

    to '/home/oracle/datamovedest2/haksa02.dbf';

 

Tablespace altered.

 

SYS@PROD>select name from v$datafile;

 

NAME

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

/u01/app/oracle/oradata/PROD/system01.dbf

/u01/app/oracle/oradata/PROD/sysaux01.dbf

/u01/app/oracle/oradata/PROD/undotbs01.dbf

/u01/app/oracle/oradata/PROD/users01.dbf

/u01/app/oracle/oradata/PROD/example01.dbf

/home/oracle/datamovedest1/haksa01.dbf

/home/oracle/datamovedest2/haksa02.dbf

 

7 rows selected.

=> 경로 설정 변경된것 확인

 

4. 해당 Tablespace 다시 Online으로 변경.


SYS@PROD>@tbs_auto_status

 

TABLESPACE   MB FILE_NAME  AUT ONLINE_

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

SYSTEM   400 /u01/app/oracle/oradata/PROD/system01.dbf  NO  SYSTEM

SYSAUX   200 /u01/app/oracle/oradata/PROD/sysaux01.dbf  NO  ONLINE

UNDOTBS1   200 /u01/app/oracle/oradata/PROD/undotbs01.dbf NO  ONLINE

USERS   50 /u01/app/oracle/oradata/PROD/users01.dbf NO  ONLINE

EXAMPLE   100 /u01/app/oracle/oradata/PROD/example01.dbf NO  ONLINE

HAKSA       /home/oracle/datamovedest1/haksa01.dbf     OFFLINE

HAKSA       /home/oracle/datamovedest2/haksa02.dbf     OFFLINE

 

7 rows selected.

 

SYS@PROD>alter tablespace haksa online;

 

Tablespace altered.

 

SYS@PROD>@tbs_auto_status

 

TABLESPACE   MB FILE_NAME  AUT ONLINE_

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

SYSTEM   400 /u01/app/oracle/oradata/PROD/system01.dbf  NO  SYSTEM

SYSAUX   200 /u01/app/oracle/oradata/PROD/sysaux01.dbf  NO  ONLINE

UNDOTBS1   200 /u01/app/oracle/oradata/PROD/undotbs01.dbf NO  ONLINE

USERS   50 /u01/app/oracle/oradata/PROD/users01.dbf NO  ONLINE

EXAMPLE   100 /u01/app/oracle/oradata/PROD/example01.dbf NO  ONLINE

HAKSA   20 /home/oracle/datamovedest1/haksa01.dbf YES ONLINE

HAKSA   20 /home/oracle/datamovedest2/haksa02.dbf NO  ONLINE

 

7 rows selected.

 

5. 정보조회가 가능한지 확인.


SYS@PROD>select count(*) from scott.iphak;

 

  COUNT(*)

----------

    650000


 


1-2 Offline 안되는 테이블스페이스의 Datafile이동

- System Tablespace, 사용중인 Undo Tablespace, default temporary tablespace 해당 테이블스페이스는 Offline이 불가능 하므로, DB 종료 후 진행해야한다.


- Off Line  불가능 확인

 SYS@PROD>alter tablespace system offline;

alter tablespace system offline

*

ERROR at line 1:

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

 

 

SYS@PROD>alter tablespace undotbs1 offline;

alter tablespace undotbs1 offline

*

ERROR at line 1:

ORA-30042: Cannot offline the undo tablespace

 


- 실습

1. DB종료 및 Mount 단계까지 기동.

 

SYS@PROD>shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@PROD>startup mount

 

ORACLE instance started.

 

Total System Global Area  417546240 bytes

Fixed Size     2213936 bytes

Variable Size   327157712 bytes

Database Buffers   83886080 bytes

Redo Buffers     4288512 bytes

Database mounted.



2. 변경할 디렉토리 생성 및 System datafile 복사


SYS@PROD>!mkdir /home/oracle/systemdest

  

SYS@PROD>!cp /u01/app/oracle/oradata/PROD/system01.dbf /home/oracle/systemdest

 


SYS@PROD>select instance_name from v$intance;

select instance_name from v$intance

                          *

ERROR at line 1:

ORA-01219: database not open: queries allowed on fixed tables/views only

* MOUNT 상태기 때문에 조회불가능. 

 

3. 기존 Data file 경로 확인 및 Data file 경로변경.

SYS@PROD>select name from v$datafile;

 

NAME

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

/u01/app/oracle/oradata/PROD/system01.dbf

/u01/app/oracle/oradata/PROD/sysaux01.dbf

/u01/app/oracle/oradata/PROD/undotbs01.dbf

/u01/app/oracle/oradata/PROD/users01.dbf

/u01/app/oracle/oradata/PROD/example01.dbf

/home/oracle/datamovedest1/haksa01.dbf

/home/oracle/datamovedest2/haksa02.dbf

 

7 rows selected.

 

SYS@PROD>alter database rename  

  2  file '/u01/app/oracle/oradata/PROD/system01.dbf'

  3  to '/home/oracle/systemdest/system01.dbf';

 

Database altered.

 


4. 경로변경 확인  및 데이터베이스 OPEN


SYS@PROD>select name from v$datafile;

 

NAME

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

/home/oracle/systemdest/system01.dbf

/u01/app/oracle/oradata/PROD/sysaux01.dbf

/u01/app/oracle/oradata/PROD/undotbs01.dbf

/u01/app/oracle/oradata/PROD/users01.dbf

/u01/app/oracle/oradata/PROD/example01.dbf

/home/oracle/datamovedest1/haksa01.dbf

/home/oracle/datamovedest2/haksa02.dbf

 

7 rows selected.

 

SYS@PROD>alter database open;

 

Database altered.

 


1-3 Redo Log File  이동

- Redo Log File 또한 Offline 불가능 하므로 Database를 Mount 상태로 변경 후 작업해야함.


1. Redo log file 경로 확인 및 DB MOUNT 상태로 변경


 SYS@PROD>@log       

 

GROUP# MEMBER       MB SEQ# STATUS       ARC

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

     1 /u01/app/oracle/oradata/PROD/redo01a.log       100   27 CURRENT       NO

     2 /u01/app/oracle/oradata/PROD/redo02a.log       100   25 INACTIVE       YES

     3 /u01/app/oracle/oradata/PROD/redo03a.log       100   26 INACTIVE       NO

 


SYS@PROD>select status from v$instance;

 

STATUS

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

OPEN

 

SYS@PROD>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@PROD>startup mount

ORACLE instance started.

 

Total System Global Area  417546240 bytes

Fixed Size     2213936 bytes

Variable Size   327157712 bytes

Database Buffers   83886080 bytes

Redo Buffers     4288512 bytes

!Database mounted.


2. 경로 이동할 디렉토리 생성 및 Redo log file  복사


SYS@PROD>! mkdir /home/oracle/redodest

 

SYS@PROD>! rmdir /home/oracle/redodest

 

SYS@PROD>! mkdir /home/oracle/redodest1

 

SYS@PROD>! mkdir /home/oracle/redodest2


SYS@PROD>!cp /u01/app/oracle/oradata/PROD/redo01a.log

cp: missing destination file operand after `/u01/app/oracle/oradata/PROD/redo01a.log'

Try `cp --help' for more information.

 

SYS@PROD>!cp /u01/app/oracle/oradata/PROD/redo01a.log /home/oracle/redodest1/redolog01_a.log

 

SYS@PROD>!cp /u01/app/oracle/oradata/PROD/redo02a.log /home/oracle/redodest1/redolog02_b.log

 

SYS@PROD>!cp /u01/app/oracle/oradata/PROD/redo03a.log /home/oracle/redodest1/redolog03_c.log


3. Redolog file 경로 변경.


SYS@PROD>alter database rename

  2  file '/u01/app/oracle/oradata/PROD/redo01a.log'

  3  to '/home/oracle/redodest1/redolog01_a.log';

 

Database altered.

 

SYS@PROD>alter database rename

  2  file '/u01/app/oracle/oradata/PROD/redo02a.log'  

  3  to '/home/oracle/redodest1/redolog02_b.log'

  4  ;

 

Database altered.


SYS@PROD>alter database rename

  2  file '/u01/app/oracle/oradata/PROD/redo03a.log'

  3  to '/home/oracle/redodest1/redolog03_c.log';

 

Database altered.


4. Redo log 경로 변경 확인

 

SYS@PROD>select member from v$logfile;

 

MEMBER

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

/home/oracle/redodest1/redolog01_a.log

/home/oracle/redodest1/redolog02_b.log

/home/oracle/redodest1/redolog03_c.log

 

SYS@PROD>@log

 

GROUP# MEMBER       MB SEQ# STATUS       ARC

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

     1 /home/oracle/redodest1/redolog01_a.log       100   27 CURRENT       NO

     2 /home/oracle/redodest1/redolog02_b.log       100   25 INACTIVE       YES

     3 /home/oracle/redodest1/redolog03_c.log       100   26 INACTIVE       NO

 

 



1-4 Tablespace 삭제하기.

- 테이블스페이스에 테이블이 하나라도 있으면 그냥 안지워진다.

 - including contents and datafiles 옵션을 통해 삭제.


 SYS@PROD>drop tablespace haksa;

drop tablespace haksa

*

ERROR at line 1:

ORA-01549: tablespace not empty, use INCLUDING CONTENTS option

 

 

SYS@PROD>drop tablespace haksa including contents and datafiles;

 

Tablespace dropped.

 

SYS@PROD>@tbs_auto_status

 

TABLESPACE   MB FILE_NAME   AUT ONLINE_

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

SYSTEM     400 /home/oracle/systemdest/system01.dbf   NO  SYSTEM

SYSAUX     200 /u01/app/oracle/oradata/PROD/sysaux01.dbf   NO  ONLINE

UNDOTBS1    200 /u01/app/oracle/oradata/PROD/undotbs01.dbf   NO  ONLINE

USERS     50 /u01/app/oracle/oradata/PROD/users01.dbf   NO  ONLINE

EXAMPLE     100 /u01/app/oracle/oradata/PROD/example01.dbf   NO  ONLINE


=> 학사 테이블스페이스 제거 확인.