补充与附录:
一、跳过表空间(Skipping Tablespaces in RMAN DUPLICATE DATABASE)
有时候,并非数据库的所有表空间都需要备份,比如你在创建副本数据库时,想跳过那些read-only或OFFLINE的表空间,这个简单,来来来,跟我一起做,左三圈右三圈脖子扭扭屁股扭扭,不是跳舞,是放松放松,你已经连续盯着屏幕这么久,而且都是看些蝌蚪儿字,要注意保护眼睛啊,黑黑~~~~
要跳过只读表空间,在执行duplicate命令时指定SKIP READONLY子句即可。而对于离线表空间,在执行duplicate命令之前将其置为OFFLINE NORMAL状态即可,RMAN复制时会跳过只读或离线表空间的数据文件。如果某个表空间即不是readonly也并非offline,但你就是不想复制,表急,duplicate还有杀手锏。在执行duplicate命令时通过SKIP TABLESPACE XXX子句指定你要跳过的表空间,如果要跳过的表空间有多个,中间以,(逗号)分隔即可。
当复制完成之后,通过查询副本数据库的v$datafile或DBA_DATA_FILES、DBA_TABLESPACES可以获取表空间以及数据文件的状态。
例如:
SQL> select status,enabled,name from v$datafile; STATUS ENABLED NAME ------- ---------- -------------------------------------------------- SYSTEM READ WRITE F:\ORACLE\ORADATA\JSSDUP\SYSTEM01.DBF ONLINE READ WRITE F:\ORACLE\ORADATA\JSSDUP\UNDOTBS01.DBF ONLINE READ WRITE F:\ORACLE\ORADATA\JSSDUP\SYSAUX01.DBF ONLINE READ WRITE F:\ORACLE\ORADATA\JSSDUP\JSSWEB.DBF ONLINE READ WRITE F:\ORACLE\ORADATA\JSSDUP\USERS01.DBF
对于readonly表空间,v$datafile中STATUS列会显示为OFFLINE,ENABLE列会显示为READ ONLY ,Name列会显示为MISSING xxx。
对于offline表空间,v$datafile中STATUS列会显示为OFFLINE,ENABLE列会显示为DISABLED ,Name列会显示为MISSING xxx。