设为首页 收藏本站
查看: 658|回复: 0

[经验分享] Oracle中热备份

[复制链接]

尚未签到

发表于 2018-9-12 12:03:51 | 显示全部楼层 |阅读模式
  1.热备份介绍
  热备份是在数据库已启动且正在运行时进行的备份。在某个时间点,可以对整个数据库进行备份,也可以只备份表空间或数据文件的一个子集。在执行热备份时,最终用户可以继续进行他们的所有正常操作。为此,数据库必须运行在归档日志模式。
  2.利用SQL*Plus进行数据库热备份的操作步骤如下
  1)用数据库管理员帐号登录Oracle
  SQL> conn sys/oracle as sysdba;
  2)设置数据库为归档模式。热备份只能在数据库处于归档模式才可以使用,因此,进行热备份前要确认数据库已经处于归档模式。查询数据库归档模式可以使用如下语句:
  1)创建归档目录
  [oracle@myCentOS03 oracle]$ mkdir my_arch_backup
  [oracle@myCentOS03 oracle]$ pwd
  /u01/app/oracle
  2)设置数据库为归档模式
  SQL> alter system set log_archive_start=true scope=spfile;
  SQL> show parameter log_archive_start;
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  log_archive_start                    boolean     TRUE
  SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/my_arch_backup' scope=both;
  SQL> shutdown immediate;
  SQL> startup mount;
  SQL> alter database archivelog;
  查看当前数据库是否归档信息:
  SQL> archive log list;
  Database log mode              Archive Mode
  Automatic archival             Enabled
  Archive destination            /u01/app/oracle/my_arch_backup
  Oldest online log sequence     58
  Next log sequence to archive   60
  Current log sequence           60
  或者:
  SQL> select name,log_mode from v$database;
  NAME      LOG_MODE
  --------- ------------
  ORCL      ARCHIVELOG
  如果数据库处于非归档模式,需要先将数据库切换为归档模式,切换为归档模式过程如下:
  --关闭数据库
  shutdown immediate
  --启动数据库到mount状态
  startup mount
  --更改数据库为归档模式
  alter database archivelog;
  --打开数据库
  alter database open;
  --设置归档路径为本地系统的记录,可以设置10个,分别以log_archive_dest_n命名
  alter system set log_archive_dest_1=’LOCATION=保存路径’;
  3)备份控制文件
  控制文件记录了数据库的物理结构,通常数据库物理结构发生改变都要对控制文件进行备份。改变数据库物理结构的操作有添加、修改或删除表空间,添加或删除重做日志文件组等。
  备份控制文件有两种方法,一种是先将控制文件备份为二进制文件,再将二进制文件转储到备份磁盘;另一种是先将控制文件备份为文本文件(里面有创建控制文件的脚本),再将文本文件转储到备份磁盘。

  •   将控制文件备份为二进制文件,可以使用如下语句:
  SQL> alter database backup controlfile to '/u01/app/oracle/my_arch_backup/controlfile' reuse;

  •   将控制文件备份为文本文件,可以使用如下语句:
  SQL> alter database backup controlfile to trace as '/u01/app/oracle/my_arch_backup/control.trc' reuse;
  将控制文件备份为文本文件实际上是生成当前Oracle数据库控制文件创建语句,并将这些语句存放于user_dump_dest服务器初始化参数指定目录下的一个文件中。查看user_dump_dest参数值,可以使用如下语句:
  SQL> show parameter user_dump_dest;
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  user_dump_dest                       string      /u01/app/oracle/admin/orcl/udump
  4)备份数据文件
  备份数据文件以表空间为单位进行,首先查看当前数据库中有哪些表空间,每个表空间中分别有哪些数据文件。
  --查看数据库中表空间及包含文件:
  SQL> select tablespace_name,file_name from dba_data_files order by tablespace_name;
  TABLESPACE_NAME      FILE_NAME
  -------------------- --------------------------------------------------
  EXAMPLE              /u01/app/oracle/oradata/orcl/example01.dbf
  MY_UNDO              /u01/app/oracle/oradata/orcl/my_undo01.dbf
  SYSAUX               /u01/app/oracle/oradata/orcl/sysaux01.dbf
  SYSTEM               /u01/app/oracle/oradata/orcl/system01.dbf
  TEST01               /u01/app/oracle/oradata/orcl/test01.dbf
  UNDOTBS1             /u01/app/oracle/oradata/orcl/undotbs01.dbf
  USERS                /u01/app/oracle/oradata/orcl/users01.dbf
  7 rows selected.
  获悉数据库表空间信息后,就可以对每个表空间进行备份了
  --设置需要备份的表空间为备份状态,如users表空间
  SQL> alter tablespace users begin backup;
  --复制表空间的所有数据文件到备份磁盘
  [oracle@myCentOS03 oracle]$ cp /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/my_arch_backup/tablespace/user01.dbf
  --修改表空间结束备份
  SQL> alter tablespace users end backup;
  重复以上操作,直到备份完每一个表空间。
  5)归档当前的联机重做日志文件
  SQL>alter system archive log current;
  [oracle@myCentOS03 orcl]$ ls
  control01.ctl  example01.dbf  redo02.log    system01.dbf  undotbs01.dbf
  control02.ctl  my_undo01.dbf  redo03.log    temp01.dbf    users01.dbf
  control03.ctl  redo01.log     sysaux01.dbf  test01.dbf
  [oracle@myCentOS03 orcl]$ cp *.log /u01/app/oracle/my_arch_backup/
  当前联机重做日志文件归档,会将当前联机重做日志文件前还未归档的联机重做日志文件一同归档。数据库在归档模式下,可以同时指定多个归档路径,归档时每个归档路径下都会产生一个归档日志文件,这些日志文件互为备份。当然,用户也可以将这些归档日志文件转存于备份磁盘。
  6)备份初始化参数
  在操作系统中,可将Oracle数据库系统初始化参数文件复制到备份磁盘中。
  SQL> alter database begin backup;
  [oracle@myCentOS03 dbs]$ ls
  hc_orcl.dat  init.ora  orapworcl      spfileorcl.ora
  initdw.ora   lkORCL    pfileorcl.ora
  [oracle@myCentOS03 dbs]$ pwd
  /u01/app/oracle/db_1/dbs
  [oracle@myCentOS03 dbs]$ cp spfileorcl.ora /u01/app/oracle/my_arch_backup/
  7)备份密码文件
  [oracle@myCentOS03 dbs]$ ls
  hc_orcl.dat  init.ora  orapworcl      spfileorcl.ora
  initdw.ora   lkORCL    pfileorcl.ora
  [oracle@myCentOS03 dbs]$ pwd
  /u01/app/oracle/db_1/dbs
  [oracle@myCentOS03 dbs]$ cp orapworcl /u01/app/oracle/my_arch_backup/
  SQL> alter database end backup;
  8)查询v$backup以查看哪些数据文件是置于联机备份模式下的表空间的一部分:
  SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
  Session altered.
  SQL> select * from v$backup;
  FILE# STATUS                CHANGE# TIME
  ---------- ------------------ ---------- -------------------
  1 NOT ACTIVE            2002860 2014-03-11 05:44:09
  2 NOT ACTIVE            2002860 2014-03-11 05:44:09
  3 NOT ACTIVE            2002860 2014-03-11 05:44:09
  4 NOT ACTIVE            2002860 2014-03-11 05:44:09
  5 NOT ACTIVE            2002860 2014-03-11 05:44:09
  6 NOT ACTIVE            2002860 2014-03-11 05:44:09
  7 NOT ACTIVE            2002860 2014-03-11 05:44:09
  7 rows selected.
  查看当前系统时间:
  SQL> select sysdate from dual;
  SYSDATE
  -------------------
  2014-03-11 05:46:48
  查询USERS表空间对应的文件编号:
  SQL> select file_id from dba_data_files where tablespace_name='USERS';
  FILE_ID
  ----------
  4
  [oracle@myCentOS03 tablespace]$ ll
  -rw-r-----. 1 oracle oinstall  34086912 Mar 11 05:29 user01.dbf
  3.归档模式下数据库完全恢复
  归档模式下数据库完全恢复是在部分数据文件损坏时,利用热备份的数据文件替换损坏的数据文件,结合归档日志文件和联机重做日志文件中的日志记录,对未提交的事务回滚,恢复数据库到故障发生时刻的状态。数据库完全恢复的前提是归档日志文件、联机重做日志文件、控制文件都没有发生损坏。
  根据数据文件损坏的程度不同,数据库完全恢复可以分为数据库、表空间、数据文件恢复三个程度。数据库恢复主要用于数据库的所有文件或大部分都被破坏时;表空间恢复主要用于个别表空间中的数据文件发生破坏时;而数据文件恢复主要是针对一个表空间中的个别文件发生破坏时;数据库恢复只能在数据库装载但没有打开的情形下进行,而表空间和数据文件恢复可以在数据库装载或打开状态下进行,这样就不会影响其他正常表空间为用户提供数据服务。
  1)数据库完全恢复

  •   如果无法正常关闭数据库,应以终止方式关闭数据库
  shutdown abort

  •   在操作系统上利用备份的数据文件替换所有损坏的数据文件
  •   启动数据库到mount状态
      startup mount
  •   执行数据库恢复命令
      recover database;
  •   打开数据库
      alter database open;
  2)表空间完全恢复
  表空间完全恢复可以在数据库处于mount状态或在数据库打开状态下进行,mount状态下对表空间恢复步骤如下:

  •   如果无法正常关闭数据库,应以终止方式关闭数据库
      shutdown abort;
  •   在操作系统上利用备份的表空间数据文件替换表空间中所有损坏的数据文件
  •   启动数据库到装载状态
      startup mount;
  •   执行表空间恢复命令,如恢复uers表空间
      recover tablespace users;
  •   打开数据库
      alter database open;
  数据库处于打开状态下,表空间完全恢复操作步骤,如下:

  •   如果表空间数据文件损坏时数据库已经关闭,则启动数据库到装载状态
      startup mount;
  •   将损坏的数据文件设为脱机状态,如users01.dbf文件。
      alter database datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf’ offline;
  •   打开数据库
      alter database open;
  •   将损坏的数据文件所在的表空间脱机准备恢复
      alter tablespace users offline for recover;
  •   在操作系统上,利用备份的数据文件替换表空间中损坏的数据文件
  •   执行表空间恢复
      recover tablespace users;
  •   将表空间联机
      alter tablespace users online;
  (如果表空间数据文件损坏时数据库仍正常运行,可以直接从将损坏的表空间状态改为脱机准备恢复,之后向下进行)
  3)数据文件完全恢复
  数据文件完全恢复可以在数据库装载或打开状态下进行,数据库处于装载状态下的数据文件完全恢复步骤如下:

  •   如果无法正常关闭数据库,应以终止方式关闭数据库
      shutdown abort;
  •   在操作系统上利用备份的数据文件替换损坏的数据文件
  •   启动数据库到装载状态
      startup mount;
  •   执行数据文件恢复命令,如恢复users.dbf数据文件
      recover datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf’ ;
  •   打开数据库
      alter database open;
  数据库处于打开状态下,数据文件完全恢复步骤,如下:

  •   如果数据文件损坏时数据库已经关闭,则启动数据库到装载状态
      startup mount;
  •   将损坏的数据文件设为脱机状态,如users01.dbf文件
      alter database datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf’  offline;
  •   打开数据库
      alter database open;
  •   在操作系统上,利用备份的数据文件替换损坏的数据文件
  •   执行数据文件恢复
      recover datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf’ ;
  •   将数据文件联机
      alter database datafile ‘/u01/app/oracle/oradata/orcl/users01.dbf’  online;
  (如果数据文件损坏时数据库仍正常运行,则可以直接执行步骤2,4,5,6)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-573332-1-1.html 上篇帖子: Oracle中冷备份 下篇帖子: Oracle SYSAUX 表空间说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表