您好!欢迎来到雅安论坛
关注我们
扫码关注官方微信
手机版
手机扫描直接访问
欢迎: 附近的朋友。
111111

oracle数据库怎么进行冷备份 ?冷备份的主要步骤

[复制链接]
本站网友  发表于 2020-11-18 10:29:00 |阅读模式 打印 上一主题 下一主题
oracle数据库怎么进行冷备份 ?冷备份的主要步骤冷备份是将关键性文件拷贝到另外位置的一种做法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。值得注意的是冷备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库文件系统备份无效。

最近在进行Oracle数据库的恢复工作,使用的方法有:

① 逻辑备份 expdp/impdp或者exp/imp

② 物理备份 RMAN  

③ 冷备份

接下来说一说冷备份,一些细节没掌握到位,导致花了很多时间找原因。真不应该啊,学知识要知道其原理,很重要。

注意:冷备份要求两台数据库所在的操作系统一定要相同,也就是说,要么都是AIX,要么都是HP-UX,不能一端是AIX,另一端是HP-UX。进行冷备份之前要进行检查。

一、冷备份:

源端数据库在关闭状态下,完成所有物理数据文件、控制文件、redo日志问拷贝的过程,也称脱机备份;适合于非归档模式下,数据库处于一致性状态。

冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。
数据库使用的每个文件都被备份下来,这些文件包括:
☆所有数据文件
☆所有控制文件
☆所有联机REDO LOG 文件
☆INIT.ORA文件(可选)
值得注意的是冷备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库文件系统备份无效。
作冷备份一般步骤是:
1:正常关闭要备份的实例(instance);
2: 备份整个数据库到一个目录
3:启动数据库
1: SQLDBA>connect internal
SQLDBA>shutdown normal
2: SQLDBA>! cp <file> <backup directory>

SQLDBA>!tar cvf /dev/rmt/0 /wwwdg/oracle
3: SQLDBA>startup

冷备份的主要步骤:

① 查看源库的数据文件、控制文件、redo日志文件的所在的位置

  SELECT file_name FROM dba_data_files; --数据文件
  SELECT NAME FROM v$tempfile;   --临时表空间数据文件
  SELECT NAME FROM v$controlfile; --控制文件
  SELECT MEMBER FROM v$logfile;   --redo日志文件
② 关闭数据库  

SQL>shutdown immeidate
③ 复制数据文件、控制文件和redo日志文件到指定位置

  cp /home/oracle/app/oradata/USERS01.DBF /u01/app/testdb/oradata                      #两个数据都在同一台机器上
  scp /home/oracle/app/oradata/USERS01.DBF root@192.168.10.1:/u01/app/testdb/oradata   #将数据文件复制到远程的另外一台机器上
  eg: scp -r local_folder remote_username@remote_ip:remote_folder                      #复制整个文件夹
  eg: scp local_file remote_username@remote_ip:remote_folder                #复制文件
   scp的使用方法参考:

    http://hahaxiao.techweb.com.cn/archives/191.html

   注意:如果目标端的用户是root进行复杂的,主要要修改权限,否则后边对数据文件进行rename操作的时候会报错。

④ rename 数据文件

    rename操作需要数据库状态在mount下进行。

    原因:在源系统的control文件里,记得的数据文件未知还是源系统记录的数据文件位置,需要将数据文件进行rename操作:

     alter database rename file '/home/oracle/app/oradata/USERS01.DBF' to  '/u01/app/testdb/oradata/USERS01.DBF';
⑤ 重建控制文件

    重建控制文件操作需要在nomount状态下进行。

    如果不知道控制文件长啥样,你可以通过如下办法查看控制文件的内容:

   alter database backup controlfile to trace as '/home/oracle/app/ctl_bak.sql';
   #将控制文件中的内容写入到ctl_bak.sql中,这个需要数据库开启状态,建议先备份源端的控制文件
    把ctl_bak.sql的脚本拿出来稍微做一下改动,就可以了,然后执行这个sql文件即可。

  SQL>shutdown immediate;
  SQL>startup nomount;
  SQL>@ctl_bak.sql
⑥ 启动数据库

SQL>alter database open resetlogs;
二、注意事项:

    ① 源端数据库一定要处于关闭状态

    ② 复制的数据文件、控制文件一定要全,不能缺失,否则,在启动数据库是会报错;redo日志文件可以不复制,因为在重建control文件时可以指定,但是最好也一起复制过来。

    ③ 复制完成后,要记得修改数据文件和控制文件的权限,否则,在rename操作时会报错。

    ④ 要掌握冷备份的原理,要不然,会在某个环节上浪费很多时间。

三、用冷备份进行数据库恢复

如果数据库是运行在非归档日志模式下,将备份文件拷贝回原来的目录即可。非归档日志模式下数据库只能恢复到备份时刻的状态。

如果数据库是运行在归档日志模式下,将数据文件拷回原来的目录(不包括联机redolog文件),然后依次选择相应的重做日志文件进行恢复,即可恢复冷备份后的所有操作,即是说可以恢复到系统崩溃前的状态。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注3

粉丝13

帖子2251

发布主题
阅读排行 更多
广告位
欢迎使用无需登录在线留言
姓名 

手机 

内容
关注我们
  • 关注官方微信

  • 论坛QQ群

Sitemap小黑屋Archiver雅安论坛( 已经安全运行 ) |网站地图

在线客服

会员收集的资源(插件源码等),仅方便学习,您需要自行承担版权风险,未获得原作者授权的情况下,请勿将文章公开发布或用于商业用途。

声明:本站内容来自于论坛作者本人的观点,不代表本网站的观点和看法,与本网站立场无关,相关责任作者自负。如有侵权,请联系我们及时删除

高能预警:本站为个人网站,非团队运作,常年务农,山上信号不好,在线少,如有不妥之处,望大佬们多多包涵,万分感激!

雅安论坛互联网违法和不良信息举报平台 您也可以通过留言进行相关问题提交,留言提交无需注册,我们将严格保证用户隐私。   © 2009-2021