rman基於caltalog備份(catalog、scripts)
阿新 • • 發佈:2022-05-13
建立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庫的一些步驟:
- 建立專業的表空間
- 建立catalog使用的使用者並授權
- 註冊目標資料庫
- 升級catalog(可選)
- 建立和管理備份指令碼
- 備份資料庫
- 刪除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;