oracle 热备及恢复

 热备:

 在热备时,oracle会控制scn不发生变化,冻结块头。然后拷贝物理文件,之后解冻块头,然scn可以变化。

 

 

热备备份

 

首先确认是归档模式并且可用

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            +DATA/orcl/

Oldest online log sequence     5

Next log sequence to archive   7

Current log sequence           7

SQL>

手动切换日志确认是否切换成功

SQL> alter system switch logfile;

 

System altered.

 

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            +DATA/orcl/

Oldest online log sequence     6

Next log sequence to archive   8

Current log sequence          8

 8SQL>

 

如果不是归档模式,将数据库一致性关闭shutdown immediate; 启动到mount状态startup mount 然后开启归档模式 alter database archivelog

最后确认是否成功 archive log list

 

备份前的查询

 

SQL> show user

USER is "SYS"

当前库名

SQL> select name from v$database;

 

NAME

---------

ORCL

实例名

SQL> select instance_name from v$instance;

 

INSTANCE_NAME

----------------

orcl

当前所有数据文件及状态

  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

 

SQL>

查看数据文件位置

 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

 

临时文件位置

SQL> select name from v$tempfile;

 

NAME

--------------------------------------------------------------------------------

 /u01/app/oracle/oradata/orcl/temp01.dbf

SQL>

日志文件位置

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

 

6 rows selected.

 

SQL>

控制文件位置

SQL> select name from v$controlfile;

 

NAME

--------------------------------------------------------------------------------

  /u01/app/oracle/oradata/orcl/control01.ctl

    /u01/app/oracle/oradata/orcl/control02.ctl

 

SQL>

参数文件可以直接通过创建指定一个目录

SQL> create pfile='/u01/app/....'  from spfile;

 

密码文件位置

SQL> ho ls $ORACLE_HOME/dbs/orapw$ORACLE_SID

/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl

 

SQL>

 

 

冻结块头 进行数据库级别备份,然后创建完整备份脚本

 

冻结块头

SQL> alter database begin backup;           

创建备份存放路径

SQL> ho mkdir /u02/horcl

 

连接符生成备份数据文件命令

 

SQL> select 'ho cp '||name||' /u02/horcl' from v$datafile;

 

'HOCP'||NAME||'/U02/HORCL'

--------------------------------------------------------------------------------

ho cp  /u01/app/oracle/oradata/orcl/system01.dbf    /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/undotbs01.dbf   /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/sysaux01.dbf     /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/users01.dbf      /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/example01.dbf   /u02/horcl

拷贝命令直接执行

SQL> ho cp  /u01/app/oracle/oradata/orcl/system01.dbf    /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/undotbs01.dbf   /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/sysaux01.dbf     /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/users01.dbf      /u02/horcl

ho cp  /u01/app/oracle/oradata/orcl/example01.dbf   /u02/horcl

 

解冻块头

SQL> alter database end backup;              

备份控制文件

SQL> alter database backup controlfile to '/u02/horcl/control01.ctl';

备份参数文件

SQL> create pfile='/u02/horcl/initorcl.ora' from spfile;

 

创建备份脚本

[oracle@yang ~]$ vi /u02/hotbak.sql            

spool /tmp/hot.sql

select 'ho cp '||name||' /u02/horcl' from v$datafile;

spool off

ho sed -n '/^ho cp/p' /tmp/hot.sql >/tmp/hotorcl.sql

alter database begin backup;

start /tmp/hotorcl.sql

alter database end backup;

ho rm /tmp/hot*.sql

alter database backup  controlfile to '/u02/horcl/control01.ctl';

create pfile='/u02/horcl/initorcl.ora' from spfile;

 

如果alter database begin backup; 执行失败可以以表空间形式备份

 

 

SQL> select tablespace_name,file_name from dba_data_files;

 

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------------------------

USERS

/u01/app/oracle/oradata/orcl/users01.dbf

SYSAUX

/u01/app/oracle/oradata/orcl/sysaux01.dbf

 

UNDOTBS1

/u01/app/oracle/oradata/orcl/undotbs01.dbf

 

 

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------------------------

SYSTEM

/u01/app/oracle/oradata/orcl/system01.dbf

 

EXAMPLE

/u01/app/oracle/oradata/orcl/example01.dbf

 

 

SQL>

示例:

SQL> alter tablespace  system begin backup;

SQL> ho cp /u01/app/oracle/oradata/orcl/system01.dbf  /u02/horcl/

SQL> alter tablespace  system end backup;

 

编写脚本

[oracle@yang ~]$ vi /u02/hotbak2.sql

set heading off

spool /tmp/hot.sql

select 'alter tablespace  '||tablespace_name||' begin backup; '||chr(10)||'ho cp '||file_name||' /u02/horcl'||chr(10)||'alter tablespace '||tablespace_name||' end backup;' from dba_data_files order by tablesoace_name;

spool off

start /tmp/hot.sql

ho rm /tmp/hot.sql

alter database backup  controlfile to '/u02/horcl/control01.ctl';

create pfile='/u02/horcl/initorcl.ora' from spfile;

 

~

 

最简单的还是RMAN热备

 

确认默认存放备份目录

SQL> show parameter db_rec

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string        /u01/app/oracle/flash_recover_area/

db_recovery_file_dest_size           big integer 2G

db_recycle_cache_size                big integer 0

SQL>

登录RMAN 进行全库热备

[oracle@yang ~]$ rman target /

 

Recovery Manager: Release 10.2.0.1.0 - Production on Mon May 12 02:33:15 2014

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

connected to target database: ORCL (DBID=1374419528)

 

RMAN> backup as copy database;  

 

使用上面命令会自动备份所有数据文件、spfilecontrolfile/u01/app/oracle/flash_recover_area/$ORACLE_SID/

 

 

 

热备恢复

控制文件全部丢失

只要有一个存在就不需要恢复,直接cp或者修改参数即可

 

 

SQL>startup          

ORA-00205 error in identifying control  file,check alter log for more info

 

首先确认文件是否丢失

SQL> show parameter control_

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time        integer     7

control_files                        string      /u01/app/oracle/oradata/orcl/

                                                 control01.ctl, /u01/app/oracle/

                                                 oradata/orcl/control02.ctl,

                                                 /u01/app/oracle/oradata/orcl/

                                                 Control03.ctl

SQL> ho ls /u01/app/oracle/oradata/orcl/control*

ls: /u01/app/oracle/oradata/orcl/control*: No such file or directory

 

还原控制文件

SQL> ho cp /u02/horcl/control01.ctl  /u01/app/oracle/oradata/orcl/control01.ctl 

SQL> ho cp /u02/horcl/control01.ctl  /u01/app/oracle/oradata/orcl/control02.ctl

SQL> ho cp /u02/horcl/control01.ctl  /u01/app/oracle/oradata/orcl/control03.ctl

将数据库启动到mount状态

SQL> alter database mount;

然后open数据库根据提示操作

SQL> alter database open;

ERROR at line 1

ORA-01589must use RESETLOGS or NORESETLOGS option for database open

一般情况下是需要进行介质恢复

SQL> recover database using backup controlfile;

 

SQL> Specify log:

auto                  ---自动查找需要的归档日志

如果未找到需要指定日志文件路径

SQL> recover database using backup controlfile;

 

SQL> Specify log:

/u01/app/oracle/oradata/orcl/redo01.log        --一次指定一个直到找到为止

/u01/app/oracle/oradata/orcl/redo02.log

/u01/app/oracle/oradata/orcl/redo03.log

 

恢复完成 resetlogs方式打开数据库

SQL> alter database open resetlogs;

 

完成之后记得重新全备

[oracle@yang ~]$ vi /u02/hotbak.sql

ho rm /u02/horcl/*             ---以前备份无效了,可以直接删除    

spool /tmp/hot.sql

select 'ho cp '||name||' /u02/horcl' from v$datafile;

spool off

ho sed -n '/^ho cp/p' /tmp/hot.sql >/tmp/hotorcl.sql

alter database begin backup;

start /tmp/hotorcl.sql

alter database end backup;

ho rm /tmp/hot*.sql

alter database backup  controlfile to '/u02/horcl/control01.ctl';

create pfile='/u02/horcl/initorcl.ora' from spfile;

 

数据文件丢失

分为:

1、可脱机文件 -------可以在线还原与恢复

2、不可脱机文件 ----需启动到mount状态还原恢复

 

 

1、可脱机文件丢失

SQL> select * from scott.dept;

select * from scott.dept;

                 *

ERROR at line 1:

ORA-01116:error in opening database file 4

ORA-01110: data file 4: ‘/u01/app/oracle/oradata/orcl/users01.dbf’     -----(users表空间丢失)

ORA-27041: unable to open file

 

首先查看数据文件的状态

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

 

     FILE# STATUS  ENABLED

---------- ------- ----------

         1 SYSTEM  READ WRITE

         2 ONLINE  READ WRITE

         3 ONLINE  READ WRITE

         4 ONLINE  READ WRITE

         5 ONLINE  READ WRITE

SQL>

将文件号为4的脱机在查看状态

SQL> alter database datafile 4 offline;

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

 

     FILE# STATUS  ENABLED

---------- ------- ----------

         1 SYSTEM   READ WRITE

         2 ONLINE   READ WRITE

         3 ONLINE   READ WRITE

         4 RECOVER  READ WRITE

         5 ONLINE   READ WRITE

RECOVER :说明此文件时不正常的需要恢复

SQL>

 

进行数据文件还原,将备份的数据文件拷贝到数据文件原路径

SQL> ho cp /u02/horcl/users01.dbf  /u01/app/oracle/oradata/orcl/users01.dbf

将数据文件联机查看是否需要media recover

SQL> alter database datafile 4 online;

ORA-01113 file 4 needs media recover

ORA-01110: data file 4: ‘/u01/app/oracle/oradata/orcl/users01.dbf’

恢复数据文件4

SQL> recover datafile 4;

最后将数据文件联机

SQL> alter database datafile 4 online;

确认是否恢复成功

 

SQL> select * from scott.dept;

 

    DEPTNO DNAME          LOC

---------- -------------- -------------

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

 

SQL>

2、不能脱机的数据文件丢失

 

删除系统表空间数据文件

SQL> ho rm /u01/app/oracle/oradata/orcl/system01.dbf

 

 

SQL> select tablespace_name,file_name from dba_data_files;

ERROR at line 1:

ORA-00604: error occurred at recursive SQL level 1

ORA-01116: error in opening database file 1

ORA-01110: data file 1: ‘/u01/app/oracle/oradata/orcl/system01.dbf’

ORA-27041: unable to open file

系统表空间是不能脱机的

SQL> alter database datafile 1 offline;

alter database datafile 1 offline

*

ERROR at line 1:

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

 

关闭数据库一致性关闭数据库是无效的

可以

SQL>shutdown abort

SQL>startup  mount

或者

SQL> startup force mount

将备份的数据文件拷贝到原数据文件路径

SQL> ho cp /u02/horcl/system01.dbf   /u01/app/oracle/oradata/orcl/system01.dbf

恢复数据文件1

SQL> recover datafile 1;

 

启动数据库到open阶段

SQL>alter database open;

验证

SQL> select tablespace_name,file_name from dba_data_files;

 

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------------------------

USERS

/u01/app/oracle/oradata/orcl/users01.dbf

SYSAUX

/u01/app/oracle/oradata/orcl/sysaux01.dbf

 

UNDOTBS1

/u01/app/oracle/oradata/orcl/undotbs01.dbf

 

 

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------------------------

SYSTEM

/u01/app/oracle/oradata/orcl/system01.dbf

 

EXAMPLE

/u01/app/oracle/oradata/orcl/example01.dbf

 

 

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

转载于:http://blog.itpub.net/29532781/viewspace-1174683/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值