SQL> truncate table t1;
Table truncated.
SQL> alter tablespace undotbs1 begin backup;
Tablespace altered.
-- cp undotbs01.dbf….
SQL> insert into t1 values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into t1 values(2);
1 row created.
SQL> select * from t1;
X
----------
1
2
--注意这里只提交了前面1这条数据
SQL> alter tablespace undotbs1 end backup;
Tablespace altered.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
--还原备份的undo表空间文件
Total System Global Area 125829120 bytes
Fixed Size 1266176 bytes
Variable Size 71306752 bytes
Database Buffers 50331648 bytes
Redo Buffers 2924544 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 (
9 '/oracle/app/oradata/orcl/redo01.log',
10 '/oracle/app/oradata/orcl/redo01_02.log'
11 ) SIZE 10M,
12 GROUP 2 (
13 '/oracle/app/oradata/orcl/redo02.log',
14 '/oracle/app/oradata/orcl/redo02_02.log'
15 ) SIZE 10M,
16 GROUP 3 (
17 '/oracle/app/oradata/orcl/redo03.log',
18 '/oracle/app/oradata/orcl/redo03_02.log'
19 ) SIZE 10M
20 -- STANDBY LOGFILE
21 DATAFILE
22 '/oracle/app/oradata/orcl/system01.dbf',
23 '/oracle/app/oradata/orcl/undotbs01.dbf',
24 '/oracle/app/oradata/orcl/sysaux01.dbf',
25 '/oracle/app/oradata/orcl/users01.dbf',
26 '/oracle/app/oradata/orcl/example01.dbf',
27 '/oracle/app/oradata/orcl/tbs01.dbf'
28 CHARACTER SET ZHS16GBK
29 ;
Control file created.
SQL> recover database
Media recovery complete.
SQL> alter database open;
Database altered.
SQL> select * from t1;
X
----------
1
2
大家这个地方是不是觉得奇怪,insert 2的时候没有提交commit也恢复回来了。
现象:
Insert into t1 values(2)没有显示commit
但是恢复后t1中却有2这条数据
原因为后边的alter tablespace undotbs1 end backup隐示提交了
因此:DDL,DCL会提交前面的事务,大家一定要小心这一点。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25937377/viewspace-702055/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25937377/viewspace-702055/