`
itspace
  • 浏览: 978442 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

表空间处于read only时,如何进行全库恢复(一)

阅读更多
本次案例仅测试表空间处于read only时,如何进行全库恢复。为简化测试流程,数据库采用冷备份,控制文件采用rman在线备份
[oracle@linuxsvr ora10r2]$ cp *.dbf ../orabak

业务表空间没有增加数据文件
故障发生时业务表空间处于read only状态。
1、controlfile备份在业务表空间read only之前
14:18:38 SQL> select STATUS from dba_tablespaces where tablespace_name='ZHOU';

STATUS
---------
ONLINE

14:18:59 SQL> create user zhou identified by zhou default tablespace zhou;

User created.

14:19:33 SQL> grant dba to zhou;

Grant succeeded.

14:19:42 SQL> alter system switch logfile;

System altered.

14:19:51 SQL> /

System altered.

14:19:51 SQL> conn zhou/zhou
Connected.
14:19:56 SQL> create table test1 as select * from sys.obj$;

Table created.

14:20:15 SQL> alter system switch logfile;

System altered.

14:20:27 SQL> delete from test1 where rownum<100;

99 rows deleted.

14:20:38 SQL> commit;

Commit complete.

14:28:30 SQL> select count(*) from test1;

  COUNT(*)
----------
     50609
    
RMAN> copy current controlfile to '/tmp/before_readonly.ctl';

Starting backup at 19-DEC-10
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying current control file
output filename=/tmp/before_readonly.ctl tag=TAG20101219T142748 recid=1 stamp=738167269
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 19-DEC-10

RMAN> exit


14:28:35 SQL> alter system switch logfile;

System altered.

14:28:48 SQL> alter tablespace zhou read only;

Tablespace altered.


14:29:08 SQL> conn /as sysdba
Connected.
14:29:11 SQL> shutdown abort
ORACLE instance shut down.

进行datafile恢复
[oracle@linuxsvr oradata]$ mv ora10r2 ora10r2_new
[oracle@linuxsvr oradata]$ mv orabak oradata

进行controlfile恢复
cp /tmp/before_readonly.ctl ./ora10r2/control01.ctl

注意到虽然控制文件比数据文件要新,但由于controlfile为rman所备份,所以需要加后缀using backup controlfile。此部分测试将在本测试完成后再做测试
14:35:44 SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
            526338
            526338
            526338
            526338
            526534

14:36:19 SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
            505976
            505976
            505976
            505976
            505976
           
14:34:52 SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

进行数据库恢复
14:36:28 SQL> recover database using backup controlfile;
ORA-00279: change 505976 generated at 12/19/2010 14:11:04 needed for thread 1
ORA-00289: suggestion : /oradata/archlog/1_5_728482772.dbf
ORA-00280: change 505976 for thread 1 is in sequence #5


14:38:20 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
。。。

ORA-00279: change 526655 generated at 12/19/2010 14:28:48 needed for thread 1
ORA-00289: suggestion : /oradata/archlog/1_15_728482772.dbf
ORA-00280: change 526655 for thread 1 is in sequence #15
ORA-00278: log file '/oradata/archlog/1_14_728482772.dbf' no longer needed for
this recovery


ORA-00308: cannot open archived log '/oradata/archlog/1_15_728482772.dbf'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3

注意到Oracle找不到1_15_728482772.dbf,这是由于redolog尚未归档所致,要进行完全恢复,只要将redolog输进即可,Oracle会进行自己匹配恢复
14:38:48 SQL> recover database using backup controlfile;
ORA-00279: change 526655 generated at 12/19/2010 14:28:48 needed for thread 1
ORA-00289: suggestion : /oradata/archlog/1_15_728482772.dbf
ORA-00280: change 526655 for thread 1 is in sequence #15


14:38:57 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/ora10r2_new/redo02.log
Log applied.
Media recovery complete.

由于用了using backup controlfile,必须要用 resetlogs选项打开。
14:40:53 SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


14:41:28 SQL> alter database open NORESETLOGS;
alter database open NORESETLOGS
*
ERROR at line 1:
ORA-01588: must use RESETLOGS option for database open


14:41:33 SQL> alter database open RESETLOGS;

Database altered

查看表空间状态和业务数据,并未丢失数据。
14:42:20 SQL> select status from dba_tablespaces where tablespace_name='ZHOU';

STATUS
---------
READ ONLY

14:56:00 SQL> conn zhou/zhou
Connected.
14:56:09 SQL> select count(*) from test1;

  COUNT(*)
----------
     50609
分享到:
评论

相关推荐

    ORACLE10G 使用RMAN表空间的恢复

    rman&gt; alter tablespace '表空间名' read only; ``` 6. **还原数据文件**: RMAN会自动还原相关数据文件,但有时可能需要指定具体文件: ``` rman&gt; restore datafile '/path/to/datafile.dbf'; ``` 7. **...

    如何正确的删除Oracle表空间数据文件

    尽管文档指出,READ ONLY表空间的数据文件不可删除,但实际测试表明这是可行的。 接着,我们讨论`OFFLINE`和`OFFLINE DROP`的区别。`OFFLINE`命令只是将数据文件设置为离线状态,不会实际删除它,而`OFFLINE DROP`...

    Oracle建表空间、用户操作详解-入门基础.pdf

    创建和管理UNDO表空间的方法与普通表空间类似,但需要注意的是,系统通常有一个默认的UNDO表空间,且在打开状态下只能有一个UNDO表空间处于活动状态。若需切换,须执行: ``` ALTER SYSTEM SET undo_tablespace=...

    ocp052题库

    为了确保数据库能够正常运行,SYSTEM 和 SYSAUX 表空间都必须处于在线状态。 C. Both tablespaces can be used for temporary storage if no temporary tablespace is defined. - **解释**: 这个选项也是不正确的...

    XTTS-oracle数据库迁移

    - 在进行增量备份之前确保所有表空间都处于一致状态。 - 对于非常大的数据库,建议增加`rollparallel`的值以加快滚前速度。 - 仔细检查并验证目标环境的所有配置选项。 - 在最终切换前进行充分的数据校验以确保数据...

    OCP最新题库

    - **选项C**: 执行表空间时间点恢复 (TSPITR): 可行,能够将包含 `emp` 表的表空间恢复到某个时间点。 - **选项D**: Flashback Transaction Backout: 不适用于此场景,因为它只能撤销特定事务。 - **选项E**: ...

    oracle自测题 oracle自测题oracle自测题oracle自测题oracle自测题oracle自测题

    - 表空间状态:表空间可以处于online(在线)和read write(读写)状态,还可以是offline(离线)或read only(只读)状态。 - 数据字典组成:数据字典由一系列只读的数据字典表和数据字典视图构成。 - DML操作:...

    oracle数据库回滚段专题解析

    当某个表空间处于离线状态时,如果存在正在进行的事务涉及该表空间中的数据,那么相关的回滚信息会被暂时保存在系统回滚段中。这种机制被称为DEFERED回滚段。一旦表空间重新上线,Oracle会从系统回滚段中提取相应的...

    Oracle_OCA_1Z0-052认证题库

    - 在 NOARCHIVELOG 模式下,即使数据库处于打开状态,也无法只备份 SYSTEM 表空间。 综上所述,这些知识点覆盖了 Oracle 数据库管理员在备考 1Z0-052 认证过程中需要了解的核心概念和技术细节,对于提高数据库管理...

    ocp认证oracle

    在描述中提到的“STARTUP”命令是用来启动Oracle数据库实例的,而“READ ONLY”则是指使数据库处于只读状态。最佳的操作方案是B:`STARTUP MOUNT; ALTER DATABASE READ ONLY;`。这个步骤首先启动实例并挂载数据库,...

    Oracle 12c受限模式 只读模式 静默模式 延迟模式

    - 在只读模式下,大部分的DDL操作会被禁止,例如创建表空间、添加日志文件等。 - 允许的DDL操作包括:离线/在线数据文件、切换归档模式等。 - 查看当前数据库的状态,可以查询`V$DATABASE`视图中的`OPEN_MODE`字段。...

    Oracle 11gR2 使用copy 数据文件搭建物理 Data Guard

    - 备用数据库(Standby Database):用于在主数据库出现故障时接管的数据库,它可以是开放读取的备用(Read-Only Standby)或冷备用(Cold Standby)。 2. **创建物理备用数据库**: 创建物理备用数据库的第一步...

    eclipse3[1].4.2注意事项

    在使用Eclipse过程中,可能会遇到某些插件处于Read-Only状态,导致无法进行修改或更新。此时,重置Eclipse至初始状态可能是一个有效的解决策略。具体操作包括删除`configuration`和`p2`目录下的相关文件,尤其是`...

    oracle数据库经典题目

    21. 一个表空间具有离线(OFFLINE)、在线(ONLINE)、只读(READ ONLY)、读写(READ WRITE)状态。 二、选择 1.在全局存储区SGA中,哪部分内存区域是循环使用的?( B ) A.数据缓冲区 B.日志缓冲区 C. 共享池 D...

    Oracle+DBA日常工作手册

    `命令检查所有表空间的状态,确保没有表空间处于OFFLINE或READ ONLY状态。 - **日志文件是否正常**: - 确认日志文件是否正确生成并记录,这对于故障排查非常重要。 **2. 日常工作 - 每隔一周的工作内容** - **...

    Active Dataguard实践记录

    在Oracle数据库环境中,Active Data Guard (ADG) 是一种高可用性和灾难恢复解决方案,它允许在主数据库处于活动状态时创建一个实时同步的备用数据库。本文将深入探讨在Oracle 11g环境下如何构建单实例ADG的过程,...

    oracle常用命令

    - `OPEN &lt;READ {ONLY|WRITE [RECOVER]} | RECOVER&gt; &lt;database_name&gt;`: 完全打开数据库,可能包括恢复操作。 - **关闭数据库**: - `shutdown [NORMAL|ABORT|IMMEDIATE|TRANSACTIONAL [LOCAL]]`: 不同的选项提供...

    Oracle数据库常见维护问题手册-精典

    **创建一个表空间,增加一个自动扩展到最大值的数据文件** 创建一个带有自动扩展功能的新表空间: ```sql CREATE TABLESPACE new_tbs DATAFILE '/path/to/newdatafile.dbf' SIZE 100M AUTOEXTEND ON MAXSIZE ...

    内置Reset EEPROM

    EEPROM,全称Electrically Erasable Programmable Read-Only Memory,是一种非易失性存储器,即使断电也能保持数据。在微控制器中,EEPROM常用于存储配置参数、固件更新或用户设置等信息。由于其可以进行电擦除和...

Global site tag (gtag.js) - Google Analytics