ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 只读表空间出错的恢复方法

只读表空间出错的恢复方法

原创 Linux操作系统 作者:buliaoqingtian 时间:2019-04-01 21:00:05 0 删除 编辑

如果数据库中存在只读表空间,当其出现问题时,如何进行恢复呢?


只读表空间出错的恢复方法

情况一

只有只读表空间的数据文件出现介质问题,并且有这个只读表空间的备份。这种情况则很简单,与恢复其它表空间没有任何区别,具体过程如下所示:

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2005-08-03

  • 博文量
    88
  • 访问量
    106023