ORACLE数据库备份技术

来源:互联网 发布:时光软件 编辑:程序博客网 时间:2024/05/19 03:24

 来源:网络/责编:编程入门 作者:不详

<script type="text/javascript">&lt;!--google_ad_client = "pub-1762970342420142";/* 300x250 */google_ad_slot = "2904782163";google_ad_width = 300;google_ad_height = 250;//--&gt;</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script>window.google_render_ad();</script>

  1 引言

  ORACLE 数据库是一种大型关系型的数据库,可以存贮达到存贮 TB 的数据,那么如何保证这些数据的安全尤其至关重要,我们从1991 年开始使用 ORACLE 数据库,通过这些年的使用,我们制定了一整套的 ORACLE数据库的备份制度。现在把我们的备份制度介绍给大家,供大家参考。

  2 根据实际需要决定数据库的运行方式

  ORACLE 数据库有两种运行方式:一是归档方式( ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式 (NOARCHIVELOG),恢复数据库到最近的回收点。我们根据数据库的高可用性和用户可承受丢失的工作量的多少,把我们正式运行的数据库采用为归档方式;那些正在开发和调试的数据库采用不归档方式。

  3 如何改变数据库的运行方式

  3.1 在创建数据库时设置数据库的运行的方式

  在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。一般情况下为 NOARCHIVELOG 方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成 ARCHIVELOG 方式。

  3.2 改变不归档方式为为归档方式

  关闭数据库,备份已有的数据。改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。

  启动 Instance ,Mount 数据库但不打开数据库,来改变归档方式

sqldba lmode=y ( svrmgrl )
sqldba>connect internal
sqldba>startup mount
sqldba>alter database archivelog;

  使能自动存档

  在初始化文件 init*.ora( 一般放 ORACLE 根目录的下层目录 dbs 下 ) 加参数:

  log_archive_start=true

  指定存档的重做登录文件名和存放的位置

  同样是在初始化文件 init*.ora 中加入下面的参数:

  log_archive_format=%S.arc

  log_archive_dest=/arch12/arch (arch12 是日志文件存放的目录 )

  关闭数据库,重新启动数据库,归档方式转换完成.

  4 回收制度

  4. 1 根据数据库的运行方式和可承受丢失的工作量来决定数据库的回收制度对于不归档方式,我们用的是 ORACLE 数据库的逻辑备份Export ,回收的制度是:一个月作一次全备份 (x01.dmp) ,一周作一次累积备份 (c*.dmp) ,一天一次增量备份(I*.dmp) ,具体的是星期一到星期五作增量备份,星期六做累积备份或全备份,每次做完备份后自动传到其它的机器上存储。这些备份都是自动执行的, 后面给出程序文本。

  对于归档方式,我们用的是 ORCALE的物理备份:当数据库创建好以后,做一次物理上的全备份,平时在不关闭数据库的前提下,一个星期对经常改变的数据文件做联机的数据库数据文件的物理备份;当数据库的结构发生改变,如:增加表空间,加数据文件等,如允许关机,正常关闭数据库,重新做数据库全备份,否则,备份控制文件,备份数据文件照常。联机的日志文件我们是写在阵列上的,不用镜象和备份。

4.2 回收的方法

  4.2.1 不归档方式

  我们拿曙光 AIX 操作系统为例 , 来讲解以下如何做自动备份:

  a. 首先建 UNIX 用户 demo/demo

  b. 拷贝 oracle 用户下的 .profile 到 demo 用户下,以保证 demo 用户可以用 Export 命令

  c. 用 root 用户登录,编辑 /var/adm/cron/cron.allow 加入用户名 demo, 这样 demo 用户就有权自动执行数据库备份的 shell 程序;

  d. 创建数据库备份程序,放到本用户的下层目录 bin 下,并且这些文件要有可执行权文件 zlbf1:( 增量备份 1 ,星期一执行的程序 )

. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i01.dmp
close
bye
!

  文件 zlbf2:( 增量备份 2, 星期二执行的程序 )

. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i02.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i02.dmp
close
bye
!

  文件 zlbf3:( 增量备份 3, 星期三执行的程序 )

. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i03.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i03.dmp
close
bye
!

  文件 zlbf4:( 增量备份 4, 星期四执行的程序 )

. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i04.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i04.dmp
close
bye
!

  文件 zlbf5:( 增量备份 5, 星期五执行的程序 )

. /u11/demo/.profile
exp system/manager inctype=INCREMENTAL file=i05.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put i05.dmp
close
bye
!

文件 zlbf6:( 增量备份 6, 星期六执行的程序 )

. /u11/demo/.profile
js=`ls c*.dmp|wc -l`
if test $js = 0
then
exp system/manager inctype=CUMULATIVE file=c01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c01.dmp
close
bye
!
fi
if test $js = 1
then
exp system/manger inctype=CUMULATIVE file=c02.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c02.dmp
close
bye
!
fi
if test $js = 2
then
exp system/maneger inctype=CUMULATIVE file=c03.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put c03.dmp
close
bye
!
fi
if test $js = 3
then
exp system/manager inctype=COMPLETE file=x01.dmp
ftp -n< < !
open 10.10.10.40
user demo demo
binary
prompt
cd backup40
put x01.dmp
close
bye
!
rm c*.dmp
fi

  e. 在 demo 用户下建一个文件,假如叫 :cron.demo, 文件内容如下

59 22 * * 1 bin/zlbf1
59 22 * * 2 bin/zlbf2
59 22 * * 3 bin/zlbf3
59 22 * * 4 bin/zlbf4
59 22 * * 5 bin/zlbf5
59 22 * * 6 bin/zlbf6

  f. 在 demo 用户下执行下面的命令:

  crontab cron.demo 执行的结果放到

  /var/spool/cron/crontabs/demo 文件里

  g. 重新启动 cron 进程,命令: kill -1 进程号。

  h. 执行结果放在本用户的邮件里

4.2.2 归档方式

  a. 找到要回收的数据文件、联机重做登录文件、控制文件和参数文件

  b. 正常关闭数据库,作一次全回收 ( 用操作系统的 TAR 命令,可以写成 shell 程序 ) ,然后打开数据库供正常使用 ,shell 程序如下:

tar cvf /dev/rmt/ctape2 /u1/oracle/dbs/ctrl1ora7.ctl
/u1/oracle/dbs/ctrl2ora7.ctl
/u1/oracle/dbs/ctrl3ora7.ctl
/u1/oracle/dbs/systora7.dbf
/u1/oracle/dbs/rbsora7.dbf
/u1/oracle/dbs/tempora7.dbf
/u1/oracle/dbs/toolora7.dbf
/u1/oracle/dbs/usrora7.dbf
/ls1/ls1.dbf
/u1/oracle/dbs/log1ora7.dbf
/u1/oracle/dbs/log2ora7.dbf
/u1/oracle/dbs/log3ora7.dbf

  a. 经常作联机的表空间和数据文件的部分回收

  首先标记联机表空间回收的开始

  alter tablespace 表空间名 begin backup;

  用操作系统命令备份数据文件

  最后标记联机的表空间回收结束

  alter tablespace 表空间名 end backup

  多个表空间可以一起做标记,备份做标记的所有数据文件后,一起标记结束。

  d. 当数据库结构发生改变后,要对它的控制文件做回收

sqldba >alter database backup
controlfile to ' 文件名 ' reuse;

原创粉丝点击