(09)常被人遗忘的只读表空间

    在数据库管理中,会把一些历史数据或基本不变化的数据放入只读表空间。因为这种表空间上只能进行读操作而不能做DML操作。

能有效防止被意外的修改或删除,所以很适合存放上述类型的数据,另外,它在备份方面还有一个好处,因为它是只读的,就是没有变化,

只需在设为只读后备份一次 就够了,以后备份时就可以忽略,这样能减少一部份备份压力。这造成慢慢的,人们会忽视掉它。

    情况一:确实在设为只读表空间时备份了一次,但后面忽视了它。恢复时那份备份找不到了。
         这种情况是和管理员有关的,制定合理的规范很重要。
    情况二: 出在恢复时,基本上大部份的资料上都不会讲恢复只读表空间。但你要恢复的数据库确实有只读表空间。
          而你可能不记得或不清楚还有这事。所以恢复时忽略了它。而Oracle命令忽略掉只读表空间也是能恢复成功的。
          这种情况后果有大有小,看运气了。

把只读表空间的创建和恢复处理列一下。
  
    设置和查询只读表空间:
    1. 将一个表空间设为只读表空间    
    create tablespace XCL_DATA datafile '/u01/app/oracle/xcldb/xcl_data01dbf' size 1m;
    alter tablespace XCL_DATA read only;   
   
2.查询下视图确认数据库中现有的只读表空间及对应的数据文件      
 SELECT t.tablespace_name tbs_name,
	          d.file_id    tbsf_id,
			  d.file_name  tbsf_name
	   FROM  dba_tablespaces t,dba_data_files d 
	   WHERE t.tablespace_name=d.tablespace_name  AND t.status='READ ONLY';
   备份恢复部份:
             
情况一: 全库备份时,包含只读表空间
   这种情况做RMAN恢复时,最重要的是加上check readonly指定要强制恢复只读表空间。
  备份:
       backup database ;
  恢复:
      restore database check readonly;
      recover database check readonly;

 
情况二: 单独备份只读表空间,全库备份时跳过它 
  备份:
   backup tablespace XCL_DATA;
   backup database skip readonly;

 恢复:
   restore database ;
   restore tablespace XCL_DATA;
   recover database ;


情况三: 采用冷备份方式单独备份了只读表空间的数据文件,全库备份时有跳过只读表空间 
  备份:        
    a. 采用host copy或copy复制只读表空间的所有数据文件到另一个目录备份
   b.备份全库
      backup database skip readonly;

 恢复:
    a.restore database ;
    b.将另一个目录备份的只读表空间数据文件恢复回去。
    c.recover database ;

 
        这种情况不同于,以前备份数据库时要"alter tablespace ... begin backup"将表空间置于联机备份模式,再去备份数据文件。

只读表空间直接复制数据文件即可。


MAIL: xcl_168@aliyun.com

BLOG: http://blog.csdn.net/xcl168


### 回答1: 在 Oracle 数据库只读表空间无法进行更新操作,因此需要采用特殊的方式进行恢复。以下是在使用 RMAN 进行只读表空间恢复的步骤: 1. 在正情况下,只读表空间无法进行备份。因此,我们需要在只读表空间变为可写状态之后进行备份。可以使用以下命令将只读表空间变为可写状态: ``` ALTER TABLESPACE tablespace_name READ WRITE; ``` 2. 确认只读表空间已经变为可写状态,并且进行备份。 3. 当只读表空间出现问题需要恢复时,需要先将只读表空间变为可写状态。可以使用以下命令将只读表空间变为可写状态: ``` ALTER TABLESPACE tablespace_name READ WRITE; ``` 4. 使用 RMAN 进行恢复操作。可以使用以下命令进行只读表空间恢复: ``` RMAN> RUN { SET NEWNAME FOR DATAFILE 'datafile_path' TO 'new_datafile_path'; RESTORE TABLESPACE tablespace_name; RECOVER TABLESPACE tablespace_name; } ``` 其,`datafile_path` 是只读表空间的数据文件路径,`new_datafile_path` 是恢复后的数据文件路径。 5. 恢复完成后,将只读表空间变为只读状态。可以使用以下命令将只读表空间变为只读状态: ``` ALTER TABLESPACE tablespace_name READ ONLY; ``` 以上就是使用 RMAN 进行只读表空间恢复的步骤。需要注意的是,在进行只读表空间恢复前,必须将只读表空间变为可写状态,并进行备份。 ### 回答2: Oracle的RMAN(Recovery Manager)是一个备份恢复工具,用于管理数据库的备份恢复操作。在恢复只读表空间时,我们可以按照以下步骤进行操作: 1. 首先,使用RMAN备份只读表空间。我们可以使用备份命令将只读表空间备份到一个可用的位置,以便在恢复过程将其还原回数据库。例如,可以使用类似如下的备份命令: RMAN> BACKUP TABLESPACE tablespacename; 2. 在确认备份已经完成后,我们可以开始恢复只读表空间。首先,将只读表空间离线,并清空表空间。可以使用以下SQL语句来执行此操作: SQL> ALTER TABLESPACE tablespacename OFFLINE IMMEDIATE; SQL> DROP TABLESPACE tablespacename INCLUDING CONTENTS AND DATAFILES; 3. 接下来,使用RMAN将备份只读表空间还原到数据库。我们可以使用如下命令将备份只读表空间还原到数据库: RMAN> RESTORE TABLESPACE tablespacename; 4. 在还原完成后,将只读表空间重新设置为只读模式。使用以下SQL语句来执行此操作: SQL> ALTER TABLESPACE tablespacename READ ONLY; 通过以上步骤,我们可以使用RMAN备份恢复工具来成功恢复只读表空间。需要注意的是,恢复只读表空间时需要进行足够的备份,以便能够还原到最近可用的状态,并确保在恢复过程不会丢失任何数据。 ### 回答3: Oracle的RMAN(Recovery Manager)可以用于恢复只读表空间。以下是恢复只读表空间的步骤: 1. 首先,确定需要恢复只读表空间的名称。可以通过查询数据库的v$tablespace视图来获取表空间的信息。 2. 在RMAN命令行界面,连接到目标数据库。 3. 运行以下命令来将表空间置为可读写状态: ``` SQL 'ALTER TABLESPACE <tablespace_name> READ WRITE'; ``` 4. 运行以下命令来检测并修复表空间的结构问题: ``` RECOVER TABLESPACE <tablespace_name>; ``` 5. 运行以下命令来还原和恢复表空间的数据文件: ``` RESTORE TABLESPACE <tablespace_name>; RECOVER TABLESPACE <tablespace_name>; ``` 6. 最后,将表空间设置为只读状态: ``` SQL 'ALTER TABLESPACE <tablespace_name> READ ONLY'; ``` 需要注意的是,在执行恢复操作之前,最好备份数据库以及相关的数据文件。此外,恢复只读表空间可能需要一定的时间,具体取决于表空间大小和系统配置。 总之,使用RMAN工具可以方便地恢复只读表空间,确保数据库的完整性和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值