实验记录下几种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/