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/rman@10.100.21.181: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/rman@10.100.21.181: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/password@192.168.250.31:1521/RCATADB
RMAN> create catalog; 
recovery catalog created

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

database registered in recovery catalog


--取消注册
RMAN> unregister database;

--同步数据
RMAN> resync catalog;

posted @ 2022-05-13 14:30  EverEternity  阅读(93)  评论(0编辑  收藏  举报