Oracle数据库 | Oracle备份实例

举报
TiAmoZhang 发表于 2023/03/18 16:01:49 2023/03/18
【摘要】 Oracle数据库 | Oracle备份实例

现实工作中有很多情况都可能造成数据丢失,造成数据丢失的主要因素可能是介质故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰;用户的错误操作;服务器的彻底崩溃;计算机病毒或者不可预料的因素,如自然灾害、电源故障、盗窃等都会造成数据库的多种故障,且解决每种故障的办法也不尽相同。下面罗列一下Oracle中的几种常见故障以及解决办法。


01、数据库故障


1.语句错误的典型问题与解决方法

语句错误的典型问题与解决办法如表10-1所示

                     

2.用户进程错误的典型问题与解决办法

用户进程错误的典型问题与解决办法如表10-2所示。

image.png

3.网络故障的典型问题与解决办法

网络故障的典型问题与解决办法如表10-3所示。

image.png

4.用户错误的典型问题与解决办法

用户错误的典型问题与解决办法如表10-4所示。

image.png

5.实例错误的典型问题与解决办法

实例错误的典型问题与解决办法如表10-5所示。

image.png

6.介质故障的典型问题与解决办法

介质故障的典型问题与解决办法如表10-6所示。

image.png


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环境中使用下列形式的操作系统命令完成。

SQL> host copy 原文件名称 目标路径名称

步骤4:重新启动数据库

进行冷备份的操作步骤示意如图10-1所示。

image.png

冷备份具有如下优点。

只需复制文件即可,是非常快速的备份方法。

只需将文件再复制回去,就可以恢复到某一时间点上。

与数据库归档的模式相结合可以使数据库很好地恢复。

维护量较少,但安全性却相对较高。


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﹥alter  tablespace  users  begin  backup

(02)将表空间中所有的数据文件复制到备份磁盘。

SQL﹥host  copy
host  xcopy  D: \ORACLE19C\ORADATA\NEWORCL\USERS01 . DBF
D: \BACKUP_NEWORCL\HOTBACK;

(03)结束表空间的备份状态。

SQL﹥alter  tablespace  users  end  backup

对数据库中所有表空间分别采用上述(01)~(03)步骤进行备份。

步骤4:备份控制文件。

通常应该在数据库物理结构做出修改之后,如添加、删除或重命名数据文件,添加、删除或修改表空间,添加或删除重做日志文件和重做日志文件组等,都需要重新备份控制文件。其有以下两种方法:

(1)创建二进制映像文件。

SQL﹥alter database backup controlfile to'E \APP\ADMIN\BACKUP\CONTROL BAK􀆶

(2)创建一个正文追踪文件。

SQL﹥alter  database  backup  controlfile  to  trace

步骤5:备份其他物理文件。

(1)归档当前的联机重做日志文件。

SQL﹥alter system archive log current

归档当前的联机重做日志文件,也可以通过日志切换完成。

SQL﹥alter system switch logfile

(2)备份归档重做日志文件,将所有的归档重做日志文件复制到备份磁盘中。

(3)备份初始化参数文件,将初始化参数文件复制到备份磁盘中。


03项目案例


1●冷备份实例

下面以具体实例来介绍冷备份的操作步骤。


步骤1:启动SQL Plus,以sysdba身份登录数据库。登录后查询当前数据库所有数据文件、控制文件、联机重做日志文件等的位置。

(1)查询数据文件,其代码如下:

SQL> select file_name from dba_data_files;
FILE_NAME
---------------------------------------------------------------------------
D:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBF
D:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBF
D:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBF
D:\ORACLE19C\ORADATA\NEWORCL\STUDENT01.DBF
D:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBF

(2)查询控制文件,其代码如下:

SQL> select name from v$controlfile;
NAME
---------------------------------------------------------------------------
D:\ORACLE19C\ORADATA\NEWORCL\CONTROL01.CTL
D:\ORACLE19C\ORADATA\NEWORCL\CONTROL02.CTL
D:\BACKUP\CONTROL03.CTL

(3)查询联机重做日志文件,其代码如下:

SQL> select group#,member,status from v$logfile;
    GROUP# MEMBER STATUS
---------- -------------------------------------------------- -------
         2 D:\ORACLE19C\ORADATA\NEWORCL\REDO02-2.LOG
         2 D:\ORACLE19C\ORADATA\NEWORCL\REDO02.LOG
         1 D:\ORACLE19C\ORADATA\NEWORCL\REDO01.LOG
         3 D:\ORACLE19C\ORADATA\NEWORCL\REDO03-1.LOG
         3 D:\ORACLE19C\ORADATA\NEWORCL\REDO03-2.LOG
         3 D:\ORACLE19C\ORADATA\NEWORCL\REDO03-3.LOG
已选择 6 行。

(4)查询参数文件,其代码如下:

SQL> show parameter pfile
NAME TYPE VALUE
---------------------------------------------------------------------------
Spfile string D:\SOFTWARE\ORACLE19C\DATABASE\SPFILENEWORCL.ORA

当然,参数文件也可以不用备份,其不影响冷备份效果。

步骤2:正常方式关闭数据库。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

步骤3:复制所有数据文件、重做日志文件以及控制文件并粘贴到备份磁盘。

可以直接在操作系统中使用复制、粘贴方式进行备份,也可以使用下面的操作系统命令完成。

SQL> host xcopy 原文件名称 目标路径名称

将命令设置为批处理文件,可以使备份操作变得简单,如coolBak.sql文件即为一个自动化实例。

SQL> host xcopy D:\ORACLE19C\ORADATA\NEWORCL\*.* D:\BACKUP_NEWORCL\20200217
D:\Oracle19c\oradata\NEWORCL\CONTROL01.CTL
D:\Oracle19c\oradata\NEWORCL\CONTROL02.CTL
D:\Oracle19c\oradata\NEWORCL\REDO01.LOG
D:\Oracle19c\oradata\NEWORCL\REDO02-2.LOG
D:\Oracle19c\oradata\NEWORCL\REDO02.LOG
D:\Oracle19c\oradata\NEWORCL\REDO03-1.LOG
D:\Oracle19c\oradata\NEWORCL\REDO03-2.LOG
D:\Oracle19c\oradata\NEWORCL\REDO03-3.LOG
D:\Oracle19c\oradata\NEWORCL\REDO03.LOG
D:\Oracle19c\oradata\NEWORCL\STUDENT01.DBF
D:\Oracle19c\oradata\NEWORCL\SYSAUX01.DBF
D:\Oracle19c\oradata\NEWORCL\SYSTEM01.DBF
D:\Oracle19c\oradata\NEWORCL\TEMP01.DBF
D:\Oracle19c\oradata\NEWORCL\UNDOTBS01.DBF
D:\Oracle19c\oradata\NEWORCL\USERS01.DBF
复制了 15 个文件


步骤4:重新启动数据库,其代码如下:

SQL> startup
Oracle 例程已经启动。
Total System Global Area 2550136752 bytes
Fixed Size             9031600 bytes
Variable Size          570425344 bytes
Database Buffers       1962934272 bytes
Redo Buffers            7745536 bytes
数据库装载完毕。
数据库已经打开。

2●热备份实例


步骤1:启动SQL Plus,以sysdba身份登录数据库。

请输入用户名: sys as sysdba
输入口令:
已连接到空闲例程。

步骤2:确定将数据库是否运行在归档模式,其代码如下:

SQL> archive log list;
数据库日志模式         存档模式
自动存档             启用
存档终点             d:\backup\
最早的联机日志序列      7
下一个存档日志序列      9
当前日志序列          9

在热备份之前,先将日志进行一次切换,并将在线日志存储到归档日志中,其代码如下:

SQL> archive log list;
数据库日志模式           存档模式
自动存档               启用
存档终点               d:\backup\
最早的联机日志序列        7
下一个存档日志序列        9
当前日志序列            9

再次确认表空间的信息,以便所有表空间都能实现热备份。

SQL> select tablespace_name,file_name FROM dba_data_files order by tablespace_name;
TABLESPACE_NAME                FILE_NAME
----------------------------------------------------------------------------
STUDENT                        D:\ORACLE19C\ORADATA\NEWORCL\STUDENT01.DBF
SYSAUX                         D:\ORACLE19C\ORADATA\NEWORCL\SYSAUX01.DBF
SYSTEM                         D:\ORACLE19C\ORADATA\NEWORCL\SYSTEM01.DBF
UNDOTBS1                       D:\ORACLE19C\ORADATA\NEWORCL\UNDOTBS01.DBF
USERS                          D:\ORACLE19C\ORADATA\NEWORCL\USERS01.DBF

步骤3:进行数据文件备份。

下面以表SYSTEM空间为例,进行system01.dbf文件的备份。在备份的过程中,为了提高效率,建议将代码提前准备好,以便一次性输入,其代码如下:

SQL> alter tablespace system begin 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﹥alter system archive log current;
系统已更改。

(2)备份归档重做日志文件和初始化参数文件

备份归档重做日志文件:将所有的归档重做日志文件复制到备份磁盘中。

备份初始化参数文件:将初始化参数文件复制到备份磁盘中。

步骤6:热备份结束后,查看动态新能字典中记录的备份信息,其代码如下:

SQL> select * from v$backup;
     FILE# STATUS CHANGE# TIME CON_ID
---------- ------------------ ---------- -------------- ----------
         1 NOT ACTIVE 3387170 17-2月 -20              0
         2 NOT ACTIVE 3387243 17-2月 -20              0
         3 NOT ACTIVE 3387207 17-2月 -20              0
         4 NOT ACTIVE 3387190 17-2月 -20              0
         7 NOT ACTIVE 3387226 17-2月 -20              0

3●冷备份自动化实例

为了方便执行备份,同时也为了在备份的过程中减少异常发生,可以将冷备份和热备份进行自动化。

首先介绍冷备份自动化实例的具体步骤。

步骤1:D盘下创建待备份的文件夹BackUpNeworcl。

步骤2:编辑冷备份脚本CoolBak.sql,如图10-2所示。

image.png


步骤3:编辑批命令文本Cool.bat,如图10-3所示。

image.png


步骤4:创建冷备份的快捷方式,如图10-4所示。

image.png


创建完毕冷备份快捷方式后,为了数据库的安全,可以双击冷备份的快捷方式图标,将冷备份进行定时设置,以使数据库进行定时备份。


4●热备份自动化实例

热备份自动化实例的具体操作步骤如下所述。

步骤1:在D盘下创建待备份的文件夹BackUp_Neworcl。

步骤2:创建热备份脚本HotBak.sql,放置在D盘,如图10-5所示。

image.png

步骤3:创建调用热备份的批处理文件hot.bat,如图10-6所示。

image.png


步骤4:创建热备份的快捷方式,更改图标,效果如图10-7所示。

image.png


双击热备份快捷方式,可设置热备份的自动运行时间,以保证热备份的定时执行。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。