zoukankan      html  css  js  c++  java
  • oracle冷备份

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

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

        ② 物理备份 RMAN  

        ③ 冷备份

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

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

       一、冷备份:

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

      冷备份的主要步骤:

        ① 查看源库的数据文件、控制文件、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操作时会报错。

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

       三、补充:

        SSH运行原理:

                  http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

  • 相关阅读:
    docker安装
    win8换win7的操作方法
    java数组实现队列
    springMVC源码学习之获取参数名
    SpringMVC源码学习之request处理流程
    LeetCode 231. Power of Two
    LeetCode 202. Happy Number
    LeetCode 171. Excel Sheet Column Number
    Eclipse 保存代码时,不自动换行设置
    LeetCode 141. Linked List Cycle
  • 原文地址:https://www.cnblogs.com/oracle-dba/p/3474798.html
Copyright © 2011-2022 走看看