动态

详情 返回 返回

【趙渝強老師】Oracle RMAN的目錄數據庫 - 动态 详情

在默認情況下,Oracle RMAN將備份時產生的元信息保存到控制文件中。RMAN在執行恢復時,就需要讀取控制文件,從而找到備份的信息來完成數據庫的恢復。因此,如果控制文件發生了丟失和損壞將導致數據庫無法執行恢復。另一方面隨着備份的不斷增多,也會導致控制文件的大小無限增長。為了更好地管理RMAN備份的元信息,Oracle可以使用一個專門的備份信息存儲地來存儲這些信息,這就是RMAN的目錄數據庫(Catalog Database)。如果RMAN備份的目標數據庫已經註冊到了目錄數據庫中,當執行備份是時Oracle就會使用目錄數據庫來取代控制文件存儲RMAN備份時產生的元信息。

視頻講解如下:
https://www.bilibili.com/video/BV1bd3DzTERo/?aid=114798620578...

在RMAN的備份過程中,使用目錄數據庫具有以下的優點:

  • 取代控制文件用於存儲RMAN備份的元信息。
  • 可以存儲更長的備份歷史記錄。
  • 可以被多個目標數據庫共享。
  • 可以存儲RMAN的腳本。

下圖展示了目標數據庫和目錄數據庫之間的關係。
image.png

在瞭解到了什麼是目錄數據庫後,下面將通過具體的操作步驟來創建一個目錄數據庫,並完成將目標數據庫註冊到目錄數據庫中。
(1)使用Oracle DBCA創建一個新的數據庫作為目錄數據庫使用。目錄數據庫的名稱設置為rcat。如下圖所示。
image.png

(2)登錄目錄數據庫,創建RMAN存儲備份信息的表空間。

sqlplus sys/password@rcat as sysdba
SQL> create tablespace rcat_tbs datafile '/home/oracle/rcat_tbs01.dbf' size 50M;

(3)給目錄數據庫創建用户,併為用户授權能夠使用rcat_tbs表空間。

SQL> create user c##rcat_owner identified by password;
SQL> alter user c##rcat_owner default tablespace rcat_tbs;
SQL> alter user c##rcat_owner quota unlimited on rcat_tbs;
SQL> grant recovery_catalog_owner to c##rcat_owner;

(4)使用RMAN並以rcat_owner用户進行登錄登錄,並輸入用户的密碼。

rman catalog c##rcat_owner@rcat

(5)創建目錄數據庫所需要的表。

RMAN> create catalog;

(6)驗證創建的目錄數據庫表

sqlplus c##rcat_owner/password@rcat
SQL> select * from tab;

# 輸出的信息如下:
TNAME                   TABTYPE          CLUSTERID
------------------------------ ------------- ----------
AL                       TABLE
BCB                   TABLE
BCF                   TABLE
BCR                   TABLE
BDF                   TABLE
BP                       TABLE
BRL                   TABLE
BS                       TABLE
BSF                   TABLE
CCB                   TABLE
CCF                   TABLE
CDF                   TABLE
CFS                   TABLE
CKP                   TABLE
CONF                  TABLE
......... 

(7)使用RMAN連接目標數據庫和目錄數據庫,並將目標數據庫註冊到目錄數據庫中。

rman target / catalog c##rcat_owner@rcat
RMAN> register database;

# 輸出的信息如下:
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

(8)登錄目錄數據驗證目標數據庫的註冊信息。

sqlplus c##rcat_owner/password@rcat
SQL> select db_id,reg_db_unique_name from db;

# 輸出的信息如下:
     DB_ID         REG_DB_UNIQUE_NAME
------------------ ------------------------------
1618358864         ORCL

(9)在RMAN中執行一個簡單的備份。

rman target / catalog c##rcat_owner@rcat
RMAN> backup datafile 7;

(10)登錄目錄數據庫檢查目錄數據庫中的RMAN的備份信息。

SQL> select db_name,file#,backup_type from rc_backup_datafile;

# 輸出的信息如下:
DB_NAME    FILE#  BACKUP_TYPE
----------------- ----------- ------------------------
ORCL          7       D

從輸出的信息可以看出,RMAN在執行備份時將備份的元信息寫入了目錄數據庫中。

user avatar jihu_gitlab 头像 chunzhendegaoshan 头像 kerrycode 头像
点赞 3 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.