一、数据库未开启归档模式,进行开启:
SQL> shutdown immediate;
SQL> startup mount;
SQL>alter database archivelog ; (禁用:alter database noarchivelog)
SQL>alter database open;
查看设置恢复区大小: SQL>show parameter db_recovery_file;
1、查看归档日志是否开启
查看数据库是否处于归档模式下:
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25
2、如果未处于归档模式下,进行下面操作
(1)关闭数据库并启动数据库到mount状态,
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started.
(2)使用ALTER DATABASE ARCHIVELOG命令将数据设置为归档模式,并验证数据库的归档模式是否改变
SQL> alter database archivelog;#(关闭归档: alter database noarchivelog; Database altered. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25 SQL> alter database open; Database altered.
3、查看归档日志路径:
SQL> show parameter DB_RECOVERY_FILE_DEST
4、查看常用恢复区(对于常用oracle,archivelog和flashback数据会统一放置在flash_recovery_area或ORACLE_HOME/dbs下;但对于sap安装的oracle,则不同,两者是分开放置),如下:
(1)常用oracle环境
SQL> show parameter db_recovery_file_dest;-----256G大小限制了$ORACLE_HOME/dbs的总大小,所以archivelog和falshback大小限制在256G
查看路径:
SQL>select * from V$FLASH_RECOVERY_AREA_USAGE;---包含flashback log和archivelog资源占用
(2)SAP的oracle环境
SQL> show parameter db_recovery_file_dest;--此处只有oraflash闪回区的限制,并没有archivelog显示,而是单独的文件目录,所以archivelog大小不受限制,定时脚本删除即可;只有oraflash大小限制在30000M内;
SQL>select * from V$FLASH_RECOVERY_AREA_USAGE;---包含了archivelog和flashback log资源占用
二、查看是否设置闪回区域及闪回区大小: SQL>show parameter db_recovery_file;
1、 闪回恢复区主要通过3个初始化参数来设置和管理:
db_recovery_file_dest:指定闪回恢复区的位置————————show parameter db_recovery_file_dest
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小————————show parameter db_recovery_file_dest_size
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟————————show parameter db_flashback_retention_target-- 默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大
注:闪回区会满,可以通过闪回区的大小以及回退时间(自动清理过期闪回数据)设置,防止闪回区爆满,导致oracle无法运行
2、开启闪回数据库(不需要关闭数据库,在全开下即可)
(1)在startup 全开下:
(2)查询发现数据库未启用闪回数据库:SQL > select flashback_on from v$database;
(3)先设置闪回区大小:SQL>alter system set db_recovery_file_dest_size = 8G;
(4)再设置闪回区目录:SQL>alter system set db_recovery_file_dest=‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/’
(5)设置闪回区保留时间:SQL>alter system set db_flashback_retention_target=1440 scope=both; ---1440分钟(一天)
(6)最后设置闪回区启用:SQL>alter database flashback on;----启用条件:在归档日志开启模式下,直接执行此命令即可,无需关闭数据库),设置闪回区大小\目录\保留时间、关闭数据库(进入mount状态,设置启用,再进行数据库的open)
(7)删除,清除闪回区数据SQL>alter database flashback off;即可清除
1、关于 CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
(1)如果值为ON,无论进行备份什么数据文件, 都会对控制文件进行备份;
(2)如果值为OFF,只有备份system数据文件时, 才会对控制文件进行备份;
2、关于备份路径设置:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/rmanbak/%T_%n_%s_%d.bkp'; #数据文件备份路径
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data/rmanbak/%F.ctl'; #控制文件备份路径
(1)如果CONFIGURE CONTROLFILE AUTOBACKUP 为OFF,备份了system后,控制文件会备份,且备份路径是按照默认的路径进行‘%F’
(2)如果CONFIGURE CONTROLFILE AUTOBACKUP 为ON,备份任意数据后,控制文件会备份,且备份路径按照配置的新路径进行'/data/rmanbak/%F.ctl'
由此可见,只有CONFIGURE CONTROLFILE AUTOBACKUP 为ON了,控制文件的配置路径才会生效
3、show的灵活运用
(1)查看备份路径:RMAN>SHOW CHANNEL;
(2)查看备份类型:SHOW DEVICE TYPE;
(3)查看介质类型:SHOW DEFAULT DEVICE TYPE;
4、列出备份信息:
(0)列出所有备份信息:RMAN > list backupset;
(1)列出数据库中所有文件的备份信息:RMAN>LIST BACKUP OF DATABASE;
(2)列出指定表空间的备份信息:RMAN>LIST COPY OF TABLESPACE 'SYSTEM';
(3)列出指定数据文件的备份信息:RMAN>LIST BACKUP OF DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
(4)列出指定控制文件的备份信息:RMAN>list backup of controlfile;
5、删除备份
(1)删除所有备份:RMAN>delete backup (包括bkp文件和ctl文件)
(2)删除特定备份集:RMAN> delete backupset 27780;(backupset可以通过RMAN>list backup 中的BS字段值找到).
(3)删除特定备份片(同2相同):RMAN> delete backuppiece '/data/rmanbak/20190829_ORCLOGG1_213_ORCLOGG1.bkp';
(4)删除陈旧备份(obsolete):当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份:RMAN> delete obsolete;
(5)删除过期备份(Expired):执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。RMAN> delete expired backup;
(6)删除过期副本(expired):RMAN> delete expired copy;
(7)删除特定映像副本:RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';
(8)删除所有映像副本:RMAN> delete copy;
(9)在备份后归档日之后删除输入对象:RMAN> backup archivelog all delete input;
(10)删除所有归档日志(非备份):RMAN> delete force noprompt archivelog all; 【force是在无法删除的情况下使用】
(11)删除过期归档日志:RMAN>delete expired archivelog all;
(12)删除2天前归档日志:RMAN>delete archivelog until time 'sysdate-2';
(13)检查归档日志情况:CROSSCHECK ARCHIVELOG ALL;
noprompt:未经过提示,直接删除
6、备份数据
(1)备份所有数据文件:RMAN>backup database;(不管configuration中是否配置控制文件的自动备份功能是否开启,只要备份了system,就会自动备份control文件)
(2)备份所有数据文件并指定路径:RMAN>backup database format '/data/rmanbak/%u.bkp'
(3)备份数据文件并备份归档日志:RMAN>backup database plus archivelog;
(3)备份数据文件并备份归档日志且删除归档日志:RMAN>backup database plus archivelog delete input;
(3)备份指定序号的数据文件:RMAN>backup datafile 3;
(4)备份指定表空间的数据文件:RMAN>backup tablespace users;
(5)备份控制文件:RMAN>backup current controlfile;
(6)备份所有数据文件时,会自动备份控制文件:RMAN>backup database;
(7)备份归档日志文件:RMAN>backup archivelog all;
(8)备份归档日志文件,并删除输入文件:RMAN>backup archivelog all delete input;
7、RMAN CROSSCHECK(原文链接:https://blog.csdn.net/miyatang/article/details/17410831)
作用: 用于核对磁盘和磁带上的备份文件,以确保RMAN资料库与备份文件保持同步。
注意:该命令只会检查RMAN资料库所记载的备份文件。当执行crosscheck命令时,如果资料库记录不匹配于备份文件的物理状态,那么该命令会更新资料库记录的状态信息。
备份文件的状态包括:AVALIABLE、UNAVALIABLE、EXPIRED。
expired状态,会在手动删除归档日志后,crosscheck可以检测出来。
(1)核对所有备份集 RMAN> crosscheck backup;
(2)核对所有数据文件的备份集 RMAN> crosscheck backup of database;
(3)核对特定表空间的备份集 RMAN> crosscheck backup of tablespace users;
(4)核对特定数据文件的备份集 RMAN> crosscheck backup of datafile 4;
(5)核对控制文件的备份集 RMAN> crosscheck backup of controlfile;
(6)核对SPFILE的备份集 RMAN> crosscheck backup of spfile;
(7)核对归档日志的备份集 RMAN> crosscheck backup of archivelog sequence 3;
(8)核对所有映像副本 RMAN> crosscheck copy;
(9)核对所有数据文件的映像副本 RMAN> crosscheck copy of database;
(10)核对特定表空间的映像副本 RMAN> crosscheck copy of tablespace users;
(11)核对特定数据文件的映像副本 RMAN> crosscheck copy of datafile 6;
(12)核对归档日志的映像副本 RMAN> crosscheck copy of archivelog sequence 4;
(13)核对控制文件的映像副本 RMAN> crosscheck copy of controlfile;
————————————————
版权声明:本文为CSDN博主「边城cn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/miyatang/article/details/17410831
8、建立镜像复制()
(1)rman中的镜像复制实质与通过操作系统copy命令备份相同,甚至连命令的格式都相似,只不过直接应用操作系统的copy命令复制数据文件时,只是文件拷贝,而rman的copy则能够在复制的同时,验证数据的有效性。
(2)个人认为rman中的镜像复制应用有限,而且也体现不出rman的优势,所以只是大致了解了概念,没有进行过实际操作,感兴趣的朋友可以自己做做试验,这里就不多做介绍了。
9、建立冗余备份
RMAN提供了一种更谨慎的备份策略:Duplexed方式备份,其实质即是在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。
(1)配置中开启冗余备份(或多路复用),数据文件和archivelog日志文件支持
(2)配置为:
将配置CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;改为CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 3;
将配置CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1 改为 CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 3;
(3)备份为:
RMAN> backup archivelog all format '/data/rmanbak/%T_%n_%s_%d_%c.arcbak';
RMAN> backup database format '/data/rmanbak/%T_%n_%s_%d_%c','/data/rmanbak02/%T_%n_%s_%d_%c','/data/rmanbak03/%T_%n_%s_%d_%c';
10、设置RMAN备份保存策略
RMAN中提供了两种备份保留策略:基于时间,和基于冗余数量
为RMAN设置了备份保留策略之后,RMAN会自动判断哪些备份集或镜像复制文件不必再保留。
这些备份文件将会被标记为“废弃(Obsolete)”,可以通过REPORT OBSOLETE命令查看当前处于废弃状态的备份文件,或者通过DELETE OBSOLETE命令删除这些废弃的备份
(1)基于时间:设置保留窗口为7天
RMAN> configure retention policy to recovery window of 7 days;
(2) 基于冗余数量:保留5份可恢复的备份冗余
RMAN> configure retention policy to redundancy 5;
11、RMAN备份相关的动态性能表(没有找到)
(1)V$ARCHIVED_LOG:本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
(2)V$BACKUP_CORRUPTION:这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
(3)V$COPY_CORRUPTIO:本视图显示了哪些镜像复制备份文件已经被损坏。
(4)V$BACKUP_DATAFILE:本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
(5)V$BACKUP_REDOLOG:本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
(6)V$BACKUP_SET:本视图显示了已经创建的备份集的信息。
(7)V$BACKUP_PIECE:本视图显示了已经创建的备份片段的信息。
12、RMAN备份类型
利用RMAN进行备份时,可以通过三种方式来对RMAN的备份做分类
(1)完全备份(Full Backup)与增量备份(Incremental Backup)
全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,后两者可以做备份优化。
(2)打开备份(Open Backup)或关闭备份(Closed Backup)
数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即关闭备份。
(3)一致备份(Consistent Backup)与不一致备份(Inconsistent Backup)
数据库打开状态或不干净关闭状态(shutdown abort)进行的备份是不一致备份,利用不一致的备份修复数据库后还需要做数据库的恢复。
在数据库干净关闭状态进行的备份是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。
13、增量备份的工作机制:
所谓增量备份,顾名思义即是每次备份仅操作那些发生了"变化"的数据块。RMAN中增量备份有两种:Differential方式和Cumulative方式。
如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式关闭)才能进行一致性的增量备份;
如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间。
(1)建立增量备份也是相当简单,实质就是一个参数INCREMENTAL LEVEL=n,在执行BACKUP命令时加上即可,例如,建立一个增量级别0的全库备份:
RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;
(2)建立一个增量级别1的users01.dbf数据文件备份
RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF';
注:RMAN默认创建的增量备份是Differential方式,如果要建立Cumulative方式的增量备份,在执行BACKUP命令时显式指定即可,例如:
RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
1、差异备份Differential
2、累积增量备份Cumulative
backup incremental level 0 database; --这是一个0级备份
backup incremental level 1 database; --差异1级
backup incremental level 2 database; --差异2级
backup incremental level 1 cumulative database; --累积1级
backup incremental level 2 cumulative database; --累积2级
注意:
(1)增量备份都需要一个0级备份来作为基础,0级备份与全备份的区别在于0级可以用来增量恢复,而全备份则不可以。
(2)增量备份,如果没有做0级备份,直接做1或2级备份,那么备份会首先做0级备份,再做指定的1或2级备份,如图:
15.数据库恢复
(1)对数据库进行完全介质恢复
过程有三个步骤:
a.启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
b.执行恢复操作
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;
注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:
DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。
SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。
c.打开数据库
RMAN> ALTER DATABASE OPEN;
此处需要注意的一点是,如果你的数据库并非处于归档模式,那么必须使用ALTER DATABASE OPEN RESETLOGS来打开数据库,因为RMAN会认为在非归档模式下是一个不一致的备份,执行resetlogs之后,oracle将会把scn重新置为0。
(2)恢复表空间
分成三个步骤:
a、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
b、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机:
RMAN> SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE';
RMAN> RESTORE TABLESPACE jweb;
RMAN> RECOVER TABLESPACE jweb;
RMAN> SQL 'ALTER TABLESPACE jweb ONLINE';
c、打开数据库
RMAN> ALTER DATABASE OPEN;
(3)恢复数据文件
事实上,恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。
a、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
b、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:
RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE;
RMAN> RESTORE DATAFILE 10;
RMAN> RECOVER DATAFILE 10;
RMAN>SQL ' ALTER DATABASE DATAFILE 10 ONLINE;
c、打开数据库
RMAN> ALTER DATABASE OPEN;
(4)数据库恢复丢失的文件(归档模式下,假设某数据文件丢失,恢复该数据文件。)
a.删除数据文件: [root@ORACLEOGG1 datafile]# mv MESPRD_01.dbf MESPRD_01.dbf.bak.2
b.关闭数据:如果直接使用SQL>shutdown immediate;因为immediate会做检查点,检查缺少文件,会提示报错,因为数据文件找不到,无法正常关闭:
c.根据如上报错,需要使用另一种关闭方法,可以关闭:SQL> shutdown abort;(abort参数不做检查点)
d.进行restore database 和recover database 恢复;
e.打开数据库:SQL> alter database open;
RMAN> restore controlfile from 'd:\backup\C-3391142503-20070718-04';
########如果打开了自动备份,通过restore controlfile from autobackup也可以
########不过需要注意,如果以前修改过AUTOBACKUP的格式和路径,那么在恢复之前需要进行重新设置指明自动备份所在路径。不然RMAN有可能会找不着自动备份的文件哟
(5)恢复控制文件
16、rman备份(脚本,另见其他文档)
https://www.cnblogs.com/hftian/p/9048321.html(脚本)
https://www.cnblogs.com/benbenduo/p/4922612.html(脚本)
(5)对某个路径下的备份文件进行恢复????????????
当前有多个备份文件:
我们指定恢复第284号备份文件,恢复前,查看数据,此数据为2019.09.05 14点左右写入的,恢复早上8点32分的;
???????????????????????????????????????
16、异机恢复
16.备份控制文件、日志文件(NC)
19.登录rman突然报错,跟踪发现,连接本机的catalog没问题,连接ORCLOGG2的catalog就报错,查看ORCLOGG2资源,硬盘满了,清理空间即可
[oracle@ORACLEOGG1 ~]$ rman target sys/oracle@ORCLOGG1 catalog rmantest_ogg2/oracle@ORCLOGG2
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04004: error from recovery catalog database: ORA-00257: Archiver error. Connect AS SYSDBA only until resolved.
文章评论