Oracle 冷备份

系统 1780 0

--======================

-- Oracle 冷备份

--======================

 

一、冷备份

    数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份

    适合于非归档模式下,数据库处于一致性状态

   

二、步骤    

    首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库 ( shutdown )

    再执行拷贝物理文家到备份路径或备份设备

    备份完成后立即启动数据库让其提供正常的服务

 

 

三、冷备脚本的写法

    首先应该在相关视图里查出数据库的数据文件,日志文件,控制文件,临时文件所在的位置

    注意:不要直接把 oradata 下的 cp 就行了,因为生产库里各个文件通常分布在不同的磁盘,不同的地方,所以在去视图里获得真实路径  

 

    -- 查看实例和数据库的相关信息

    SQL > select instance_name , version , status , archiver , database_status from v$instance ;

 

    INSTANCE_NAME     VERSION            STATUS        ARCHIVE DATABASE_STATUS

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

    orcl              10.2.0.1.0         OPEN          STOPPED ACTIVE

 

    SQL > select dbid , name , log_mode from v$database ;

 

          DBID NAME       LOG_MODE

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

    1242732291 ORCL       NOARCHIVELOG

 

    -- 查看数据文件及状态信息

    SQL > select file_name , tablespace_name , status , online_status from dba_data_files ;

 

    FILE_NAME                                                TABLESPACE STATUS     ONLINE_

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

    / u01 / app / oracle / oradata / orcl / undotbs01 . dbf               UNDOTBS1    AVAILABLE ONLINE

    / u01 / app / oracle / oradata / orcl / system01 . dbf                SYSTEM      AVAILABLE SYSTEM

    / u01 / app / oracle / oradata / orcl / sysaux01 . dbf                SYSAUX      AVAILABLE ONLINE

    / u01 / app / oracle / oradata / orcl / users01 . dbf                 USERS       AVAILABLE ONLINE

    / u01 / app / oracle / oradata / orcl / example01 . dbf               EXAMPLE     AVAILABLE ONLINE

    / u01 / app / oracle / oradata / orcl / tbs1_1 . dbf                  TBS1        AVAILABLE ONLINE

    / u01 / app / oracle / oradata / orcl / tbs1_2 . dbf                  TBS1        AVAILABLE ONLINE

 

    -- 查看数据文件

    SQL > select name from v$datafile ;

 

    NAME

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

    / u01 / app / oracle / oradata / orcl / system01 . dbf

    / u01 / app / oracle / oradata / orcl / undotbs01 . dbf

    / u01 / app / oracle / oradata / orcl / sysaux01 . dbf

    / u01 / app / oracle / oradata / orcl / users01 . dbf

    / u01 / app / oracle / oradata / orcl / example01 . dbf

    / u01 / app / oracle / oradata / orcl / tbs1_1 . dbf

    / u01 / app / oracle / oradata / orcl / tbs1_2 . dbf

 

    -- 查看临时文件

    SQL > select name from v$tempfile ;

 

    NAME

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

    / u01 / app / oracle / oradata / orcl / temp01 . dbf

 

    -- 查看日志文件

    SQL > select member from v$logfile ;

 

    MEMBER

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

    / u01 / app / oracle / oradata / orcl / redo2a . rdo

    / u01 / app / oracle / oradata / orcl / redo2b . rdo

    / u01 / app / oracle / oradata / orcl / redo1a . rdo

    / u01 / app / oracle / oradata / orcl / redo3a . rdo

    / u01 / app / oracle / oradata / orcl / redo3b . rdo

    / u01 / app / oracle / oradata / orcl / redo1b . rdo

 

    -- 查看控制文件

    SQL > select name from v$controlfile ;

 

    NAME

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

    / u01 / app / oracle / oradata / orcl / control01 . ctl

    / u01 / app / oracle / oradata / orcl / control02 . ctl

 

    -- 创建备份目录

    SQL > ho mkdir / u01 / app / oracle / coolbak

   

    -- 使用连接符生成复制文件命令

    SQL > select 'ho cp ' || name || ' /u01/app/oracle/coolbak' from v$controlfile ;

 

    'HOCP' || NAME|| '/U01/APP/ORACLE/COOLBAK'

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

    ho cp / u01 / app / oracle / oradata / orcl / control01 . ctl / u01 / app / oracle / coolbak

    ho cp / u01 / app / oracle / oradata / orcl / control02 . ctl / u01 / app / oracle / coolbak

 

    SQL > save / tmp / tmpbak . sql ;    -- 将上面的输入保存为 tmpbak.sql

    Created file / tmp / tmpbak . sql

 

    SQL > ho vim / tmp / tmpbak . sql    -- 编辑 tmpbak.sql, 将下面的内容输入到 tmpbak.sql

 

    set feedback off

    set heading off

    set verify off

    set trimspool off

    set pagesize 0

    set linesize 200

    define dir = '/u01/app/oracle/coolbak'

    define script = '/tmp/coolbak.sql'

    spool & script

    select 'ho cp ' || name || ' &dir' from v$controlfile

    union all

    select 'ho cp ' || name || ' &dir' from v$datafile

    union all

    select 'ho cp ' || member || ' &dir'   from v$logfile

    union all

    select 'ho cp ' || name || ' &dir' from v$tempfile

    /

    create pfile = '&dir/initorcl.ora' from spfile ;

    ho cp / u01 / app / oracle / 10g / dbs / orapworcl & dir

    spool off

    shutdown immediate

    start & script

    ho rm & script

    startup

 

    -- 执行 tmpbak.sql

    SQL > @/tmp / tmpbak . sql ;

 

    -- 执行过程及数据库启动略

       

    -- 启动后查看备份的文件

    SQL > ho ls / u01 / app / oracle / coolbak

    control01 . ctl   orapworcl    redo2b . rdo     system01 . dbf    users01 . dbf

    control02 . ctl   redo1a . rdo   redo3a . rdo     tbs1_1 . dbf

    example01 . dbf   redo1b . rdo   redo3b . rdo     tbs1_2 . dbf

    initorcl . ora    redo2a . rdo   sysaux01 . dbf   undotbs01 . dbf

 

四、总结

    优点

        冷备模式下概念易于理解,即将需要备份的文件复制到安全的位置

        操作比较简单,不需要太多的干预

        容易恢复到某个时间点上 ( 只需将文件再拷贝回去 )

        能与归档方法相结合,作数据库 最新状态 的恢复。

    缺点

        备份时,数据库必须处于一致性关闭状态

        只能提供到某一时间点的恢复

        备份时速度比较慢,尤其是数据量大性能影响比较大

        不能实现基于表和用户级别的数据恢复

 

五、更多参考

 

  Oracle 备份恢复概念

 

SPFILE 错误导致数据库无法启动

 

Managing Archived Redo Logs

 

Oracle 用户、对象权限、系统权限

 

Oracle 角色、配置文件

 

  Oracle 联机重做日志文件(ONLINE LOG FILE)

 

  Oracle 控制文件(CONTROLFILE)

 

  Oracle 表空间与数据文件

 

Oracle 归档日志

 

Oracle 冷备份


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论