OracleRMAN物理备份技术之管理维护
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OracleRMAN物理备份技术之管理维护相关的知识,希望对你有一定的参考价值。
参考技术A恢复管理维护任务
这部分主要介绍一下如何管理维护RMAN存储库和快速恢复区
没有恢复目录的情况下如何管理RMAN存储库
交叉验证备份(CROSSCHECKING BACKUP)
删除备份
利用RMAN删除数据库
多个通道的情况下交叉验证和删除操作
如何改变一个备份记录的状态
归档日志目录和手工拷贝
修改RMAN存储库目录
维护快速恢复区
没有恢复目录的情况下管理RMAN存储库
备份控制文件
如果没有恢复目录 控制文件的备份更加重要 要通过多个镜像控制文件或者操作系统镜像来备份变化了的控制文件 另外最好要配置控制文件的自动备份
CONTROLFILE AUTOBACKUP ON
注意 如果从自动备份或者其他备份恢复了控制文件 最近执行的CONFIGURE配置内容将会被覆盖 回到备份时刻的设置
监控控制文件记录重写
没有恢复目录的情况下 oracle的控制文件记录了所有的历史备份记录 为了保证控制文件不会无限制的增长 oracle提供了一个可以设置控制文件保留时间的阀值的初始化参数 CONTROL_FILE_RECORD_KEEP_TIME
例如我们设置了CONTROL_FILE_RECORD_KEEP_TIME= 任何超过 天的纪录都有可能被覆盖 如果没有超过 天的记录 oracle将扩展控制文件的大小 如果由于受到操作系统的限制(比如磁盘空间满)无法扩展控制文件的大小 oracle会强制覆盖最老的记录并且在alter log中记录这一情况 如下所示
kccwnc: following controlfile record written over: RECID # Recno Record timestamp / / : : Thread= Seq#= Backup set key: stamp= count= Low scn: x af f / / : : Next scn: x af b / / : : Resetlogs scn and time scn: x / / : : Block count= Blocksize=
快速恢复区Flash Recovery Area和控制文件记录保存时间参CONTROL_FILE_RECORD_KEEP_TIME之间的相互作用
如果我们在使用快速恢复区保留RMAN备份的话 控制文件将记录恢复区中文件的创建记录 因为一般来讲文件创建的记录要比执行备份的信息要晚 如果有备份文件超过了CONTROL_FILE_RECORD_KEEP_TIME参数所规定的时间 ORACLE试图删除这些这些文件 否则ORACLE将增加控制文件的大小并且在alter log中记录这一情况 如下所示
kccwnc: tring to expand controlfile section nnnn for Oracle Managed Files
如果无法扩展控制文件 则alter log中将出现以下信息
WARNING: Oracle Managed File filename is unknown to controlfile This is the result of limitation in control file size that could not keep all recovery area files
也就是不能满足备份的保留冗余策略来保存备份了
为了避免和降低这种情况的发生 我们可以采取以下措施
使用 K大小的块创建控制文件 如果想设置控制文件 K大小的BLOCK 我们必须首先把SYSTEM表空间设置成为大于或者等于控制文件使用的BLOCK SIZE 修改了控制文件BLOCK_SIZE后 必须重建控制文件
使用BACKUP RECOVERY AREA命令备份快速恢复区使得快速恢复区的文件成为可以删除的文件 或者减小备份保留时间或者减小备份保留冗余度维护控制文件中的RMAN备份存储库
交叉验证备份CROSESSCHECK BACKUPS
验证备份存储库中的备份记录和磁盘(或者磁带)上的备份文件是否一致 如果用磁盘保存备份 CROSSCHECK检查文件头是否有效 如果用磁带保存备份 CROSSCHECK检查文件是否存在 备份文件的三种可能的状态为 AVAILABLE UNAVAILABLE and EXPIRED 我们可以用LIST命令查看或者直接查询V$BACKUP_FILES RC_DATAFILE_COPY RC_ARCHIVED_LOG等视图
给出几个CORSSCHECK示例命令
CROSSCHECK BACKUP; # checks backup sets proxy copies and image copies CROSSCHECK COPY OF DATABASE; CROSSCHECK BACKUPSET ; CROSSCHECK BACKUPPIECE TAG = nightly_backup ; CROSSCHECK CONTROLFILECOPY /tmp/control ctl ; CROSSCHECK DATAFILECOPY ; CROSSCHECK PROXY ;
交叉验证指定数据库文件的备份
# these CROSSCHECK mands use configured channels which means that they # always check the disk device If you configured an *** t channel then RMAN # checks the *** t device too CROSSCHECK BACKUP OF DATAFILE ora_home/oradata/trgt/system dbf PLETED AFTER SYSDATE ; CROSSCHECK BACKUP OF ARCHIVELOG ALL SPFILE;
删除备份
删除指定的备份
先用LIST命令找到备份唯一标识
LIST BACKUP OF DATABASE ARCHIVELOG ALL; # lists backups of db files and logs LIST COPY; # lists only image copies LIST BACKUP; # lists everything
删除指定的备份存储库记录和备份文件
DELETE BACKUPPIECE ; DELETE CONTROLFILECOPY /tmp/control ctl ; DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = ;
批量删除
DELETE BACKUP; # deletes all backups on disk and tape DELETE BACKUP OF TABLESPACE users DEVICE TYPE *** t; # delete only from tape DELETE COPY OF CONTROLFILE LIKE /tmp/% ; # LIKE specifies name of the copy DELETE NOPROMPT ARCHIVELOG ALL BACKED UP TIMES TO *** t; # backs up only if already backed up X to tape
删除无效备份
RMAN>CROSSCHECK BAKCUP; RMAN>DELETE EXPIRED BACKUP;
删除过期备份
RMAN>DELETE OBSOLETE;
如果没有指定其他参数RMAN默认按照保留冗余策略找到过期备份后执行删除 等效于
DELETE OBSOLETE REDUNDANCY = ;
删除过期备份也可以指定按照时间冗余策略来删除 例如
DELETE OBSOLETE RECOVERY WINDOW OF DAYS;
强制删除备份
如果没有执行CROSSCHECK 而磁盘上备份文件确实被删除了 我们执行删除备份的时候会从RMAN收到错误提示 如下
RMAN> delete backup tag TAG T ; 使用通道 ORA_DISK_ 备份段列表 BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称 AVAILABLE DISK D:\\ORACLE\\PRODUCT\\ \\FLASH_R ECOVERY_AREA\\ROME\\BACKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ VXZTH G_ BKP 是否确定要删除以上对象 (输入 YES 或 NO)? yes RMAN : 警告: 由于状态不匹配 所以不能删除 对象 (对于 DISK 通道) RMAN : 请用 CROSSCHECK 命令修正状态 RMAN : 不匹配对象的列表 RMAN : ========================== RMAN : 对象类型 文件名/句柄 RMAN : RMAN : Backup Piece D:\\ORACLE\\PRODUCT\\ \\FLASH_RECOVERY_AREA\\ROME\\BA CKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ VXZTH G_ BKP 我们可以用带有force参数的选项来强制删除备份 RMAN> delete force backup tag TAG T ; 使用通道 ORA_DISK_ 备份段列表 BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称 AVAILABLE DISK D:\\ORACLE\\PRODUCT\\ \\FLASH_R ECOVERY_AREA\\ROME\\BACKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ VXZTH G_ BKP 是否确定要删除以上对象 (输入 YES 或 NO)? yes 已删除备份段 备份段 handle=D:\\ORACLE\\PRODUCT\\ \\FLASH_RECOVERY_AREA\\ROME\\BACKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ VXZTH G_ BKP recid= stamp= 对象已删除
多个通道执行交叉验证和删除备份
在执行CROSSCHECK和DELETE之前可以配置或者手工分配多个通道 RMAN将搜索和删除在不同类型的设备上执行的备份文件 适用以下情况
用一个命令交叉验证或者删除在不同设备上备份的文件(例如磁带和磁盘上都有备份文件)
交叉验证或者删除工作在RAC环境下备份到每个节点上的备份文件
RMAN如何在多通道下执行CROSSCHECK和DELETE
举个例子 我们的备份文件全部在磁盘上 磁带上没有备份文件 而我们给出了如下备份脚本 那么RMAN将会执行前边的两个磁盘CROSSCHECK而不会执行第三条磁带CROSSCHECK
RUN ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT SYS/oracle@ node ; AlLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT SYS/oracle@node ; ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE *** t; CROSSCHECK BACKUP OF DATABASE;
注意 如果RMAN标记为EXPIRED状态的备份文件被修复后 我们执行DELETE EXPIRED BACKUP 命令后将会收到如下提示
RMAN> delete expired backup; 使用通道 ORA_DISK_ 备份段列表 BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称 EXPIRED DISK D:\\ORACLE\\PRODUCT\\ \\FLASH_RECOVERY_AREA\\ROME\\BACKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ WF CYG _ BKP 是否确定要删除以上对象 (输入 YES 或 NO)? yes RMAN : 警告: 由于状态不匹配 所以不能删除 对象 (对于 DISK 通道) RMAN : 请用 CROSSCHECK 命令修正状态 RMAN : 不匹配对象的列表 RMAN : ========================== RMAN : 对象类型 文件名/句柄 RMAN : RMAN : Backup Piece D:\\ORACLE\\PRODUCT\\ \\FLASH_RECOVERY_AREA\\ROME\\BACKUPSET\\ _ _ \\O _MF_NNNDF_TAG T _ WF CYG _ BKP
一个命令交叉验证磁盘和磁带备份的例子
CONFIGURE DEVICE TYPE *** t PARALLELISM ; CONFIGURE DEFAULT DEVICE TYPE to *** t; CROSSCHECK BACKUP OF DATABASE;
示例输出文件如下
allocated channel: ORA_SBT_TAPE_ channel ORA_SBT_TAPE_ : sid= devtype=SBT_TAPE channel ORA_SBT_TAPE_ : WARNING: Oracle Test Disk API using channel ORA_DISK_ crosschecked backup piece: found to be AVAILABLE backup piece handle=/oracle/dbs/ c esv _ _ recid= stamp= crosschecked backup piece: found to be AVAILABLE backup piece handle=/oracle/dbs/c recid= stamp= crosschecked backup piece: found to be AVAILABLE backup piece handle= c erb _ _ recid= stamp= crosschecked backup piece: found to be AVAILABLE backup piece handle= c erba_ _ recid= stamp= crosschecked backup piece: found to be AVAILABLE backup piece handle= c erce_ _ recid= stamp= crosschecked backup piece: found to be AVAILABLE backup piece handle=c recid= stamp=
如果没有配置磁带备份设备 也可以手工执行分配通道
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE *** t; CROSSCHECK BACKUP OF DATABASE;
RAC环境下交叉验证的例子
CONFIGURE DEVICE TYPE DISK PARALLELISM ; CONFIGURE CHANNEL DEVICE TYPE DISK CONNECT SYS/oracle@node_ ; CONFIGURE CHANNEL DEVICE TYPE DISK CONNECT SYS/oracle@node_ ; CROSSCHECK BACKUP;
一个删除磁带和磁盘备份的例子
CONFIGURE DEVICE TYPE *** t PARALLELISM ; CONFIGURE DEFAULT DEVICE TYPE TO *** t; DELETE BACKUPSET;
示例输出文件如下
using channel ORA_SBT_TAPE_ using channel ORA_DISK_ List of Backup Pieces BP Key BS Key Pc# Cp# Status Device Type Piece Name AVAILABLE SBT_TAPE c erb _ _ UNAVAILABLE SBT_TAPE c erba_ _ AVAILABLE SBT_TAPE c erce_ _ AVAILABLE SBT_TAPE c AVAILABLE DISK /oracle/dbs/ c esv _ _ AVAILABLE DISK /oracle/dbs/c Do you really want to delete the above objects (enter YES or NO)? y deleted backup piece backup piece handle=/oracle/dbs/ c esv _ _ recid= stamp= deleted backup piece backup piece handle=/oracle/dbs/c recid= stamp= deleted backup piece backup piece handle= c erb _ _ recid= stamp= deleted backup piece backup piece handle= c erba_ _ recid= stamp= deleted backup piece backup piece handle= c erce_ _ recid= stamp= deleted backup piece backup piece handle=c recid= stamp=
释放多个通道 如下命令可以释放所有通道
RELEASE CHANNEL;
使用RMAN删除数据库
RMAN连接到处于MOUNT状态的TARGET数据库 就可以删除TARGET数据库 而不需要连接恢复目录 如果RMAN同时连接到恢复目录 并且指定INCLUDE COPIES AND BACKUPS参数 RMAN将删除恢复目录中的备份记录
生成备份文件目录
RMAN>catalog start with d:\\oracle\\product\\ \\flash_recovery_area ; RMAN> DELETE BACKUPSET; # deletes all backups RMAN> DELETE COPY; # delete all image copies (including archived logs) RMAN> DROP DATABASE; # delete all database files and unregister the database
修改备份记录的状态
CHANGE DATAFILECOPY /tmp/control ctl UNAVAILABLE; CHANGE COPY OF ARCHIVELOG SEQUENCE BEEEN AND UNAVAILABLE; CHANGE BACKUPSET UNAVAILABLE; CHANGE BACKUP OF SPFILE TAG TAG T UNAVAILABLE; CHANGE DATAFILECOPY /tmp/system dbf AVAILABLE; CHANGE BACKUPSET AVAILABLE; CHANGE BACKUP OF SPFILE TAG TAG T AVAILABLE;
修改备份记录状态使得保留冗余策略外的备份不被删除
我们可以在执行备份的时候直接指定BACKUP……KEEP来把备份文件标记为长期备份 有一点需要注意 如果使用恢复目录来存储备份记录的话 我们应该执行BACKUP……KEEP FOREVER
我们也可以用CHANGE命令来把一个备份标记为长期备份
CHANGE BACKUPSET KEEP; CHANGE BACKUPSET NOKEEP; CHANGE DATAFILECOPY /tmp/system dbf KEEP UNTIL SYSDATE+ ;
维护存储库目录
如果我们的备份文件中一部分是其他RMAN程序产生的 而我们的RMAN存储库中没有这些备份的记录 我们可以用CATALOG命令来维护我们的备份记录
以下情况需要维护存储库的备份记录
我们利用其他命令(如系统命令等)产生了备份文件 想把这些文件加入RMAN存储库
利用备份控制文件执行恢复并且在恢复过程中改变了归档日志的路径或者格式 存储库中没有恢复需要的归档日志文件 我们必须把这些日志加入到RAMN存储库
如果我们执行数据文件拷贝备份 没有LEVEL 备份而我们又想直接可以执行LEVEL 的增量备份 我们可以通过增加RMAN存储库的目录来实现 虽然不建议这么做 但是的确可以
数据库版本升级 开始使用RMAN 我们可以把以前的热备份文件等加入到RMAN存储库
给几个例子 维护用户备份文件到存储库目录
SQL> ALTER TABLESPACE users BEGIN BACKUP; % cp $ORACLE_HOME/oradata/trgt/users dbf /tmp/users dbf; SQL> ALTER TABLESPACE users END BACKUP; RMAN> CATALOG DATAFILECOPY /tmp/users dbf ; CATALOG BACKUPPIECE /disk / dtq d_ _ /disk / bdtqdou_ _ ;
维护备份集到存储库目录
CATALOG BACKUPPIECE /disk / dtq d_ _ /disk / bdtqdou_ _ ;
备份集文件加入到存储库目录后可以在如下系统视图查找
V$BACKUP_PIECE V$BACKUP_SET V$BACKUP_DATAFILE V$BACKUP_REDOLOG and V$BACKUP_SPFILE
维护所有备份文件到存储库目录
RMAN> CATALOG RECOVERY AREA; # catalog all files in the recovery area RMAN> CATALOG START WITH +disk ; # catalog all files from an ASM disk group RMAN> CATALOG START WITH /fs /datafiles/ ; # catalog all files in directory
从存储库目录删除记录
CHANGE ARCHIVELOG UNCATALOG CHANGE CONTROLFILECOPY /tmp/control ctl UNCATALOG; CHANGE DATAFILECOPY /tmp/system dbf UNCATALOG;
lishixinzhi/Article/program/Oracle/201311/18820
Docker虚拟化技术系列之-命令详解
虚拟化原理:虚拟化解决方案的底部是要进行虚拟化的物理机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序 层的支持。系统管理程序(Virtual machine monitor),或称为 VMM,可以看作是平台硬件和操作系统的抽象化。在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统。
随着docker不断的学习,我们要想进一步去维护docker,就需要掌握docker日常使用的命令,如下为docker常用命令:
一、容器基础命令
docker version#查看版本
docker search centos#搜索可用docker镜像
docker images 查看当前docker所有镜像
docker pull centos #下载镜像
二、容器导入导出
cat centos.tar |docker import - centos6 #Docker导入镜像 docker export id >cenos6.tar #Docker导出镜像 docker run centos echo"hello word"#在docker容器中运行hello world! docker run centos yum installntpdate#在容器中安装ntpdate的程序 docker ps -l 命令获得最后一个容器的id,docker ps -a查看所有的容器。
运行docker commit 提交刚修改的容器,例如:
docker commit 2313132 centos:v1
三、运行容器命令
运行启动一个容器命令:
docker run-i -t centos /bin/bash 在容器里启动一个/bin/bashshell环境,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。 docker run -d centos:v1 /bin/bash ,-d表示在后台启动,以daemon方式启动。
docker stop id 关闭容器 dockerstart id 启动某个容器 docker rm id 删除容器,docker rmi images删除镜像
docker run -d -p 80:80 -p8022:22 centos:v2,解析:-p指定容器启动后docker上运行的端口映射及容器里运行的端口,80:80,第一个80表示docker系统上的80,第二个80表示docker虚拟机里面的端口。用户默认访问本机80端口,自动映射到容器里面的80端口。
四、进入容器命令
docker exec -it container_id /bin/bash (容器ID)
用这种方式可以直接exit退出容器,容器继续运行;
docker attach container_id 如果用这种方式进入,需要用ctrl+a+q退出容器;当然了,容器使用还有非常多的命令,例如docker inspect ID可以查看容器的详细信息等等;
以上是关于OracleRMAN物理备份技术之管理维护的主要内容,如果未能解决你的问题,请参考以下文章