zoukankan      html  css  js  c++  java
  • oracle 命令4 热备份

    热备份:
    不停数据库,一定范围内(内存写满后,用户操作挂起),不影响用户使用。
    数据库开着,时刻变化,因此热备份通过以下手段保持一致性:
    1、开启归档
    2、备份前,通知数据库,把文件锁定,在备份未完成前,不操作这个数据文件(不写脏块)

    备份数据文件:
    SQL> conn / as sysdba
    SQL> alter database begin backup; #数据库所有的数据文件SCN就会固定,DBW进程不会写脏块,即使内存不够用,会让用户等待。如果备份需要几个小时,日志很快就会写满。日志很快就会切换,不归档日志,就会造成数据丢失。所以要开归档,并锁定数据文件,在备份复制。
    SQL> @check
    SQL> !cp -v /data/oracle/oradata/orcl/*.dbf /u02/hotbak #复制数据文件
    SQL>alter database end backup; #备份完了,及时告诉数据库,数据文件不再锁定,这样DBW进程就可以写脏块,清理内存空间了。

    备份控制文件;
    控制文件在使用时,是一直在变化的,记录最新的SCN。
    热备时,因为控制文件有两个,会先锁定一个进行备份,有专用的命令,不能直接复制;
    # chown -R oracle:oinstall /u02
    # ls -l
    drwxr-xr-x. 4 oracle oinstall 32 Nov 15 21:31 u02
    # cd /u02/hotbak
    SQL> alter database backup controlfile to '/u02/hotbak/control.bak'; # 用二进制方式备份,如源文件9.3M,备份后也是9.3M
    Database altered.
    SQL>
    还有一种方式
    SQL> alter database backup controlfile to trace as '/u02/hotbak/control.trace'; # 用文本方式备份,cat查看会发现里面是一些脚本,当控制文件丢失,会用这些脚本把控制文件创建出来,源文件9.3M,备份后可能就只有 6.1K。
    Database altered.
    SQL>

    备份日志:
    SQL> alter system switch logfile;
    System altered.
    SQL>
    一般不备份,而是执行日志切换,一旦日志切换,就会自动以归档的方式备份日子。

    可编写热备份脚本:
    # su - oracle
    # vi hotbak.sh
    # cat hotbak.sh
    sqlplus / as sysdba << eof
    alter database begin backup;
    !cp -v /data/oracle/oradata/orcl/*.dbf /u02/hotbak
    alter database end backup;
    alter database backup controlfile to '/u02/hotback/control.bak' reuser;
    alter database backup controlfile to trace as '/u02/hotbak/control.trace' reuser;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    alter system switch logfile;
    exit
    eof
    $chmod u+x hotbak.sh #u代表所有者,x代表执行权限。 + 表示增加权限,chmod u+x file.sh 就表示对file.sh文件的所有者增加可执行权限.
    $./hotbak.sh
    备注:
    备份控制文件,两个命令都可以,不放心可以两个命令都执行,用二进制方式和文本方式备份,恢复时,想用哪个就用哪个。 加resuer是覆盖的意思,如果不加,如果目录下有相同名称的文件,会提示报错,不能备份。
    备份日志文件,有几组日志文件,就执行N+1次,此处有3组,所以就执行4次。

  • 相关阅读:
    Java线程池
    代理模式
    Bean的加载
    Spring的启动流程
    MFC编程入门之二十七(常用控件:图片控件PictureControl)
    MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)
    MFC编程入门之二十五(常用控件:组合框控件ComboBox)
    MFC编程入门之二十四(常用控件:列表框控件ListBox)
    MFC编程入门之二十三(常用控件:按钮控件的编程实例)
    MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
  • 原文地址:https://www.cnblogs.com/lei2017/p/7841210.html
Copyright © 2011-2022 走看看