18.2.2 对数据库进行联机备份
联机备份称为热备份,是在数据库的归档模式下进行的备份。查看数据库中日志的命令如下:
archive log list
【示例1】查询本机数据库的日志状态
具体操作如图18.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 更改日志模式为归档模式
更改完成后使用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.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.4 启动后出现错误
从图18.4中可以看到现在已经缺少了编号为10的数据文件,也可以通过查看数据字典v$recover_file确认缺少的数据文件,查看的结果如图18.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.6 恢复效果
在使用上面的命令恢复数据文件时会出现指定日志的选项,这里直接输入AUTO即可。
(8)设置数据文件为联机状态
在恢复完数据库后还需要把数据文件设置成联机状态。具体的命令如下:
alter database datafile 10 online
至此,就完成了数据文件的恢复操作。为了验证数据文件是否恢复成功,可以重新启动数据库看一下效果。
注意 在恢复数据库中的数据文件时,把数据库文件设置成脱机状态后,就需要把之前备份好的数据文件复制到原来的数据文件存放的位置,否则会出现图18.7所示的错误。
图 18.7 恢复数据文件出错