您的位置:首页 > 数据库 > Oracle

Oracle 冷备份

2010-08-05 20:43 260 查看
--======================

-- 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 归档日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: