18.2.2 对数据库进行联机备份

联机备份称为热备份,是在数据库的归档模式下进行的备份。查看数据库中日志的命令如下:


archive log list


【示例1】查询本机数据库的日志状态

具体操作如图18.1所示。

18.2.2 对数据库进行联机备份 - 图1

图 18.1 查询日志状态

从示例1的查询结果中可以看出,目前数据库的日志模式是非存放模式,同时自动存档方式也是禁用的。设置数据库日志模式为归档模式,使用下面的语句完成:


01 alter system set log_archive_start=true scope=spfile;

02 shutdown immediate;

03 startup mount;

04 alter database achivelog;


【代码解析】

❑第1行修改系统的日志方式是归档模式。

❑第2行关闭数据库。

❑第3行启动mount实例,但不启动数据库。

❑第4行更改数据库为归档日志模式。

【示例2】更改数据库中日志状态

利用上面的语句把数据库的日志状态更改为归档模式,具体操作如图18.2所示。

18.2.2 对数据库进行联机备份 - 图2

图 18.2 更改日志模式为归档模式

更改完成后使用archive log list语句查看日志模式的状态,即可看到当前日志模式已经被修改为归档模式,并且自动存档方式已经启用。

把数据库设置成归档模式后,就可以进行数据库的备份与恢复操作了。

【示例3】备份表空间TEST

(1)将数据库的状态设置成打开状态

改变数据库的状态为open。具体的语句如下:


alter database open;


(2)开始备份表空间

假设备份的表空间是TEST。命令如下:


alter tablespace TEST begin backup;


(3)打开数据库中的oradata文件夹(一般数据库对象都存放在该文件夹中),把文件复制到磁盘中的另一个文件夹或其他磁盘上。

(4)结束表空间的备份

在完成前面的操作之后,执行下面的命令结束备份:


alter tablespace TEST end backup;


此时就完成了表空间TEST的备份操作。具体操作效果如图18.3所示。

18.2.2 对数据库进行联机备份 - 图3

图 18.3 备份表空间TEST

至此,已经把表空间备份到其他位置了。

【示例4】恢复表空间中的数据文件

当数据库出现问题时,需要恢复表空间TEST。按照下面的步骤完成恢复表空间的操作:

(1)对当前的日志进行归档

对当前使用的日志进行归档的命令如下:


alter system archive log current;


(2)切换日志文件

由于在一个数据库中一般有3个日志文件,所以需要使用3次下面的语句来切换日志文件:

alter system switch logfile;

(3)关闭数据库服务

这里为了模拟TEST表空间中的数据文件丢失,先把数据库关闭,然后删除TEST表空间中的数据文件TESTONE.DBF。关闭数据库的命令如下:


shutdown immediate


(4)删除数据文件并重新启动数据库

删除数据文件首先要找到存放数据文件的位置,在默认情况下数据文件会存放在数据库的ORADATA文件夹中,也有在创建表空间添加数据文件时指定的目录。如果不清楚数据文件存放的位置,可以在企业管理器中查看一下表空间中的数据文件,也可以直接在DOS窗口下的v$datafile数据字典中查看表空间中数据文件的位置。找到数据文件后直接将其删除即可,然后启动数据库。启动数据库的命令如下:


startup;


在使用startup命令启动数据库后,会出现图18.4所示的错误提示界面。

18.2.2 对数据库进行联机备份 - 图4

图 18.4 启动后出现错误

从图18.4中可以看到现在已经缺少了编号为10的数据文件,也可以通过查看数据字典v$recover_file确认缺少的数据文件,查看的结果如图18.5所示。

18.2.2 对数据库进行联机备份 - 图5

图 18.5 查询数据字典v$recover_file

从查询的结果可以看到,丢失的数据文件编号确实是10。

(5)将数据文件设置成脱机状态并删除

在恢复数据文件之前需要先把数据文件设置成脱机状态(offline状态),并且删除该数据文件。具体命令如下:


alter database datafile 10 offline drop;


(6)把数据库的状态设置成OPEN

在完成上述操作后,就可以为恢复数据库做好准备,把数据库的状态设置成OPEN。具体命令如下:


alter database open;


(7)恢复数据文件

在数据库的状态是OPEN时就可以开始恢复数据库了。恢复表空间TEST的数据文件命令如下:


recover datafile 10;


这里的编号10仍然是之前查看到的数据文件的编号,这也是需要注意的问题。在恢复时数据文件的编号要一致。恢复效果如图18.6所示。

18.2.2 对数据库进行联机备份 - 图6

图 18.6 恢复效果

在使用上面的命令恢复数据文件时会出现指定日志的选项,这里直接输入AUTO即可。

(8)设置数据文件为联机状态

在恢复完数据库后还需要把数据文件设置成联机状态。具体的命令如下:


alter database datafile 10 online


至此,就完成了数据文件的恢复操作。为了验证数据文件是否恢复成功,可以重新启动数据库看一下效果。

注意 在恢复数据库中的数据文件时,把数据库文件设置成脱机状态后,就需要把之前备份好的数据文件复制到原来的数据文件存放的位置,否则会出现图18.7所示的错误。

18.2.2 对数据库进行联机备份 - 图7

图 18.7 恢复数据文件出错