현재 DB는 archive mode로 운영중인 상태이다.
SQL> select tablespace_name from user_tables where table_name='TEST';
TABLESPACE_NAME
------------------------------
USERS
SQL> connect internal
Connected.
USERS라는 테이블스페이스는 아래와 같이 C:\ORACLE\ORADATA\DB\USERS01.DBF 데이터파일 1개만 가지고 있음을 알 수 있다.
SQL> select b.name from v$tablespace a, v$datafile b
2 where a.ts# = b.ts# and a.name='USERS';
NAME
--------------------------------------------------------------------------------
C:\ORACLE\ORADATA\DB\USERS01.DBF
SQL> alter tablespace users begin backup;
Tablespace altered.
SQL> host copy C:\ORACLE\ORADATA\DB\USERS01.DBF C:\ORACLE\BACKUP\DB\USERS01.DBF
1개 파일이 복사되었습니다.
SQL> alter tablespace users end backup;
Tablespace altered.
완전복구(complete recovery)가 제대로 되는지 확인하기 위해, kang.test에 1개의 데이터를 추가적으로 insert하자.
SQL> connect kang/kang
Connected.
SQL> insert into test values('backuptest', '백업테스트');
1 row created.
SQL> commit;
Commit complete.
SQL> connect internal
Connected.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
테스트를 위해, users테이블스페이스에 속한 데이터파일을 삭제하고, 이를 복구하는 과정을 보겠다.
SQL> host del C:\ORACLE\ORADATA\DB\USERS01.DBF
당연히 파일을 삭제했으므로 에러가 나면서, mount까지만 진행되었다.
SQL> startup
ORACLE instance started.
Total System Global Area 189102108 bytes
Fixed Size 75804 bytes
Variable Size 89006080 bytes
Database Buffers 99942400 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: 'C:\ORACLE\ORADATA\DB\USERS01.DBF'
v$recover_file을 보면, 복구가 필요한 파일을 정확히 파악할 수 있다.
SQL> select * from v$recover_file;
FILE# ONLINE
---------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
---------
3 ONLINE
FILE NOT FOUND 0
이제 데이터파일을 offline후, DB를 OPEN하고, 이를 복구하겠다.
users테이블스페이스에 대한 질의를 제외한 모든 질의는 가능한 상태가 된다. 확인해볼까나..
SQL> alter database datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF' offline;
Database altered.
SQL> alter database open;
Database altered.
당연히 질의 못하지.
SQL> select * from kang.test;
select * from kang.test
*
ERROR at line 1:
ORA-00376: file 3 cannot be read at this time
ORA-01110: data file 3: 'C:\ORACLE\ORADATA\DB\USERS01.DBF'
users테이블스페이스를 제외하고는 되지.
아래의 예가 좀 적당치 못한 것 같지만...
SQL> select * from all_users;
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SYS 0 25-APR-03
SYSTEM 5 25-APR-03
OUTLN 11 25-APR-03
DBSNMP 16 25-APR-03
AURORA$JIS$UTILITY$ 25 25-APR-03
OSE$HTTP$ADMIN 26 25-APR-03
AURORA$ORB$UNAUTHENTICATED 27 25-APR-03
ORDSYS 28 25-APR-03
ORDPLUGINS 29 25-APR-03
MDSYS 30 25-APR-03
CTXSYS 33 25-APR-03
KANG 35 25-APR-03
12 rows selected.
백업해둔 데이터파일을 restore한뒤, recover한다.
백업한 뒤에 insert한 '백업테스트'라는 데이터도 복구되었음을 알 수 있다.
SQL> host copy C:\ORACLE\BACKUP\DB\USERS01.DBF C:\ORACLE\ORADATA\DB\USERS01.DBF
1개 파일이 복사되었습니다.
SQL> recover datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF';
Media recovery complete.
SQL> alter database datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF' online;
Database altered.
SQL> conn kang/kang
Connected.
SQL> select * from kang.test;
ID NAME
---------- ----------
maddog 강명규
dbakorea 강명규
xman 엑스맨
backuptest 백업테스트
SQL> select tablespace_name from user_tables where table_name='TEST';
TABLESPACE_NAME
------------------------------
USERS
SQL> connect internal
Connected.
USERS라는 테이블스페이스는 아래와 같이 C:\ORACLE\ORADATA\DB\USERS01.DBF 데이터파일 1개만 가지고 있음을 알 수 있다.
SQL> select b.name from v$tablespace a, v$datafile b
2 where a.ts# = b.ts# and a.name='USERS';
NAME
--------------------------------------------------------------------------------
C:\ORACLE\ORADATA\DB\USERS01.DBF
SQL> alter tablespace users begin backup;
Tablespace altered.
SQL> host copy C:\ORACLE\ORADATA\DB\USERS01.DBF C:\ORACLE\BACKUP\DB\USERS01.DBF
1개 파일이 복사되었습니다.
SQL> alter tablespace users end backup;
Tablespace altered.
완전복구(complete recovery)가 제대로 되는지 확인하기 위해, kang.test에 1개의 데이터를 추가적으로 insert하자.
SQL> connect kang/kang
Connected.
SQL> insert into test values('backuptest', '백업테스트');
1 row created.
SQL> commit;
Commit complete.
SQL> connect internal
Connected.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
테스트를 위해, users테이블스페이스에 속한 데이터파일을 삭제하고, 이를 복구하는 과정을 보겠다.
SQL> host del C:\ORACLE\ORADATA\DB\USERS01.DBF
당연히 파일을 삭제했으므로 에러가 나면서, mount까지만 진행되었다.
SQL> startup
ORACLE instance started.
Total System Global Area 189102108 bytes
Fixed Size 75804 bytes
Variable Size 89006080 bytes
Database Buffers 99942400 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: 'C:\ORACLE\ORADATA\DB\USERS01.DBF'
v$recover_file을 보면, 복구가 필요한 파일을 정확히 파악할 수 있다.
SQL> select * from v$recover_file;
FILE# ONLINE
---------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
---------
3 ONLINE
FILE NOT FOUND 0
이제 데이터파일을 offline후, DB를 OPEN하고, 이를 복구하겠다.
users테이블스페이스에 대한 질의를 제외한 모든 질의는 가능한 상태가 된다. 확인해볼까나..
SQL> alter database datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF' offline;
Database altered.
SQL> alter database open;
Database altered.
당연히 질의 못하지.
SQL> select * from kang.test;
select * from kang.test
*
ERROR at line 1:
ORA-00376: file 3 cannot be read at this time
ORA-01110: data file 3: 'C:\ORACLE\ORADATA\DB\USERS01.DBF'
users테이블스페이스를 제외하고는 되지.
아래의 예가 좀 적당치 못한 것 같지만...
SQL> select * from all_users;
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SYS 0 25-APR-03
SYSTEM 5 25-APR-03
OUTLN 11 25-APR-03
DBSNMP 16 25-APR-03
AURORA$JIS$UTILITY$ 25 25-APR-03
OSE$HTTP$ADMIN 26 25-APR-03
AURORA$ORB$UNAUTHENTICATED 27 25-APR-03
ORDSYS 28 25-APR-03
ORDPLUGINS 29 25-APR-03
MDSYS 30 25-APR-03
CTXSYS 33 25-APR-03
KANG 35 25-APR-03
12 rows selected.
백업해둔 데이터파일을 restore한뒤, recover한다.
백업한 뒤에 insert한 '백업테스트'라는 데이터도 복구되었음을 알 수 있다.
SQL> host copy C:\ORACLE\BACKUP\DB\USERS01.DBF C:\ORACLE\ORADATA\DB\USERS01.DBF
1개 파일이 복사되었습니다.
SQL> recover datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF';
Media recovery complete.
SQL> alter database datafile 'C:\ORACLE\ORADATA\DB\USERS01.DBF' online;
Database altered.
SQL> conn kang/kang
Connected.
SQL> select * from kang.test;
ID NAME
---------- ----------
maddog 강명규
dbakorea 강명규
xman 엑스맨
backuptest 백업테스트
'Oracle > admin' 카테고리의 다른 글
로그마이너 패키지 설치&실습 (0) | 2015.09.14 |
---|---|
Reorg 시나리오 (0) | 2015.09.14 |
Flashback Database (0) | 2015.09.14 |
DB link (0) | 2015.09.14 |
UNDO, REDO, LOGMINER (0) | 2015.09.14 |