1. 程式人生 > 其它 >rman基於caltalog備份(catalog、scripts)

rman基於caltalog備份(catalog、scripts)

建立catalog

預設情況下,RMAN備份資訊是存放在控制檔案中,如果我們想把備份資訊儲存在資料庫中,那麼這個資料庫就是RMAN的恢復目錄。所以,強烈建議不要將恢復目標資料庫放到目標資料庫中。

恢復目錄資料庫catalog優點:

​ 集中管理rman metadate,同步controlfile,不再受保留時長現在

​ 可用於恢復controlfile

​ 佔用資源,增加管理負擔

catalog連線寫法:

rman target sys/123456 catalog rman/rman
rman target/catalog rman/rman@man
connect catalog sys/pasword@網路字串

catalog庫的一些步驟:

  1. 建立專業的表空間
  2. 建立catalog使用的使用者並授權
  3. 註冊目標資料庫
  4. 升級catalog(可選)
  5. 建立和管理備份指令碼
  6. 備份資料庫
  7. 刪除catalog(可選)
#db1為catalog庫,db2為備份庫
#db1上建立使用者,並授權:
SQL> create tablespace cattbs datafile '/u01/app/oracle/oradata/orcl/cattbs01.dbf' size 100m;
SQL> create user rman identified by rman default tablespace cattbs;
SQL> grant connect,resource,recovery_catalog_owner to rman;
SQL> grant recovery_catalog_owner to rman; 

#使用者登入測試:
SQL> conn rman/rman
已連線。
SQL> show user;
USER 為 "RMAN"
#使用者下沒有任何物件
SQL> select * from tab;

未選定行



#在備份庫db2上連線catalog
rman catalog rman/rman #異地就@連線字串
[oracle@db2 ~]$ rman catalog rman/[email protected]:1521/orcl
Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 12 11:15:15 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to recovery catalog database

#建立恢復目錄,生成一些基表和檢視用於儲存metadata,
RMAN> create catalog;


#連線目標庫和恢復目錄
[oracle@db2 ~]$ rman target / catalog rman/[email protected]:1521/orcl

Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 12 11:42:01 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1631535037)
connected to recovery catalog database
recovery catalog is not installed

#將目標資料庫註冊到恢復目錄 
RMAN> register database;


#升級
#RMAN> upgrade catalog;


#取消註冊
#RMAN> unregister database;

#同步資料
#RMAN> resync catalog;

#檢視catalog中的指令碼
#RMAN> list script names;

catalog配置指令碼

rman連線catalog庫,建立指令碼

------安裝備份保留策略,刪除recovery windows15天以上的備份(obsolete)
create global script global_del_obso comment 'a script for obsolete backup and delete it'
{
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel ch1 device type disk;
delete noprompt obsolete recovery window of 15 days;
release channel ch1;
}

----------備份控制檔案
create global script global_bkctl comment 'a script for backup control file'
{
allocate channel ch1 device type disk;
backup as compressed backupset current controlfile reuse format '/backup/orcl/backupctl1.ctl' tag='bkctl1';
release channel ch1;
}

-------備份歸檔日誌,readrate讀緩衝區10m,kbytes生成的備份片4G
create global script global_arch comment 'backup archivelog and delete it' 
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
sql'alter system switch logfile';
set limit channel ch1 readrate=10240;
set limit channel ch1 kbytes=4096000;
set limit channel ch2 readrate=10240;
set limit channel ch2 kbytes=4096000;
backup as compressed backupset format '/backup/orcl/arch_%d_%U' tag='bkarch' archivelog all delete input;
release channel ch1;
release channel ch2;
}


-------增量備份0級,執行指令碼:execute global script 指令碼名字;
create global script global_inc0 comment 'backup database as incrmental level 0' {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
set limit channel ch1 readrate=10240;
set limit channel ch1 kbytes=4096000;
set limit channel ch2 readrate=10240;
set limit channel ch2 kbytes=4096000;
backup as compressed backupset incremental level 0 database format '/backup/orcl/inc0_%d_%U' tag='inc0';
release channel ch1;
release channel ch2;
execute global script global_arch;
execute global script global_bkctl;
execute global script global_del_obso;
}

-------1級累積增量備份
create global script global_inc1 comment 'backup database as incrmental cumulative level 1'{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
set limit channel ch1 readrate=10240;
set limit channel ch1 kbytes=4096000;
set limit channel ch2 readrate=10240;
set limit channel ch2 kbytes=4096000;
backup as compressed backupset incremental level 0 database format '/backup/orcl/inc1_%d_%U' tag='inc1';
release channel ch1;
release channel ch2;
execute global script global_arch;
execute global script global_bkctl;
execute global script global_del_obso;
}

檢視指令碼

RMAN> print global script script_name;

或者在catalog庫中的rc_stored_script或者rc_stored_script_line;
select a.script_name,b.text from rc_stored_script a,rc_stored_script_line b where a.script_name=b.script_name

使用指令碼

臉上catalog直接run中exec呼叫即可

#!/bin/bash

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1
#export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

rman target / <<EOF
run {
execute global script global_inc0;
}
exit;
EOF


同樣:
......
execute global script global_inc1;
......

PDB中建立使用

過程一樣,只是使用pdb庫和使用公共使用者

1.建立catalog的pdb

Create pluggable database RCATADB
Admin user rcatadbadmin identified by password
Roles=(dba)
File_name_convert=('/u01/app/oracle/oradata/ocp48/pdbseed',
'/u01/app/oracle/oradata/ocp48 /rcatadb')
Default tablespace users
Datafile '/tmp/user0101.dbf' size 100M autoextend on next 10M maxsize 20G
Storage (maxsize 100G );
Alter pluggable database rcatadb open;


2.建立使用者(根據情況確定許可權)

[oracle@ocp ~]$ sqlplus /  as sysdba
SQL> create user c##rcata identified by password;
User created.
SQL> grant recovery_catalog_owner to c##rcata;
Grant succeeded.
SQL> grant dba to c##rcata;
Grant succeeded.

3.建立恢復目錄並註冊

[oracle@ocp ~]$ rman  catalog=c##rcata/[email protected]:1521/RCATADB
RMAN> create catalog; 
recovery catalog created

[oracle@ocp ~]$ rman target /  catalog=c##rcata/[email protected]:1521/orcl
RMAN> register database;

database registered in recovery catalog


--取消註冊
RMAN> unregister database;

--同步資料
RMAN> resync catalog;