Oracle数据备份与恢复
Oracle数据备份与恢复备份分类
优点
缺点
冷备份
冷备份是最简单的一种备份,执行冷备份前必须关系数据库,然后对需要文件进行备份即可
简单快速的备份,简单快速的修复,执行简单
必须关闭数据库,不能进行点修复
热备份
热备份是Oracle在运行过程中时进行的备份,执行热备份的前提是,数据库运行在可归档日志模式下,适用于24*7不间断运行的关键程序。
备份时数据库可以打开,热备份可以用来进行点修复,初始化参数、归档日志在数据库正在运行时时关闭的,可用操作系统命令进行拷贝。
执行过程复杂,由于数据库不间断运行,测试比较困难,不能用操作系统实用工具拷贝打开的文件,必须实用Oracle提供的ocopy工具来进行拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙的时候进行。
Exp导出数据库对象
冷备份和热备份都备份的物理文件,因为被称为物理备份,而Export则备份的是数据库对象,因此被称为逻辑备份。
能执行对象或者行修复,备份和修复的速度更快,能够跨操作系统平台迁移数据库,数据库可以一直运行。
Export并不是冷备份和热备份的替代工具,冷、热备份可以保护介质失效,export备份可以保护用户或应用错误。
Imp/Exp备份与恢复
(一) Exp导出备份
EXP system/ugotestadmin file={备份路径}\backup.DMP log={备份路径}\backup.log full=y
注:导出时不会导出表空间和用户信息。
(二) Imp还原
Imp system/ugotestadmin file={备份路径}\backup.DMP full=y
注:备份还原前,需要先将所备份数据中的表空间、用户以及角色都要建好,才能成功导入。
还原步骤:(以导入表空间tdlybo_j举例)
1.) 创建临时表空间
create temporary tablespace ugotemp tempfile'E:\DBFiles\ugotemp.dbf' size 500m autoextend on next 4m;
2) 创建表空间
create tablespacetdlybo_j datafile'E:\DBFiles/ tdlybo_j.dbf'size50mautoextend onnext20m;
3) 创建用户
CREATE USERtdlybo_jIDENTIFIED BYtdlybo_j DEFAULT TABLESPACEtdlybo_jTEMPORARY TABLESPACE ugotemp ACCOUNTUNLOCK;
4 ) 给用户授予权限
grant connect,resource,createany view,drop any view,under any view totdlybo_j;
5) 最后调用imp命令导入数据
EXP system/ugotestadmin file={备份路径}\backup.DMP log={备份路径}\backup.log full=y tablespaces=( tdlybo_j)
冷备份以及恢复
(一) 备份内容
冷备份需要备份的内容:
所有数据文件、控制文件和日志文件
备份注意事项:
一般情况下,这些文件都存放在{安装目录}\app\Administrator\oradata\{数据库实例名}目录下,但是有可能我们在建立表空间的时候,指定了另外的数据文件路径,因此我们就需要先查询出所有数据文件的存放位置,然后按照原有目录结构备份,为了后面更清晰,我们命名备份文件为Backup.zip。
如下:
Select name from v$controlfile; //查看控制文件路径
Select name from v$datafile; //查看数据文件路径
如下图所示:数据文件的存放路径为
(二) 备份还原
备份还原分为两种情况:
l 一种是新数据库与原始数据库安装目录完全一致,数据库实例名一致,这种情况下,还原非常简单;
还原步骤为:
1)在新机器上安装Oracle数据库,安装路径与原始数据库相同,数据库实例名称也完全一致,加入用户名为sys,密码为map,实例名为orcl。
2)停止所有Oracle数据库服务
3)拷贝Backup.zip中所有内容到相应目录。
4)重启服务即可。
l 另一种是新数据库与原始数据库目录不同。
1)在新机器上安装Oracle数据库,安装路径与原始数据库不同,比如当前数据库装在D盘,原有数据库装在E盘,数据库实例名都为orcl,用户名为sys,密码为map。
2)停止所有Oracle服务
3)拷贝backup.zip中的所有内容到相应目录
4)连接数据库
Sqlplus sys/map@orcl as sysdba
5)查询数据文件路径,会返现所有数据文件都在E盘,而当前数据库是安装在D盘的,此时就需要我们重新创建控制文件。
6)生成重新创建控制文件的脚本
alter database backup controlfile ro trace;
生成文件路径为:D:\app\Administrator\diag\rdbms\orcl\orcl\trace
如果找不到该文件,则搜索.trc
7)打开这个文件,找到创建控制文件的脚本,如下:
CREATE CONTROLFILE REUSE DATABASE "ORCL"NORESETLOGS NOARCHIVELOG
MAXLOGFILES16
MAXLOGMEMBERS3
MAXDATAFILES100
MAXINSTANCES8
MAXLOGHISTORY292
LOGFILE
GROUP 1'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
GROUP 2'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
GROUP 3'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M
--STANDBY LOGFILE
DATAFILE
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\ORACLEFILE\TDLYBO_J.DBF'
CHARACTERSET ZHS16GBK
;
修改数据文件和日志文件的路径为D盘即可。
8)终止数据库
Shutdownimmediate;
9)启动数据库实例,但是不打开数据库
Startup nomount
10) 执行以上创建控制文件的脚本
结果显示控制文件已创建。
RECOVER DATABASE
Alter databse open;
ALTER TABLESPACE TEMP ADD TEMPFILE'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' REUSE;
Oracle数据备份与恢复备份分类
优点
缺点
冷备份
冷备份是最简单的一种备份,执行冷备份前必须关系数据库,然后对需要文件进行备份即可
简单快速的备份,简单快速的修复,执行简单
必须关闭数据库,不能进行点修复
热备份
热备份是Oracle在运行过程中时进行的备份,执行热备份的前提是,数据库运行在可归档日志模式下,适用于24*7不间断运行的关键程序。
备份时数据库可以打开,热备份可以用来进行点修复,初始化参数、归档日志在数据库正在运行时时关闭的,可用操作系统命令进行拷贝。
执行过程复杂,由于数据库不间断运行,测试比较困难,不能用操作系统实用工具拷贝打开的文件,必须实用Oracle提供的ocopy工具来进行拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙的时候进行。
Exp导出数据库对象
冷备份和热备份都备份的物理文件,因为被称为物理备份,而Export则备份的是数据库对象,因此被称为逻辑备份。
能执行对象或者行修复,备份和修复的速度更快,能够跨操作系统平台迁移数据库,数据库可以一直运行。
Export并不是冷备份和热备份的替代工具,冷、热备份可以保护介质失效,export备份可以保护用户或应用错误。
Imp/Exp备份与恢复
(一) Exp导出备份
EXP system/ugotestadmin file={备份路径}\backup.DMP log={备份路径}\backup.log full=y
注:导出时不会导出表空间和用户信息。
(二) Imp还原
Imp system/ugotestadmin file={备份路径}\backup.DMP full=y
注:备份还原前,需要先将所备份数据中的表空间、用户以及角色都要建好,才能成功导入。
还原步骤:(以导入表空间tdlybo_j举例)
1.) 创建临时表空间
create temporary tablespace ugotemp tempfile'E:\DBFiles\ugotemp.dbf' size 500m autoextend on next 4m;
2) 创建表空间
create tablespacetdlybo_j datafile'E:\DBFiles/ tdlybo_j.dbf'size50mautoextend onnext20m;
3) 创建用户
CREATE USERtdlybo_jIDENTIFIED BYtdlybo_j DEFAULT TABLESPACEtdlybo_jTEMPORARY TABLESPACE ugotemp ACCOUNTUNLOCK;
4 ) 给用户授予权限
grant connect,resource,createany view,drop any view,under any view totdlybo_j;
5) 最后调用imp命令导入数据
EXP system/ugotestadmin file={备份路径}\backup.DMP log={备份路径}\backup.log full=y tablespaces=( tdlybo_j)
冷备份以及恢复
(一) 备份内容
冷备份需要备份的内容:
所有数据文件、控制文件和日志文件
备份注意事项:
一般情况下,这些文件都存放在{安装目录}\app\Administrator\oradata\{数据库实例名}目录下,但是有可能我们在建立表空间的时候,指定了另外的数据文件路径,因此我们就需要先查询出所有数据文件的存放位置,然后按照原有目录结构备份,为了后面更清晰,我们命名备份文件为Backup.zip。
如下:
Select name from v$controlfile; //查看控制文件路径
Select name from v$datafile; //查看数据文件路径
如下图所示:数据文件的存放路径为
(二) 备份还原
备份还原分为两种情况:
l 一种是新数据库与原始数据库安装目录完全一致,数据库实例名一致,这种情况下,还原非常简单;
还原步骤为:
1)在新机器上安装Oracle数据库,安装路径与原始数据库相同,数据库实例名称也完全一致,加入用户名为sys,密码为map,实例名为orcl。
2)停止所有Oracle数据库服务
3)拷贝Backup.zip中所有内容到相应目录。
4)重启服务即可。
l 另一种是新数据库与原始数据库目录不同。
1)在新机器上安装Oracle数据库,安装路径与原始数据库不同,比如当前数据库装在D盘,原有数据库装在E盘,数据库实例名都为orcl,用户名为sys,密码为map。
2)停止所有Oracle服务
3)拷贝backup.zip中的所有内容到相应目录
4)连接数据库
Sqlplus sys/map@orcl as sysdba
5)查询数据文件路径,会返现所有数据文件都在E盘,而当前数据库是安装在D盘的,此时就需要我们重新创建控制文件。
6)生成重新创建控制文件的脚本
alter database backup controlfile ro trace;
生成文件路径为:D:\app\Administrator\diag\rdbms\orcl\orcl\trace
如果找不到该文件,则搜索.trc
7)打开这个文件,找到创建控制文件的脚本,如下:
CREATE CONTROLFILE REUSE DATABASE "ORCL"NORESETLOGS NOARCHIVELOG
MAXLOGFILES16
MAXLOGMEMBERS3
MAXDATAFILES100
MAXINSTANCES8
MAXLOGHISTORY292
LOGFILE
GROUP 1'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
GROUP 2'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
GROUP 3'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M
--STANDBY LOGFILE
DATAFILE
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF',
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\ORACLEFILE\TDLYBO_J.DBF'
CHARACTERSET ZHS16GBK
;
修改数据文件和日志文件的路径为D盘即可。
8)终止数据库
Shutdownimmediate;
9)启动数据库实例,但是不打开数据库
Startup nomount
10) 执行以上创建控制文件的脚本
结果显示控制文件已创建。
RECOVER DATABASE
Alter databse open;
ALTER TABLESPACE TEMP ADD TEMPFILE'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' REUSE;