1. 首页
  2. IT资讯

Oracle冷备份及其恢复(含恢复到非原来位置方法)

原文地址:https://www.cnblogs.com/zydev/p/6170352.html

一、 冷备份的概念

    冷备份是指在数据库关闭状态下所做的物理拷贝,也称脱机备份。

    适合于非归档模式下的备份,而且也只能采用这种方式备份。

二、 需要备份的文件

    必须备份的文件:

      数据文件和控制文件

     可以备份的文件:

      重做日志文件、临时文件、二进制参数文件(spfile)、口令文件

        

三、 冷备份的步骤

    1. 找到所需要的备份文件

    2. 正常关闭数据库

    3. 备份文件到指定的备份路径下

    4. 重新启动数据库

 

四、 冷脚本的写法

4.1 查看文件位置及状态

  查看实例和数据库的相关信息     

SQL> select instance_name,version,status,archiver,database_status from v$instance;

INSTANCE_NAME VERSION STATUS ARCHIVE DATABASE_STATUS

—————- —————– ———— ——- —————–

dbsrv1 11.2.0.1.0 OPEN STOPPED ACTIVE

SQL> select dbid,name,log_mode from v$database;

DBID NAME LOG_MODE

———- ——— ————

294555525 DBSRV1 NOARCHIVELOG

  查看数据文件及状态信息

SQL> col file_name for a50

SQL> col tablespace_name for a15

SQL> select file_name,tablespace_name,status,online_status from dba_data_files;

FILE_NAME            TABLESPACE_NAME STATUS ONLINE_

————————————————– ————— ——— ——-

/opt/oracle/app/oradata/dbsrv1/users01.dbf      USERS   AVAILABLE ONLINE

/opt/oracle/app/oradata/dbsrv1/undotbs01.dbf     UNDOTBS1 AVAILABLE ONLINE

/opt/oracle/app/oradata/dbsrv1/sysaux01.dbf   SYSAUX  AVAILABLE ONLINE

/opt/oracle/app/oradata/dbsrv1/system01.dbf   SYSTEM  AVAILABLE SYSTEM

/opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf COSTCTL_TBS AVAILABLE ONLINE

/opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF DEV_DATA AVAILABLE ONLINE

/opt/oracle/app/oradata/pdms/PDMS_DATA.dbf PDMS_DATA AVAILABLE ONLINE

说明: 复制代码

  查看数据文件

说明: 复制代码

SQL> col name for a50

SQL> select file#, name, status from v$datafile;

FILE# NAME             STATUS

———- ————————————————– ——-

1 /opt/oracle/app/oradata/dbsrv1/system01.dbf SYSTEM

2 /opt/oracle/app/oradata/dbsrv1/sysaux01.dbf ONLINE

3 /opt/oracle/app/oradata/dbsrv1/undotbs01.dbf ONLINE

4 /opt/oracle/app/oradata/dbsrv1/users01.dbf ONLINE

5 /opt/oracle/app/oradata/costctl/COSTCTL_TBS.dbf ONLINE

6 /opt/oracle/app/oradata/dbsrv1/DEV_DATA.DBF ONLINE

7 /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf ONLINE

说明: 复制代码

  查看临时文件

说明: 复制代码

SQL> col name for a60

SQL> select name from v$tempfile;

NAME

————————————————————

/opt/oracle/app/oradata/dbsrv1/temp01.dbf

/opt/oracle/app/oradata/costctl/COSTCTL_TBS_temp.dbf

/opt/oracle/app/oradata/pdms/PDMS_DATA_TEMP.dbf

说明: 复制代码

  查看日志文件

说明: 复制代码

SQL> select member from v$logfile;

MEMBER

————————————————–

/opt/oracle/app/oradata/dbsrv1/redo03.log

/opt/oracle/app/oradata/dbsrv1/redo02.log

/opt/oracle/app/oradata/dbsrv1/redo01.log

说明: 复制代码

  查看控制文件

SQL> select name from v$controlfile;

NAME

————————————————————

/opt/oracle/app/oradata/dbsrv1/control01.ctl

/opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl

  查看参数文件

SQL> show parameter pfile

NAME TYPE     VALUE

———————————— ———- ——————————

spfile string /opt/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfiledbsrv1.ora

4.2 进行备份

方案一、

创建备份目录

SQL> ho mkdir p /u03/backup/coolbak

使用连接符生成复制文件命令

SQL> select ‘ho cp’ ||name|| ‘/u03/backup/coolbak’ from v$controlfile;

‘HOCP’||NAME||‘/U03/BACKUP/COOLBAK’

——————————————————————————–

ho cp/opt/oracle/app/oradata/dbsrv1/control01.ctl/u03/backup/coolbak

ho cp/opt/oracle/app/flash_recovery_area/dbsrv1/control02.ctl/u03/backup/coolbak

SQL> save /tmp/tmpbak.sql; 将上面的输入保存为tmpbak.sql

Created file /tmp/tmpbak.sql

编辑coolbak.sql

注意修改密码文件的位置和pfile的名字

说明: 复制代码

set feedback off

set heading off

set verify off

set trimspool off

set pagesize 0

set linesize 200

define dir = ‘/u03/backup/coolbak’

define script = ‘/u03/backup/coolbak.txt’

define passwd = ‘/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl’

spool &script

select ‘ho cp -pv ‘ || name || ‘ &dir’ from v$controlfile

union all

select ‘ho cp -pv ‘ || name || ‘ &dir’ from v$datafile

union all

select ‘ho cp -pv ‘ || member || ‘ &dir’ from v$logfile

union all

select ‘ho cp -pv ‘ || name || ‘ &dir’ from v$tempfile

/

create pfile = ‘&dir/initorcl.ora’ from spfile;

ho cp pv &passwd &dir

spool off

shutdown immediate

ho mkdir pv /u03/backup/coolbak

ho rm rf /u03/backup/coolbak/*

start &script

startup

说明: 复制代码

执行coolbak.sql

SQL>@/tmp/coolbak.sql;

执行过程及数据库启动略

启动后查看备份的文件

需要注意的是这种方式不利于恢复,得去寻找恢复的目录最好在cool后建立与数据库相同的目录。

冷恢复的步骤

脱机恢复到原来位置的步骤:

  1. 如果数据库没有关闭,需关闭数据库

  2. 将所有的备份数据文件和备份控制文件复制到数据库原来的位置

  3. 也可以将其它所有的备份文件复制到数据库原来的位置(该操作不是必须的)

  4. 重启数据库

 恢复成功后,数据库即恢复到上一次的备份,恢复所需要的时间就是复制文件所需要的时间。

脱机恢复到非原来位置的步骤:

  有时候储存数据文件的磁盘坏了,可能需要改变数据文件的恢复位置

  1. 将备份文件恢复到正常的磁盘上

  2. 将数据库加载为mount状态(startup mount

  3. alter database rename file ‘u01/xxx.DBF’ to’u02/xxx.DBF’ (u01磁盘损坏)

  4. alter database open

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29578568/viewspace-2151813/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/195250.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code