rman备份恢复1
- 创业
- 2025-08-24 18:39:01

前提:
rman用户必须具有sysdba权限
使用常用连接方式如下: rman target / rman target sys/oracle rman target sys/oracle@prod1 catalog dav/oracle@dav_db
一个rman连接会产生两个进程,action字段为空的就是rman的监控进程,另一个是主会话。
select sid,serial#,module,action from v$session where module like '%rman%'; SID SERIAL# MODULE ACTION ---------- ---------- -------------------------- -------------------------------- 20 20 rman@davdb.us.oracle (TNS V1-V3) 139 45 rman@davdb.us.oracle (TNS V1-V3) 0000001 FINISHED70rman 备份主要以备份为主 压缩备份:压缩比5:1
一、介绍 1、备份数据文件、归档、控制文件、spfile 2、自动维护备份相关元数据 3、只备份使用过的数据块 4、自动检测坏块 5、可以对备份文件进行压缩 6、支持增量
二、rman体系结构 1、带库不验证备份集好坏。 2、磁带存储灵活性要比阵列好 3、磁盘阵列速度快还稳定 4、使用带库还要买备份软件 5、如果公司生产库有几十套库,可以考虑使用带库 备份时通道一般分配3-6个就可以。
三、rman备份 在oracle8的时候必须使用catalog库,因为rman恢复命令不支持from 备份集的语句,9i以后就不需 要了。 备份集的存储位置必须是oracle数据库服务器能直接读写的位置。
四、备份集数量由以下几个因素决定: a、输入文件的数量:一个备份集至少包含一个输入文件,输入文件不可以跨多个备份集,默认一个备份集最多容纳64个输入文件 b、通道的个数,但是也要看文件的个数是否大于等于通道数,如果小于通道数,那么产生的备份集的数量行于实际文件的个数。 c、并行参数的设置 假设:users表空间有两个数据文件
RMAN> backup tablespace users ;这个命令将产生一个备份集。a、输入文件的数量:一个备份集至少包含一个输入文件,输入文件不可以跨多个备份集,默认一个备份集最多容纳64个输入文件 RMAN> backup tablespace users filesperset 1;
如果users表空间有两个数据文件,filesperset 1所以一次只能输入一个文件,那这个命令将产生两个备份集。 b、通道的个数,但是也要看文件的个数是否大于等于通道数,如果小于通道数,那么产生的备份集的数量行于实际文件的个数。
RMAN> run{ 2> allocate channel c1 type disk;--这一段命令也是产生两个备份集 3> allocate channel c2 type disk; 4> backup tablespace users; 5> }c、并行参数的设置,这条命令也产生两个备份集
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2; RMAN> backup tablespace users; RMAN> backup tablespace system section size=100m; --这条命令用来验证一个备份集里可以有多个备份片。 RMAN>configure channel device type disk format '/home/oracle/davbak/%d_%U.FULL' MAXPIECESIZE 20M;obsolete状态,是针对MAN备份保留策略来说的,超过了这个保留策略的备份,会被标记为 obsolete,但其状态依旧为AVAILABLE,我们可以使用report obsolete来查看已废弃的备份。 删除废弃的备份,可以使用delete noprompt obsolete命令(noprompt是指无需确认): EXPIRED状态的产生,与crosscheck命令是密切相关的,RMAN通过crosscheck命令检查备份是否存在于备份介质上,如果不存在,则状态由AVAILABLE改为EXPIRED。
1、备份表空间的命令
rman target / rman> backup tablespace users format '/home/oracle/bak/%d_%t_%s_%p.bak'; rman> backup device type disk tablespace users to destination '/home/oracle/bak/'; rman>run{ allocate channel c1 device type disk to destination '/home/oracle/bak/'; allocate channel c2 device type disk to destination '/home/oracle/bak/'; backup (tablespace users channel c1)(tablespace example channel c2); }2、创建catalog库 sqlplus sys/oracle@prod4 as sysdba 创建catalog库所有的表空间
SQL> create tablespace ts_catalog datafile '/u01/app/oracle/oradata/PROD4/catalog.dbf' size 400m;创建用户:
SQL> create user rc_admin identified by RC_ADMIN default tablespace ts_catalog; SQL> grant recovery_catalog_owner,unlimited tablespace to rc_admin; grant connect to catalog; --创建catalog目录: [oracle@dav-PROD2 ~]$ rman catalog rc_admin/RC_ADMIN@prod4 RMAN> create catalog; --注册其实数据库实例到catalog库中: [oracle@dav-PROD2 ~]$ rman target sys/oracle@prod2 catalog rc_admin/RC_ADMIN@prod1 RMAN> register database; --取消注册:unregister database; --升级catalog库与target库之间rman版本 RMAN>upgrade catalog3、使用catalog方式备份数据库全备:
[oracle@edsir4p1-PROD2 ~]$ rman target sys/oracle@dav_prod2 catalog rc_admin/RC_ADMIN@dav_prod4 RMAN> backup database format '/home/oracle/rman/prod2_%U.bkp' plus archivelog format '/home/oracle/rman/prod2_%U.arc';4、给备份集加标签,并做永久保留
[oracle@davdb-PROD1 ~]$ rman target sys/oracle@davdb catalog rc_admin/RC_ADMIN@prod4 RMAN> backup archivelog all format '/home/oracle/davbak/prod1_%U.arc' tag='Q107' keep forever;5、压缩备份 加分片,限制备份片大小 备份某个表空间并分成规定大小的备份片: 多段备份:可以将较大的数据文件备份划分为固定大小的多段备份。rman将大的数据文件划分为文件块, 该划分是将文件逻辑划分为连续块,每个文件块使用一个备份集片
rman>backup tablespace system section size=30m format '/home/oracle/bak/%U'; RMAN> backup as compressed backupset tablespace example format '/home/oracle/bak/%d_%U.BAK';--压缩加分片 RMAN> CONFIGURE channel device type disk maxpiecesize 100m;--通过修改默认参数来控制备份片大小. RMAN> CONFIGURE MAXSETSIZE TO 800M;--通过修改默认参数设置备份集的大小来间接控制备份片的大小;6、开启块跟踪
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;--打开备份优化设置通过如下命令 SQL> alter database enable block change tracking using file ' /home/oracle/files/bck.dbf'; select status,filename,bytes from v$block_change_tracking;7、写一个备份脚本,每周做一次全备,每天做两次归档备份,控制文件自动备份
8、冗余策略: config retention policy to recovery window of 7 days; crontab常用参数: 冗余份数=恢复时间窗口/全备的间隔时间+1 一份=全备+与下次全备之间的归档 crontab -l //查看当前用户下的cron任务 crontab -e //编辑当前用户的定时任务 crontab -u linuxso -e //编辑用户linuxso的定时任务 具体用法和格式: 基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启apache。