posted by I유령I 2010. 3. 19. 10:26
■ RMAN 명령 유형
* 독립형 명령
- RMAN 프롬프트에서 개별적으로 실행 됨

RMAN > CONFIGURE CHANNEL DEVICE TYPE DISK

* 작업형 명령
- RUN 명령의 중괄호 내에서 그룹으로 실행 됨

RMAN > RUN {
2 > ALLOCATE CHANNEL c1 DEVICE TYPE DISK
3 > FORMAT ‘/data/backup/rman/%U’;
4 > BACKUP DATABASE;
5 > }


■ RMAN 백업 대상
* database (all datafile 과 현재 control file)
* tablespace
* datafile (current 또는 image copy)
* archived redo log
* control file (current 또는 image copy)

※ 백업이 되지 않는 대상 : init.ora, password file. listener.ora, tnsnames.ora 등


■ Backup 제한 조건
* 데이터베이스가 mount 또는 open되어 있어야 합니다.
* Online Redo log는 Backup 불가
* No Archive log mode에서는 Clean Backup만 사용 가능
  즉 오프라인 Tablespace나 읽기전용 Tablespace Backup 사용 가능함
* Archive log mode에서는 현재 Data file Backup만 사용 가능


■ RMAN 백업 개념
* Recovery Manager Backup은 서버 관리 Backup이다.
* Recovery Manager Backup은 Backup 작업을 위해 Oracle 서ㅓ 세션을 사용한다.
* 전체 Database, Tablespace의 모든 Data file, 선택된 Data file, Control file, Archived Redo log file을 Backup할 수 있다.
* 닫힌 데이터베이스 백업
 - Tablespace가 백업 모드여서는 안된다.
 - Data file, Control file, Archived Redo log file을 포함한다.
* 열린 데이터베이스 백업
 - Tablespace가 백업 모드여서는 안된다.
 - Data file, Control file, Archived Redo log file을 포함한다.


■ RMAN 백업 셋의 특징
* Backup 명령은 Backup Set을 생성한다.
* Backup Set은 대개 둘 이상의 파일을 포함한다.
* 디스크 또는 테이프에 Backup Set을 기록할 수 있다.
* Backup Set에서 파일을 추출하려면 복원 작업이 필요하다.
* Data file Backup Set은 증분 또는 전체 백업이 될 수 있다.
* Backup Set은 사용하지 않은 블록은 포함하지 않는다.


■ RMAN 백업 피스 크기 관리
* 백업 피스 크기는 다음과 같이 제한할 수 있다.

RMAN > RUN {
   2 > ALLOCATE CHANNEL t1 DEVICE TYPE 'SET'
   3 > MAXPIECESIZE = 4G;
   4 > BACKUP
   5 > FORMAT 'df_%t_%s_%p' FILESPERSET 3
   6 > (tablespace users);}


■ RMAN 백업 명령
RMAN > BACKUP
   2 > FORMAT '/data/backup/rman/df_%d_%s_%p.bus'
   3 > DATABASE filesperset = 2;


■ RMAN 병렬 백업
RMAN > RUN {
   2 > allocate channel c1 type sbt;
   3 > allocate channel c2 type sbt;
   4 > allocate channel c3 type sbt;
   5 > BACKUP
   6 > incremental level = 0
   7 > FORMAT '/data/backup/rman/df_%d_%s_%p.bak'
   8 > (datafile 1, 4, 5 channel c1 tag=DF1)
   9 > (datafile 2, 3, 9 channel c2 tag=DF2)
  10 > (datafile 6, 7, 8 channel c3 tag=DF3)
  11 > alter system archive log current;
  12 > }


■ Archive log 백업 받기
* Online Redo log file 자동 전환
* Archived Redo log file 복구 수행
* Archived Redo log file만 포함
* 항상 전체 백업이다.

RMAN > BACKUP
   2 > FORMAT '/data/backup/rman/ar_%t_%s_%p'
   3 > ARCHIVELOG ALL DELETE ALL INPUT;


■ 이미지로 백업 받기
* 디스크에만 쓸 수 있다.
* 즉시 복구에 사용할 수 있도록 복원할 필요가 없다.
* 단일 Data file, Archived Redo log file 또는 Control file의 물리적 복사본이다.
* 모든 블록을 포함한다는 점에서 운영체제 백업과 가장 유사하다.
* 증분 백업 전략의 일부가 될 수 있다.

RMAN > COPY
   2 > DATAFILE '/home/oracle/oradata/testdb/users01.dbf'
   3 >       TO '/data/backup/rman/users01.dbf' tag=DF3,
   4 > ARCHIVELOG 'arch_1060.arc'
   5 >         TO 'arch_1060.back';


■ 이미지 카피 병렬 처리
* 복수 채널을 가진 COPY 명령

- 3 files copied in parallel
RMAN > CONFIGURE DEVICE TYPE disk parallelism 4;
   2 > COPY
   3 > DATAFILE 1 TO '/data/backup/rman/df1.dbf',
   4 > DATAFILE 2 TO '/data/backup/rman/df2.dbf',
   5 > DATAFILE 3 TO '/data/backup/rman/df3.dbf',

- Second copy command
RMAN > COPY
   2 > DATAFILE 4 TO '/data/backup/rman/df4.dbf',


■ 전체 데이터베이스 백업 받기
* 일관성 있는 완전 백업을 위해 데이터베이스를 mount한다.
* REPORT SCHEMA 명령을 사용하여 파일을 나열한다.
* COPY 명령을 사용하거나 각 Data file을 나열한다.
* COPY 명령을 사용하거나 각 Data file의 이미지 복사본을 만든다.
* LIST COPY 명령을 사용하여 복사본을 검증한다.


■ 증분 백업
* 전체 백업은 모든 Data file 블록을 포함한다.
* 차등 증분 백업은 레벨 n 이하에서 수정된 블록만 포함한다.
* 누적 증분 백업은 레벨 n-1 이하에서 수정된 블록만 포함한다.


■ No Archive log mode에서의 백업
1. Backup을 위한 충분한 공간이 있는지 확인
2. normal 또는 immediate 절을 사용하여 종료
3. Database mount
4. 자동으로 사용되지 않는 경우 복수 채널 할당
5. Backup 명령 실행
6. 백업의 완료 및 카탈로그화 여부 확인
7. 정상적으로 사용할 수 있도록 Database open

RMAN > BACKUP DATABASE FILESPERSET 3;


■ Control file 자동 백업
* CONFIGURE CONTROLFILE AUTOBACKUP 명령을 사용하여 활성화
* 활상화되면 RMAN은 BACKUP 또는 COPY 명령 후 Control file의 자동 백업 수행
* Backup에 기본 이름 제공

RMAN > CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN > SET CONTROLFILE AUTOBACKUP FORMAT FORM DEVICE TYPE disk
   2 > TO 'controlfile_%F';


■ Backup Tag
* Backup Set 또는 이미지 복사본에 지정된 논리적 이름

- month_full_backup
Backup Set (Data file 1, 3 / Data file 2,4)

- week_full_backup
Backup Set (Data file 3 / Data file 4)

- wednesday_1_backup
Backup Set (Data file 1)


■ RMAN 관련 뷰
* V$ARCHIVED_LOG
* V$BACKUP_CORRUPION
* V$COPY_CORRUPION
* V$BACKUP_DATAFILE
* V$BACKUP_REDOLOG
* V$BACKUP_SET
* V$BACKUP_PIECE


■ RMAN 백업 예제
* 전체 데이터베이스 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP DATABASE
FORMAT '/data/backup/rman/%d_%p_%t';
}

* Tablespace 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
BACKUP FILESPERSET = 3
TABLESPACE system, users, example
INCLUDE CURRENT CONTROLFILE;
}

* Data file 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP DATAFILE 1, 2, 3, 4, 5, 6;
}

* Current Control file 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP CURRENT CONTROLFILE
TAG = PM_wed_control;
}

* 다른 Object 백업시 Control file 백업 추가 방법
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP Tablespace users
INCLUDE CURRENT CONTROLFILE;
}

* Incremental 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP INCREMENTAL LEVEL = 0
DATABASE;
}

RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP INCREMENTAL LEVEL = 1
TABLESPACE system
DATAFILE '/home/oracle/oradata/testdb/system01.dbf';
}

* Archived Redo log 백업
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
BACKUP ARCHIVELOG ALL
DELETE INPUT;
}

* Image Copy
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
COPY
DATAFILE 1 TO '/data/backup/rman/df_1.bak',
DATAFILE 2 TO '/data/backup/rman/df_2.bak',
DATAFILE 3 TO '/data/backup/rman/df_3.bak',
DATAFILE 4 TO '/data/backup/rman/df_4.bak',
CURRENT CONTROLFILE TO ''/data/backup/rman/control.bak';
}

'Oracle 10g > 10g - Admin II' 카테고리의 다른 글

Recovery Manager (RMAN)  (0) 2010.03.19
posted by I유령I 2010. 3. 19. 10:17
■ RMAN : 오라클 데이터베이스에서 백업,복원 및 복구작업을 수행하는 유틸리티로 Oracle8 이상에서 지원됨.


■ 주요기능
- 자주 실행하는 작업을 스크립트로 저장
- 증분 블록 레벨 백업 기능 지원
- 백업작업의 병렬화로 시간 절약
- 사용되지 않은 블록 건너뛰고 백업 수행
- 백업 수행 중 훼손된 블록 감지


■ 구성요소
- 서버 세션 : RMAN 에 의해 호출된 서버 프로세스(UNIX) 또는 쓰레드(NT) 는 대상 데이터베이스에 접속되어 백업,복구를 수행함
- 대상 데이터베이스 : RMAN으로 백업,복구작업이 수행되는 데이터베이스
- 채널 : 백업,복구작업을 수행 및 기록하기 위해 필요한 대상 데이터베이스 링크
- MML : 테이프에 쓰거나 테이프에서 읽을 때 필요한 라이브러리로 매체 및 저장 시스템 업체에서 제공함


■ 자동 채널 할당하기
* Default 장치 설정
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

* Default 채널에 대한 병렬화 구성
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

* Default 채널에 대한 옵션 구성
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK
  2 > FORMAT = '/data/backup/rman/%U';


■ 수동 채널 할당하기
RMAN> RUN {
  2 > ALLOCATE CHANNEL c1 DEVICE TYPE disk;
  3 > FORMAT '/BACKUP/%U';
  4 > BACKUP DATAFILE '/home/oracle/disk1/users01.dbf'
  5 > }

- 수동채널할당은 자동채널 할당보다 우선함
- 수동채널 할당을 하지 않는 작업은 자동채널을 사용함


■ 채널 제어 옵션
* 병렬도 구성
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

* 최대 백업 피스 크기 지정
RMAN > CONFIGURE CHANNEL DEVICE TYPE DISK
   2 > MAXPIECESIZE 2G;

'Oracle 10g > 10g - Admin II' 카테고리의 다른 글

Recovery Manager (RMAN) 명령어 및 예제  (0) 2010.03.19
posted by I유령I 2010. 3. 19. 10:13

'Oracle 10g > 10g - 실습' 카테고리의 다른 글

Flashback Query / Versions Query / Transaction Query  (0) 2010.03.19
Datapump  (0) 2010.03.16
Export / Import - Clone DB로 삭제된 데이터 복구하는 방법  (0) 2010.03.16
Control file 장애  (0) 2010.03.15
Redo log file Recovery  (0) 2010.03.12
posted by I유령I 2010. 3. 19. 10:12

'Oracle 10g > 10g - 실습' 카테고리의 다른 글

Flashback  (0) 2010.03.19
Datapump  (0) 2010.03.16
Export / Import - Clone DB로 삭제된 데이터 복구하는 방법  (0) 2010.03.16
Control file 장애  (0) 2010.03.15
Redo log file Recovery  (0) 2010.03.12
posted by I유령I 2010. 3. 16. 12:09

'Oracle 10g > 10g - 실습' 카테고리의 다른 글

Flashback  (0) 2010.03.19
Flashback Query / Versions Query / Transaction Query  (0) 2010.03.19
Export / Import - Clone DB로 삭제된 데이터 복구하는 방법  (0) 2010.03.16
Control file 장애  (0) 2010.03.15
Redo log file Recovery  (0) 2010.03.12
posted by I유령I 2010. 3. 16. 11:02
< 전체 순서 요약 >
1. DB를 Archive log mode로 설정
2. 실제 DB: testdb, Clone DB: testdb2
3. 이 방법은 장애 시점 이전의 Backup file과 Archive log file로 복구를 해내므로 반드시 장애시점 이전의 Backup file과 Archive log file이 존재해야 한다.


< 작업 순서 요약 >
1. Tablespace 생성 후 전체 Tablespace Backup (hot / cold 상관 없음)
2. test Table 생성 후 장애발생 - 실습할 Tablespace에 생성할 것
3. 복구 서버(testdb2)용 Parameter file 생성 (기존 Parameter file 복사 후 몇 개 항목만 변경)
4. 복구 대상 파일을 복구 위치로 복사
5. 복구 서버를 위한 Control file 재 생성 (기존 서버에서 사용중인 Control file을 Trace해서 재 생성에 사용함)
6. mount 상태에서 recover database until time 명령어로 복구
7. exp로 해당 Table을 export 받고 imp로 원본 서버에 import 한다.


< 실제 작업 수행 >
1단계 : Tablespace 생성 후 전체 Backup 받기

SQL> create tablespace clone datafile '/home/oracle/oradata/testdb/clone01.dbf' size 10m;

Tablespace created.

SQL> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files;

TABLESPACE_NAME              MB FILE_NAME
-------------------- ---------- --------------------------------------------------
USERS                         5 /home/oracle/oradata/testdb/users01.dbf
SYSAUX                      240 /home/oracle/oradata/testdb/sysaux01.dbf
UNDOTBS1                     35 /home/oracle/oradata/testdb/undotbs01.dbf
SYSTEM                      480 /home/oracle/oradata/testdb/system01.dbf
EXAMPLE                     100 /home/oracle/oradata/testdb/example01.dbf
CLONE                        10 /home/oracle/oradata/testdb/clone01.dbf

6 rows selected.

SQL> alter tablespace system begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/system01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/system01.dbf' -> `/data/backup/open/system01.dbf'

SQL> alter tablespace system end backup;

Tablespace altered.

SQL> alter tablespace sysaux begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/sysaux01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/sysaux01.dbf' -> `/data/backup/open/sysaux01.dbf'

SQL> alter tablespace sysaux end backup;

Tablespace altered.

SQL> alter tablespace undotbs1 begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/undotbs01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/undotbs01.dbf' -> `/data/backup/open/undotbs01.dbf'

SQL> alter tablespace undotbs1 end backup;

Tablespace altered.

SQL> alter tablespace users begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/users01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/users01.dbf' -> `/data/backup/open/users01.dbf'

SQL> alter tablespace users end backup;

Tablespace altered.

SQL> alter tablespace example begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/example01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/example01.dbf' -> `/data/backup/open/example01.dbf'

SQL> alter tablespace example end backup;

Tablespace altered.

SQL> alter tablespace clone begin backup;

Tablespace altered.

SQL> !cp -av /home/oracle/oradata/testdb/clone01.dbf /data/backup/open/
`/home/oracle/oradata/testdb/clone01.dbf' -> `/data/backup/open/clone01.dbf'

SQL> alter tablespace clone end backup;

Tablespace altered.

SQL> 



2단계 : 실습용 Tablespace 생성 후 Data를 입력하고 장애를 발생시킨다.

SQL> conn scott/tiger;
Connected.
SQL> create table test (no number) tablespace clone;

Table created.

SQL> insert into test values (1);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test values (2);

1 row created.

SQL> commit;

Commit complete.

SQL> select to_char(sysdate, 'YYYY-MM-DD:HH24:MI:SS') "SYSDATE" from dual;

SYSDATE
-------------------
2010-03-16:11:20:17

SQL> drop table test purge;

Table dropped.

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE

SQL> conn / as sysdba
Connected.

#log switch를 수 차례 발생시켜 해당 작업 내용이 아카이빙 되도록 한다.
SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> 



3단계 : 복구 서버용 Parameter file 생성하기 - 운영 서버에서 Parameter file 복사해서 복구 서버용으로 편집하는 작업

SQL> create pfile from spfile;

File created.

SQL> !cp -av $ORACLE_HOME/dbs/inittestdb.ora $ORACLE_HOME/dbs/inittestdb2.ora
`/home/oracle/product/10g/dbs/inittestdb.ora' -> `/home/oracle/product/10g/dbs/inittestdb2.ora'

SQL> !vi $ORACLE_HOME/dbs/inittestdb2.ora

testdb.__db_cache_size=213909504
testdb.__java_pool_size=4194304
testdb.__large_pool_size=4194304
testdb.__shared_pool_size=58720256
testdb.__streams_pool_size=0
*.audit_file_dest='/data/clone/admin/adump'
*.background_dump_dest='data/clone/admin/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/data/clone/testdb2/control01.ctl'
*.core_dump_dest='/data/clone/admin/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='testdb2'
*.db_recovery_file_dest='/home/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testdbXDB)'
*.job_queue_processes=10
*.local_listener='LISTENER_TESTDB'
*.log_archive_dest_1='location=/data/arc1'
*.log_archive_dest_2='location=/data/arc2'
*.log_archive_format='%s_%t_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/data/clone/admin/udump'
"~/product/10g/dbs/inittestdb2.ora" 30L, 1025C written

SQL> !mkdir -p /data/clone/testdb2

SQL> !mkdir -p /data/clone/admin/adump

SQL> !mkdir -p /data/clone/admin/bdump

SQL> !mkdir -p /data/clone/admin/cdump

SQL> !mkdir -p /data/clone/admin/udump

SQL> 



4단계 : 임시 복구 경로에 복구 대상 파일 복원하기

SQL> !cp -av /data/backup/open/system01.dbf /data/clone/testdb2/
`/data/backup/open/system01.dbf' -> `/data/clone/testdb2/system01.dbf'

SQL> !cp -av /data/backup/open/sysaux01.dbf /data/clone/testdb2/
`/data/backup/open/sysaux01.dbf' -> `/data/clone/testdb2/sysaux01.dbf'

SQL> !cp -av /data/backup/open/undotbs01.dbf /data/clone/testdb2/
`/data/backup/open/undotbs01.dbf' -> `/data/clone/testdb2/undotbs01.dbf'

SQL> !cp -av /data/backup/open/clone01.dbf /data/clone/testdb2/
`/data/backup/open/clone01.dbf' -> `/data/clone/testdb2/clone01.dbf'

SQL> 


5단계 : 복구 DB를 위한 Control file 재 생성 및 DB 이름 변경, DB 시작 운영 서버에서 Control file을 Backup 받아서 복구 서버용으로 만드는 작업

SQL> alter database backup controlfile to trace as '/data/clone/recon_testdb2.sql';

Database altered.

SQL> !vi /data/clone/recon_testdb2.sql

STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "TESTDB2" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/data/clone/testdb2/redo01_a.log',
    '/data/clone/testdb2/redo01_b.log'
  ) SIZE 5M,
  GROUP 2 (
    '/data/clone/testdb2/redo02_a.log',
    '/data/clone/testdb2/redo02_b.log'
  ) SIZE 5M,
  GROUP 3 (
    '/data/clone/testdb2/redo03_a.log',
    '/data/clone/testdb2/redo03_b.log'
  ) SIZE 5M
DATAFILE
  '/data/clone/testdb2/system01.dbf',
  '/data/clone/testdb2/sysaux01.dbf',
  '/data/clone/testdb2/undotbs01.dbf',
  '/data/clone/testdb2/clone01.dbf'
CHARACTER SET KO16KSC5601
;
"/data/clone/recon_testdb2.sql" 27L, 688C written

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@ghost ~]$ export ORACLE_SID=testdb2
[oracle@ghost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Mar 16 11:56:18 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> @/data/clone/recon_testdb2.sql
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              92276304 bytes
Database Buffers          188743680 bytes
Redo Buffers                2973696 bytes

Control file created.

SQL> 



6단계 : 복구 (복구 서버에서 하는 작업)

SQL> recover database using backup controlfile until time '2010-03-16:11:20:17';
ORA-00279: change 526254 generated at 03/16/2010 11:16:57 needed for thread 1
ORA-00289: suggestion : /data/arc2/6_1_713363612.arc
ORA-00280: change 526254 for thread 1 is in sequence #6


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

SQL> conn scott/tiger;
Connected.
SQL> select * from test;

        NO
----------
         1
         2

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@ghost ~]$ mkdir -p /data/backup/exp
[oracle@ghost ~]$ export ORACLE_SID=testdb2
[oracle@ghost ~]$ exp userid=scott/tiger file=/data/backup/exp/scott.dmp tables=test;

Export: Release 10.2.0.1.0 - Production on Tue Mar 16 12:05:43 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export done in KO16KSC5601 character set and AL16UTF16 NCHAR character set

About to export specified tables via Conventional Path ...
. . exporting table                           TEST          2 rows exported
Export terminated successfully without warnings.
[oracle@ghost ~]$ 



7단계 : 데이터 Import 후 확인

< 실제 서버에서 작업 >
[oracle@ghost ~]$ export ORACLE_SID=testdb
[oracle@ghost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Mar 16 12:08:24 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select * from scott.test;
select * from scott.test
                    *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> exit 
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@ghost ~]$ imp userid=scott/tiger file=/data/backup/exp/scott.dmp ignore=y

Import: Release 10.2.0.1.0 - Production on Tue Mar 16 12:09:15 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

Export file created by EXPORT:V10.02.01 via conventional path
import done in KO16KSC5601 character set and AL16UTF16 NCHAR character set
. importing SCOTT's objects into SCOTT
. importing SCOTT's objects into SCOTT
. . importing table                         "TEST"          2 rows imported
Import terminated successfully without warnings.
[oracle@ghost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Mar 16 12:09:41 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> conn scott/tiger;
Connected.
SQL> select * from test;

        NO
----------
         1
         2

SQL> 

'Oracle 10g > 10g - 실습' 카테고리의 다른 글

Flashback Query / Versions Query / Transaction Query  (0) 2010.03.19
Datapump  (0) 2010.03.16
Control file 장애  (0) 2010.03.15
Redo log file Recovery  (0) 2010.03.12
Incomplete Recovery - using backup controlfile  (0) 2010.03.11
posted by I유령I 2010. 3. 15. 12:30
<장애 상황>
현재 운영중인 DB서버(이하 A서버)에서 며칠전에 scott의 테이블(tbl_wow)가 지워졌으니 복구해달라는 요청을 받았다.
해당 테이블이 있던 테이블스페이스도 삭제된 상황이다.
테이블 삭제 시간은 대략 알고 있으나 (drop table 후 시간 확인하세요) 현재 운영중인 A서버에서 작업을 할 수 없으므로 A 서버를 잠시 중지 시키고 모든 파일을 백업받아서 B서버에서 복구작업을 하기로 하였다.

<대략적인 작업 방법>
1. A 서버의 전체 파일들을 백업받아서 B서버로 옮긴다( /data/temp/ ).
2. B 서버에서 데이터 작업을 완료하고 알려준 시간으로 시간기반 불완전 복구를 한다.
3. B 서버에서 삭제된 테이블을 찾아 exp 받아서 현재 운영중인 A서버에 imp 시킨다.
4. A 서버에서 scott계정으로 확인하면 지워지기 전의 데이터 1,2,3 이 나와야 한다.

<작업 관련 사항>
1. 지워진 테이블 이름 : scott.tbl_wow (1,2,3 의 값이 입력되어 있었음)
2. 위 테이블이 들어있었던 테이블 스페이스 이름 : tbs_wow_01 <- 적당히 생성시키세요
3. A서버 원래디렉토리 : /home/oracle/oradata/testdb/
4. A서버 원본백업디렉토리 : /data/backup/close/
5. B서버 작업디렉토리 : /data/temp/




posted by I유령I 2010. 3. 15. 12:27
Export

$ exp userid = 유저명과 패스워드를 쓴다.   예제) userid = scott/tiger
file         = Export 받는 Dump File을 지정한다.   예제) file = /data/backup/0315.dmp
log          = Export 받을 때 Log File을 지정할 수 있다. log = /data/backup/0315.exp
*rows        = 데이타를 받을 것인지 아닌지를 지정한다. Default 값은 y 이다.   예제) rows = y
*constraints = Table에 셋팅된 제약 조건을 받을 것인지 지정한다. Default 값은 y 이다.   예제) constraints = y
*indexes     = Index를 받을 것인지를 지정한다. Default 값은 y 이다.   예제) indexes = y
tables       = 유저의 특정 Table을 받고자 할 때 사용된다.   예제) tables = 사원,부서 
               Default는 userid가 작성한 모든 Table을 받는다.          
compress     = Table을 위해 extebt된 값이 Storage 값의 INITIAL 값에 셋팅된다.
               Default 값은 compress = y 이지만, compress = n 이 안전하다.
*full        = userid가 system/manager나 dba 권한이 있는 유저일 경우 Database 전체를 exp 받을 수 있다.
          
exp 예제)
$ exp userid=system/manager file=/data/backup/0315.dmp log=/data/backup/0315.exp  full=y


< 연습 예제 >
1. scott 사용자의 모든 데이터를 전부 백업 받는 경우
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp

2. scott 유저의 constraint 와index 를 빼고 Synonym,View,Table 의 데이타만 받는 경우
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp rows=y constraints=n indexes=n

3. Data만 빼고 Index와 제약 조건만 받고자 한다면
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp rows=n constraints=y indexes=y

Export하면, Dunp File은 Export하는 User에 필요한 모든 사항들이 SQL 문장으로 작성된다.
즉,  CREATE TABLESPACE, CREATE TABEL ....,   CREATE  VIEW .., CREATE  INDEX .. INSERT INTO .... 문장으로 구성된다.
주의할 사항은 CREATE TABLE (..  ..) tablespace tbs_name;  과 같이 Table이나 Index의 Tablespace나 Storage값이 정의되므로 Table이 저장될 Tablespace의 위치를 바꾸고자 할 때는 단순  EXPort/IMPort 방법만으로는 안된다. 
그렇다고 이 화일을 직접 편집하면 Dump File이 손상되므로 직접 편집하면 안된다.



Import

$ imp userid=Import할 유저명. Export한 유저명과 동일해야 한다. 
file      = Export한 Dumf file명
log       = Import Log file
indexfile = Data를 Import하지 않고 CREATE INDEX 문장의 SQL로 File이 만들어진다.
rows      = Data를 Import할지의 여부를 선택한다. (y : n )
indexes   = Index를 Import할지의 여부를 선택한다. ( y : n )
fromuser  = 다른 User에게 Export File을 Import하고자 할 때 Export한 User를 지정한다.
touser    = Import할 User를 지정한다.
※ fromuser , touser 옵션은 system/manager User에서만 사용할 수 있다.
igore     = Import 도중 에러가 발생해도 무시하고 계속 진행한다.


< 연습 예제 >
1. 전체 Data 입력
$ imp userid=SYSTEM/password file=dba.dmp full=y

2. scott schema의 emp,dept만 입력
$ imp userid=SYSTEM/password file=dba.dmp fromuser=scott tables=(dept,emp) 

3. jinsu schema의 Table을 scott schema로 변경해서 입력
$ imp userid=SYSTEM/password fromuser=jinsu touser=scott FILE=jinsu.dmp tables=(emp,dept)

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Restore & Recovery  (0) 2010.03.08
Backup  (0) 2010.03.08
sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
posted by I유령I 2010. 3. 15. 11:55
장애상황
Data file들만 남아있고 다른 모든 File(Redo log file, Control file)이 삭제된 상황.
Control file은 오래전에 Backup 받은 파일만 있다.
예전에 Backup 해놓은 Control file을 이용해서 Control file 재 생성 Script를 만들고 이 장애를 복구한다.

SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> select name from v$datafile; 

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/system01.dbf
/home/oracle/oradata/testdb/undotbs01.dbf
/home/oracle/oradata/testdb/sysaux01.dbf
/home/oracle/oradata/testdb/users01.dbf
/home/oracle/oradata/testdb/example01.dbf
/home/oracle/oradata/testdb/ts_a01.dbf
/home/oracle/oradata/testdb/ts_b01.dbf
/home/oracle/oradata/testdb/ts_c01.dbf

8 rows selected.

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------
/home/oracle/disk4/redo01_a.log
/home/oracle/disk5/redo01_b.log
/home/oracle/disk4/redo02_a.log
/home/oracle/disk5/redo02_b.log
/home/oracle/disk4/redo03_a.log
/home/oracle/disk5/redo03_b.log

6 rows selected.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/oradata/testdb/control02.ctl
/home/oracle/oradata/testdb/control03.ctl

#연습문제와 같이 장애를 발생시키기 위해 Redo log files와 Control file을 삭제하고 삭제 여부를 확인한다.
SQL> !rm -rf /home/oracle/disk4/*.log                                                  

SQL> !ls /home/oracle/disk4/*.log
ls: /home/oracle/disk4/*.log: 그런 파일이나 디렉토리가 없음

SQL> !rm -rf /home/oracle/disk5/*.log

SQL> !ls /home/oracle/disk5/*.log
ls: /home/oracle/disk5/*.log: 그런 파일이나 디렉토리가 없음

SQL> !rm -rf /home/oracle/oradata/testdb/*.ctl

SQL> !ls /home/oracle/oradata/testdb/*.ctl
ls: /home/oracle/oradata/testdb/*.ctl: 그런 파일이나 디렉토리가 없음

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
#Control file과 Redo log file이 삭제된 상태에서 DB를 시작할 경우 아래와 같은 에러가 발생한다.
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info


SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
#예전에 Backup 받아놓은 Control file을 Server Parameter에 설정된 경로로 복사한다.
SQL> !cp /data/backup/redo_close/control01.ctl /home/oracle/oradata/testdb/control01.ctl

SQL> !cp /data/backup/redo_close/control01.ctl /home/oracle/oradata/testdb/control02.ctl

SQL> !cp /data/backup/redo_close/control01.ctl /home/oracle/oradata/testdb/control03.ctl

#현재 Control file은 예전에 Backup 받았던  Control file이기 때문에 아래와 같이 old control file 에러가 발생한다.
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/home/oracle/oradata/testdb/system01.dbf'
ORA-01207: file is more recent than control file - old control file


#에러가 발생하면 Control file을 재 생성하는 Script를 생성한다.
SQL> alter database backup controlfile to trace as '/home/oracle/oradata/testdb/controlfile.sql';

Database altered.

#Control file 재 생성을 위해 Script 내용을 아래와 같이 수정한다.
SQL> !vi /home/oracle/oradata/testdb/controlfile.sql

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/disk4/redo01_a.log',
    '/home/oracle/disk5/redo01_b.log'
  ) SIZE 5M,
  GROUP 2 (
    '/home/oracle/disk4/redo02_a.log',
    '/home/oracle/disk5/redo02_b.log'
  ) SIZE 5M,
  GROUP 3 (
    '/home/oracle/disk4/redo03_a.log',
    '/home/oracle/disk5/redo03_b.log'
  ) SIZE 5M
DATAFILE
  '/home/oracle/oradata/testdb/system01.dbf',
  '/home/oracle/oradata/testdb/undotbs01.dbf',
  '/home/oracle/oradata/testdb/sysaux01.dbf',
  '/home/oracle/oradata/testdb/users01.dbf',
  '/home/oracle/oradata/testdb/example01.dbf',
  '/home/oracle/oradata/testdb/ts_a01.dbf',
  '/home/oracle/oradata/testdb/ts_b01.dbf',
  '/home/oracle/oradata/testdb/ts_c01.dbf'
CHARACTER SET KO16KSC5601
;
"~/oradata/testdb/controlfile.sql" 31L, 894C written

SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
#Control file 재 생성을 위해 DB를 mount 단계로 시작하기 위해 사용했던 이전 Control file은 삭제한다.
SQL> !ls /home/oracle/oradata/testdb/*.ctl    
/home/oracle/oradata/testdb/control01.ctl  /home/oracle/oradata/testdb/control03.ctl
/home/oracle/oradata/testdb/control02.ctl

SQL> !rm -rf /home/oracle/oradata/testdb/*.ctl   

SQL> !ls /home/oracle/oradata/testdb/*.ctl
ls: /home/oracle/oradata/testdb/*.ctl: 그런 파일이나 디렉토리가 없음

#Control file 재 생성을 위해 수정해놓은 /home/oracle/oradata/testdb/controlfile.sql Script 파일을 실행한다.
SQL> @/home/oracle/oradata/testdb/controlfile.sql
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes

Control file created.

SQL> !ls /home/oracle/oradata/testdb/*.ctl
/home/oracle/oradata/testdb/control01.ctl  /home/oracle/oradata/testdb/control03.ctl
/home/oracle/oradata/testdb/control02.ctl

#DB를 open 상태로 전환하고 Data file, Redo log file, Control file을 확인한다.
SQL> alter database open resetlogs;

Database altered.

SQL> select name from v$datafile;

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/system01.dbf
/home/oracle/oradata/testdb/undotbs01.dbf
/home/oracle/oradata/testdb/sysaux01.dbf
/home/oracle/oradata/testdb/users01.dbf
/home/oracle/oradata/testdb/example01.dbf
/home/oracle/oradata/testdb/ts_a01.dbf
/home/oracle/oradata/testdb/ts_b01.dbf
/home/oracle/oradata/testdb/ts_c01.dbf

8 rows selected.

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------
/home/oracle/disk4/redo03_a.log
/home/oracle/disk5/redo03_b.log
/home/oracle/disk4/redo02_a.log
/home/oracle/disk5/redo02_b.log
/home/oracle/disk4/redo01_a.log
/home/oracle/disk5/redo01_b.log

6 rows selected.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/oradata/testdb/control02.ctl
/home/oracle/oradata/testdb/control03.ctl

SQL> 
posted by I유령I 2010. 3. 15. 11:26
Control File Multiplexing 작업순서
1. DB 종료
2. Parameter 수정
3. 파일 복사
4. DB 시작

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/oradata/testdb/control02.ctl
/home/oracle/oradata/testdb/control03.ctl

위 내용을 아래와 같이 변경한다.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/data/disk1/control01.ctl
/data/disk2/control02.ctl
/data/disk3/control03.ctl


##Control File Multiplexing 과정
[oracle@ghost sql]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 15 10:32:20 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/home/oracle/oradata/testdb/control01.ctl
/home/oracle/oradata/testdb/control02.ctl
/home/oracle/oradata/testdb/control03.ctl

#Control file의 다중화 및 경로 설정
#pfile 사용시
SQL> vi $ORACLE_HOME/dbs/inittestdb.ora
*.control_files='/data/disk1/control01.ctl','/data/disk2/control02.ctl','/data/disk3/control03.ctl'

#spfile 사용시
SQL> alter system set control_files='/data/disk1/control01.ctl',
  2  '/data/disk2/control02.ctl','/data/disk3/control03.ctl'
  3  scope=spfile;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !mkdir /data/disk1 /data/disk2 /data/disk3

SQL> !cp /home/oracle/oradata/testdb/control01.ctl /data/disk1/control01.ctl 


##Control File Error #1
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info


SQL> !cp /data/disk1/control01.ctl /data/disk2/control02.ctl

SQL> !cp /data/disk1/control01.ctl /data/disk3/control03.ctl

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/data/disk1/control01.ctl
/data/disk2/control02.ctl
/data/disk3/control03.ctl

SQL> 


#Control File Error #2
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
#Control file의 버전이 다른 에러를 발생시키기 위해 이전에 Backup 받아놓은 Control file을 복사한다.
SQL> !cp /data/backup/redo_close/control03.ctl /data/disk3/control03.ctl

SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes
ORA-00214: control file '/data/disk1/control01.ctl' version 572 inconsistent with file '/data/disk3/control03.ctl' version 545


SQL> !cp /data/disk1/control01.ctl /data/disk3/control03.ctl

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> 


##Control File 재 생성
SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/data/disk1/control01.ctl
/data/disk2/control02.ctl
/data/disk3/control03.ctl

SQL> select status from v$instance;

STATUS
------------
OPEN

#실습을 위해 각 디스크에 저장되어 있는 Control file을 모두 삭제한다.
SQL> !rm -rf /data/disk1/*.ctl

SQL> !ls /data/disk1/*.ctl
ls: /data/disk1/*.ctl: 그런 파일이나 디렉토리가 없음

SQL> !rm -rf /data/disk2/*.ctl

SQL> !ls /data/disk2/*.ctl
ls: /data/disk2/*.ctl: 그런 파일이나 디렉토리가 없음

SQL> !rm -rf /data/disk3/*.ctl

SQL> !ls /data/disk3/*.ctl  
ls: /data/disk3/*.ctl: 그런 파일이나 디렉토리가 없음

#Parameter에 지정된 user_dump_dest 경로에 *.trc 포맷으로 저장된다.
SQL> alter database backup controlfile to trace;              

Database altered.

#alter database backup controlfile to trace; 명령어 실행시 user_dump_dest 경로에 저장된다.
SQL> show parameter user_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------------------
user_dump_dest                       string      /home/oracle/admin/testdb/udump
SQL> alter database backup controlfile to trace as '/data/disk1/control01.sql';

Database altered.

#'/data/disk1/control01.sql' 파일 내용엔 NORESETLOGS와 RESETLOG 두 가지 형태의 스크립트가 존재한다.
#위 명령어로 생성한 '/data/disk1/control01.sql' 파일 내용을 아래와 같이 수정한다.
#파일 내용중 아래와 같은 공백이 있을 경우 에러가 발생하니 삭제한다.
#  ) SIZE 5M
#-- STANDBY LOGFILE <--- 행 삭제
# <--- 행 삭제
#DATAFILE

SQL> !vi /data/disk1/control01.sql

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/disk4/redo01_a.log',
    '/home/oracle/disk5/redo01_b.log'
  ) SIZE 5M,
  GROUP 2 (
    '/home/oracle/disk4/redo02_a.log',
    '/home/oracle/disk5/redo02_b.log'
  ) SIZE 5M,
  GROUP 3 (
    '/home/oracle/disk4/redo03_a.log',
    '/home/oracle/disk5/redo03_b.log'
  ) SIZE 5M
DATAFILE
  '/home/oracle/oradata/testdb/system01.dbf',
  '/home/oracle/oradata/testdb/undotbs01.dbf',
  '/home/oracle/oradata/testdb/sysaux01.dbf',
  '/home/oracle/oradata/testdb/users01.dbf',
  '/home/oracle/oradata/testdb/example01.dbf',
  '/home/oracle/oradata/testdb/ts_a01.dbf',
  '/home/oracle/oradata/testdb/ts_b01.dbf',
  '/home/oracle/oradata/testdb/ts_c01.dbf'
CHARACTER SET KO16KSC5601
;
"/data/disk1/control01.sql" 31L, 894C written

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> @/data/disk1/control01.sql
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              83887696 bytes
Database Buffers          197132288 bytes
Redo Buffers                2973696 bytes

Control file created.

SQL> !ls /data/disk1/*.ctl
/data/disk1/control01.ctl

SQL> !ls /data/disk2/*.ctl
/data/disk2/control02.ctl

SQL> !ls /data/disk3/*.ctl
/data/disk3/control03.ctl

SQL> alter database open resetlogs;

Database altered.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------
/data/disk1/control01.ctl
/data/disk2/control02.ctl
/data/disk3/control03.ctl

SQL> 



##control01.sql 파일 내용
[oracle@ghost disk1]$ more control01.sql 
-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=%s_%t_%r.arc
--
-- DB_UNIQUE_NAME="testdb"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=2
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=?/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_2='LOCATION=/data/arc2'
-- LOG_ARCHIVE_DEST_2='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_2='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_2='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_2='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_2='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_2=ENABLE
--
-- LOG_ARCHIVE_DEST_1='LOCATION=/data/arc1'
-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE

--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
--     Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/disk4/redo01_a.log',
    '/home/oracle/disk5/redo01_b.log'
  ) SIZE 5M,
  GROUP 2 (
    '/home/oracle/disk4/redo02_a.log',
    '/home/oracle/disk5/redo02_b.log'
  ) SIZE 5M,
  GROUP 3 (
    '/home/oracle/disk4/redo03_a.log',
    '/home/oracle/disk5/redo03_b.log'
  ) SIZE 5M
-- STANDBY LOGFILE

DATAFILE
  '/home/oracle/oradata/testdb/system01.dbf',
  '/home/oracle/oradata/testdb/undotbs01.dbf',
  '/home/oracle/oradata/testdb/sysaux01.dbf',
  '/home/oracle/oradata/testdb/users01.dbf',
  '/home/oracle/oradata/testdb/example01.dbf',
  '/home/oracle/oradata/testdb/ts_a01.dbf',
  '/home/oracle/oradata/testdb/ts_b01.dbf',
  '/home/oracle/oradata/testdb/ts_c01.dbf'
CHARACTER SET KO16KSC5601
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_562360180.arc';
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_710077424.arc';
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_713363612.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE

-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;

-- Database can now be opened normally.
ALTER DATABASE OPEN;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/oradata/testdb/temp01.dbf'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
-- End of tempfile additions.
--
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TESTDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/home/oracle/disk4/redo01_a.log',
    '/home/oracle/disk5/redo01_b.log'
  ) SIZE 5M,
  GROUP 2 (
    '/home/oracle/disk4/redo02_a.log',
    '/home/oracle/disk5/redo02_b.log'
  ) SIZE 5M,
  GROUP 3 (
    '/home/oracle/disk4/redo03_a.log',
    '/home/oracle/disk5/redo03_b.log'
  ) SIZE 5M
-- STANDBY LOGFILE

DATAFILE
  '/home/oracle/oradata/testdb/system01.dbf',
  '/home/oracle/oradata/testdb/undotbs01.dbf',
  '/home/oracle/oradata/testdb/sysaux01.dbf',
  '/home/oracle/oradata/testdb/users01.dbf',
  '/home/oracle/oradata/testdb/example01.dbf',
  '/home/oracle/oradata/testdb/ts_a01.dbf',
  '/home/oracle/oradata/testdb/ts_b01.dbf',
  '/home/oracle/oradata/testdb/ts_c01.dbf'
CHARACTER SET KO16KSC5601
;

-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_562360180.arc';
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_710077424.arc';
-- ALTER DATABASE REGISTER LOGFILE '/data/arc2/1_1_713363612.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE

-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/oradata/testdb/temp01.dbf'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
-- End of tempfile additions.
--
[oracle@ghost disk1]$