Oracle中的用戶管理的不完全恢復(fù)
2024-08-29 13:35:12
供稿:網(wǎng)友
 
               用戶治理的不完全恢復(fù)必須滿足下面三個(gè)條件才可以使用:
  a) 歸檔模式
  b) 要有所有datafile在誤操作之前的備份
  c) 要有自要使用的備份以來的所有歸檔                                                                                            不完全恢復(fù)的類型
  a) 基于時(shí)間點(diǎn) :比如從alter警告文件中查到drop table操作是什么時(shí)候發(fā)生的  recover database until time '2000-10-01 10:10:10'
  b) 基于Cancel : 可能中間某個(gè)歸檔損壞或丟失recover database untill cancel
  c) 基于SCN(系統(tǒng)改編號(hào))  recover database until scn <scn_number>
-- 另同時(shí)使用備份的控制文件的不完全恢復(fù) using backup control file
  實(shí)例說明幾種場(chǎng)景的不完全恢復(fù)
  1. truncate table dept;
   alter system switch logfile;
   delete from emp where empno=<N>;
   alter system switch logfile;
   alter system switch logfile;
  --發(fā)現(xiàn)是誤操作
   --啟動(dòng)EM,用logminer(日志查看器)查時(shí)間點(diǎn)或SCN
    oemapp consol
    登陸到management server(參看:如何使用management server,后面會(huì)發(fā)布)
     -->工具-->數(shù)據(jù)庫應(yīng)用程序-->日志查看器-->創(chuàng)建查詢條件
     --比如:表=DEPT (必須大寫) 開始時(shí)間 結(jié)束時(shí)間   查詢出誤操作時(shí)間或SCN,比如時(shí)間:2006-07-14 13:52:18 SCN 12345
  --好現(xiàn)在開始做基于時(shí)間點(diǎn)的不完全恢復(fù)
    a.shutdown immediate
    b.restore(復(fù)制) full backup到數(shù)據(jù)文件目錄下
    c.startup mount
    d.alter session set NLS_date_format = 'YYYY-MM-DD HH24:MI:SS'
    e.recover database until time '2004-07-14 13:52:17';
     //recover database until scn 12345
    f.alter database open resetlogs --必須帶resetlogs
    g.刪除所有歸檔、冷備 熱備(已經(jīng)都沒用了,必須重新備份)
    h.備份(不要忘了)  2.基于cancel的模擬
  delete dept where depno=42;//假如users表空間下的表
  commit;
  alter database switch logfile;--多次
  alter database switch logfile;
  alter database switch logfile;
--發(fā)現(xiàn)失誤,實(shí)行恢復(fù)
  shutdown immediate
  刪除users表空間(對(duì)應(yīng)的文件號(hào)假如是9)和一個(gè)歸檔日志
  試著做完全恢復(fù),失敗,
  --參看http://www.david-studio.org/new/resource/showdetail.jsp?ID=12
  --做基于cancel的恢復(fù)
  shutdown immediate
  還原所有文件
  startup mount
  alter tablespace users online--將offline的所有文件online
  recover database until cancel
  alter database open resetlogs
  別忘了重新備份   3. 使用備份的控制文件的不完全恢復(fù)
  --已經(jīng)有所有數(shù)據(jù)文件的備份
  --備份控制文件
  alter system switch logfile;
  alter system switch logfile;
  alter system switch logfile;
                                                                                              alter database backup controlfile to 'd:ackupcon1.ctl';
  alter system switch logfile;  conn scott/tiger
  delete dept where deptno=42;
  commit;
  alter system switch logfile;
  alter system switch logfile;
  alter system switch logfile;
  shutdown abort/immediate/normal/transactional
  刪除所有數(shù)據(jù)文件,備份和刪除當(dāng)前的控制文件,但是歸檔必須存在
  startup [nomount]
  --報(bào)錯(cuò) 查看狀態(tài)nomount, select status from v$instance;
  從備份中恢復(fù)控制文件
  復(fù)制所有備份的數(shù)據(jù)文件(在刪除前要已經(jīng)有備份)
  recover database until cancel using backup controlfile;
  alter database open resetlogs;
  別忘了做全備
                         4.聯(lián)機(jī)日志全部丟失
  shutdown immediate
  刪除所有的聯(lián)機(jī)日志
  startup
   --報(bào)聯(lián)機(jī)日志錯(cuò)誤
  recover database until cancel
   --這步實(shí)際上什么也不做,但必須做這個(gè)操作
  alter database open resetlogs;
  別忘了做全備,以前的都沒用了(包括歸檔)5.誤刪除了表空間怎么恢復(fù),必須歸檔模式
  archive log list
  select * from v$tablespace
  select * from scott.emp;
 --刪除表空間
  drop tablespace indx including contents and datafiles;
  alter system switch logfile;
--開始恢復(fù)
  shutdown immediate
  恢復(fù)所有的數(shù)據(jù)文件和控制文件,必須用老的控制文件
  查詢alter,查看drop indx表空間的時(shí)間,比如:2006-07-10 10:10:10
  startup mount
  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
  recover database until time ;2006-07-10 10:10:09' using backup controlfile;
  alter database open resetlogs
  別忘了做全備,以前熱備的都沒用了