如果数据库中存在只读表空间,当其出现问题时,如何进行恢复呢?
只读表空间出错的恢复方法
情况一
只有只读表空间的数据文件出现介质问题,并且有这个只读表空间的备份。这种情况则很简单,与恢复其它表空间没有任何区别,具体过程如下所示:
RMAN> run 2> { 3> restore tablespace wyj; 4> recover tablespace wyj; 5> sql 'alter database open'; 6> }启动 restore 于 22-9月 -07分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=154 devtype=DISK分配的通道: ORA_DISK_2通道 ORA_DISK_2: sid=153 devtype=DISK分配的通道: ORA_DISK_3通道 ORA_DISK_3: sid=152 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件正将数据文件00007恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ01.DBF通道 ORA_DISK_1: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T010933_3H7YPGCQ_.BKP通道 ORA_DISK_2: 正在开始恢复数据文件备份集通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件正将数据文件00009恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ02.DBF通道 ORA_DISK_2: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T010933_3H7YPGRF_.BKP通道 ORA_DISK_1: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T010933_3H7YPGCQ_.BKP 标记 = TAG20070922T010933通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01通道 ORA_DISK_2: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T010933_3H7YPGRF_.BKP 标记 = TAG20070922T010933通道 ORA_DISK_2: 恢复完成, 用时: 00:00:01完成 restore 于 22-9月 -07 启动 recover 于 22-9月 -07使用通道 ORA_DISK_1使用通道 ORA_DISK_2使用通道 ORA_DISK_3 正在开始介质的恢复介质恢复完成, 用时: 00:00:00 完成 recover 于 22-9月 -07
sql 语句: alter database open
RMAN> | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
情况二
其它读写表空间所属数据文件和只读表空间的数据文件都出现介质问题,则这种恢复较复杂,过程如下:
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 71303848 bytes
Database Buffers 213909504 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'G:ORACLEPRODUCT10.2.0ORADATAFUNDUSERS01.DBF'
SQL> select * from v$recovery_file;
select * from v$recovery_file
*
第 1 行出现错误:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
SQL> alter tablespace users offline;
alter tablespace users offline
*
第 1 行出现错误:
ORA-01109: 数据库未打开
SQL> alter database datafile 4 offline;
数据库已更改。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ01.DBF'
SQL> alter database datafile 7 offline;
数据库已更改。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: 'G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ02.DBF'
SQL> alter database datafile 9 offline;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select file# from v$recover_file;
FILE#
----------
4
7
9
上面发现数据文件4,7,9需要恢复。
SQL> select file_id,tablespace_name,status from dba_data_files
SQL> /
FILE_ID TABLESPACE_NAME STATUS
---------- ------------------------------------------------------------ ------------------
6 MYUNDO AVAILABLE
5 EXAMPLE AVAILABLE
4 USERS AVAILABLE
3 SYSAUX AVAILABLE
2 UNDOTBS1 AVAILABLE
1 SYSTEM AVAILABLE
7 WYJ AVAILABLE
9 WYJ AVAILABLE
已选择8行。
确定文件所属的表空间,下面是恢复过程:
RMAN> run 2> { 3> restore database check readonly; 4> recover database; 5> sql 'alter database open'; 6> } 启动 restore 于 22-9月 -07分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=154 devtype=DISK分配的通道: ORA_DISK_2通道 ORA_DISK_2: sid=153 devtype=DISK分配的通道: ORA_DISK_3通道 ORA_DISK_3: sid=152 devtype=DISK 全部数据库备份将排除文件 5通道 ORA_DISK_1: 正在开始恢复数据文件备份集通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件正将数据文件00002恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDUNDOTBS01.DBF正将数据文件00006恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDMYUNDO01.DBF正将数据文件00007恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ01.DBF通道 ORA_DISK_1: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP通道 ORA_DISK_2: 正在开始恢复数据文件备份集通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件正将数据文件00003恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDSYSAUX01.DBF正将数据文件00004恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDUSERS01.DBF正将数据文件00009恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ02.DBF通道 ORA_DISK_2: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RDOZ_.BKP通道 ORA_DISK_3: 正在开始恢复数据文件备份集通道 ORA_DISK_3: 正在指定从备份集恢复的数据文件正将数据文件00001恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDSYSTEM01.DBF通道 ORA_DISK_3: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80R8XS_.BKP通道 ORA_DISK_1: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_1: 恢复完成, 用时: 00:00:48通道 ORA_DISK_2: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80RDOZ_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_2: 恢复完成, 用时: 00:00:48通道 ORA_DISK_3: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80R8XS_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_3: 恢复完成, 用时: 00:00:48故障转移到上一个备份 完成 restore 于 22-9月 -07 启动 recover 于 22-9月 -07使用通道 ORA_DISK_1使用通道 ORA_DISK_2使用通道 ORA_DISK_3未处理数据文件 7, 因为文件是只读的未处理数据文件 9, 因为文件是只读的 正在开始介质的恢复介质恢复完成, 用时: 00:00:03 完成 recover 于 22-9月 -07
sql 语句: alter database open
RMAN> | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
上面的方法是进行完全恢复,但其实是没必要的,只是想介绍如何使用check readonly的使用,其实如果进行restore datafile 或restore tablespace 则RMAN不管数据文件是只读还是读写的,都会恢复。下面是具体恢复过程,而且时间上也少。
RMAN> run 2> { 3> restore tablespace wyj,users; 4> recover tablespace wyj,users; 5> sql 'alter database open'; 6> } 启动 restore 于 22-9月 -07分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=154 devtype=DISK分配的通道: ORA_DISK_2通道 ORA_DISK_2: sid=153 devtype=DISK分配的通道: ORA_DISK_3通道 ORA_DISK_3: sid=152 devtype=DISK 通道 ORA_DISK_2: 正在开始恢复数据文件备份集通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件正将数据文件00009恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ02.DBF正将数据文件00004恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDUSERS01.DBF通道 ORA_DISK_2: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RDOZ_.BKP通道 ORA_DISK_1: 正在开始恢复数据文件备份集通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件正将数据文件00007恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ01.DBF通道 ORA_DISK_1: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP通道 ORA_DISK_1: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04通道 ORA_DISK_2: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80RDOZ_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_2: 恢复完成, 用时: 00:00:04完成 restore 于 22-9月 -07 启动 recover 于 22-9月 -07使用通道 ORA_DISK_1使用通道 ORA_DISK_2使用通道 ORA_DISK_3 正在开始介质的恢复介质恢复完成, 用时: 00:00:01 完成 recover 于 22-9月 -07
sql 语句: alter database open RMAN> | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
情况三
备份时表空间为只读状态,后改为可读写状态,后来它的数据文件和其它表空间的数据文件发生介质问题。
RMAN> run 2> { 3> restore tablespace wyj,users; 4> recover tablespace wyj,users; 5> sql 'alter database open'; 6> }启动 restore 于 22-9月 -07正在启动全部恢复目录的 resync完成全部 resync分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=154 devtype=DISK分配的通道: ORA_DISK_2通道 ORA_DISK_2: sid=153 devtype=DISK分配的通道: ORA_DISK_3通道 ORA_DISK_3: sid=152 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件正将数据文件00007恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ01.DBF通道 ORA_DISK_1: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP通道 ORA_DISK_2: 正在开始恢复数据文件备份集通道 ORA_DISK_2: 正在指定从备份集恢复的数据文件正将数据文件00009恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDWYJ02.DBF正将数据文件00004恢复到G:ORACLEPRODUCT10.2.0ORADATAFUNDUSERS01.DBF通道 ORA_DISK_2: 正在读取备份段 G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUN DBACKUPSET2007_09_22O1_MF_NNNDF_TAG20070922T014440_3H80RDOZ_.BKP通道 ORA_DISK_1: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAFUNDBACKUPSET2007_09_22 O1_MF_NNNDF_TAG20070922T014440_3H80RRQX_.BKP 标记 = TAG20070922T014440通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04通道 ORA_DISK_2: 已恢复备份段 1段句柄 = G:ORACLEPRODUCT10.2.0FLASH_RE
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/526592/viewspace-236755/
,如需转载,请注明出处,否则将追究法律责任。
|