教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

oracle学习之冷备份

时间:2017-07-11 来源:

  一、冷备份

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

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

  二、步骤

  首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库(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

  四、总结

  优点

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

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

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

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

  缺点

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

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

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

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

  (本文来自网络,如有侵权请来信告知,本站将在第一时间删除。)

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院