oracle 11g 數據庫恢復技術 --rman catalog

Oracle RMANcatalog並非指標備份恢復操做的一個必要組件,但oracle推薦使用該組件。啓用以後,歸檔日誌、備份集、鏡像複製等備份信息的保存地點是RMAN資料庫(catalog),sql

記錄了全部的在DISKSBT設備上的各類備份的詳細信息,rmancatalog是一個邏輯概念,物理保存點能夠在兩個不一樣的地方,目標數據庫的控制文件中及catalog中,數據庫

控制文件在默認狀況下無須配置就能夠保存rman資料庫,而catalog須要建立、配置後纔可使用。服務器

SYS@ orcl >show parameter control_file_record_keep_time NAME TYPE VALUE ------------------------------------ ----------- ------------------------------
control_file_record_keep_time         integer     7

默認狀況下,控制文件可以保存多少短時間性信息受制與參數control_file_record_keep_timeoracle

是控制文件必須將歸檔日誌、備份集合鏡像複製等保存在rman資料庫中的短時間性信息至少保留7天,控制文件自動增加app

SYS@ orcl >select type,records_total,records_used from v$controlfile_record_section where type='ARCHIVED LOG'; TYPE RECORDS_TOTAL RECORDS_USED ---------------------------- ------------- ------------
ARCHIVED LOG                   308        200

RECORDS_TOTAL308,說明如今控制文件中只可以保存308個歸檔日誌的歸檔日誌記錄槽。ide

SYS@ orcl >host ls -l /u01/app/oracle/oradata/orcl/control01.ctl -rw-r----- 1 oracle oinstall 10076160 Jun 4 17:35 /u01/app/oracle/oradata/orcl/control01.ctl

參數 control_file_record_keep_time最大值365測試

尋回一個控制文件的自動備份spa

RMAN> catalog backuppiece '/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp'; cataloged backup piece backup piece handle=/u01/app/oracle/fra/ORCL/autobackup/2019_05_30/o1_mf_s_1009648986_ggzbltkq_.bkp RECID=38 STAMP=1010135802

尋回一個數據文件的備份--同上rest

尋回歸檔日誌日誌

RMAN> catalog archivelog '/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc'; cataloged archived log archived log file name=/u01/app/oracle/fra/ORCL/archivelog/2019_05_27/o1_mf_1_277_ggq5qlvl_.arc RECID=203 STAMP=1010136222

將快速恢復區中的全部文件探測一遍,若是是rman資料庫彙總沒有記載的,則所有添加回資料庫

RMAN> catalog db_recovery_file_dest;

爲何要使用catalog

--1 保存比控制文件多得多的有關歸檔日誌和備份的歷史信息,使rman保存資料庫信息不受參數control_file_record_keep_time的限制

--2 使rman能夠用run命令調用catalog中的存儲腳本,因爲catalog能夠在另一個服務器的db中,rman腳本自身也提供了高可用性

--3列出任意時間點上的表空間和數據庫文件結構,report schema 命令可使用at子句查看某一時間點上的數據庫結構

--4 簡化在丟失控制文件狀況下的還原和恢復操做。恢復控制文件簡化到只要執行restore controlfile便可,無須from子句,以及在命令上告知控制文件備份的位置。

1 建立catalog

--catalog所使用的db上建立catalogschema

--catalog填充對象,包括表、索引、視圖、PL/SQL包等

雖然catalog的方案能夠建立在目標db上,但是一旦目標db的控制文件損壞,因爲db沒法打開,致使catalog信息沒法訪問。因此應該只是將catalog的方案放到另一個服務器的db上,爲catalog dbtns鏈接別名

--sqlplus sys/oracle@tns_name as sysdba --在目標庫上建立表空間,用戶並賦予相應的權限
SQL> create tablespace rc_data datafile '/u01/app/oracle/oradata/orcl/rc_data01.dbf' size 20m autoextend on next 4m; Tablespace created. SQL> create user rcowner identified by oracle temporary tablespace temp
default tablespace rc_data quota unlimited on rc_data;  2    3    4  
User created. SQL> grant recovery_catalog_owner to rcowner; Grant succeeded. [oracle@DSI ~]$ rman catalog rcowner/oracle@orcl  ---這裏在本機測試,正常的應該用目標庫的tns_name
connected to recovery catalog database RMAN> create catalog; recovery catalog created --登陸數據庫查看對象
SQL> conn rcowner/oracle Connected. SQL> select object_type,count(*) objects from user_objects group by object_type; OBJECT_TYPE OBJECTS ------------------- ----------
SEQUENCE             1 PACKAGE 2 PACKAGE BODY 2 TYPE BODY 1
TRIGGER              3
TABLE                44
INDEX                96
FUNCTION             2
VIEW                98 TYPE 3
10 rows selected.

至此,rman catalog已經準備完成,可供目標數據庫註冊使用了。

--使用catalog

目標數據庫必須在catalog中註冊以後才能使用catalog

--註冊與同步

[oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl ##後者tns_name Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jun 17 15:37:22 2019 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. connected to target database: ORCL (DBID=1534031567) connected to recovery catalog database

將目標數據庫的註冊信息寫入catalog

RMAN> register database; database registered in recovery catalog starting full resync of recovery catalog full resync complete---表名register命令還完成了第一次徹底同步完成了

--catalog中相應的表寫入數據,好比在db的表發現目標數據的內容

SQL> select * from rcowner.db; DB_KEY DB_ID CURR_DBINC_KEY ---------- ---------- --------------
     1 1534031567           2

--將目標數據庫控制文件中的rman資料庫上傳到catalog的相關表中

--最後同步控制文件與catalog

今後之後,使用rman鏈接目標數據庫時記得必須使用catalog子句同時鏈接catalog,這樣才能儘可能保證控制文件和catalog直接的信息同步,好比

[oracle@DSI ~]$ rman target sys/oracle@orcl catalog rcowner/oracle@orcl

信息同步--局部同步和徹底同步

--局部同步指同步歸檔日誌信息、備份集信息和鏡像複製信息。

--徹底同步則包括除了局部同步的全部信息以外,還要同步數據庫表空間和數據文件物理結構的信息。

發生徹底同步時,RMAN會先建立一個當前目標控制文件的快照,(實際上就是當前控制文件的副本),而後RMAN會利用此快照與catalog進行比較,

若有須要,rman就會將目標控制文件中的歸檔日誌信息、備份信息、鏡像複製進行以及數據庫表空間和數據文件物理結構上傳至catalog

能夠查看控制文件快照的路徑。控制文件的快照,執行任務備份命令時都會生成一個快照文件

RMAN> show snapshot controlfile name; RMAN configuration parameters for database with db_unique_name ORCL are: CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default
[root@DSI oracle]# ll /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f -rw-r----- 1 oracle oinstall 10076160 Jun 17 15:38 /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f

也可使用configure修改路徑

RMAN> configure snapshot controlfile name to '/home/oracle/snapshot.ctl'; ###若是路徑設置錯誤,報錯,請看上一篇。

在同時鏈接到目標dbcatalog執行rman命令時,不管是局部同步仍是全局同步,同步操做都可以由rman執行相關命令(backupconfigure)時自動判斷、自動發起

徹底同步也能夠經過」resync catalog」手動發起,通常沒有必要這樣作,但如下3種狀況除外

--1 使用rman執行了須要同步的操做(好比configure命令備份某個表空間),可是在執行此類命令時因爲種種緣由rman沒有鏈接catalog,只鏈接了目標db

--2 dba備份db的頻率太低,好久不用一次rman,這樣,因爲control_file_record_keep_time參數的設置,catalog可能會遺忘某些歸檔日誌信息

--3 db物理結構發生變化以後,好比:添加數據文件,新建表空間等

RMAN> resync catalog; starting full resync of recovery catalog full resync complete

--rman能力的加強

有了catalogrman保存歷史的信息能力很強大,徹底不受參數control_file_record_keep_time的限制,另外,catalog還補全了rman全部的功能

--nomount狀態下查看rman 資料庫

--查看數據庫的物理結構歷史

--rman腳本保存在rman資料庫中

--將數據庫恢復到之前的incarnation

3個功能只用控制文件是沒法提供的。

RMAN> list backupset summary;

有了catalog,數據庫沒有mount也不是問題,記得鏈接catalog模式

第一個功能:沒有catalog時執行restore命令還原控制文件時必須給出from 子句說明控制文件的備份在何處,而使用catalogfrom子句不是必要的

第二個功能:report schema at命令可以顯示數據庫中數據文件的歷史結構

RMAN> report schema; Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles ===========================
File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------
1    780      SYSTEM               YES     /u01/app/oracle/oradata/orcl/system01.dbf 2    720      SYSAUX               NO      /u01/app/oracle/oradata/orcl/sysaux01.dbf 3    1250     UNDOTBS1             YES     /u01/app/oracle/oradata/orcl/undotbs01.dbf 4    5        USERS                NO      /u01/app/oracle/oradata/orcl/users01.dbf 5    500      TEST                 NO      /u01/app/oracle/oradata/orcl/test01.dbf 6    50       ASSM                 NO      /u01/app/oracle/oradata/orcl/assm01.dbf 7    50       MSSM                 NO      /u01/app/oracle/oradata/orcl/mssm01.dbf 8    20       RC_DATA              NO      /u01/app/oracle/oradata/orcl/rc_data01.dbf List of Temporary Files =======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- --------------------
1    59       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf 2    1024     TEMP                 32767       /u01/app/oracle/oradata/orcl/temp03.dbf RMAN> report schema at time "sysdate - interval '1' day"; Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles ===========================
File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------
1    780      SYSTEM               YES     /u01/app/oracle/oradata/orcl/system01.dbf 2    720      SYSAUX               YES     /u01/app/oracle/oradata/orcl/sysaux01.dbf 3    1250     UNDOTBS1             YES     /u01/app/oracle/oradata/orcl/undotbs01.dbf 4    5        USERS                YES     /u01/app/oracle/oradata/orcl/users01.dbf 5    500      TEST                 YES     /u01/app/oracle/oradata/orcl/test01.dbf 6    50       ASSM                 YES     /u01/app/oracle/oradata/orcl/assm01.dbf 7    50       MSSM                 YES     /u01/app/oracle/oradata/orcl/mssm01.dbf List of Temporary Files =======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- --------------------
1    59       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf 2    1024     TEMP                 32767       /u01/app/oracle/oradata/orcl/temp03.dbf

第三個功能:保存rman腳本

RMAN> create script recover_controlfile { 2> startup force nomount; 3> restore controlfile; 4> mount database; 5> recover database; 6> alter database open resetlogs; 7> } created script recover_controlfile 也能夠將現有的文本載入 RMAN> create script backup_db from file '/home/oracle/backup_db.rman'; script commands will be loaded from file /home/oracle/backup_db.rman created script backup_db RMAN> list script names; List of Stored Scripts in Recovery Catalog Scripts of Target Database ORCL Script Name Description -----------------------------------------------------------------------
 backup_db recover_controlfile RMAN> print script backup_db; ##print查看腳本內容 printing stored script: backup_db run { allocate channel c1 device type disk; backup database; } 使用rman鏈接目標庫和catalog後,執行run {execute script ...} RMAN> run {execute script backup_db;}
相關文章
相關標籤/搜索