现实工作中有很多情况都可能造成数据丢失,造成数据丢失的主要因素可能是介质故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰;用户的错误操作;服务器的彻底崩溃;计算机病毒或者不可预料的因素,如自然灾害、电源故障、盗窃等都会造成数据库的多种故障,且解决每种故障的办法也不尽相同。下面罗列一下Oracle中的几种常见故障以及解决办法。
01
数据库故障
1.语句错误的典型问题与解决方法
语句错误的典型问题与解决办法如表10-1所示。
2.用户进程错误的典型问题与解决办法
用户进程错误的典型问题与解决办法如表10-2所示。
3.网络故障的典型问题与解决办法
网络故障的典型问题与解决办法如表10-3所示。
4.用户错误的典型问题与解决办法
用户错误的典型问题与解决办法如表10-4所示。
5.实例错误的典型问题与解决办法
实例错误的典型问题与解决办法如表10-5所示。
6.介质故障的典型问题与解决办法
介质故障的典型问题与解决办法如表10-6所示。
02
数据库备份概述
数据库备份是DBA十分重要的一项任务,使用备份的数据库文件可以在数据库出现人为或设备故障时迅速地恢复数据,保证数据库系统对外提供持续、一致的数据库服务。
备份是数据库的一个副本,具体内容包括数据文件、控制文件等,也可以是逻辑备份,通过备份,DBA可以有效防止不可预测的数据丢失或应用程序错误造成的数据丢失。
从不同的角度来看待备份,它有很多种分类方法。
1.从物理与逻辑的角度来分类。
物理备份与逻辑备份两种。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。
物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),其中,脱机备份是在关闭数据库的时候进行的,联机备份是以归档日志的方式对运行的数据库进行备份。
也可以使用Oracle的恢复管理器(RMAN)或操作系统命令来进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
2.从数据库是否联机的角度划分。
冷备份与热备份两种。
冷备份:也称为脱机备份,是将关键性文件复制到另外的位置的一种说法。冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给一个完整的数据库。对于备份而言,冷备份是最快和最安全的方法。
热备份:也称为联机备份,是指数据库在打开的状态进行的备份,此时用户可以继续访问数据库,执行DML操作。但是要求数据库必须运行在归档模式下,只有在归档模式下才可以对整个数据库、单独的表以及数据文件进行备份。
3.从数据库的备份角度分类。
完全备份、增量备份和差异备份三种。
完全备份:每次对数据库进行完整备份,当发生数据丢失的情况时,完全备份无须依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只需备份自上次完全备份或增量备份后被修改的文件即可。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前的备份记录,风险较大。
差异备份:自从上次完全备份之后被修改过的文件的备份。从差异备份中恢复数据的时间较短,因此只需要两份数据,即最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
1
●
冷备份
当DBA正常关闭 Oracle服务器时(通常以shutdown normal或shutdown immediate指令关闭),系统会自动触发一次检查点事件。
在数据库关闭之前,此检查点首先将缓存中的数据写入数据文件与联机日志文件,再把当前的检查点序号写入所有数据文件、联机日志文件和控制文件中。
所以,正常关闭后的数据库是一个状态一致的数据库,即它的所有文件的时间点是一致的。
此时,将数据库的所有数据文件、联机日志文件和控制文件复制出来形成的备份称为全库脱机备份,该备份可直接用于整个数据库的恢复(但只能恢复到备份时间点)。
冷备份主要备份的是数据库所有的数据文件、控制文件和日志文件。
由于其他文件都比较小,所以为了简化备份的过程,通常在脱机备份时可将其他文件一起备份。
下面介绍具体冷备份的主要操作步骤。
步骤1:启动SQL Plus,以sysdba身份登录数据库。
查询当前数据库所有的数据文件、控制文件、联机重做日志文件、初始化参数文件的位置。
步骤2:正常关闭数据库。
步骤3:复制所有数据文件、控制文件、联机重做日志文件以及初始化参数文件等其他配置文件到备份磁盘。
可以直接在操作系统中使用复制、粘贴方式进行,也可以在SQL Plus环境中使用下列形式的操作系统命令完成。
步骤4:重新启动数据库
进行冷备份的操作步骤示意如图10-1所示。具体的操作步骤与源码参见下文的冷备份实例。
图10-1 冷备份步骤
冷备份具有如下优点。
只需复制文件即可,是非常快速的备份方法。
只需将文件再复制回去,就可以恢复到某一时间点上。
与数据库归档的模式相结合可以使数据库很好地恢复。
维护量较少,但安全性却相对较高。
2
●
热备份
虽然冷备份简单、快捷,但是在很多情况下,例如数据库运行于24*7状态时(每天工作24小时,每周工作7天),没有足够的时间可以关闭数据库进行冷备份,就只能采用热备份。
热备份又可称为联机备份。热备份是指对数据库运行在归档模式下进行的数据文件、控制文件、归档日志文件等的备份。
在SQL Plus环境中进行数据库完全热备份的操作步骤如下所示。
步骤1:启动SQL Plus,以sysdba身份登录数据库。
步骤2:将数据库设置为归档模式。
由于热备份是数据库处于归档模式下的备份,因此在热备份之前,可以执行archiveloglist命令,查看当前数据库是否处于归档日志模式。
如果没有处于归档日志模式,就先将数据库转换为归档模式,并启动自动存档。
步骤3:以表空间为单位,进行数据文件备份。
(1)查看当前数据库有哪些表空间,以及每个表空间中有哪些数据库文件,其代码如下。
SQL>SELECT tablespace_name,file_name FROM dba_data_files ORDER BY tablespace_name;
(2)分别对每个表空间中的数据文件进行备份。
(01)将需要备份的表空间(如USERS)设置为备份状态。
SQL﹥altertablespaceusersbeginbackup
(02)将表空间中所有的数据文件复制到备份磁盘。
SQL﹥hostcopy
hostxcopyD:\ORACLE19C\ORADATA\NEWORCL\USERS01 . DBF
D: \BACKUP_NEWORCL\HOTBACK;
(03)结束表空间的备份状态。
SQL﹥altertablespaceusersendbackup
对数据库中所有表空间分别采用上述(01)~(03)步骤进行备份。
步骤4:备份控制文件。
通常应该在数据库物理结构做出修改之后,如添加、删除或重命名数据文件,添加、删除或修改表空间,添加或删除重做日志文件和重做日志文件组等,都需要重新备份控制文件。其有以下两种方法:
(1)创建二进制映像文件。
SQL﹥alterdatabasebackupcontrolfileto’E \APP\ADMIN\BACKUP\CONTROL BAK??
(2)创建一个正文追踪文件。
SQL﹥alterdatabasebackupcontrolfiletotrace
步骤5:备份其他物理文件。
(1)归档当前的联机重做日志文件。
SQL﹥altersystemarchivelogcurrent
归档当前的联机重做日志文件,也可以通过日志切换完成。
SQL﹥altersystemswitchlogfile
(2)备份归档重做日志文件,将所有的归档重做日志文件复制到备份磁盘中。
(3)备份初始化参数文件,将初始化参数文件复制到备份磁盘中。
03
项目案例
1
●
冷备份实例
下面以具体实例来介绍冷备份的操作步骤。
步骤1:启动SQL Plus,以sysdba身份登录数据库。登录后查询当前数据库所有数据文件、控制文件、联机重做日志文件等的位置。
(1)查询数据文件,其代码如下:
SQL> selectfile_namefromdba_data_files;FILE_NAME—————————————————————————D:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBFD:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBFD:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBFD:\ORACLE19C\ORADATA\NEWORCL\STUDENT01.DBFD:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBF
(2)查询控制文件,其代码如下:
SQL>select name from v$controlfile;NAME—————————————————————————D:\ORACLE19C\ORADATA\NEWORCL\CONTROL01.CTLD:\ORACLE19C\ORADATA\NEWORCL\CONTROL02.CTLD:\BACKUP\CONTROL03.CTL
(3)查询联机重做日志文件,其代码如下:
SQL> selectgroup#,member,status from v$logfile;GROUP# MEMBER STATUS———- ————————————————– ——-2D:\ORACLE19C\ORADATA\NEWORCL\REDO02-2.LOG2D:\ORACLE19C\ORADATA\NEWORCL\REDO02.LOG1D:\ORACLE19C\ORADATA\NEWORCL\REDO01.LOG3D:\ORACLE19C\ORADATA\NEWORCL\REDO03-1.LOG3D:\ORACLE19C\ORADATA\NEWORCL\REDO03-2.LOG3D:\ORACLE19C\ORADATA\NEWORCL\REDO03-3.LOG已选择 6行。
(4)查询参数文件,其代码如下:
SQL>show parameter pfileNAME TYPE VALUE—————————————————————————Spfile string D:\SOFTWARE\ORACLE19C\DATABASE\SPFILENEWORCL.ORA
当然,参数文件也可以不用备份,其不影响冷备份效果。
步骤2:正常方式关闭数据库。
SQL>shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。
步骤3:复制所有数据文件、重做日志文件以及控制文件并粘贴到备份磁盘。
可以直接在操作系统中使用复制、粘贴方式进行备份,也可以使用下面的操作系统命令完成。
将命令设置为批处理文件,可以使备份操作变得简单,如coolBak.sql文件即为一个自动化实例。
SQL> hostxcopyD:\ORACLE19C\ORADATA\NEWORCL\*.* D:\BACKUP_NEWORCL\20200217D:\Oracle19c\oradata\NEWORCL\CONTROL01.CTLD:\Oracle19c\oradata\NEWORCL\CONTROL02.CTLD:\Oracle19c\oradata\NEWORCL\REDO01.LOGD:\Oracle19c\oradata\NEWORCL\REDO02-2.LOGD:\Oracle19c\oradata\NEWORCL\REDO02.LOGD:\Oracle19c\oradata\NEWORCL\REDO03-1.LOGD:\Oracle19c\oradata\NEWORCL\REDO03-2.LOGD:\Oracle19c\oradata\NEWORCL\REDO03-3.LOGD:\Oracle19c\oradata\NEWORCL\REDO03.LOGD:\Oracle19c\oradata\NEWORCL\STUDENT01.DBFD:\Oracle19c\oradata\NEWORCL\SYSAUX01.DBFD:\Oracle19c\oradata\NEWORCL\SYSTEM01.DBFD:\Oracle19c\oradata\NEWORCL\TEMP01.DBFD:\Oracle19c\oradata\NEWORCL\UNDOTBS01.DBFD:\Oracle19c\oradata\NEWORCL\USERS01.DBF复制了 15 个文件
步骤4:重新启动数据库,其代码如下:
SQL>startupOracle 例程已经启动。Total System Global Area 2550136752 bytesFixed Size 9031600 bytesVariable Size 570425344 bytesDatabase Buffers 1962934272 bytesRedo Buffers 7745536 bytes数据库装载完毕。数据库已经打开。
2
●
热备份实例
步骤1:启动SQL Plus,以sysdba身份登录数据库。
请输入用户名: sys assysdba输入口令:已连接到空闲例程。
步骤2:确定将数据库是否运行在归档模式,其代码如下:
SQL>archive loglist;数据库日志模式 存档模式自动存档 启用存档终点 d:\backup\最早的联机日志序列 7下一个存档日志序列 9当前日志序列 9
在热备份之前,先将日志进行一次切换,并将在线日志存储到归档日志中,其代码如下:
SQL>archive loglist;数据库日志模式 存档模式自动存档 启用存档终点 d:\backup\最早的联机日志序列 7下一个存档日志序列 9当前日志序列 9
再次确认表空间的信息,以便所有表空间都能实现热备份。
SQL> selecttablespace_name,file_nameFROMdba_data_filesorderbytablespace_name;TABLESPACE_NAMEFILE_NAME—————————————————————————-STUDENTD:\ORACLE19C\ORADATA\NEWORCL\STUDENT01.DBFSYSAUXD:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBFSYSTEMD:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBFUNDOTBS1D:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBFUSERSD:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBF
步骤3:进行数据文件备份。
下面以表SYSTEM空间为例,进行system01.dbf文件的备份。在备份的过程中,为了提高效率,建议将代码提前准备好,以便一次性输入,其代码如下:
SQL>alter tablespace systembegin backup;表空间已更改。SQL>host xcopy D:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBF D:\BACKUP_NEWORCL\HOTBACK;D:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBF复制了 1 个文件SQL>alter tablespace system end backup;表空间已更改。
接下来依次进行UNTO、SYSAUX、USER 与 STUDENT 的数据文件备份,其代码如下:
SQL>alter tablespace undotbs1 begin backup;表空间已更改。SQL>host xcopy D:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBF D:\BACKUP_NEWORCL\HOTBACK;D:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBF复制了 1 个文件SQL>alter tablespace undotbs1 end backup;表空间已更改。SQL>alter tablespace sysaux begin backup;表空间已更改。SQL>host xcopy D:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBF D:\BACKUP_NEWORCL\HOTBACK;D:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBF复制了 1 个文件SQL>alter tablespace sysaux end backup;表空间已更改。SQL>alter tablespace users begin backup;表空间已更改。SQL>Host xcopy D:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBF D:\BACKUP_NEWORCL\HOTBACK;D:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBF复制了 1 个文件SQL>alter tablespace users end backup;表空间已更改。SQL>alter tablespace student begin backup;表空间已更改。SQL>Host xcopy D:\ORACLE19C\ORADATA\NEWORCL\ATUDENT01.DBF D:\BACKUP_NEWORCL\HOTBACK;D:\ORACLE19C\ORADATA\NEWORCL\STUDENT01.DBF复制了 1 个文件SQL>alter tablespace student end backup;表空间已更改。
步骤4:备份控制文件,其代码如下:
SQL>alter database backup controlfile to’D:\Backup_neworcl\hotBack;数据库已更改。SQL>alter database backup controlfile to trace;数据库已更改。otBack\CONTROL.BKP’;数据库已更改。
步骤5:备份其他物理文件。
(1)将重做日志文件归档,其代码如下:
SQL﹥altersystemarchivelogcurrent;系统已更改。
(2)备份归档重做日志文件和初始化参数文件
备份归档重做日志文件:将所有的归档重做日志文件复制到备份磁盘中。
备份初始化参数文件:将初始化参数文件复制到备份磁盘中。
步骤6:热备份结束后,查看动态新能字典中记录的备份信息,其代码如下:
SQL> select* fromv$backup;FILE# STATUS CHANGE# TIME CON_ID———- —————— ———- ————– ———-1NOT ACTIVE 338717017-2月 -2002NOT ACTIVE 338724317-2月 -2003NOT ACTIVE 338720717-2月 -2004NOT ACTIVE 338719017-2月 -2007NOT ACTIVE 338722617-2月 -200
3
●
冷备份自动化实例
为了方便执行备份,同时也为了在备份的过程中减少异常发生,可以将冷备份和热备份进行自动化。
首先介绍冷备份自动化实例的具体步骤。
步骤1:D盘下创建待备份的文件夹BackUpNeworcl。
图10-2 冷备份脚本CoolBak.sql
图10-3 批命令文本Cool.bat
步骤4:创建冷备份的快捷方式,如图10-4所示。
10-4 冷备份快捷方式
创建完毕冷备份快捷方式后,为了数据库的安全,可以双击冷备份的快捷方式图标,将冷备份进行定时设置,以使数据库进行定时备份。
4
●
热备份自动化实例
热备份自动化实例的具体操作步骤如下所述。
步骤1:在D盘下创建待备份的文件夹BackUp_Neworcl。
步骤2:创建热备份脚本HotBak.sql,放置在D盘,如图10-5所示。
图10-5 热备份脚本HotBak.sql
步骤3:创建调用热备份的批处理文件hot.bat,如图10-6所示。
图10-6 热备份的批处理文件hot.bat
步骤4:创建热备份的快捷方式,更改图标,效果如图10-7所示。
图10-7 热备份快捷方式
双击热备份快捷方式,可设置热备份的自动运行时间,以保证热备份的定时执行。
04
参考书籍
《Oracle数据库系统管理与运维-微课视频版》
ISBN:9787302566106
定价:69.9元
本书从Oracle数据库系统、管理以及运维的角度深入浅出地加以介绍,对于Oracle初学者以及Oracle相关从业人员都是适用的。本书的所有例题以及实验都是在最新的Oracle 19c版本下运行实验的。
内容简介
全书共15个章节,包括Oracle系统、管理以及运维相关知识,内容包括oracle体系结构、数据库实例、存储结构、数据字典与动态性能视图、Oracle监控、数据库备份、数据库恢复、闪回技术以及数据库优化等;包括20个完整的项目案例。书中案例侧重应用性、趣味性强、分布合理、通俗易懂,使读者能够快速掌握Oracle系统、管理以及运维方面的的基础知识、方法、工具以及技巧。
张立杰
张立杰,硕士,副教授。研究方向为数据库、大数据。在各级学术期刊上发表论文10余篇,其中EI检索论文3篇,SCI检索论文1篇,计算机中文核心论文2篇。主持并完成省级项目3项;大连外国语大学校级教改项目4项、科研项目1项、校级开放课程一门。主编相关教材3部。从事Oracle专业教学十多年,为企事业员工,校企合作组织进行多次Oracle培训与讲座;受聘于Oracle Academy进行全球教师培训。
教学资源
本书附有教学视频、课件、教学大纲、电子教案、教学日历、习题答案、案例源码等配套资源,可以作为大学计算机及相关专业的教材,也可以作为Oracle技术的培训教材。
05
精彩推荐
Oracle数据库系统管理与运维|项目案例Oracle数据库系统管理与运维 |数据库进程Oracle数据库系统管理与运维 | Oracle体系结构Oracle数据库系统的发展史鸿蒙开发实例|构建轻量级智能穿戴设备用户界面CCF CSP-J/S第一轮认证必考知识点:回溯算法CCF CSP-J/S第一轮认证必考知识点:二值图像的最大连通块CCF CSP-J/S第一轮认证必考知识点:哥德巴赫猜想CCF CSP-J/S第一轮认证考纲详解Python 韩信点兵思政案例(含优惠码)机器学习案例︱人脸识别和人脸检测(附视频)Python ︱爬取天气预报信息(附视频)《机器学习》实验指导书(附实验参考 代码)Python爬虫综合实战 │ 创建云起书院爬虫(附代码)Python爬虫实战 │ Email提醒(附代码)Python深度学习 │一文掌握卷积神经网络