-- 只读表空间的备份与恢复
--======================
一、只读表空间的特性
使用只读表空间避免对静态数据的频繁备份
当使用alter tablespace tbs read only时,数据文件会执行检查点进程(将所有脏缓冲区的内容写至磁盘),
当前的SCN号会被标注,同时存储了SCN的数据文件头部被冻结.控制文件内也会记录该数据文件的冻结信息。
可以清除只读表空间的对象
二、只读表空间的备份
一般情况下,只读表空间只需要进行一次备份,即当表空间状态发生改变时应立即进行备份
可以使用OS系统cp命令来备份或RMAN进行备份只读表空间
使用RMAN时建议启用备份优化选项
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
只读表空间不支持热备
SQL> alter tablespace tbs1 begin backup;
alter tablespace tbs1 begin backup
*
ERROR at line 1:
ORA-01642: begin backup not needed for read only tablespace 'TBS1'
三、只读表空间的还原与恢复
还原与恢复只读表空间的问题在于控制文件如何控制只读表空间,分为下列三种情况:
--------- --------------- ---------------- -------------------------------------
case backup 1 crash status recovery
--------- --------------- ---------------- -------------------------------------
case 1 Read-Only Read-Only 将备份的只读表空间复制到目的地(Restore)
case 2 Read-Only Read-Write 先Restore backup1,后recover(applied log )
case 3 Read-Write Read-only 先Restore backup1,后recover(applied log )
只读表空间恢复时需要考虑的问题
重建一个控制文件时
重命名数据文件时
使用一个备份的控制文件时
下面对表空间tbs1置为只读后对比前后生成的重建控制文件的脚本
对比两者
1.使用create controlfile命令时,datafile中未列出只读表空间的数据文件
2.成功创建控制文件并打开后,使用alter database rename file命令重命名只读表空间的数据文件
3.使用alter tablespace readonly_tablespacename online 将只读表空间联机
四、演示只读表空间变化的恢复过程
1. 演示整个过程为只读表空间的情况(对应前面描述的case 1)
从上面的演示可以看出对只读表空间内的数据作任何DML操作均不可用
在 Oracle 表空间与数据文件 一文中,可以对只读表空间作delete操作(版本是10.2.0.1.0),应该是数
据库补丁的问题, 此版本为10.2.0.4.0。
2. 演示由只读变为读写后发生损坏且只有只读备份的恢复情况(对应前面描述的case 2)
3. 演示由读写表空间变为只读表空间,且仅有读写表空间备份的恢复(对应前面描述的case 3)
4. 演示数据文件状态发生多次变化且在变化时没有任何备份的恢复处理(实际上使用日志来重新构造该数据文件)
5. 演示删除只读表空间上的对象
五、总结
1. 表空间置为只读后将减少数据的备份量
2. 表空间置为只读后,不能对其中的对象执行任何DML操作
3. 只读表空间内的对象可以被清除,因为drop命令更新了数据字典,而不更新对象本身
4. 当表空间的状态发生变化时,应立即备份该表空间,以减少恢复工作
5. 对于状态多次发生改变且未及时备份的情况,日志未损坏时,可以使用联机重做、归档日志来进行恢复
使用下列命令来实现:
删除受损的数据文件(rm dbfile.dbf)
重建受损的数据文件(alter database create datafile n)
进行介质恢复(recover datafile n)
使受损的数据文件联机(alter database datafile n online)
6. 演示中多为在mount状态下来恢复,生产环境中多在open状态下恢复,可以按下列步骤实现
先将受损的只读表空间(数据文件)脱机(offline)
使用备份的表空间(数据文件)来还原(restore)
使用归档、联机日志进行介质恢复(recover)
使恢复成功的表空间(数据文件)联机(online)
7. 对于原始介质受损,不能恢复到原始位置的情况下,使用下面的命令实现转移
alter database rename file '<dir1>' to '<dir2>';
六、 快捷参考
有关性能优化请参考
有关ORACLE体系结构请参考
Oracle联机重做日志文件(ONLINE LOG FILE)
Oracle实例和Oracle数据库(Oracle体系结构)
有关闪回特性请参考
Oracle闪回特性(FLASHBACK DATABASE)
Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle闪回特性(Flashback Query、FlashbackTable)
Oracle闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考
Oracle基于用户管理恢复的处理 (详细描述了介质恢复及其处理)
有关RMAN的备份恢复与管理请参考
RMAN 备份路径困惑(使用plus archivelog时)
有关ORACLE故障请参考
对参数FAST_START_MTTR_TARGET= 0 的误解及设定
有关ASM请参考
有关SQL/PLSQL请参考
SQL 基础 --> 集合运算(UNION与UNION ALL)
SQL 基础 --> 层次化查询(STARTBY ... CONNECT BY PRIOR)
SQL 基础 --> ROLLUP与CUBE运算符实现数据汇总
有关ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle补丁全集 (Oracle 9i 10g 11g Path)