目录
1简介
2备份的种类
2.1物理备份
2.1.1冷备份
2.1.2热备份
2.2逻辑备份
3备份方案
3.1冷备份方案的实施
3.1.1冷备份数据库的步骤
3.2热备份方案的实施
3.2.1热备份数据库的步骤
3.3逻辑备份export备份
3.3.1 export备份数据库的步骤
3.4异机备份
3.4.1被动式异机备份
3.4.2主动式异机备份
本手册描述Oracle数据库的备份还原机制,帮助应用Oracle数据库,为了保证数据库的安全,避免外界因素造成数据库中数据丢失,有效的备份可以更好的重建数据库,在修改删除表或者表空间以前或者以后执行适当的备份是相当必要的,备份时建议使用直接登录服务器或者利用ssh工具登录服务器利用相关的系统命令进行操作,避免使用PLSQL工具进行操作,影响备份的结果,本文档适合有一定Oracle经验人员进行阅读,以OracleLinux 6.5为环境基础,oracle 版本为11.2.0.4,其他的版本请自行测试,避免出现其他的问题。
而对于ORACLE数据库的备份方法主要分为两大类。第一类是物理备份,第二类是逻辑备份。而物理备份又分为冷备份和热备份。
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。
优点:能简单快速地备份。能简单快速地恢复。执行简单。
缺点:必须关闭数据库,不能进行点恢复。
热备份是在数据库运行的情况下,采用archivelogmode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。
优点:备份时数据库可以是打开的。热备份可以用来进行点恢复。初始化参数文件、归档日志在数据库正常运行时是关闭的,可用操作系统命令拷贝。
缺点:执行过程复杂。由于数据库不间断运行,测试比较困难。不能用操作系统实用工具拷贝打开的文件。必须使用Oracle提供的ocopy工具来拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙时进行。
逻辑备份是利用export进行数据备份。这个直接根据提示来就可完成。
优点:能执行对象或者行恢复。备份和恢复速度更快。能够跨操作系统平台迁移数据库。数据库可一直运行。
缺点:export并不是冷备份和热备份的替代工具。冷、热备份可保护介质失效。export备份可保护用户或应用错误。
1、关闭数据库;
使用命令 shutdown immediate;
2、备份所有相关的数据库文件:
初始化参数文件 $ORACLE_HOME/dbs/*.ora
控制文件(可用select name from v$controlfile;列出所有控制文件)
数据文件(可用select name from v$datafile;列出所有数据文件)
Redo日志(可用select member fromv$logfile;列出所有redo日志文件)
归档的Redo日志(可用select sequence#,first_timefrom v$loghist;列出所有归档redo日志文件的顺序号和产生时间)。
mkdir /backup/ctl /backup/dbf /backup/redo/backup/dbs #新建Oracle数据库备份目录
chown -Roracle:oinstall /backup/ #设置目录权限为oinstall用户组的oracle用户
(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)
su- oracle #跳转到oracle用户
cp /oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_area/orcl/control02.ctl/backup/ctl#复制控制文件到指定目录/backup/ctl
cp /oradata/orcl/*.dbf /backup/dbf#复制数据文件到指定的目录/backup/dbf
cp /oradata/orcl/redo*.log /backup/redo #复制redo日志文件到指定目录/backup/redo
cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/*/backup/dbs #复制参数文件到指定目/backup/dbs
1、将数据库开启归档模式
SQL> shutdown immediate;关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount;数据库进入mount模式
ORACLE instance started.
SQL> alter database archivelog;启用归档模式
Database altered.
SQL>alter database open;打开数据库
Database altered.
SQL>alter system archive log start;启用自动归档模式
System altered.
查看是否启用了归档模式
SQL> archive log list;
如果显示下边的提示代表启动归档模式,且自动归档模式开启
非归档日志模式下产生的备份日志对于归档模式已经不可用了,这一步非常重要!
1、拷贝参数文件到备份目录(参数文件在数据库启动后处于关闭状态)
cp/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora/backup/reback/
2、将需要备份的表空间(TS_DC)设为备份状态:
SQL> ALTER TABLESPACETS_DC BEGIN BACKUP;将表空间TS_DC设置为开启备份状态
Tablespace altered.
[oracle@oracle orcl]$ cp/oradate/orcl/TS_DC.DBF /backup/reback/拷贝数据文件到备份目录
SQL> ALTER TABLESPACETS_DC END BACKUP;将表空间TS_DC设置为关闭备份状态
Tablespace altered.
如还有其他要备份的表空间,重复步骤2
SQL> archive log list;获取当前的日志顺序号
如下所示,日志序列号为4-6(从oldest online logsequence开始到current log sequence的联机redo日志应该是热备份的一部分)
SQL>ALTER SYSTEM SWITCHLOGFILE ;强制日志归档
System altered.
cp -R/u01/app/oracle/fast_recovery_area/ORCL/archivelog/ /backup/reback/备份归档日志文件到/backup/reback/(arc文件为归档日志)
SQL> ALTER DATABASEBACKUP CONTROLFILE TO '/backup/reback/control.bkp';将控制文件备份到/backup/reback/下,备份的后缀名无所谓
Database altered.
检查备份的文件是否齐全(1、归档日志2、控制文件 3、参数文件 4、数据文件)
注意事项,步骤中涉及的fast_recovery_area目录为闪回区,在不更改默认归档日志的情况下会将日志放在闪回区中,闪回区很容易爆满,闪回区的大小在新建数据库实例时候可以设置,当不勾选时候是无限制的拓展。
3.3 逻辑备份export备份
mkdir -p /backup/oracledata #新建Oracle数据库备份目录
chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户
(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)
因为使用expdp命令需要使用到目录对象(directory),所以首先需要创建目录对象,并赋予某个用户对目录对象的操作权限。
操作步骤如下:
su- oracle#切换到oracle用户
sqlplus/ as sysdba#切换到SQLPLUS环境
执行以下命令:
createdirectory expdp_bak_dir as '/backup/oracledata';#指定EXPDP输出目录
grantcreate any directory to system;#授予system权限
vi/backup/oracledata/ordatabak.sh #新建文件,输入以下代码
#/bin/sh
exportORACLE_SID=orcl
exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
exportNLS_LANG=american_america.zhs16gbk
exportDATA_DIR=/backup/oracledata
now=`date %Y%m%d%H%M%S `
dmpfile=db$now.dmp
echostart exp $dmpfile ...
/u01/app/oracle/product/11.2.0/dbhome_1/bin/expdp system/newcapecDUMPFILE=$dmpfile logfile=db$now.log DIRECTORY=expdp_bak_dir full=y
echo'Delete the file bakup before 6 days...'
find/backup/oracledata/ -mtime 6 -name '*.dmp' -exec rm -rf '{}' ;
echo'Delete the file bakup successfully. '
echo'Bakup completed.'
chmod x/backup/oracledata/ordatabak.sh #添加脚本执行权限
代码中红色的orcl修改为自己的实际数据库名称system/newcapec修改为实际的用户名和密码
mkdir -p /backup/ #新建Oracle数据库备份目录
chown -R oracle:oinstall /backup/ -R #设置目录权限为oinstall用户组的oracle用户
(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)
一、全量备份整个库为TS_DC文件
1、 设置窗口字符集格式
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2、 导出全量信息到备份文件目录/backup中的TD_DC文件以及日志文件
expdp system/111111@orcl file=/backup/TS_DC.dmplog=/backup/TS_DC.log full=y;
二、按用户备份数据库为user文件
1、 设置窗口字符集格式
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2、 导出user用户信息到备份文件目录/backup中的user文件以及日志文件
expdp system/111111@orcl owner=user file=/backup/user.dmplog=/backup/user.log;
被动式异机备份指在热备份或者逻辑备份完成成将数据及时传输到另一台机器,保持多份数据,避免因服务器无法正常启动后数据无法取出,造化数据无法恢复。
这里主要介绍在window环境中使用wincsp软件通过定时任务自动比较同步下载数据库备份信息
1、 首先在window系统中安装winscp软件,可以在网上自行下载
联系客服