最近在看oracle恢复和备份机制。对oracle的beginbackup和endbackup,感觉很新鲜。就做了一些小实验。结果,一头雾水。不知道为什么要有这个技术。
sys@CISCOSYS> alter tablespace users begin backup; sys@CISCOSYS> select file#,status,change# from v$backup; FILE# STATUS CHANGE# ---------- ------------------ ---------- 1 NOT ACTIVE 0 2 NOT ACTIVE 0 3 NOT ACTIVE 0 4 ACTIVE 5465260 5 ACTIVE 5465260 6 NOT ACTIVE 0 7 NOT ACTIVE 0 8 NOT ACTIVE 5218407 9 NOT ACTIVE 0 10 NOT ACTIVE 0 10 rows selected. v$backup.change#:SCN号,却不是查询出来的SCN号?
查询出4,5,好数据文件。及找出表空间下的一个表,尝试进行操作。
结果发现可以操作。(在此,就不明白既然知道是backup模式,怎么还允许操作呢)
//查询某个表空间下的表 sys@CISCOSYS> select table_name ,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='USERS' and owner='SCOTT'; TABLE_NAME TABLESPACE_NAME ------------------------------ ------------------------------ DEPT USERS EMP USERS BONUS USERS SALGRADE USERS
发现处于backup 状态的表空间,依然可以修改数据。 sys@CISCOSYS> insert into scott.dept values(50,'IT','BeiJing'); 1 row created. sys@CISCOSYS> commit; Commit complete.
backup最大的作业就是锁定文件头。这有什么用呢。?疑问
sys@CISCOSYS> alter system checkpoint; System altered. checkpoint 之后,未backup的数据文件,都刷新了,但backup的数据文件依然没有变化 sys@CISCOSYS> select name,checkpoint_change# from v$datafile; NAME CHECKPOINT_CHANGE# ------------------------------ ------------------ D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\SYSTEM01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\UNDOTBS01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\SYSAUX01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465260 TA\ORCL\USERS01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465260 TA\ORCL\ST D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\ADMIN_TBS.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\TBS_STREAM01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\TBS.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\UNDO99.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\USERS02.DBF 10 rows selected.
即使checkpoint文件头也不会变。
最后关闭backup模式,所有文件头一致了。
sys@CISCOSYS> alter tablespace USERS end backup; Tablespace altered. end bakcup 之后 所有数据文件的文件头一致了。 sys@CISCOSYS> select name,checkpoint_change# from v$datafile; NAME CHECKPOINT_CHANGE# ------------------------------ ------------------ D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\SYSTEM01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\UNDOTBS01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\SYSAUX01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\USERS01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\ST D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\ADMIN_TBS.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\TBS_STREAM01.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\TBS.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\UNDO99.DBF D:\ORACLE\PRODUCT\10.2.0\ORADA 5465836 TA\ORCL\USERS02.DBF 10 rows selected.
期间,对数据文件进行了热备,恢复时,也没发现啥用。照样需要介质恢复datafile4,5才可以启动。
sys@CISCOSYS> alter database open; alter database open * ERROR at line 1: ORA-01113: file 5 needs media recovery ORA-01110: data file 5: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ST'

















