查看原文
其他

Oracle数据库备份还原标准化实施部署指南 | 周末送资料

twt社区 twt企业IT社区 2022-07-03

1 简介

本手册描述Oracle数据库的备份还原机制,帮助应用Oracle数据库,为了保证数据库的安全,避免外界因素造成数据库中数据丢失,有效的备份可以更好的重建数据库,在修改删除表或者表空间以前或者以后执行适当的备份是相当必要的,备份时建议使用直接登录服务器或者利用ssh工具登录服务器利用相关的系统命令进行操作,避免使用PLSQL工具进行操作,影响备份的结果,本文档适合有一定Oracle经验人员进行阅读,以OracleLinux 6.5为环境基础,Oracle 版本为11.2.0.4,其他的版本请自行测试,避免出现其他的问题。


2 备份的种类

而对于Oracle数据库的备份方法主要分为两大类。第一类是物理备份,第二类是逻辑备份。而物理备份又分为冷备份和热备份。

2.1 物理备份

2.1.1 冷备份:

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。

优点:能简单快速地备份。能简单快速地恢复。执行简单。

缺点:必须关闭数据库,不能进行点恢复。 

2.1.2 热备份:

热备份是在数据库运行的情况下,采用archivelogmode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。

优点:备份时数据库可以是打开的。热备份可以用来进行点恢复。初始化参数文件、归档日志在数据库正常运行时是关闭的,可用操作系统命令拷贝。

缺点:执行过程复杂。由于数据库不间断运行,测试比较困难。不能用操作系统使用工具拷贝打开的文件。必须使用Oracle提供的ocopy工具来拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙时进行。 

2.2 逻辑备份

逻辑备份是利用export进行数据备份。这个直接根据提示来就可完成。

优点:能执行对象或者行恢复。备份和恢复速度更快。能够跨操作系统平台迁移数据库。数据库可一直运行。

缺点:export并不是冷备份和热备份的替代工具。冷、热备份可保护介质失效。export备份可保护用户或应用错误。


3 备份方案

3.1冷备份方案的实施 

3.1.1冷备份数据库的步骤 

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日志文件的顺序号和产生时间)。

1)root用户登录服务器

mkdir /backup/ctl /backup/dbf /backup/redo/backup/dbs   #新建Oracle数据库备份目录

chown -Roracle:oinstall /backup/ #设置目录权限为oinstall用户组的oracle用户

(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

2)   备份相关的文件

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

3.2 热备份方案的实施

3.2.1热备份数据库的步骤 

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备份

3.3.1 export备份数据库的步骤 

3.3.1.1 export自动备份数据库的步骤

1)    root用户登录服务器

mkdir -p /backup/oracledata     #新建Oracle数据库备份目录

chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户

(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

2)    创建目录对象

因为使用expdp命令需要使用到目录对象(directory),所以首先需要创建目录对象,并赋予某个用户对目录对象的操作权限。

操作步骤如下:

su- oracle#切换到oracle用户

sqlplus/ as sysdba#切换到SQLPLUS环境

执行以下命令:

createdirectory expdp_bak_dir as '/backup/oracledata';#指定EXPDP输出目录

grantcreate any directory to system;#授予system权限

3)    编辑自动备份脚本

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/expdpsystem/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修改为实际的用户名和密码

3.3.1.2 Export手动备份数据库的步骤

1)   root用户登录服务器

mkdir -p /backup/      #新建Oracle数据库备份目录

chown -R oracle:oinstall /backup/ -R #设置目录权限为oinstall用户组的oracle用户

(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

2)   手动备份的命令

一、全量备份整个库为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;

3.4 异机备份

3.4.1 被动式异机备份

被动式异机备份指在热备份或者逻辑备份完成时将数据及时传输到另一台机器,保持多份数据,避免因服务器无法正常启动后数据无法取出,造成数据无法恢复。

这里主要介绍在window环境中使用wincsp软件通过定时任务自动比较同步下载数据库备份信息

1、  首先在window系统中安装winscp软件,可以在网上自行下载

(如需下载可以点本文左下角阅读原文至社区下载word原文档)

双击安装即可

接受协议进行安装

2、  安装完成后将下边脚本拷贝到安装的根位置

(如需下载可以点本文左下角阅读原文至社区下载word原文档)

修改脚本中的用户名,密码,服务器地址,以及下载的位置和服务器备份的位置

winscp.exe /console/command "option batch continue" "option confirm off""open root:111111@192.168.20.132:22""option transfer binary" "cd /backup""lcd d:/backup/" "optionsynchdelete off" "synchronize local" exit

root:111111@192.168.20.132:22服务器用户名、密码、服务器地址

cd /backup服务器存放路径

lcd d:/backup/本地存放路径

ynchronize local从网络同步到本地

option synchdelete off关闭同步后删除

3、  在window任务管理器中制定定时任务(这里主要介绍window10)

在左下角开始菜单点击右键,在弹出的状态栏中点击搜索,“任务计划”

在弹出的任务中点击创建任务

输入对应的名称、描述、以及安全选项

设定好任务执行的时间间隔

设定执行脚本的位置

设置完成后点击确定

在弹出的窗口中输入本机的密码,任务计划建立

3.4.2 主动式异机备份

被动式异机备份指在另一台机器上连接到oracle数据库直接使用脚本进行备份,不依赖数据库服务器的备份脚本,与被动式备份结合,保证数据的稳定性,保持多份数据,避免因服务器无法正常启动后数据无法取出,造化数据无法恢复。

下边将主要介绍在window中如何备份Linux中oralce数据库

1、  Window主机上需要安装oracle客户端,确认利用PLSQL工具可以正常访问数据库

(如需下载可以点本文左下角阅读原文至社区下载word原文档)

按照图示部分修改需要备份数据库的用户名、密码和实例名,备份位置可以根据情况修改,这里是备份在D:ackup

由社区会员上传分享,点击阅读原文可下载原文档
觉得本文有用,请转发或点击“在看”,让更多同行看到


 推荐资料:

Oracle 资料大全 | 19 个实用文档 46 篇文章


欢迎关注社区 “数据库”技术主题 ,将会不断更新优质资料、文章,您也可以前往提出疑难问题,与同行切磋交流。地址:

http://www.talkwithtrend.com/Topic/597


下载 twt 社区客户端 APP


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存