|
sys@TESTDB11>select '! rm ' || name from v$datafile;
'!RM'||NAME ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ! rm /u01/app/oracle/oradata/TestDB11/system01.dbf ! rm /u01/app/oracle/oradata/TestDB11/sysaux01.dbf ! rm /u01/app/oracle/oradata/TestDB11/undotbs01.dbf ! rm /u01/app/oracle/oradata/TestDB11/users01.dbf ! rm /u01/app/oracle/oradata/TestDB11/example01.dbf ! rm /u01/app/oracle/oradata/TestDB11/newundotbs01.dbf
6 rows selected.
--关库 sys@TESTDB11>shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
--文件损坏 sys@TESTDB11>! rm /u01/app/oracle/oradata/TestDB11/system01.dbf
! rm /u01/app/oracle/oradata/TestDB11/system01.dbf ! rm /u01/app/oracle/oradata/TestDB11/sysaux01.dbf ! rm /u01/app/oracle/oradata/TestDB11/undotbs01.dbf ! rm /u01/app/oracle/oradata/TestDB11/users01.dbf ! rm /u01/app/oracle/oradata/TestDB11/example01.dbf ! rm /u01/app/oracle/oradata/TestDB11/newundotbs01.dbff
sys@TESTDB11>! ls /u01/app/oracle/oradata/TestDB11 control01.ctl redo01.log redo02.log redo03.log temp01.dbf
--还原到新的位置 sys@TESTDB11>! cp /backup/inconsistent_backup/*.dbf /oradata/TestDB11
--尝试启动 sys@TESTDB11>startup ORACLE instance started.
Total System Global Area 855982080 bytes Fixed Size 2230792 bytes Variable Size 641730040 bytes Database Buffers 209715200 bytes Redo Buffers 2306048 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/u01/app/oracle/oradata/TestDB11/system01.dbf'
--查看需要恢复的文件的状态 sys@TESTDB11>select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME ---------- ------- ------- ----------------------------------------------------------------- ---------- --------- 1 ONLINE ONLINE FILE NOT FOUND 0 2 ONLINE ONLINE FILE NOT FOUND 0 3 ONLINE ONLINE FILE NOT FOUND 0 4 ONLINE ONLINE FILE NOT FOUND 0 5 ONLINE ONLINE FILE NOT FOUND 0 6 ONLINE ONLINE FILE NOT FOUND 0
6 rows selected.
--确定在控制文件中重名称文件需要执行的命令 sys@TESTDB11>select length('/u01/app/oracle/oradata/TestDB11/') from dual;
LENGTH('/U01/APP/ORACLE/ORADATA/TESTDB11/') ------------------------------------------- 33 sys@TESTDB11>select substr(name, 34) from v$datafile;
SUBSTR(NAME,34) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- system01.dbf sysaux01.dbf undotbs01.dbf users01.dbf example01.dbf newundotbs01.dbf
6 rows selected.
sys@TESTDB11>select 'alter database rename file ''' || name || ''' to ''/oradata/TestDB11/' || 2 substr(name, 34) || ''';' from v$datafile;
'ALTERDATABASERENAMEFILE'''||NAME||'''TO''/ORADATA/TESTDB11/'||SUBSTR(NAME,34)||''';' ---------------------------------------------------------------------------------------------------------------------------------------------------------------- alter database rename file '/u01/app/oracle/oradata/TestDB11/system01.dbf' to '/oradata/TestDB11/system01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/sysaux01.dbf' to '/oradata/TestDB11/sysaux01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/undotbs01.dbf' to '/oradata/TestDB11/undotbs01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/users01.dbf' to '/oradata/TestDB11/users01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/example01.dbf' to '/oradata/TestDB11/example01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/newundotbs01.dbf' to '/oradata/TestDB11/newundotbs01.dbf';
6 rows selected.
--修改控制文件中记录的文件位置和名称 alter database rename file '/u01/app/oracle/oradata/TestDB11/system01.dbf' to '/oradata/TestDB11/system01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/sysaux01.dbf' to '/oradata/TestDB11/sysaux01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/undotbs01.dbf' to '/oradata/TestDB11/undotbs01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/users01.dbf' to '/oradata/TestDB11/users01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/example01.dbf' to '/oradata/TestDB11/example01.dbf'; alter database rename file '/u01/app/oracle/oradata/TestDB11/newundotbs01.dbf' to '/oradata/TestDB11/newundotbs01.dbf';
--确定修改成功 sys@TESTDB11>select name from v$datafile;
NAME ------------------------------------------------------------ /oradata/TestDB11/system01.dbf /oradata/TestDB11/sysaux01.dbf /oradata/TestDB11/undotbs01.dbf /oradata/TestDB11/users01.dbf /oradata/TestDB11/example01.dbf /oradata/TestDB11/newundotbs01.dbf
6 rows selected. --恢复,开库 sys@TESTDB11>recover database; Media recovery complete. sys@TESTDB11>alter database open;
Database altered. |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1153193/ ,如需转载,请注明出处,否则将追究法律责任。