Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3396800
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: Oracle

2009-03-23 10:24:28

使用rman来创建standby,过程相当简单,主库无需停机。本次试验演示了利用Rman热备,然后restore来创建备库的过程。


1.试验环境
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production


2.确认主库处于归档模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination d:/oracle/ora92/RDBMS
Oldest online log sequence 79
Next log sequence to archive 81
Current log sequence 81

3.创建备库instance

windows平台利用oradim工具创建一个新的instance,unix/linux平台设置新的ORACLE_SID即可


4.准备好备库的参数文件
本次试验在同一个系统上建备库,要注意设置好DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数。另外

db_name设置为主库名,lock_name_space设置为备库名。主要的几个参数如下:
*.compatible='9.2.0.0.0'
*.control_files='d:/oracle/oradata/test/controlstandby.ctl'
*.background_dump_dest='d:/oracle/admin/test/bdump'
*.core_dump_dest='d:/oracle/admin/test/cdump'
*.user_dump_dest='d:/oracle/admin/test/udump'
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.db_name='ning'
*.lock_name_space='test'

*.db_file_name_convert='d:/oracle/oradata/ning','d:/oracle/oradata/test'
*.log_file_name_convert='d:/oracle/oradata/ning','d:/oracle/oradata/test'

*.fal_server=ning
*.fal_client=test
*.standby_archive_dest='location=d:/oracle/arch/test'
*.standby_file_management=auto

5.生成password file
c:/>orapwd file=d:/oracle/ora92/DATABASE/PWDtest.ORA password=pass

6.配置网络

配置主备库的listener.ora,tnsnames.ora。修改完lisner.ora后注意重启监听。

Listener.ora

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:oracleora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ning)
(ORACLE_HOME = d:oracleora92)
(SID_NAME = ning)
)
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = d:oracleora92)
(SID_NAME = test)
)
)

tnsnames.ora

ning =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ning)
)
)


test =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
)
(CONNECT_DATA =
(SID = test)
)
)

7.使用rman备份主库
c:/>rman target /

Recovery Manager: Release 9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: NING (DBID=1192138470)

RMAN> backup full format 'd:/backup.ora' database;

Starting backup at 21-NOV-06
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=15 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current SPFILE in backupset
including current controlfile in backupset
input datafile fno=00001 name=D:/ORACLE/ORADATA/NING/SYSTEM01.DBF
input datafile fno=00002 name=D:/ORACLE/ORADATA/NING/UNDOTBS01.DBF
input datafile fno=00004 name=D:/ORACLE/ORADATA/NING/EXAMPLE01.DBF
input datafile fno=00005 name=D:/ORACLE/ORADATA/NING/INDX01.DBF
input datafile fno=00007 name=D:/ORACLE/ORADATA/NING/USERS01.DBF
input datafile fno=00003 name=D:/ORACLE/ORADATA/NING/CWMLITE01.DBF
input datafile fno=00006 name=D:/ORACLE/ORADATA/NING/TOOLS01.DBF
input datafile fno=00008 name=D:/ORACLE/ORADATA/NING/TEST01.DBF
channel ORA_DISK_1: starting piece 1 at 21-NOV-06
channel ORA_DISK_1: finished piece 1 at 21-NOV-06
piece handle=D:/BACKUP.ORA comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:26
Finished backup at 21-NOV-06

8.生成备库控制文件
SQL> alter database create standby controlfile as
'd:/oracle/oradata/test/controlstandby.ctl';

9.启动备库到nomount状态
SQL> conn
as sysdba
Connected to an idle instance.

SQL> startup nomount pfile='d:/oracle/ora92/database/inittest.ora'
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes

10.将备库至于mount状态
SQL> alter database mount standby database;

Database altered.

如果参数文件的db_name和lock_name_space设置不正确,可能报以下错误:
ORA-01103: database name 'NING' in controlfile is not 'TEST'

如果没有password file,则报错:
ORA-01990: error opening password file 'd:/oracle/ora92/DATABASE/PWDtest.ORA'

11.利用rman恢复出备库
D:/Documents and Settings/haiyuan.ning>rman target

Recovery Manager: Release 9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: NING (DBID=1192138470)

RMAN> restore database;

Starting restore at 21-NOV-06

using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=14 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF
restoring datafile 00002 to D:/ORACLE/ORADATA/TEST/UNDOTBS01.DBF
restoring datafile 00003 to D:/ORACLE/ORADATA/TEST/CWMLITE01.DBF
restoring datafile 00004 to D:/ORACLE/ORADATA/TEST/EXAMPLE01.DBF
restoring datafile 00005 to D:/ORACLE/ORADATA/TEST/INDX01.DBF
restoring datafile 00006 to D:/ORACLE/ORADATA/TEST/TOOLS01.DBF
restoring datafile 00007 to D:/ORACLE/ORADATA/TEST/USERS01.DBF
restoring datafile 00008 to D:/ORACLE/ORADATA/TEST/TEST01.DBF
channel ORA_DISK_1: restored backup piece 1
piece handle=D:/BACKUP.ORA tag=TAG20061121T134050 params=NULL
channel ORA_DISK_1: restore complete
Finished restore at 21-NOV-06

12.修改主库的归档参数
SQL> alter system set log_archive_dest_1='location=d:/oracle/arch/ning';

System altered.

SQL> alter system set log_archive_dest_2='service=test';

System altered.

13.将备库置于自动恢复状态
SQL> conn
as sysdba
Connected.

SQL> recover managed standby database disconnect from session;
Media recovery complete.
SQL> alter database recover managed standby database disconnect from session;
alter database recover managed standby database disconnect from session
*
ERROR at line 1:
ORA-01153: an incompatible media recovery is active


SQL> alter database recover managed standby database finish;

Database altered.

SQL> alter database recover managed standby database disconnect from session;

Database altered.

14.在主库上执行检查

SQL> conn as sysdba
Connected.

SQL> select dest_name,status,error from v$archive_dest;

DEST_NAME STATUS ERROR
-------------------- -------- ------------------------------
LOG_ARCHIVE_DEST_1 VALID
LOG_ARCHIVE_DEST_2 VALID
LOG_ARCHIVE_DEST_3 INACTIVE
LOG_ARCHIVE_DEST_4 INACTIVE
LOG_ARCHIVE_DEST_5 INACTIVE
LOG_ARCHIVE_DEST_6 INACTIVE
LOG_ARCHIVE_DEST_7 INACTIVE
LOG_ARCHIVE_DEST_8 INACTIVE
LOG_ARCHIVE_DEST_9 INACTIVE
LOG_ARCHIVE_DEST_10 INACTIVE


SQL> select * from v$archive_gap;

no rows selected

SQL> select sequence# from v$log_history;

SEQUENCE#
----------
1
2
...
79
80

15.在备库上执行检查
SQL> conn
as sysdba
Connected.
SQL> select * from v$archive_gap;

no rows selected

SQL> select sequence# from v$log_history;

SEQUENCE#
----------
1
2
...
79
80

SQL> select sequence#,applied from v$archived_log;

SEQUENCE# APP
---------- ---
79 YES
80 YES

SQL> select process,status from v$managed_standby;

PROCESS STATUS
------- ------------
ARCH CONNECTED
ARCH CONNECTED
MRP0 WAIT_FOR_LOG
RFS RECEIVING

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