posted by I유령I 2010. 3. 10. 11:00

SQL> create table test7 (no number, hiredate date) tablespace ts_c;

Table created.

SQL> insert into test7 values (1, sysdate);

1 row created.

SQL> insert into test7 values (2, sysdate);

1 row created.

SQL> insert into test7 values (3, sysdate);

1 row created.

SQL> insert into test7 values (4, sysdate);

1 row created.

SQL> insert into test7 values (5, sysdate);

1 row created.

#commit 하지 않은 insert data는 복구가 불가능하다.
SQL> commit;

Commit complete.

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

SYSDATE
-------------------
2010-03-10:10:58:07

SQL> drop table test7;

Table dropped.

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


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

SQL> !cp -av /data/backup/open/*.dbf /data/temp_time/
`/data/backup/open/example01.dbf' -> `/data/temp_time/example01.dbf'
`/data/backup/open/sysaux01.dbf' -> `/data/temp_time/sysaux01.dbf'
`/data/backup/open/system01.dbf' -> `/data/temp_time/system01.dbf'
`/data/backup/open/ts_a01.dbf' -> `/data/temp_time/ts_a01.dbf'
`/data/backup/open/ts_b01.dbf' -> `/data/temp_time/ts_b01.dbf'
`/data/backup/open/ts_c01.dbf' -> `/data/temp_time/ts_c01.dbf'
`/data/backup/open/undotbs01.dbf' -> `/data/temp_time/undotbs01.dbf'
`/data/backup/open/users01.dbf' -> `/data/temp_time/users01.dbf'

SQL> startup mount;
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             113247824 bytes
Database Buffers          167772160 bytes
Redo Buffers                2973696 bytes
Database mounted.
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> alter database rename
  2  file '/home/oracle/oradata/testdb/system01.dbf'
  3  to '/data/temp_time/system01.dbf';

Database altered.

SQL> 

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/sysaux01.dbf'
  3  to '/data/temp_time/sysaux01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/undotbs01.dbf'
  3  to '/data/temp_time/undotbs01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/users01.dbf'
  3  to '/data/temp_time/users01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/example01.dbf'
  3  to '/data/temp_time/example01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/ts_a01.dbf'
  3  to '/data/temp_time/ts_a01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/ts_b01.dbf'
  3  to '/data/temp_time/ts_b01.dbf';

Database altered.

SQL> alter database rename
  2  file '/home/oracle/oradata/testdb/ts_c01.dbf'
  3  to '/data/temp_time/ts_c01.dbf';

Database altered.

SQL> select name from v$datafile;

NAME
--------------------------------------------------
/data/temp_time/system01.dbf
/data/temp_time/undotbs01.dbf
/data/temp_time/sysaux01.dbf
/data/temp_time/users01.dbf
/data/temp_time/example01.dbf
/data/temp_time/ts_a01.dbf
/data/temp_time/ts_b01.dbf
/data/temp_time/ts_c01.dbf

8 rows selected.

SQL> recover database until time '2010-03-10:10:58:07';
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

SQL> select no, to_char(hiredate, 'YYYY-MM-DD:HH24:MI:SS') hiredate from test7;

        NO HIREDATE
---------- -------------------
         1 2010-03-10:10:56:18
         2 2010-03-10:10:56:20
         3 2010-03-10:10:56:24
         4 2010-03-10:10:56:26
         5 2010-03-10:10:56:28

SQL> 


#실습문제 설명
10:01:00 insert into test7 values (1, sysdate);
10:02:00 insert into test7 values (2, sysdate);
10:03:00 insert into test7 values (3, sysdate);
10:03:30 commit;
10:04:00 insert into test7 values (4, sysdate);
10:05:00 insert into test7 values (5, sysdate);

recover database until time '2010-03-10:10:03:15';
-> commit; 이전으로 복구하는 부분이기 때문에 모든 데이터는 복구되지 않는다.
recover database until time '2010-03-10:10:03:45';
-> commot; 이전 1, 2, 3 데이터만 복구가 되며, commit; 이후 데이터는 복구되지 않는다.

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

Redo log file Recovery  (0) 2010.03.12
Incomplete Recovery - using backup controlfile  (0) 2010.03.11
Archive log mode Complete Recovery  (0) 2010.03.09
No Archive log mode Recovery  (0) 2010.03.08
Cold Backup & Hot Backup  (0) 2010.03.08