技术标签: oracle rman Oracle备份与恢复
数据库备份通常分为如下两种:
1、物理备份:备份组成数据库的物理文件(包含数据文件、控制文件、归档重做日志文件),也即是在其他位置存放数据库物理文件的同本,比如脱机的磁盘或者磁带设备;
2、逻辑备份:指备份数据库中的逻辑数据,比如数据表和存储过程,可以使用Oracle的数据泵工具导出到二进制文件,在数据库恢复时导入到数据库。
1和2的关系:物理备份是制定任何备份策略的基础,逻辑备份可以看作是物理备份的有效补充,但是物理备份需要较长的备份和恢复时间,而逻辑备份可以仅对重要的数据库数据进行备份,可以实现较快的备份与恢复操作,因此在实际的工作中即要进行物理备份,也要确保对于重要数据的即时逻辑备份。
在实际工作过程中,需要DBA处理的故障有3大类,分别是介质故障、用户错误活应用程序错误,其他的错误不会造成数据的丢失,或需要从备份中恢复,比如可能需要重启数据库以便恢复数据库实例的失败。下面是对这3类DBA需要进行备份与恢复的错误详细描述:
1、进行Oracle备份恢复的方式有以下3种:
第一步:在SQL*PLUS中使用ARCHIVE LOG LIST 或者查询从v$database数据字典视图来查看当前数据库所处的模式。
1、在操作系统中使用sysdba账号登陆数据库
1、sqlplus / as sysdba;--登陆本机数据库
2、sqlplus [username]/[password]@[IP]:1521/[SID];--远程登陆数据库
第二步:查询v$database数据字典视图的log_mode字段,或者使用ARCHIVE LOG LIST来查看数据库所处模式。
set linesize 500;--格式化输出结果宽度
select dbid,name,log_mode,platform_name from v$database;--使用v$database查询
结果如下:NOARCHIVELOG代表非归档模式
或者
archive log list;
结果如下:
第二步:通过第一步中的结果可以看出当前数据库处于非归档模式,现在使用如下步骤将数据库设置成归档模式:
(1)、使用SHUTDOWN命令关闭数据库实例,然后将数据库启动到MOUNT状态,示例如下:
SQL> SHUTDOWN IMMEDIATE;--关闭数据库实例
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT;--启动数据库到MOUNT状态
ORACLE 例程已经启动。
Total System Global Area 3373858816 bytes
Fixed Size 2180424 bytes
Variable Size 2348812984 bytes
Database Buffers 1006632960 bytes
Redo Buffers 16232448 bytes
数据库装载完毕。
(2)、使用ALTER DATABASE ARCHIVELOG语句将数据库设置为归档日志模式,或者使用ALTER DATABASE NOARCHIVELOG将数据库设置为非归档日志模式,语句如下:
SQL> ALTER DATABASE ARCHIVELOG;
数据库已更改。
(3)、将数据库设置为打开状态,语句如下:
SQL> ALTER DATABASE OPEN;
数据库已更改。
(4)、此时数据库已经使用归档模式在运行,可以使用ARCHIVE LOG ALL将重做日志文件进行归档,示例语句如下:
SQL> ARCHIVE LOG ALL;
ORA-00271: 没有需要归档的日志
如上结果所示,报错ORA-00271: 没有需要归档的日志,这可能是已经进行了归档或日志文件组还没有开始写入,可以使用如下命令对当前的日志组进行归档。
(5)、解决报错信息ORA-00271
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
系统已更改。
第三步:至此,数据库以能够自动完成归档,此时可以再次使用“第二步”中的语句查询出归档日志存储位置。
SQL> ARCHIVE LOG LIST;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST--归档日志默认使用闪回区域
最早的联机日志序列 593
下一个存档日志序列 595
当前日志序列 595
如果需要查看归档日志文件可以执行以下命令:
C:\>RMAN TARGET / --使用rman target / 命令登陆RAMN并连接数据库,或者使用rman target [username]/[passwd]@[IP]:1521/[SID]连接目标数据库
恢复管理器: Release 11.2.0.1.0 - Production on 星期四 10月 17 17:46:06 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (DBID=1547773451)
RMAN> crosscheck archivelog all;--查看所有的归档日志文件
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=129 设备类型=DISK
对归档日志的验证成功
归档日志文件名=D:\APP\MINGYUAN\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_10_17\O1_MF_1_594_GTJ9Q3HR_.ARC RECID=1 STAMP=1021912291 --这个就是归档日志存储位置
已交叉检验的 1 对象
RMAN>
创建一个完成的数据库备份,备份所有的数据库文件及SPFILE文件,复制Oracle的安装目录,语句如下:
RMAN> BACKUP DATABASE FORMAT 'C:\backup\%d_bak_%U';--%d指定数据库名称,%U指定产生一个唯一的命名,%t指定备份集的时间戳,%s指定备份集编号及%p指定备份片编号。
启动 backup 于 18-10月-19
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00005 名称=D:\APP\ORADATA\ORCL\XTDATA.DBF
输入数据文件: 文件号=00003 名称=D:\APP\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004 名称=D:\APP\ORADATA\ORCL\USERS01.DBF
输入数据文件: 文件号=00001 名称=D:\APP\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:\APP\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 18-10月-19
通道 ORA_DISK_1: 已完成段 1 于 18-10月-19
段句柄=C:\BACKUP\ORCL_BAK_04UEKOF4_1_1 标记=TAG20191018T150404 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:05:25
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-10月-19
通道 ORA_DISK_1: 已完成段 1 于 18-10月-19
段句柄=C:\BACKUP\ORCL_BAK_05UEKOP9_1_1 标记=TAG20191018T150404 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 18-10月-19
RMAN>
RMAN> BACKUP AS BACKUPSET DATABASE SPFILE;
启动 backup 于 18-10月-19
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=192 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00005 名称=D:\APP\ORADATA\ORCL\XTDATA.DBF
输入数据文件: 文件号=00003 名称=D:\APP\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件: 文件号=00004 名称=D:\APP\ORADATA\ORCL\USERS01.DBF
输入数据文件: 文件号=00001 名称=D:\APP\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件: 文件号=00002 名称=D:\APP\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 18-10月-19
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 10/18/2019 14:32:33 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4102029312 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-10月-19
通道 ORA_DISK_1: 已完成段 1 于 18-10月-19
段句柄=D:\APP\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_10_18\O1_MF_NCSNF_TAG20191018T143217_GTLQ426G_.BKP 标记=TAG20191018T143217 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 18-10月-19
通道 ORA_DISK_1: 已完成段 1 于 18-10月-19
段句柄=D:\APP\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2019_10_18\O1_MF_NNSNF_TAG20191018T143217_GTLQ439W_.BKP 标记=TAG20191018T143217 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 10/18/2019 14:32:33 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4102029312 限制中)
RMAN>
如上所示,出现报错信息,该信息是指归档文件过大,导致归档失败,db_recovery_file_desc有size限制,默认是2G。
解决方法:删除多余的归档文件。然后设置较大的db_recovery_file_dest_size。
过程如下:
(1)查看闪回恢复区空间
C:\Users>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 10月 18 16:07:10 2019
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from v$recovery_file_dest;--space_limit:该区域的大小是多少,space_used:已经使用了多少空间,space_reclaimable:删除一些垃圾数据之后可以回收的空间大小(如obsolete,redundant、low priority),number_of_files:说明该区域目前存在有多少文件
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
---------------------------------------------- ---------- ----------------- ----------------- ---------------
D:\app\flash_recovery_area 4102029312 372635648 372635648 12
SQL>
(2)、查询并删除无效归档日志文件
C:\Users>rman target /
RMAN>crosscheck archivelog all; -- 运行这个命令可以把无效的expired的archivelog标出来。
RMAN>delete expired archivelog all; -- 直接全部删除过期的归档日志。
(3)、如果无法删除归档日志文件,可以重新设置归档日志文件,并分配更大的空间,配置合理的覆盖策略。【具体方法请查询相关Blog文章】
RMAN> LIST BACKUP OF DATABASE;--查询备份数据库文件
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
3 Full 11.13G DISK 00:05:17 18-10月-19
BP 关键字: 3 状态: AVAILABLE 已压缩: NO 标记: TAG20191018T150404
段名:C:\BACKUP\ORCL_BAK_04UEKOF4_1_1
备份集 3 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 4228805 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
2 Full 4228805 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
3 Full 4228805 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
4 Full 4228805 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
5 Full 4228805 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
5 Full 11.13G DISK 00:03:34 18-10月-19
BP 关键字: 5 状态: AVAILABLE 已压缩: NO 标记: TAG20191018T154338
段名:C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1
备份集 5 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 Full 4230473 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
2 Full 4230473 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
3 Full 4230473 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
4 Full 4230473 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
5 Full 4230473 18-10月-19 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF
RMAN> DELETE BACKUPSET 5;--删除BS关键字为5的备份数据库文件
使用通道 ORA_DISK_1
备份片段列表
BP 关键字 BS 关键字 Pc# Cp# 状态 设备类型段名称
------- ------- --- --- ----------- ----------- ----------
5 5 1 1 AVAILABLE DISK C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1
是否确定要删除以上对象 (输入 YES 或 NO)? Y
已删除备份片段
备份片段句柄=C:\BACKUP\HYYS0508_BAK_06UEKQPA_1_1 RECID=5 STAMP=1021995818
1 对象已删除
RMAN>
RMAN的恢复对应有两个操作:
RMAN> STARTUP MOUNT;--需要数据库已经被SHUTDOWN才能恢复到这个状态,如果是正常的数据库需要使用管理员账号进行SHUTDOWN IMMEDIATE之后才能进行该操作。
Oracle 实例已启动
数据库已装载
系统全局区域总计 3373858816 字节
Fixed Size 2180424 字节
Variable Size 2348812984 字节
Database Buffers 1006632960 字节
Redo Buffers 16232448 字节
RMAN>
(2)、使用RESTORE DATABASE还原数据库
RMAN> RESTORE DATABASE;
启动 restore 于 18-10月-19
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=212 设备类型=DISK
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件 00004 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00005 还原到 D:\APP\MINGYUAN\ORADATA\ORCL\XTDATA.DBF
通道 ORA_DISK_1: 正在读取备份片段 C:\BACKUP\HYYS0508_BAK_08UELAFM_1_1
通道 ORA_DISK_1: 段句柄 = C:\BACKUP\HYYS0508_BAK_08UELAFM_1_1 标记 = TAG20191018T201134
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:01:55
完成 restore 于 18-10月-19
RMAN>
(3)、在还原数据库后如果数据库在备份之后没有产生过任何事务,则恢复操作到此完成。
否则就需要使用RECOVER进行恢复操作。操作方式如下:
RMAN> RECOVER DATABASE;
启动 recover 于 18-10月-19
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:01
完成 recover 于 18-10月-19
RMAN>
(4)、将还原好的数据库切换到OPEN状态完成对数据库的恢复工作。
RMAN> ALTER DATABASE OPEN;
数据库已打开
备注:以上的恢复命令可以使用RUN来批量执行
RMAN>RUN{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法