oracle之rman入門指南



  這篇文章主要介紹RMAN的常用方法,其中包含了作者一些自己的經驗,里面的實驗也基本全在WIN 2K和ORACLE 8.1.6環境下測試成功(因為這個環境比較容易實現)。
  
  本文借鑒了網上一些高手的相關文章,希望大俠們不要見怪,此處一並謝過。
  
  因為篇幅有限,一些技術細節不能一一覆蓋了,只希望能夠幫助新手入門的作用,想真正熟練掌握RMAN,必須經過較長時間的實踐磨練才可以,尤其需要在工程中獲得寶貴的故障解決經驗。
  
  1.什么是RMAN?
  RMAN可以用來備份和還原數據庫文件、歸檔日志和控制文件。它也可以用來執行完全或不完全的數據庫恢復。
  
  注意:RMAN不能用於備份初始化參數文件和口令文件。
  
  RMAN啟動數據庫上的Oracle服務器進程來進行備份或還原。備份、還原、恢復是由這些進程驅動的。
  
  RMAN可以由OEM的Backup Manager GUI來控制,但在本文章里不作重點討論。
  
  2. Terminology 專業詞匯解釋
  2.1. Backup sets 備份集合
  
  備份集合有下面的特性:
  
  包括一個或多個數據文件或歸檔日志
  
  以oracle專有的格式保存
  
  有一個完全的所有的備份片集合構成
  
  構成一個完全備份或增量備份
  
  2.2. Backup pieces 備份片
  
  一個備份集由若干個備份片組成。每個備份片是一個單獨的輸出文件。一個備份片的大小是有限制的;如果沒有大小的限制, 備份集就只由一個備份片構成。備份片的大小不能大於使用的文件系統所支持的文件長度的最大值。
  
  2.3. Image copies 鏡像備份
  
  鏡像備份是獨立文件(數據文件、歸檔日志、控制文件)的備份。它很類似操作系統級的文件備份。它不是備份集或 備份片,也沒有被壓縮。
  
  2.4. Full backup sets 全備份集合
  
  全備份是一個或多個數據文件中使用過的數據塊的的備份。沒有使用過的數據塊是不被備份的,也就是說,oracle 進行備份集合的壓縮。
  
  2.5. Incremental backup sets 增量備份集合
  
  增量備份是指備份一個或多個數據文件的自從上一次同一級別的或更低級別的備份以來被修改過的數據塊。 與完全備份相同,增量備份也進行壓縮。
  
  2.6. File multiplexing
  
  不同的多個數據文件的數據塊可以混合備份在一個備份集中。
  
  2.7. Recovery catalog resyncing 恢復目錄同步
  
  使用恢復管理器執行backup、copy、restore或者switch命令時,恢復目錄自動進行更新,但是有關日志與歸檔日志信息沒有自動記入恢復目錄。需要進行目錄同步。使用resync catalog命令進行同步。
  
  RMAN>resync catalog;
  RMAN-03022:正在編譯命令:resync
  RMAN-03023:正在執行命令:resync
  RMAN-08002:正在啟動全部恢復目錄的 resync
  RMAN-08004:完成全部 resync
  
  3. 恢復目錄
  3.1.恢復目錄的概念
  
  恢復目錄是由RMAN使用、維護的用來放置備份信息的倉庫。RMAN利用恢復目錄記載的信息去判斷如何執行需要的備份恢復操作。
  
  恢復目錄可以存在於ORACLE數據庫的計划中。
  
  雖然恢復目錄可以用來備份多個數據庫,建議為恢復目錄數據庫創建一個單獨的數據庫。
  
  恢復目錄數據庫不能使用恢復目錄備份自身。
  
  3.2.建立恢復目錄
  
  第一步,在目錄數據庫中創建恢復目錄所用表空間:
  
  SQL> create tablespace rman_ts datafile 'd:\oracle\oradata\rman\rman_ts.dbf' size 20M;
  
  表空間已創建。
  
  第二步,在目錄數據庫中創建RMAN 用戶並授權:
  
  SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;
  
  用戶已創建。
  
  SQL> grant recovery_catalog_owner to rman ;
  
  授權成功。
  SQL> grant connect, resource to rman ;
  
  授權成功。
  
  第三步,在目錄數據庫中創建恢復目錄
  
  C:\>rman catalog rman/rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06008:連接到恢復目錄數據庫
  RMAN-06428:未安裝恢復目錄
  RMAN>create catalog tablespace rman_ts;
  RMAN-06431:恢復目錄已創建
  
  注意:雖然使用RMAN不一定必需恢復目錄,但是推薦使用。因為恢復目錄記載的信息大部分可以通過控制文件來記載,RMAN在恢復數據庫時使用這些信息。不使用恢復目錄將會對備份恢復操作有限制。
  
  3.3.使用恢復目錄的優勢
  
  可以存儲腳本;
  
  記載較長時間的備份恢復操作;
  
  4. 啟動RMAN
  RMAN為交互式命令行處理界面,也可以從企業管理器中運行。
  
  為了使用下面的實例,先檢查環境符合:
  
  the target database is called "his" and has the same TNS alias
  
  user rman has been granted "recovery_catalog_owner "privileges
  
  目標數據庫的連接用戶為internal帳號,或者以其他SYSDBA類型帳號連接
  
  the recovery catalog database is called "rman" and has the same TNS alias
  
  the schema containing the recovery catalog is "rman" (same password)
  
  在使用RMAN前,設置NLS_DATE_FORMAT 和NLS_LANG環境變量,很多RMAN LIST命令的輸出結果是與日期時間相關的,這點在用戶希望執行以時間為基准的恢復工作也很重要。
  
  下例是環境變量的示范:
  
  NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS
  
  為了保證RMAN使用時能連接恢復目錄,恢復目錄數據庫必須打開,目標數據庫至少要STARTED(unmount),否則RMAN會返回一個錯誤,目標數據庫必須置於歸檔模式下。
  
  4.1.使用不帶恢復目錄的RMAN
  
  設置目標數據庫的 ORACLE_SID ,執行:
  
  % rman nocatalog
  RMAN> connect target
  RMAN> connect target internal/@his
  
  4.2.使用帶恢復目錄的RMAN
  
  % rman rman_ts rman/rman@rman
  RMAN> connect target
  % rman rman_ts rman/rman@rman target internal/@his
  
  4.3.使用RMAN
  
  一旦連接到目標數據庫,可以通過交互界面或者事先存儲的腳本執行指定RMAN命令, 下面是一個使用RMAN交互界面的實例:
  
  RMAN> resync catalog;
  RMAN-03022:正在編譯命令:resync
  RMAN-03023:正在執行命令:resync
  RMAN-08002:正在啟動全部恢復目錄的 resync
  RMAN-08004:完成全部 resync
  
  使用腳本的實例:
  
  RMAN> execute script alloc_1_disk;
  
  創建或者替代存儲的腳本:
  
  RMAN> replace script alloc_1_disk {
  2> allocate channel d1 type disk;
  3> }
  
  5.注冊或者注銷目標數據庫
  5.1.注冊目標數據庫
  
  數據庫狀態:
  
  恢復目錄狀態:打開
  
  目標數據庫:加載或者打開
  
  目標數據庫在第一次使用RMAN之前必須在恢復目錄中注冊:
  
  第一步,啟動恢復管理器,並且連接目標數據庫:
  
  C:\>rman target internal/oracle@his catalog rman/rman@rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06005:連接到目標數據庫:HIS (DBID=3021445076)
  RMAN-06008:連接到恢復目錄數據庫
  
  第二步,注冊數據庫:
  
  RMAN> register database;
  RMAN-03022:正在編譯命令:register
  RMAN-03023:正在執行命令:register
  RMAN-08006:注冊在恢復目錄中的數據庫
  RMAN-03023:正在執行命令:full resync
  RMAN-08002:正在啟動全部恢復目錄的resync
  RMAN-08004:完成全部resync
  
  5.2.注銷目標數據庫
  
  RMAN提供了一個注銷工具,叫DBMS_RCVCAT工具包,請注意一旦注銷了該目標數據庫,就不可以使用恢復目錄中含有的備份集來恢復數據庫了。
  
  為了能注銷數據庫,需要獲得數據庫的標識碼(DB_ID)和數據庫鍵值(DB_KEY)。其中連接目標數據庫時將會獲得DB_ID。
  
  C:\>rman target internal/oracle@his catalog rman/rman@rman
  
  恢復管理器:版本8.1.6.0.0 - Production
  
  RMAN-06005:連接到目標數據庫:HIS (DBID=3021445076)
  RMAN-06008:連接到恢復目錄數據庫
  
  其中DBID=3021445076,利用DBID=3021445076查詢數據庫鍵值碼:
  
  連接到目標數據庫,查詢db表:
  
  SQL> select * from db;
  
  DB_KEY DB_ID CURR_DBINC_KEY
  ---------- ---------- --------------
  1 3021445076 2
  
  獲得DB_KEY=1,這樣,該目標數據庫DB_KEY=1,DBID=3021445076,利用兩個值使用DBMS_RCVCAT工具包就可以注銷數據庫:

 

一、冷備份介紹:
   冷備份數據庫是將數據庫關閉之后備份所有的關鍵性文件包括數據文件、控制文件、聯機REDO LOG文件,將其拷貝到另外的位置。此外冷備份也可以包含對參數文件和口令文件的備份,但是這兩種備份是可以根據需要進行選擇的。,冷備份實際也是一種物理備份,是一個備份數據庫物理文件的過程。因為冷備份要備份除了重做日志以外的所有數據庫文件,因此也被成為完全的數據庫備份。它的優缺點如下所示:
1、優點:
        <1>只需拷貝文件即可,是非常快速的備份方法。
        <2>只需將文件再拷貝回去,就可以恢復到某一時間點上。
        <3>與數據庫歸檔的模式相結合可以使數據庫很好地恢復。
        <4>維護量較少,但安全性確相對較高。
2、缺點:
        <1>在進行數據庫冷備份的過程中數據庫必須處於關閉狀態。
   <2>單獨使用冷備份時,數據庫只能完成基於某一時間點上的恢復。
        <3>若磁盤空間有限,冷備份只能將備份數據拷貝到磁帶等其他外部存儲上,速度會更慢。
        <4>冷備份不能按表或按用戶恢復。
3、具體備份步驟如下:
        <1>以DBA用戶或特權用戶登錄,查詢動態性能視圖v$datafile、v$controlfile可以分別列出數據庫的數據文件以及控制文件。
SQL&gt; select name from v$datafile;
NAME -------------------------------------------------------------------------------- /u02/oradata/db01/system01.dbf /u02/oradata/db01/undotbs01.dbf /u02/oradata/db01/sysaux01.dbf /u02/oradata/db01/users01.dbf
SQL&gt; select name from v$controlfile;
NAME -------------------------------------------------------------------------------- /u02/oradata/db01/control01.ctl /u02/oradata/db01/control02.ctl /u02/oradata/db01/control03.ctl /u01/app/oracle/bak/control04.ctl
<2>以DBA用戶或特權用戶關閉數據庫。
SQL&gt; conn /  as sysdba; Connected. SQL&gt; shutdown normal Database closed. Database dismounted. ORACLE instance shut down.
<3>復制數據文件,復制時應該將文件復制到單獨的一個硬盤或者磁盤上。控制文件是相互鏡像的,因此只需復制一個控制文件即可。
cp /u02/oradata/db01/*.dbf  /u01/app/oracle/bak
cp /u02/oradata/db01/*.ctl  /u01/app/oracle/bak
<4>啟動例程打開數據庫。
SQL&gt; conn / as sysdba; Connected to an idle instance. SQL&gt; startup ORACLE instance started.
Total System Global Area  285212672 bytes Fixed Size                  1218992 bytes Variable Size              83887696 bytes Database Buffers          197132288 bytes Redo Buffers                2973696 bytes Database mounted. Database opened. SQL&gt;
二、熱備份:
   熱備份是在數據庫運行的情況下,采用archive log mode方式備份數據庫的方法。熱備份要求數據庫處於archive log模式下操作,並需要大量的檔案空間。一旦數據庫處於archive loh
模式,就可以進行備份了,當執行備份時,只能在數據文件級或表空間進行。
1、優點:
          <1>可在表空間或數據文件級備份,備份時間短。
<2>可達到秒級恢復(恢復到某一時間點上)。
          <3>可對幾乎所有數據庫實體作恢復。
          <4>恢復是快速的,在大多數情況下在數據庫仍工作時恢復。
<5>備份時數據庫仍可用。
2、缺點:
         <1>因難以維護,所以要特別仔細小心,不允許“以失敗而告終”。
         <2>若熱備份不成功,所得結果不可用於時間點的恢復。
         <3>不能出錯,否則后果嚴重。
3、設置初始歸檔模式:
設置歸檔模式數據庫必須處在mount而非open狀態下:
         <1>首先查看數據庫是否處在archive log模式下:
         SQL&gt; archive log list;          Database log mode               No Archive Mode          Automatic archival                Disabled          Archive destination               USE_DB_RECOVERY_FILE_DEST          Oldest online log sequence    1          Current log sequence            2
         <2>在mount狀態下啟動數據庫:
         SQL&gt; startup mount;          ORACLE instance started.
         Total System Global Area  285212672 bytes          Fixed Size                  1218992 bytes          Variable Size              83887696 bytes          Database Buffers          197132288 bytes          Redo Buffers                2973696 bytes          Database mounted.
         <3>設置數據庫為歸檔模式:
        SQL&gt; alter database archivelog;
        Database altered.
        <4>打開數據庫:
SQL&gt; alter database open;
Database altered.
<5>將數據庫設置成自動歸檔,使用以下命令:
SQL&gt; alter system set log_archive_start=true scope=spfile;
System altered.
<6>確定數據庫處於歸檔模式下,並且設置自動存檔:
SQL&gt; archive log list; Database log mode              Archive Mode Automatic archival             Enabled Archive destination            USE_DB_RECOVERY_FILE_DEST Oldest online log sequence     1 Next log sequence to archive   2 Current log sequence           2
上面的Archive destination所定義的具體位置,可以查看$ORACLE_HOME/dbs/spfile<dbname>.ora文件中的db_recovery_file_dest參數的值。
 
4、聯機備份:
      聯機備份是熱備份的一種備份方法,是指當表空間處於ONLINE狀態時,備份表空間的所有數據文件和單個數據文件的過程。使用聯機備份的優點是不影響用戶在表空間上的所有訪問操作,但聯機備份的缺點可能生產更多的重做日志文件和歸檔日志文件。以下是聯機備份的具體步驟:
       <1>以DBA用戶或特權用戶登錄,確定表空間所包含的數據文件。通過查詢數據字典DBA_DATA_FILES,可以得到數據文件和表空間的對應關系:
SQL&gt; select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME -------------------------------------------------------------------------------- /u02/oradata/db01/users01.dbf
<2>設置表空間為備份模式,在復制表空間的數據文件之前必須將表空間設置成為備份模式:
SQL&gt; alter tablespace users begin backup;
Tablespace altered.
<3>復制users數據文件到備份目錄:
[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak
<4>復制后表空間就不需要設置成為備份模式了,因此可以將其返回正常模式:
SQL&gt;  alter tablespace users end backup;
Tablespace altered.
5、脫機備份:
      脫機備份也是熱備份的一種方法,是指當表空間處於offline時,備份表空間的所有數據文件以及單個數據文件的過程。它的優點是會生產較少的重做日志文件,缺點是當用戶正在進行脫機備份時所備份的表空間將不能訪問,由於SYSTEM系統表空間和正在使用的UNDO表空間不能被脫機,因此脫機備份不適用於SYSTEM表空間和正在使用的UNDO表空間。
        <1>使用DBA用戶或特權用戶登錄,確定表空間所包含的數據文件。這個和聯機備份的第一步相同:
SQL&gt; select file_name from dba_data_files where tablespace_name='USERS';
FILE_NAME -------------------------------------------------------------------------------- /u02/oradata/db01/users01.dbf
<2>設置表空間為脫機狀態,將表空間設置為脫機狀態后用戶將不能訪問該表空間上的任何對象,因此也可以確保OFFLINE的表空間的數據文件不會發生改變。
SQL&gt; alter tablespace users offline;
Tablespace altered.
SQL&gt; select tablespace_name,online_status from dba_data_files;
TABLESPACE_NAME                ONLINE_ ------------------------------ ------- USERS                          OFFLINE SYSAUX                         ONLINE UNDOTBS1                       ONLINE SYSTEM                         SYSTEM
<3>復制users數據文件到備份目錄:
[oracle@server1 bak]$ cp /u02/oradata/db01/users01.dbf /bak
<4>復制完后將表空間置於online狀態:
SQL&gt; alter  tablespace users online;
Tablespace altered.
SQL&gt; select tablespace_name,online_status from dba_data_files;
TABLESPACE_NAME                ONLINE_ ------------------------------ ------- USERS                          ONLINE SYSAUX                         ONLINE UNDOTBS1                       ONLINE SYSTEM                         SYSTEM

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM