本文主要讨论使用rman工具,在线在同一台主机系统中创建一个standby database,因为两个数据库的db_name都相同,需要修改db_unique_name参数,否则在启动standby db实例的时候将会报错是失败.
本文讨论的是在同一台主机上使用rman创建standby db,如果您想了解如何在两台主机之间创建standby db的内容,请参看博客文章"使用RMAN在线创建DataGuard备用库(数据文件不同路径结构)",网址: http://djb1008.itpub.net/post/42280/505142;
[@more@]
一. 基本情况
[root@ocmdb1 ~]# uname -a
Linux ocmdb1 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
[root@ocmdb1 ~]# hostname
ocmdb1
[root@ocmdb1 ~]# more /etc/hosts
192.168.182.129 ocmdb1
SQL> select * from v$version where rownum<2;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
DB_NAME=gridctl
PRIMARY INSTANCE SID=gridctl
STANDBY INSTANCE SID=gridctl2
主库数据文件目录 /oracle/oradata/gridctl
备库数据文件目录 /oracle/oradata/gridctl2
二. 环境及参数设置
$export ORACLE_SID=gridctl
$sqlplus / as sysdba
SQL>show parameter log_archive_dest_1
log_archive_dest_1 string LOCATION=/oracle/archivelog/primary
SQL>show parameter log_archive_dest_2
log_archive_dest_2 string service=standby mandatory reopen=60
SQL>show parameter standby_archive_dest
standby_archive_dest string /oracle/archivelog/standby
SQL>create pfile from spfile;
$export ORACLE_SID=gridctl2
$cd $ORACLE_HOME/dbs
$cp initgridctl.ora initgridctl2.ora
$cd /oracle/admin
$mkdir gridctl2
$cd gridctl2
$mkdir adump bdump cdump udump
编辑$ORACLE_HOME/dbs/initgridctl2.ora,主要是修改dump文件的目录,control_file参数;增加几个参数设置(db_file_name_convert,log_file_name_convert,standby_file_management,db_unique_name)
$cat $ORACLE_HOME/dbs/initgridctl2.ora
*.audit_file_dest='/oracle/admin/gridctl2/adump'
*.background_dump_dest='/oracle/admin/gridctl2/bdump'
*.control_files='/oracle/oradata/gridctl2/std_control1.dbf','/oracle/oradata/gridctl2/std_control2.dbf'#Restore Controlfile
*.core_dump_dest='/oracle/admin/gridctl2/cdump'
*.db_create_file_dest='/oracle/oradata/gridctl2'
*.db_file_name_convert='/oracle/oradata/gridctl/','/oracle/oradata/gridctl2/'
*.db_name='gridctl'
*.db_unique_name='gridctl2'
*.log_archive_dest_1='LOCATION=/oracle/archivelog/standby'
*.log_file_name_convert='/oracle/oradata/gridctl/','/oracle/oradata/gridctl2/'
*.standby_archive_dest='/oracle/archivelog/primary'
*.standby_file_management='AUTO'
*.user_dump_dest='/oracle/admin/gridctl2/udump'
。。。。。。
创建备库的密码文件
$orapwd file=$ORACLE_HOME/dbs/orapwgridctl2 password=passofsys entries=5
启动备库到nomount状态
$sqlplus / as sysdba
SQL>startup nomount
SQL>create spfile from pfile;
SQL>shutdown immediate;
SQL>startup nomount;
SQL>exit
编辑$ORACLE_HOME/network/admin/listener.ora文件,将备库实例静态注册到监听器。
$more $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = gridctl)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(SID_NAME = gridctl)
)
(SID_DESC =
(GLOBAL_DBNAME = gridctl2)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(SID_NAME = gridctl2)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ocmdb1)(PORT = 1521))
)
启动监听器
$lsnrctl start
编辑$ORACLE_HOME/network/admin/tnsnames.ora,添加备库的连接定义。
$more $ORACLE_HOME/network/admin/tnsnames.ora
primary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.182.129)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =gridctl)
)
)
standby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.182.129)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =gridctl2)
)
)
三. 使用rman进行备份与创建standby_db
使用rman对主库进行备份
$rman target /
RMAN>run{
Allocate channel d1 type disk;
Backup full database format '/oracle/oradata/db_%U.bak'
Plus archivelog format '/oracle/oradata/arc_%U.bak';
Sql 'alter system archive log current';
Release channel d1;}
RMAN>exit
$rman target / auxiliary sys/passofsys@standby
RMAN>run{
Duplicate target database for standby;}
RMAN>exit
$export ORACLE_SID=gridctl2
$sqlplus / as sysdba
SQL>select open_mode,database_role from v$database;
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
------------------------------ ------------------------------------------------
MOUNTED PHYSICAL STANDBY
SQL>alter database recover managed standby database disconnect from session;
SQL>exit
$export ORACLE_SID=gridctl
$sqlplus / as sysdba
SQL>alter system switch logfile;
SQL>exit
$tail -f /oracle/admin/gridctl2/bdump/alert_gridctl2.log
Fri Sep 10 12:27:57 2010
Media Recovery Log /oracle/archivelog/primary/1_62_725144026.dbf
Media Recovery Waiting for thread 1 sequence 63
在一个主机上就存在两个数据库实例,一个是主库,一个是备库;关于主库与备库的切换操作,请参看文章“
Step By Step Configure DataGuard (10g) Physical Standby Database On Linux X86_64(2/2)”,网址为:http://djb1008.itpub.net/post/42280/504948。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/32980/viewspace-1038160/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/32980/viewspace-1038160/