也談ORACLE備份與恢復

   常常聽到有人說,某數據庫備份方法好,某備份方法很差,或者說如今都流行用rman來備份了,邏輯備份已通過時了,冷備份就更不值一提了,其實數據庫的備份歷來沒有什麼好壞之分、沒有過期之說,合適纔是最重要的,本身好纔是真的好。各類方法各有長短,誰也代替不了誰,只有根據實際狀況搭配使用,才能發揮最大的做用,不然只能是東施效顰。sql

1. oracle的備份,包括noarchivelog模式的備份(冷備份)、archivelog模式的備份(熱備份、rman備份)、邏輯備份(不分模式)。
1.1. 冷備份:
-- 1)關閉數據庫
   shutdown; 
-- 2)備份數據文件、控制文件、重作日誌文件
  -- A、 查找備份文件的位置
     SELECT * FROM V$DATAFILE;     --查數據文件
     select * from v$controlfile;  --查控制文件
     select * from v$logfile;      --查日誌文件
  -- B、 備份數據文件、控制文件、重作日誌文件
    $ copy D:\oracle\oradata\ora9\*.dbf d:\bak\*.*;
    $ copy D:\oracle\oradata\ora9\*.ctl d:\bak\*.*;
    $ copy D:\oracle\oradata\ora9\*.log d:\bak\*.*;數據庫

1.2. 熱備份:
 -- 1)查詢備份的數據文件與哪個表空間有關
  SELECT V$TABLESPACE.NAME,V$DATAFILE.NAME
    FROM V$TABLESPACE JOIN V$DATAFILE USING(TS#);
 -- 2)備份數據文件
  alter tablespace 表空間 BEGIN BACKUP;
  $ COPY 數據文件  存放路徑 
  ALTER TABLESPACE 表空間 END BACKUP;
 -- 3)查詢是否還有表空間處於備份模式
   SELECT * FROM V$BACKUP;  --STATUS不是ACTIVE便可以
   SELECT V$TABLESPACE.NAME,V$BACKUP.STATUS,V$DATAFILE.NAME
     FROM V$TABLESPACE JOIN V$DATAFILE USING (TS#) JOIN V$BACKUP USING (FILE#);
 -- 4)備份控制文件
   ALTER DATABASE BACKUP CONTROLFILE TO '目標路徑及文件名';安全

1.3. rman備份:
  -- 1)一個簡單的rman全庫備份:
  > rman nocatalog target "sys/sys"
  RMAN> restore controlfile from autobackup;
  RMAN> configure controlfile autobackup on;
  RMAN> backup database;session

  -- 2)備份數據文件、控制文件、歸檔日誌
  RMAN> BACKUP DATAFILE 數據文件名;
  RMAN> BACKUP CURRENT CONTROLFILE;
  RMAN> BACKUP ARCHIVELOG ALL;oracle

 -- 3)備份控制文件trace
  SQL> alter session set tracefile_identifier=system ;
  SQL> alter database backup controlfile to trace;
  SQL> alter database backup controlfile to 'd:\temp\controlfile.bak';
 
 -- 4)備份表空間
  RMAN>  backup  tablespace 表空間名;
  -- rman備份比較複雜,只舉些簡單的例子。ide

1.4. 邏輯備份
  -- 1)數據庫方式(導出用戶要具備exp_full_database權限)
    exp scott/tiger@ora9    full=y file="D:\full.dmp"
  -- 2)用戶方式
    exp userid=scott/tiger@ora9 owner=scott file=d:\scott.dmp log=d:\scott.log
  -- 3)表方式
    exp scott/tiger@ora9 tables=(emp,dept) file="d:\emp.dmp"學習

2. oracle的恢復(簡單舉例):
2.1 冷備份的恢復,
  1). STARTUP MOUNT;
  2). ALTER DATABASE DATAFILE 數據文件 OFFLINE DROP; 
  3). ALTER DATABASE OPEN;spa

2.2 熱備份恢復:
  1). STARTUP MOUNT;
  2). ALTER DATABASE DATAFILE 數據文件 OFFLINE; -- //system01.dbf不能設置未OFFLINE狀態
  3). ALTER DATABASE OPEN;rest

2.3 rman備份恢復:
-- 1) 使用rman恢復歸檔數據庫:
rman target /
rman> startup mount
rman> restore database;
rman> recover database;
rman> alter database open;日誌

--2) 使用rman恢復表空間:
rman> restore tablespace
rman> recover tablespace
rman>
run{
sql " alter tablespace users offline immediate";
restore tablespace users;
recover tablespace users;
sql " alter tablespace users online ";
}

2.4 .邏輯恢復
  --1)數據庫方式(導入用戶要具備exp_full_database權限)
    imp system/system@ora10 full=y file="f:\full.dmp"
  --2)用戶方式
    imp userid=scott/tiger@ora10 fromuser=scott  touser=scott file=d:\scott.dmp log=d:\scott.log
  --3)表方式
    imp system/system@ora10 fromuser=scott touser=scott file="f:\emp.dmp"
  --注意:導出用戶要和導入用戶相同能夠用上面的方法,不然用
    imp scott/tiger@ora10 full=y file="f:\emp.dmp"

3. oracle備份與恢復方法的選擇:    1).對於一些小系統、小數據量、沒有在線要求的數據庫,採用冷備份,簡單方便、可靠(全部文件時間點一致),但若是是這類系統我的以爲使用oracle就是一種浪費,學習除外。    2).對於7X24小時的大系統、賬營支撐系統、客服系統的數據庫,使用歸檔模式運行,採用全庫備份與邏輯備份相結合的方式。   3).對於經營分析系統、BI系統、查詢系統等數據庫,可採用邏輯備份與表空間備份相結合的方式,對變化數據進行增量備份。   4).對於一些字典數據庫、靜態數據較多的數據庫,可採用邏輯備份,按期備份相關重要數據。       對於上面提到的方法,只是個表面的東西而已,要想保證數據庫高效、安全、穩定的運行,必需要有完整的、切實可行的數據庫運行管理制度,而且嚴格執行實施,不然再好的方法都是水中月、鏡中花。

相關文章
相關標籤/搜索