oracle实验记录 (恢复read only tablespace(1))

实验记录下几种readonly tablespace恢复情况 及与controlfile情况

实验环境

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL> col  tablespace_name format a20
SQL> col  file_name format a50
SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME      FILE_NAME
-------------------- --------------------------------------------------
TEST                 D:\TEST.DBF
EXAMPLE              E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
                     F

USERS                E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX               E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1             E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
                     F

SYSTEM               E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TESTTB               D:\TESTTB.DBF

已选择7行。

 

情况一:备份时候表空间为 read only 恢复时候为read only
SQL> alter tablespace testtb read only;

表空间已更改。

SQL> alter database begin backup;

数据库已更改。

SQL> @d:\backup\backupscript.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter database end backup;

数据库已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del d:\testtb.dbf~~~~~~~~~~~模拟错误删除

SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             327158660 bytes
Database Buffers          276824064 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:\TESTTB.DBF'


SQL> select file#,online_status from v$recover_file;

     FILE# ONLINE_
---------- -------
         7 ONLINE

 

SQL> host copy d:\backup\testtb.dbf d:\testtb.dbf
已复制         1 个文件。
SQL> alter database open;

数据库已更改。
~~~~~~~~~~~~~~~~~~~~这种情况直接 restore回备份就可以


第2种情况 备份时候 read only ,恢复时候已经变成read write

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         2 CURRENT
         3 INACTIVE

SQL> alter system switch logfile;

系统已更改。

SQL> alter system checkpoint;

系统已更改。

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE
SQL> select tablespace_name ,status from dba_tablespaces;

TABLESPACE_NAME      STATUS
-------------------- ---------
SYSTEM               ONLINE
UNDOTBS1             ONLINE
SYSAUX               ONLINE
TEMP                 ONLINE
USERS                ONLINE
EXAMPLE              ONLINE
TEST                 ONLINE
TESTTB               READ ONLY

已选择8行。


SQL> alter tablespace testtb read write;

表空间已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del d:\testtb.dbf

SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             331352964 bytes
Database Buffers          272629760 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:\TESTTB.DBF'


SQL> select file#,online_status from v$recover_file;

     FILE# ONLINE_
---------- -------
         7 ONLINE


第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'D:\TESTTB.DBF'


SQL> host copy d:\backup\testtb.dbf d:\testtb.dbf
已复制         1 个文件。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 7 需要介质恢复~~~~~~~~~~~~~~~~~需要应用read only 到read write期间的redo
ORA-01110: 数据文件 7: 'D:\TESTTB.DBF'


SQL> recover datafile 7;~~~~完全恢复数据文件7
完成介质恢复。

SQL> alter database open;

数据库已更改。

SQL> select tablespace_name ,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TEST                           ONLINE
TESTTB                         ONLINE

已选择8行。


第3种情况 备份时候是read write,但 recover时 是 read only


SQL> col file_name format a50
SQL> select file_id,file_name from dba_data_files;

   FILE_ID FILE_NAME
---------- --------------------------------------------------
         6 D:\TEST.DBF
         5 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
           F

         4 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
         3 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
         2 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
           F

         1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
         7 D:\TESTTB.DBF

已选择7行。

SQL> alter database begin backup~~~~~~~~~~~会产生incremental checkpoint
  2  ;

数据库已更改。
SQL> @d:\backup\backupscript.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。~~~~~~~~~~~~~~~~~~~~~~备份时候 是read only

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1242366

SQL> alter tablespace testtb read only;

表空间已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del d:\testtb.dbf

SQL> host copy d:\backup\testtb.dbf d:\testtb.dbf
已复制         1 个文件。

SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             335547268 bytes
Database Buffers          268435456 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
ORA-01113: 文件 7 需要介质恢复
ORA-01110: 数据文件 7: 'D:\TESTTB.DBF'

SQL> recover datafile 7;~~~~~~~~~~~~~还是应用 redo 来恢复下就可以(备份后的所有redo应用,应用

到了readonly 时候)
完成介质恢复。
SQL> alter database open;

数据库已更改。
SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TEST                           ONLINE
TESTTB                         READ ONLY

已选择8行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-614095/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12020513/viewspace-614095/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值