ORACLE使用RMAN对SYSTEM表空间进行介质恢复(二)
NAME
------------------------------ ------------------------------
TEST5 RMANTEST
BYS@bys1>select df.tablespace_name,df.sum_df_m as space_m,df.sum_df_m-fs.sum_fs_m as used_m,fs.sum_fs_m as free_space,to_char(trunc((df.sum_df_m-fs.sum_fs_m)/df.sum_df_m,2)*100) as "used_%" from (select tablespace_name,sum(bytes/1024/1024) as sum_df_m from dba_data_files group by tablespace_name) df,(select tablespace_name,sum(bytes/1024/1024) as sum_fs_m from dba_free_space group by tablespace_name) fs where df.tablespace_name=fs.tablespace_name and df.tablespace_name='RMANTEST';
TABLESPACE_NAME SPACE_M USED_M FREE_SPACE used_%
------------------------------ ---------- ---------- ---------- ----------
RMANTEST 10 1.0625 8.9375 10
BYS@bys1>exit
################################################################
3.模拟SYSTEM表空间故障--这里是把SYSTEM表空间的数据文件改名
使用shutdown immediate;关闭数据库时因为需要向数据文件中写入CHECKPOING相关信息,所以报错。使用ABORT选项关闭数据库。
此时打开数据库会报错,无法锁定数据文件。此时数据库是MOUNT状态
[oracle@bys001 bys1]$ pwd
/u01/oradata/bys1
[oracle@bys001 bys1]$ ls
control01.ctl redo01.log redo03.log sysaux01.dbf temp01.dbf users01.dbf
example01.dbf redo02.log rmantest.dbf system01.dbf undotbs01.dbf
[oracle@bys001 bys1]$ mv system01.dbf system01.dbfa
[oracle@bys001 bys1]$ ls
control01.ctl redo01.log redo03.log sysaux01.dbf temp01.dbf users01.dbf
example01.dbf redo02.log rmantest.dbf system01.dbfa undotbs01.dbf
[oracle@bys001 bys1]$ sqlplus / as sysdba
SYS@bys1>select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SYS@bys1>conn bys/bys
Connected.
BYS@bys1>select * from test5;
no rows selected
BYS@bys1>insert into test5 select * from dba_objects where rownum<5;
4 rows created.
BYS@bys1>commit;
Commit complete.
此时查询新建的表不报错:
BYS@bys1>select count(*) from test5;
COUNT(*)
----------
4
建表时报错--涉及数据字典,数据字典在系统表空间
BYS@bys1>create table test6 as select * from emp;
create table test6 as select * from emp
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/oradata/bys1/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/oradata/bys1/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
BYS@bys1>select * from tab;
select * from tab
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/oradata/bys1/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/u01/oradata/bys1/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: N