Chinaunix首页 | 论坛 | 博客
  • 博客访问: 226673
  • 博文数量: 26
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-15 16:11
文章分类

全部博文(26)

文章存档

2014年(1)

2013年(2)

2012年(1)

2011年(1)

2010年(2)

2009年(11)

2008年(3)

2006年(3)

2005年(2)

我的朋友

分类: Oracle

2009-08-21 17:12:41

1. 环境... 2

2、准备工作... 2

2.1 HOSTB主机准备... 2

2.2 BAKSERV准备... 2

2.3 配置HOSTB主机... 2

2.3.1 拷贝bp.conf文件... 3

2.3.2 创建Oracle启动参数文件... 3

2.3.3 修改Oracle启动参数文件... 3

2.3.4 创建目录... 4

2.3.5 生成口令文件... 4

3.恢复... 4

3.1 恢复控制文件... 4

3.1.1 取得HOSTA主机dbid. 4

3.1.2 启动数据库到nomount状态... 5

3.1.3 登录RMAN,执行恢复... 5

3.2 恢复数据库... 5

3.2.1 将数据库转换到mount状态... 5

3.2.2 恢复完整数据库... 5

3.2.3 启动数据库... 5

3.3 其他文件的恢复... 5

3.3.1 恢复归档日志... 5

3.3.2 恢复时跳过某些表空间... 6

4. 注意事项... 6

4.1 主机名问题... 6

4.2 HOSTB配置文件问题... 6

 

 


目的:测试备份数据是否完整可用。

环境

异机恢复涉及3oracle服务器,说明如下:

1.1 主机说明

主机名

SID

说明

操作系统

IP

Oracle版本

BAKSERV

catalog

执行NBU备份任务的备份服务器

RH AS 4U5

192.168.10.2

10.2.0.1

HOSTA

test

源主机

RH AS 3U6

192.168.10.3

10.2.0.1

HOSTB

test

执行恢复任务的主机

RH AS 4U5

192.168.10.200

10.2.0.1

注:操作系统版本可以不一致(建议一致),但数据库版本必须一致

HOSTARMAN方式通过NBU软件将数据库每天作全备份到带库上,为了检查备份数据是否可用,我们在HOSTB上恢复数据。

 

、准备工作

主机准备

在该主机上安装Oracle10.2.0.1Veritas NBU 6.0 ClientVeritas NBU 6.0 agent for oracle

建立到BAKSERVtnsname连接,以oracle用户登录操作如下:

$vi ORACLE_HOME/network/admin/tnsnames.ora),添加

CATALOG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = catalog)

    )

  )

 

准备

将该主机配置为允许重定向恢复(即允许异机恢复)。以root用户登录:

#su – root

#mkdir –p /usr/openv/netbackup/db/altnames/

#cd /usr/openv/netbackup/db/altnames/

#touch No.Restrictions

 

配置HOSTB主机

以下操作除特殊说明外,均以oracle用户执行。

 

2.3.1 拷贝bp.conf文件

cp /usr/openv/netbackup/bp.conf  $ORACLE_HOME/

 

2.3.2 创建Oracle启动参数文件

$ORACLE_HOME/dbs下生成inittest.ora文件,有2种方法可以实现:

1)复制HOSTA主机上$ORACLE_HOME/dbs目录下的inittest.ora文件到HOSTB主机的$ORACLE_HOME/dbs目录下;

HOSTA主机上无inittest.ora文件,可用以下方法生成。在HOSTA上,以sqlplus登录数据库,执行:

SQL> create pfile from spfile;

然后将文件复制到HOSTB

2)在HOSTB主机上新建文件inittest.ora

$touch $ORACLE_HOME/dbs/inittest.ora

HOSTA主机上执行:

cat $ORACLE_HOME/dbs/spfiletest.ora

将显示的文件内容复制并粘贴到HOSTB主机的$ORACLE_HOME/dbs/inittest.ora文件中。

 

2.3.3 修改Oracle启动参数文件

由于HOSTAHOSTB的内存容量可能不同,所以需要根据HOSTB主机的内存大小修改inittest.ora文件。红色字体部分是需要修改的部分。如果不知道这几个参数的值应该配置为多大,可以找一台与HOSTB内存大小一样并安装了ORACLE的主机参考。

如果HOSTAHOSTB内存大小一样,可以不做修改。

*.audit_file_dest='/u01/app/oracle/admin/test/adump'

*.background_dump_dest='/u01/app/oracle/admin/test/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u02/oracle/oradata/test/control01.ctl','/u02/oracle/oradata/test/control02.ctl','/u02/oracle/oradata/test/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/test/cdump'

*.db_block_size=8192

*.db_cache_size=88080384

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='test'

*.db_recovery_file_dest='/u03/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=31457280000

*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'

*.java_pool_size=4194304

*.job_queue_processes=10

*.large_pool_size=4194304

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=300

*.pga_aggregate_target=209715200

*.processes=1000

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=1105

*.shared_pool_size=142729625

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/test/udump'

 

2.3.4 创建目录

根据上述配置文件中蓝色字体所显示的路径,创建目录

root用户登录,执行

mkdir -p  /u01/app/oracle/admin/test/adump

mkdir -p  /u01/app/oracle/admin/test/bdump

mkdir -p  /u01/app/oracle/admin/test/cdump

mkdir -p  /u01/app/oracle/admin/test/dpdump

mkdir -p  /u01/app/oracle/admin/test/udump

mkdir -p  /u02/oracle/oradata/test     

mkdir -p  /u03/oracle/flash_recovery_area

chown -R oracle:oinstall /u01 /u02 /u03

 

2.3.5 生成口令文件

orapwd file=/u01/app/oracle/product/10.2.0/dbs/orapwtest password=oracle

 

恢复

(除特别说明外,以下操作在HOSTB上以oracle用户执行)

恢复控制文件

3.1.1 取得HOSTA主机dbid

HOSTAsqlplus下执行命令,获得dbid1351878041

SQL> select dbid from v$database;

       DBID

----------

1351878041

 

3.1.2 启动数据库到nomount状态

$ sqlplus '/as sysdba'

SQL> startup nomount

 

3.1.3 登录RMAN,执行恢复

export ORACLE_sid=test                       

export NB_ORA_CLIENT=HOSTA               (指定源主机)

$rman catalog rman/rman@catalog target /

RMAN>

set dbid=1351878041

RMAN> RUN {

2>       ALLOCATE CHANNEL CH00 TYPE ' SBT_TAPE ';

3>       SEND  'NB_ORA_SERV=BAKSERV,NB_ORA_CLIENT=HostA';

4>       RESTORE CONTROLFILE;

5>       RELEASE CHANNEL  CH00;

6>       }

 

 

恢复完成后,在/u02/oracle/oradata/test/目录下查看应该有3个控制文件被恢复。

 

恢复数据库

3.2.1 将数据库转换到mount状态

RMAN> alter database mount;

 

3.2.2 恢复完整数据库

RMAN > run {

ALLOCATE CHANNEL CH00 TYPE 'SBT_TAPE';

SEND 'NB_ORA_SERV=BAKSERV, NB_ORA_CLIENT=HOSTA';

restore database;

}

完成后执行(也可以不操作,因为我们没有恢复归档日志)

$ sqlplus '/as sysdba'

SQL > recover database until cancel;

选择AUTO

然后出现提示找不到归档日志,完成。

 

3.2.3 启动数据库

SQL > alter database open resetlogs;

 

至此,数据库的恢复工作已经完成。

 

其他文件的恢复

3.3.1 恢复归档日志

如果HOSTA每天作全备份,归档日志可以不用恢复。如果需要恢复,参考以下方法:

RMAN > run {

ALLOCATE CHANNEL CH02 TYPE 'SBT_TAPE';

SEND 'NB_ORA_SERV=BAKSERV, NB_ORA_CLIENT=HOSTA';

RESTORE ARCHIVELOG FROM SEQUENCE 90 thread 1 UNTIL SEQUENCE 91;

RELEASE CHANNEL CH02;

}

完成后执行

$ sqlplus '/as sysdba'

SQL > recover database until cancel;

选择AUTO

然后出现提示找不到归档日志,完成。

启动数据库

SQL > alter database open resetlogs;

注:

1. 若执行该命令时报错:

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: '/u02/oracle/oradata/mingya/system01.dbf'

解决方法参考:“异机恢复后ORA-01152错误解决”。

2. 另外,如果HOSTB恢复成功后导致HOSTA在执行备份时出现:ORA-19625错误。

可参考:“异机恢复后ORA-01152错误解决”。

 

至此,数据库的恢复工作已经完成。

 

3.2.4 更换DBID

此时的数据库dbid与原数据库是一样的,因此,为了让RMAN区别这两个数据库,需要更改恢复出来的数据库dbid

首先,关闭数据库,再启动到mount状态。

$ sqlplus '/as sysdba'

SQL> shutdown immediate;

SQL> startup mount;

然后执行修改命令:

$ nid target=sys       ;执行命令后,数据库将自动关闭。

启动数据库:

$sqlplus '/as sysdba'

SQL> startup mount;

SQL> alter database open resetlogs;

如果需要用RMAN管理的话,重新在RMAN中注册:

$rman target / catalog rman/rman@catalog

RMAN> register database;

 

3.3.2 恢复时跳过某些表空间

假设在恢复数据库时不想恢复SYSAUX表空间,参考以下方法:

RMAN > run {

ALLOCATE CHANNEL CH02 TYPE 'SBT_TAPE';

SEND 'NB_ORA_SERV=BAKSERV, NB_ORA_CLIENT=HOSTA';

RESTORE DATABASE SKIP TABLESPACE SYSAUX;

RECOVER DATABASE SKIP FOREVER TABLESPACE SYSAUX;

RELEASE CHANNEL CH02;

}

 

其他更多的恢复方法,可以参考RMAN操作手册。

 

注意事项

主机名问题

3台主机上配置/etc/hosts文件时,主机名必须和实际主机名完全一致,特别要注意大小写!否则执行备份和恢复操作时,将报错。

 

配置文件问题

HOSTB主机的inittest.ora文件必须按照实际内存大小修改参数,否则数据库启动时可能报错。例如:

ORA-00371: not enough shared pool memory, should be atleast 142729625 bytes

启动时遇到错误:内存设置的太小,修改initmingya.ora后再启动

 

4.3 HOSTB数据库文件目录

2.3.4中,我们在HOSTB中创建的目录完全依据HOSTA已有的Oracle目录结构。如果你不知道HOSTA的目录结构,可以在2.3.4这一步中在HOSTB主机自定义(adumpbdump等等)的目录,然后将2.3.3中配置文件的路径(蓝色字体)修改为你自定义的路径即可。

 

4.4 关于dbid

数据库启动到nomount状态下时,rman无法取得数据库的dbidrman将无法判断恢复目的地主机的数据库是那个。将报错:RMAN-20005: target database name is ambiguous。所以需要设置dbid

数据库如果启动到mount状态,就不必设置这个参数了。因为启动到mount,已经加载了控制文件,而dbid参数是保存在控制文件中的。

阅读(5765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~