RMAN 不完全恢复
之前做好備份
SQL> conn scott/abc123
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; ?2012-04-24 10:10:53
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
SYSDATE
-------------------
2012-03-12 01:28:15
SQL> drop table emp;
SQL> commit;
SQL> shutdown abort;
SQL> startup mount
SQL> !rman target /
RMAN> run {
?set until time "to_date('2012-04-24 10:10:53','yyyy-mm-dd hh24:mi:ss')";
?restore database;
?recover database;
?alter database open resetlogs;
?}
數據庫直接打開
scott用戶查看emp表
==============================================
所有文件丟失,參數文件也丟失
RMAN> backup database;
1.刪除所有文件
[oracle@sq123 ~]$ cd /oracle/app/oradata/TEST/
[oracle@sq123 TEST]$ rm -rf *
? cd /oracle/app/oracle/product/10.2.0/db_1/dbs
[oracle@sq123 dbs]$ rm -rf spfileTEST.ora?
[oracle@sq123 dbs]$ rm -rf initdw.ora?
SQL> startup
(失敗,找不到參數文件)
2.[oracle@sq123 ~]$ cd /oracle/app/admin/TEST/bdump/
? [oracle@sq123 bdump]$ tail -500 alert_TEST.log |more
? (找到之前啟動時的參數)
? ? processes ? ? ? ? ? ? ? ?= 150
? __shared_pool_size ? ? ? = 79691776
? __large_pool_size ? ? ? ?= 4194304
? __java_pool_size ? ? ? ? = 4194304
? __streams_pool_size ? ? ?= 0
? nls_language ? ? ? ? ? ? = AMERICAN
? sga_target ? ? ? ? ? ? ? = 285212672
? control_files ? ? ? ? ? ?= /oracle/app/oradata/TEST/control01.ctl, /oracle/app/orad
ata/TEST/control02.ctl, /oracle/app/oradata/TEST/control03.ctl
? db_block_size ? ? ? ? ? ?= 8192
? __db_cache_size ? ? ? ? ?= 192937984
? compatible ? ? ? ? ? ? ? = 10.2.0.1.0
? db_file_multiblock_read_count= 16
? db_recovery_file_dest ? ?= /oracle/app/flash_recovery_area
? db_recovery_file_dest_size= 2147483648
? undo_management ? ? ? ? ?= AUTO
? undo_tablespace ? ? ? ? ?= UNDOTBS1
? remote_login_passwordfile= EXCLUSIVE
? db_domain ? ? ? ? ? ? ? ?=?
? dispatchers ? ? ? ? ? ? ?= (PROTOCOL=TCP) (SERVICE=TESTXDB)
? job_queue_processes ? ? ?= 10
? background_dump_dest ? ? = /oracle/app/admin/TEST/bdump
? user_dump_dest ? ? ? ? ? = /oracle/app/admin/TEST/udump
? core_dump_dest ? ? ? ? ? = /oracle/app/admin/TEST/cdump
? audit_file_dest ? ? ? ? ?= /oracle/app/admin/TEST/adump
? db_name ? ? ? ? ? ? ? ? ?= TEST
? open_cursors ? ? ? ? ? ? = 300
? pga_aggregate_target ? ? = 94371840
3.[oracle@sq123 ~]$ vi initnew.ora
? 把上面的復制過來
? 不要復制的行
? ? db_domain ? ? ? ? ? ? ? ?=?
? dispatchers ? ? ? ? ? ? ?= (PROTOCOL=TCP) (SERVICE=TESTXDB)
4.SQL> startup nomount pfile=/home/oracle/initnew.ora
(啟動正常)
5.恢復spfile
RMAN> restore spfile from '/oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/o1_mf_ncsnf_TAG20120312T003337_7oso413h_.bkp';
[oracle@sq123 ~]$ cd /oracle/app/oracle/product/10.2.0/db_1/dbs
[oracle@sq123 dbs]$ ls(spfile 已經恢復)
6.SQL> startup nomount force;(用恢復的spfile啟動)
恢復控制文件
RMAN> restore controlfile from '/oracle/app/flash_recovery_area/TEST/backupset/2012_03_12/o1_mf_ncsnf_TAG20120312T003337_7oso413h_.bkp';
7.恢復數據文件
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;(報錯因為沒有日志了,但必須運行)
RMAN> alter database open resetlogs;
(數據庫正常)
==============================================
測試備份是否有用
RMAN> restore database validate;
(測試不真正恢復)
[oracle@sq123 2012_03_12]$ echo "a" >>o1_mf_nnndf_TAG20120312T003337_7osnz2q6_.bkp?
(模擬備份實效)
RMAN> restore database validate;(報錯)
查看那些文件需要備份?
RMAN> report need backup;
==========================================
免除表空間
? RMAN>configure exclude for tablespace user03;
? ? RMAN>backup database;
=======================================
塊恢復
RMAN> blockrecover datafile 12 block 2718618 from backupset;
轉載于:https://blog.51cto.com/chenjisong/1737394
總結
以上是生活随笔為你收集整理的RMAN 不完全恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC中使用Intercep
- 下一篇: IO 流 自定义字节流的缓冲区-read