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
 
四、总结
    优点
        冷备模式下概念易于理解,即将需要备份的文件复制到安全的位置
        操作比较简单,不需要太多的干预
        容易恢复到某个时间点上(只需将文件再拷贝回去)
        能与归档方法相结合,作数据库“最新状态”的恢复。
    缺点
        备份时,数据库必须处于一致性关闭状态
        只能提供到某一时间点的恢复
        备份时速度比较慢,尤其是数据量大性能影响比较大
        不能实现基于表和用户级别的数据恢复









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值