Oracle热备份和冷备份_第1页
Oracle热备份和冷备份_第2页
Oracle热备份和冷备份_第3页
Oracle热备份和冷备份_第4页
Oracle热备份和冷备份_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle 热备份热备份较冷备份的主要区别就是不会丢失在备份后更新的数据下面为SQL脚本:CREATE TABLE TEST( T_ID NUMBER, T_VALUE VARCHAR2(30);/INSERT INTO TEST VALUES(100,'WANG');INSERT INTO TEST VALUES(200,'DONG');COMMIT;1.SHUTDOWN IMMEDIATE;/关闭数据库2.STARTUP MOUNT/启动数据实例,加载数据库注:STARTUP NOMOUNT/启动数据实例 STARTUP MOUNT/启动数据实例,加载数据

2、库 STARTUP /启动数据实例,加载数据库并打开数据库3.ALTER DATABASE ARCHIVELOG;/设置数据库日志为存档模式4.ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;/重启数据库5.ALTER DATABASE OPEN;/打开数据库6.ALTER TABLESPACE USERS BEGIN BACKUP;/将数据库设置备份模式7.HOST COPY D:oracleoradataorcl*.dbf D:BAK /拷贝数据文件至备份文件中8.ALTER TABLESPACE USERS END BACKUP;

3、/结束备份状态9.ALTER SYSTEM SWITCH LOGFILE;/切换日志,使当前日志归档-至此,热备份已经完成,备份文件保存在D:BAK目录下-此时再插入数据,INSERT INTO TEST VALUES(300,'XIN');COMMIT;以下是故障重现1.SHUTDOWN IMMEDIATE2.STARTUP MOUNT3.HOST DEL D:oracleoradataorclUSER01.dbf /故意删除一个数据文件,制造故障4.SHUTDOWN IMMEDIATE5.STARTUP /此时会警告,无法找到指定的文件DATA FILE 4,即是刚才删掉的

4、数据文件,DATA FILE 4只是个代号,也有可能是DATA FILE 1,DATA FILE 2,等等6.ALTER DATABASE DATAFILE 4 OFFLINE DROP;/让这个出故障的文件暂时先脱机7.ALTER DATABASE OPEN;/打开数据库8.HOST COPY D:BAK HOST COPY D:oracleoradataorcl*.dbf/将前面备份的文件拷贝到系统目录中9.RECOVER DATAFILE 4;/这一步,偶尔会出错,无法正确执行,而且无法正常关闭数据库,请如此这般操作,SHUTDOWN ABORT; STARTUP;10.ALTER DA

5、TABASE DATAFILE 4 ONLINE;11.SELECT * FROM TEST; T_ID T_VALUE- 100 WANG 200 DONG 300 XIN发现,备份之后又更新的数据没有丢失!Oracle 冷备份停止所有的oracle服务,复制Oracle目录下的oradata文件夹下的数据库名整个目录复制备份。这样冷备份就完成了,当然也可以像网上所说的:示例一、windows环境下的冷备份与恢复在本例中,数据库实例名wh,所有数据文件、所有控制文件和所有联机REDO LOG 文件都在文件夹D:oracleora92wh中,备份恢复的操作如下:1、 进入 sql*plus,以

6、sysdba的身份登录数据库SQL>sys/oraclewh as sysdba2、 关闭数据库SQL>shutdown immediate3、 拷贝D:oracleora92wh到目标备份目录E:bacakuporawh数据库冷备份完成。下面对数据库中的内容进行更改:4、启动数据库SQL>startup5、删除数据SQL>delete from wh.test (删除某个用户的表)此时进行数据库恢复。6、SQL>shutdown immediate;7、拷贝目标备份目录E:bacakuporawh到D:oracleora92wh数据库恢复完毕。通过查询可以发现数

7、据库恢复到进行备份时刻的状态,备份后所进行的所有操作无效。2.恢复:今天网上找了很多恢复的都不管用,结果今天下午搞了一个下午,试了很多方法,终于可以了,以下我是总结的方法:1.首先要注意恢复的到Oracle 版本和路径必须与原来备份的一样。2.新建一个数据库与原来名称一样的数据库(如SD)3.停止所有的Oracle服务,到Oracle目录下的oradata把新建的数据库(SD)删除,把备份的文件复制进来。4.重启一下Oracle服务5.如果用PLSQL连接会提示ora-01033:oracle initialization or shutdown in progress错误。解决办法如下,引用

8、他人文章:分析:应该是Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中遇到原有文件指定的位置上没有找到,所以就报出错误。四、解决过程:1、我在解决时由于着急使用,便用Database Configuration Assistant工具重新创建了一个新的库,临时解决急用的问题,同时也给后期解决ora-01033问题埋下了隐患。2、在9i中是没有svrmgrl 命令的,要用sqlplus。3、先在windows下运行cmd,进入DOS环境。4、以DBA用户登录,具体命令是sqlplus /NOLOGSQL>connect sys/change_on_install

9、 as sysdba提示:已成功SQL>shutdown normal提示:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭SQL>startup mount提示:ORACLE例程已经启动Total System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 82886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytes数据库装载完毕SQL>alter database open;提示:第 1 行出现错误:ORA

10、-01157: 无法标识/锁定数据文件 19 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 19: ''''C:oracleoradataoradbFYGL.ORA''这个提示文件部分根据每个人不同情况有点差别。继续输入SQL>alter database datafile 19 offline drop;提示:数据库已更改。循环使用最后两步,直到alter database open;后不再提示错误,出现“数据库已更改”。然后接着输入即可SQL>shutdown normal提示:数据库已经关闭已经卸载数据库ORAC

11、LE 例程已经关闭SQL>startup提示:ORACLE例程已经启动Total System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 82886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytes数据库装载完毕就可以解决了。5、最后说一下,第一条提到的隐患,因为创建了新的库,ORACLE_SID也就发生了变化,在用户登录的时候会有ORA-12560错误,解决这个问题是将系统注册表中的HKEY_LOCAL_MACHINESO

12、FTWAREORACLEHOME0ORACLE_SID键值修改成之前那个SID就可以了,用户也能就能正常登录了。附:oracle备份比较Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示三种方式各有优点,我们做个比较(这个是用Fireworks画的,有点糙): $A: 现在先来介绍一下逻辑备份方式的方法,利用Export可

13、将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。理论基础:Oracle提供的Export和Import具有三种不同的操作方式(就是备份的数据输出(入)类型):1,表方式(T) 可以将指定的表导出备份;2,全库方式(Full) 将数据库中的所有对象导出;3,用户方式(U) 可以将指定的用户相应的所有数据对象导出;*在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别:1,完全增量导出(Complete Export) 这种方式将把整个

14、数据库文件导出备份;exp system/manager inctype=complete file=20041125.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有明确含义的字符命名)2,增量型增量导出(Incremental Export) 这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental file=20041125.dmp3,累积型增量导出(Cumulate Export) 这种方式的话,是导出自上次完全增量导出后数据库变化的信息。exp system/manager inctype=cumula

15、tive file=20041125.dmp通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建议写好计划说明),一般,我们采用普遍认可的下面的方式进行每天的增量备份:Mon:完全备份(A) Tue:增量导出(B) Wed:增量导出(C) Thu:增量导出(D) Fri:累计导出(E) Sat:增量导出(F)Sun:增量导出(G)这样,我们可以保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库:第一步:用命令CREATE DATABASE重新生成数据库结构;第二步:创建一个足够大的

16、附加回滚。第三步:完全增量导入A: imp system/manager inctype=RESTORE FULL=y FILE=A 第四步:累计增量导入E: imp system/manager inctype=RESTORE FULL=Y FILE=E 第五步:最近增量导入F:imp system/manager inctype=RESTORE FULL=Y FILE=F 通常情况下,DBA所要做的导入导出备份就算完成,只要科学的按照规律作出备份,就可以将数据的损失降低到最小,提供更可靠的服务。另外,DBA最好对每次的备份做一个比较详细的说明文档,使得数据库的恢复更加可靠。$B 物理备份之

17、冷备份(条件NonArchiveLog):当数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数据相关文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷贝回原来的位置,这样,就完成了一次快捷安全等数据转移。由于是在数据库不提供服务的关闭状态,所以称为冷备份。冷备份具有很多优良特性,比如上面图中我们提到的,快速,方便,以及高效。一次完整的冷备份步骤应该是:1,首先关闭数据库(shutdown normal)2,拷贝相关文件到安全区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径)3,重新启动数据库(startup

18、)以上的步骤我们可以用一个脚本来完成操作:su oracle < sqlplus /nolog connect / as sysdbashutdown immediate; !cp 文件备份位置(所有的日志、数据、控制及参数文件); startup; exit;这样,我们就完成了一次冷备份,请确定你对这些相应的目录(包括写入的目标文件夹)有相应的权限。恢复的时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了,当然也可以用脚本来完成。$C 物理备份之热备份:(条件ArchiveLog)当我们需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,

19、这个情况下,我们就需要归档方式下的备份,就是下面讨论的热备份。热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤如下:1,通过视图v$database,查看数据库是否在Archive模式下: SQL> select log_mode from v$database;如果不是Archive模式则设定数据库运行于归档模式下:SQL>shutdown immediateSQL>startup mountSQL> alter database archivelog;SQL>

20、alter database open;如果Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档,如:正常shutdown数据库,在参数文件中init.ora中加入如下参数SQL>shutdown immediate修改init.ora:LOG_ARCHIVE_START=TRUELOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置可以自己定义)SQL>startup然后,重新启动数据库,此时Oracle数据库将以自动归档的方式工作在Archiv

21、e模式下。其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不同的硬盘,一方面减少磁盘I/O竞争,另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢失。归档路径也可以直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件和性能等因素。注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。另外,为创建一个有效的备份,当数据库在创建时,必须履行一个全数据库的冷备份,就是说数据库需要运行在归档方式,然后正常关闭数据库,备份所有的数据库组成文件。这一备份是整个备

22、份的基础,因为该备份提供了一个所有数据库文件的拷贝。(体现了冷备份与热备份的合作关系,以及强大的能力) 2,备份表空间文件:a,首先,修改表空间文件为备份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;b,然后,拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;c,最后,将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;3,对归档日志文件的备份:停止归档进程>备份归档日志文件>启动归档进程如果日志文档比较多,我们将它们写入一个文件成为一个恢复

23、的参考:$ files ls <归档文件路径>/arch*.dbf;export files4,备份控制文件:SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;当然,我们也可以将上面的东东写为一个脚本,在需要的时候执行就可以了:脚本范例:su oracle < sqlplus /nolog connect / as sysdbaALTER TABLESPACE tablespace_name BEGIN BACKUP!CP t

24、ablespace_name D_PATHALTER TABLESPACE tablespace_name END BACKUPalter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;!files ls <归档文件路径>/arch*.dbf;export files热备份的恢复,对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份。归档备份在理论上可以无数据丢失,但是对于硬件以及操作人员的要求都比较高。在我们使用归档

25、方式备份的时候,全库物理备份也是非常重要的。归档方式下数据库的恢复要求从全备份到失败点所有的日志都要完好无缺。恢复步骤:LOG_ARCHIVE_DEST_1 shutdown数据库。将全备份的数据文件放到原来系统的目录中。将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。利用sqlplus登陆到空实例。(connect / as sysdba)然后 startup mountset autorecovery onrecover database;alter database open;-路径不一致的恢复方法-近日,我想把oracle数据库从我的电脑上迁移到机房的电脑上,一开始采用dmp/imp方式,但是发现需要导出很多用户,太麻烦。所以决定采用冷备份/冷恢复的方式。过程如下:通过v$controlfile查看控制文件,通过v$logfile查看重做日志文件,通过V$DATAFILE查看数据文件,发现他们都处于同一文件夹中i:oracleoradatatest中,索性都复制到另一台机器的e:oracleoradatatest中,复制之前shutdown系统。还复制了inittest.ora

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论