我是靠谱客的博主 潇洒秋天,最近开发中收集的这篇文章主要介绍oracle 11g在线冷备份,Oracle 11g 不一样目录的冷备份解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前几天,Oacle数据库启动不起来了,一启动就死机,通过屡次测试差错发现是磁盘损坏,致使UNDOTBS01.DBF数据文件没法访问,访问就死机。无奈用冷备份的办法,将数据库迁移到另外一台主机上。sql

Oracle 11g, 安装在windows XP上,只是做为平时开发用的数据库,没有多少维护,也没有开启归档日志模式。(注:因为操做时没有保存操做信息,也没有可用的测试环境了,因此都是凭记忆还原步骤,不排除有不正确的操做和命令,仅做参考。)数据库

Step 1. 首先在目标主机上安装Oracle 11g(和源数据库相同),建立和源数据库相同SID的数据库。windows

Step 2. 查找源数据库里的数据文件、REDO日志文件、控制文件、启动参数文件。oracle

EXPRD是SIDapp

SQL>startup mount

ORACLE 例程已经启动。

Total System Global Area  770019328 bytes

Fixed Size                  1374780 bytes

Variable Size             293602756 bytes

Database Buffers          469762048 bytes

Redo Buffers                5279744 bytes

数据库装载完毕。

SQL>select name from v$datafile;

NAME

------------------------------------------------------

D:APPADMINISTRATORORADATAEXPRDSYSTEM01.DBF

D:APPADMINISTRATORORADATAEXPRDSYSAUX01.DBF

D:APPADMINISTRATORORADATAEXPRDUNDOTBS01.DBF

D:APPADMINISTRATORORADATAEXPRDUSERS01.DBF

D:APPADMINISTRATORORADATAEXPRDEXAMPLE01.DBF

D:APPADMINISTRATORADMINEXPRDTS_YTCLT01.DBF

D:APPADMINISTRATORADMINEXPRDTS_YTEXP01.DBF

SQL>select member from v$logfile;

MEMBER

---------------------------------------------------------------

D:APPADMINISTRATORORADATAEXPRDREDO03.LOG

D:APPADMINISTRATORORADATAEXPRDREDO02.LOG

D:APPADMINISTRATORORADATAEXPRDREDO01.LOG

SQL>select name from v$controlfile;

NAME

---------------------------------------------------------------

D:APPADMINISTRATORORADATAEXPRDCONTROL01.CTL

D:APPADMINISTRATORFLASH_RECOVERY_AREAEXPRDCONTROL02.CTL

Step 3. 关闭数据库,将上面找到文件,复制到目标机器的数据库目录或自定义目录内。因为知道UNDOTBS01.DBF文件损坏,一访问就死机,因此最后复制它,作完第四步之后再复制,只能复制一部分文件,不过也能够,后面解决。ide

(因为我目标数据库和源数据库目录结构不一样,因此须要作4,5,6步。目录结构彻底同样的能够省略4,5,6步。)测试

Step 4. 在源数据库上,备份启动参数文件和控制文件建立sql,并拷贝到目标数据库上。spa

SQL> startup mount

SQL> createpfile='D:backup_pfile.ora'fromspfile;

SQL> alterdatabasebackup controlfiletotrace

as'D:backup_ctlfile_trace.sql';

Step 5. 修改生成的backup_pfile.ora和backup_ctlfile_trace.sql文件中的目录,改为目标数据库上对应的目录结构。日志

Step 6. 用backup_pfile.ora启动目标数据库,并运行backup_ctlfile_trace.sql重建控制文件。最好是按照sql文件中的顺序,单条命令手动执行,这样能够方便的定位是在哪一步出的错。xml

SQL> startup nomount pfile='D:backup_pfile.ora'

SQL> createspfilefrompfile='D:backup_pfile.ora';

SQL> shutdown immediate

SQL> @backup_ctlfile_trace.sql

在执行backup_ctlfile_trace.sql重建控制文件的时候,会报错,由于咱们的UNDOTBS01.DBF拷贝不全,是损坏的文件,因此致使重建控制文件失败。错误的意思是实际文件比记录的文件小(ORA-01200: 255360 的实际文件大小小于 264960 块的正确大小 / ORA-01200: actual file size of 255360 is smaller than correct size 264960 blocks)

Step 7. 补全UNDOTBS01.DBF。

1. 首先计算缺失的字节数(264960-255360) * 8192 = 78643200

2. 生成一个指定大小的文件D:fsutil file createnew append.dbf 78643200

3. 附加到数据文件末尾D:type append.dbf >> UNDOTBS01.DBF

4. 再次执行backup-ctlfile_trace.sql执行成功

Step 8. 因为undotbs01.dbf文件是损坏的,因此数据库尚未圆满解决。离线UNDOTBS01.DBF, 在重建UNDO TABLESPACE

SQL> start mount

SQL> alterdatabasedatafile'D:oracle11gdataUNDOTBS01.DBF'offlinedrop;

SQL> alterdatabaseopen;

SQL> altersystemsetundo_management='MANUAL'scope=spfile;

SQL> createundo tablespace undotbs2 datafile'D:oracle11gdataundotbs02.dbf'size200M autoextendon;

SQL> altersystemsetundo_tablespace='undotbs2'scop=spfile;

SQL> altersystemsetundo_management='auto'scope=spfile;

SQL> shutdown immediate

SQL> startup

最后

以上就是潇洒秋天为你收集整理的oracle 11g在线冷备份,Oracle 11g 不一样目录的冷备份解决方案的全部内容,希望文章能够帮你解决oracle 11g在线冷备份,Oracle 11g 不一样目录的冷备份解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部