最近在看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'