7、重置联机日志
在进行了不完全恢复或用备份控制文件进行恢复后,应重置联机日志。
为了确保数据库的一致性,必须保证在恢复后所有数据文件都恢复到同一个时间点,但不完全恢复可能导致数据文件中具有一个与其它文件不同的检查点,导致数据库的一致性受到破坏。同样,备份的控制文件中保存的SCN和计数器与当前日志文件中的值可能不同,从而也破坏了数据库的一致性,因此应在进行完上述两项操作后重置联机日志。 8、数据库的逻辑备份
以上所述备份都为物理备份,是实际物理数据库文件从一处拷贝到另一处的备份,除此之外还可使用Oracle提供的导出实用程序进行数据库的逻辑备份。Oracle同时还提供了相应的导入实用程序重建逻辑备份中保存的信息。
逻辑备份只拷贝数据库中的数据,而不记录数据位置的备份过程。它利用SQL语句,从数据库中导出数据到一个存放在合适位置的外部文件中,同时并可检测到数据块的损坏,因此可用其作为物理备份的补充。 备份策略
考虑到如今大部分信息系统每周的业务是24×7操作,因此采用联机备份,否则可每隔一定时间进行一次脱机备份。
应用上述规则,可得出下述典型的备份策略: ①镜像拷贝重作日志文件; ②镜像拷贝控制文件;
③激活归档进程,即以ARCHIVELOG模式操作数据库;
④每天进行数据库的部分联机备份(每天进行数据库的完全热备份将无畏地增加数据库的负担且没有必要,同时也增加了数据库恢复时的灵活性); ⑤每隔一周或几周进行一次数据库的逻辑备份。 实际项目应用
当数据库中的文件达到一定数量后,DBA可能记不住该备份的文件的名或位置,因此,若能使备份过程自动化可有效地减轻DBA的负担,同时不会遗漏应备份的文件,应用自动批处理文件及脚本文件可实现备份、恢复的自动化。下面简介了在实际项目开发中应用本文所提出的自动备份、恢复策略,通过实际应用,证明了该策略的正确性和可行性。 (1)下述脚本实现联机重作日志的多工:
connect 账户名/密码
alter database ktgis add logfile member 日志文件的存储位置 to group 联机日志组号;
shutdown immediate
startup pfile=初始化文件的存放位置 exclusive mount; 装载数据库且不打开 alter database archivelog; 激活归档进程 alter database open; exit
(2)下列VB代码自动建立联机备份的批处理文件及相应的脚本文件。 Set adoTmp = objConnect.Execute(\sys.dba_data_files\ Dim lnum1 As Long Dim lnum2 As Long lNum = FreeFile
Open 自动备份批处理文件路径 For Binary As lNum lnum1 = FreeFile
Open \为设置表空间进入热备份模式的脚本文件文件名 lnum2 = FreeFile
Open \为结束表空间热备份模式的脚本文件文件名
strTmp = \账户名/密码\ Put lnum1, , strTmp
strTmp = \ Put lnum1, , strTmp
strTmp = \pfile=初始化文件的存放位置exclusive mount; \& Chr(13) & Chr(10) Put lnum1, , strTmp
strTmp = \ Put lnum1, , strTmp
strTmp = \ Put lnum1, , strTmp
strTmp = \账户名/密码\ Put lnum2, , strTmp
strTmp = Oracle服务管理器路径 & \在服务管理器中执行脚本文件onlinebegin.sql Put lNum, , strTmp Do While Not adoTmp.EOF
Set adoTmp1 = objConnect.Execute(\sys.dba_data_files where tablespace_name=’\adoTmp.Fields(0) & \通过循环即可得到所有表空间所对应数据文件名,若只备份指定的表空间,可指定表空间名从而得到其对应的物理数据文件.
strTmp = \tablespace \& adoTmp.Fields(0) & \begin backup;\& Chr(13) & Chr(10) 将表空间置于热备份模式 Put lnum1, , strTmp
strTmp = Oracle的ocopy.exe工具全路径 \备份文件存放路径 & Chr(13) & Chr(10) Put lNum, , strTmp
strTmp = \tablespace \& adoTmp.Fields(0) & \end backup;\& Chr(13) & Chr(10) 表空间恢复正常模式 Put lnum2, , strTmp adoTmp.MoveNext Loop
strTmp = Oracle服务管理器路径 & \在服务管理器中执行脚本文件onlineend.sql Put lNum, , strTmp
strTmp = \退出服务管理器 Put lnum1, , strTmp
strTmp = \system switch logfile;\& Chr(13) & Chr(10) 强制日志转换,使Oracle创建一个归档日志文件 Put lnum2, , strTmp
strTmp = \ Put lnum2, , strTmp Close
Set adoTmp = Nothing Set adoTmp1 = Nothing
运行得到的自动批处理文件,即可自动进行数据库的联机备份。 (3)在从备份中恢复数据文件后,执行下列脚本将数据库的恢复程序。 connect账户名/密码 shutdown abort
startup mount pfile=初始化文件的存放位置; 装载数据库 set autorecovery on; 打开自动恢复 recover database;
alter database open; 打开数据库 结束语
提高数据库灾难后恢复的可靠性正越来越多地受到人们的关注,本文根据个人在实际项目开发过程中的经验及恢复时的灵活性对Oracle数据库的备份及恢复进行了探讨,并提出了典型的备份策略,用户可以根据自己的实际情况及数据库结构在此基础上灵活应用。
关于oracle的备份策略
2009年06月10日 09:09
控制文件在备份中意义重大,建议每次对其单独备份,如果数据库版本允许的话,应该设置为控制文件自动备 份。同时应该尽可能地增大CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数的值。以便备份信息能更长时间的保留
应该制定比较完善的备份计划,否则备份计划一旦出现缺口,将可能给系统带来灾难.记住, "可能出错的地方一定会出错".
熟悉RMAN内部备份机制,对DBMS_BACKUP_RESTORE的用法有一定的掌握在关键时侯很有帮助. 备份脚本应该对Log重定向并保存.以便在出错的查找有用信息. ---------------------------------------------- 与RMAN备份有关的优化
备份操作主要是完成以下三个步骤 1、从磁盘上读取数据 2、在内存中处理数据块 3、写入数据到磁盘或磁带
以上的读写操作可以同步或异步的完成,在同步I/O操作中,一个时间只允许有一个IO操作,但是在异步I/O操作中,一个时间允许有多个IO操作。因此,备份与恢复的调优主要集中在以下几个方面:
1、??提高同步或异步I/O操作能力
在支持异步操作的操作系统上,可以通过设置TAPE_AYSNCH_IO,DISK_ASYNCH_IO和BACKUP_TYPE_IO_SLAVES来支持异步操作,提高写的能力。 2、??提高磁盘读能力
可以在backup命令后通过设置DISKRATIO来保证从多个磁盘上读取数据,保证连续的数据流。 3、??正确设置缓冲区与参数值
设置LARGE_POOL_SIZE,使备份可以使用连续的缓冲池,通过设置DB_FIL_DIRECT_IO_COUNT可以提高缓冲区的利用。如果使用磁带备份,还可以设置BACKUP_TYPE_IO_SLAVES来提高磁带的写能力。
4、??采用并行备份
开辟多个通道,可以实现并行备份与恢复 ??
iii.备份RMAN数据库
RMAN自己的数据库也需要备份,但是本身很小,而且不是经常发生变化,所以在每次RMAN备份完成后,都可以用如下脚本对RMAN数据库备份。 EXP pafile =exprman.sql exprman.sql为 USERID=RMAN/RMAN BUFFER=32768 OWNER=RMAN FILE=RMAN.DMP ROWS=Y GRANTS=Y COMPRESS=Y CONSISTENT=Y
iv.使自动备份数据库
自动备份数据库不外乎以下三种方式 WINDOWS下的任务计划(At命令) UNIX下的Crontab 第三方工具如Viritas
在以上三种方式中Viritas属于第三方工具,很多人可能都没有接触,主要说一下windows的任务计划与unix的cron
1、生成脚本文件,如backup.rcv 假定文件内容如下: $>cat backup.rcv
connect target sys/password rcvcat ; run{
allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk;
backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p'?? archivelog all delete input;? ? release channel c1; release channel c2; release channel c3; }
2、生成执行文件
在windows上生成backup_archive.bat,内容包括 rman cmdfile = backup.rcv
在unix下生成 backup_archive.sh,内容包括 /oracle/ramn/rman cmdfile = backup.rcv ??3、加入调度
在windows中用任务计划向导即可,或使用at命令。
在unix中,在目标机器上编写一个文件,用以启动自动备份进程。假定文件名为ORACLE,文件将放在/var/spool/cron/crontabs目录下 $>cat oracle
0 23 * * 0 backup_archive.sh #表示星期天23点对数据库备份 0 12,18 * * * backup_archive.sh #表示每天12点,18点备份
Crontab文件的每一行由六个域(minutes,hours,day of month,month,day of week,command)组成,域之间用空格或Tab分隔开来 五、常见误区 1、使用EXP/IMP备份
EXP/IMP不是一个良好的备份工具,在以后的发展之中,ORACLE对EXP/IMP用于备份的支持会越来越低。ORACLE只是把EXP/IMP当作一个好的工具而不是备份工具,在对于大型数据库,如TB级数据库或数据仓库,EXP/IMP肯定会力不从心。 2、在应用程序中备份数据库
在论坛上,有很多这样的要求,\我怎么在程序中备份与恢复数据库?\。首先说,这个并不是不
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库Oracle备份策略(3)在线全文阅读。
相关推荐: