oracle user-maneged recovery(二)(一)

2014-11-24 15:56:18 · 作者: · 浏览: 3
oracle user-maneged recovery(二)
将数据文件还原到新位置的恢复过程:
1.使用操作系统命令COPY文件到新位置
2.启动并装载 数据库
3.使用alter database命令更新控制文件 例如:alter database rename file 'xxxxxxxx' to 'xxxxxxxx';
SQL> create tablespace tbs_test datafile '/database/oradata/skyread/tbs_test.dbf' size 10M; --创建测试表空间
Tablespace created.
SQL> select file_name from dba_data_files where tablespace_name='TBS_TEST';
FILE_NAME
--------------------------------------------------------------------------------
/database/oradata/skyread/tbs_test.dbf
1 rows selected.
SQL> alter tablespace tbs_test begin backup; --热备
Tablespace altered.
SQL> !
oracle@readerlogdb-> cp /database/oradata/skyread/tbs_test.dbf /home/oracle/tbs_test.dbf
oracle@readerlogdb-> exit
exit
SQL> alter tablespace tbs_test end backup;
Tablespace altered.
SQL> alter system archive log current;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup mount;
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 2090880 bytes
Variable Size 1375733888 bytes
Database Buffers 3657433088 bytes
Redo Buffers 14684160 bytes
Database mounted.
SQL> alter database rename file '/database/oradata/skyread/tbs_test.dbf' to '/home/oracle/tbs_test.dbf'; --用新位置的数据文件还原
Database altered.
SQL> alter database open; --打开数据库
alter database open
*
ERROR at line 1:
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: '/home/oracle/tbs_test.dbf'
SQL> recover automatic datafile 2; --需要介质恢复,恢复一下
Media recovery complete.
SQL> alter database open;
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='TBS_TEST'; --可见已经用到新位置的数据文件
FILE_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
/home/oracle/tbs_test.dbf TBS_TEST
完全恢复:
1.恢复关闭的数据库
恢复的文件是 系统表空间或者UNDO表空间
需要恢复整个数据库或者大多数数据文件
数据库非7*24小时运行
SQL> alter tablespace SYSTEM begin backup;
Tablespace altered.
SQL> !cp /database/oradata/skyread/system01.dbf /home/oracle/system01.dbf --热备system表空间
SQL> alter tablespace system end backup;
Tablespace altered.
SQL> create table t2 (a int);
SQL> ! mv /database/oradata/skyread/system01.dbf /database/oradata/skyread/system01.dbf.bak --损坏system表空间
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 2090880 bytes
Variable Size 1375733888 bytes
Database Buffers 3657433088 bytes
Redo Buffers 14684160 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/database/oradata/skyread/system01.dbf'
SQL> ! cp /home/oracle/system01.dbf /database/oradata/skyread/system01.dbf --从备份中copy文件
SQL> recover database; --介质恢复,这里也可以用recover datafile 1;应用了所有归档和redo
Media recovery complete.
SQL> alter database open; --打开数据库
Database altered.
SQL> desc t2 --看到恢复到了宕机前的状态
Name Null Type
---------