|
我用虚拟机装了rac+ a Single Instance Physical Standby 已经配置成功了。并能进行自动的切换.我在这里就先贴一个.
一、系统的准备工作
1.对系统IP地址的规划
[oracle@rac2 dbs]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhosts
192.168.20.152 rac2 --RAC2主库
192.168.20.151 rac1 --RAC1主库
10.10.10.2 rac2-priv
10.10.10.1 rac1-priv
192.168.20.139 pri-rac --DATAGUARD的备用库
2.安装配置好ORACLE9I RAC的数据库和数据库软件能正常的启动和关闭数据库
INST_ID INSTANCE_NUMBER INSTANCE_NAME HOST_NAME STATUS
---------- --------------- ---------------- ------------ ------------
2 2 devdb2 rac2 OPEN
1 1 devdb1 rac1 OPEN
SQL> l
1* select inst_id,instance_number,instance_name,host_name,status from gv$instance
SQL> /
COMP_ID COMP_NAME VERSION STATUS
-------- ----------------------------------- ---------- -----------
CATALOG Oracle9i Catalog Views 9.2.0.4.0 VALID
CATPROC Oracle9i Packages and Types 9.2.0.4.0 VALID
OWM Oracle Workspace Manager 9.2.0.1.0 VALID
JAVAVM JServer JAVA Virtual Machine 9.2.0.4.0 VALID
XML Oracle XDK for Java 9.2.0.6.0 VALID
CATJAVA Oracle9i Java Packages 9.2.0.4.0 VALID
ORDIM Oracle interMedia 9.2.0.4.0 VALID
SDO Spatial 9.2.0.4.0 LOADED
CONTEXT Oracle Text 9.2.0.4.0 VALID
XDB Oracle XML Database 9.2.0.4.0 VALID
WK Oracle Ultra Search 9.2.0.4.0 VALID
COMP_ID COMP_NAME VERSION STATUS
-------- ----------------------------------- ---------- -----------
ODM Oracle Data Mining 9.2.0.1.0 LOADED
APS OLAP Analytic Workspace 9.2.0.4.0 LOADED
XOQ Oracle OLAP API 9.2.0.4.0 LOADED
AMD OLAP Catalog 9.2.0.4.0 VALID
RAC Oracle9i Real Application Clusters 9.2.0.4.0 VALID
16 rows selected.
SQL> l
1* select comp_id,comp_name,version,status from dba_registry
3.安装配置好备用库上的数据库软件和配置好数据库的环境变量这些文件
RAC1和RAC2上的环境变量
[oracle@rac2 dbs]$ cat /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
PATH=$PATH:$HOME/bin
#ORACLE_BASE 可以定位到盘阵上/data
export ORACLE_BASE=/home/oracle/product
export ORACLE_HOME=/home/oracle/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=devdb2
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.19
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="American_america.zhs16gbk"
# export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#export DISPLAY=:0
#export LANG=en_US
#export GDM_LANG= en_US
#export LC= en_US
#export PATH
export DBCA_RAW_CONFIG=/home/oracle/DBCA_RAW_CONFIG.txt
unset USERNAME
PRI-RAC备用库的环境变量
[oracle@pri-rac devdb]$ cat /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
PATH=$PATH:$HOME/bin
#ORACLE_BASE 可以定位到盘阵上/data
export ORACLE_BASE=/home/oracle/product
export ORACLE_HOME=/home/oracle/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=devdb
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.19
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="American_america.zhs16gbk"
# export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#export DISPLAY=:0
#export LANG=en_US
#export GDM_LANG= en_US
#export LC= en_US
#export PATH
export DBCA_RAW_CONFIG=/home/oracle/DBCA_RAW_CONFIG.txt
unset USERNAME
4.安装配置RAC1,RAC2,PRI-RAC主机网络listener.ora文件和tnsnames.ora文件
在RAC1和RAC2上的listener.ora和tnsnames.ora文件
这个是RAC2的listener.ora文件内容
[oracle@rac2 admin]$ cat listener.ora
# LISTENER.ORA.RAC2 Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/listener.ora.rac2
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/product/9.2.0.4)
(PROGRAM = extproc)
)
(SID_DESC =
(ORACLE_HOME = /home/oracle/product/9.2.0.4)
(SID_NAME = devdb2)
)
)
这个是RAC1上的listener.ora文件内容
[oracle@rac1 admin]$ cat listener.ora
# LISTENER.ORA.RAC1 Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/listener.ora.rac1
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/product/9.2.0.4)
(PROGRAM = extproc)
)
(SID_DESC =
(ORACLE_HOME = /home/oracle/product/9.2.0.4)
(SID_NAME = devdb1)
)
)
这个是RAC2的 tnsnames.ora文件内容
[oracle@rac2 admin]$ cat tnsnames.ora
# TNSNAMES.ORA Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_DEVDB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
)
)
DEVDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = devdb)
(INSTANCE_NAME = devdb2)
)
)
DEVDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = devdb)
(INSTANCE_NAME = devdb1)
)
)
DEVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devdb)
)
)
LISTENERS_DEVDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)
LISTENER_DEVDB2 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.139)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = devdb)
)
)
这个两个TNS是我们主要使用的DEVDB是做为主库的。Standby是作为备用库的TNS
这个是RAC1上的TNSNAMES.ORA文件的内容
[oracle@rac1 admin]$ cat tnsnames.ora
# TNSNAMES.ORA Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_DEVDB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
)
)
DEVDB2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = devdb)
(INSTANCE_NAME = devdb2)
)
)
DEVDB1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = devdb)
(INSTANCE_NAME = devdb1)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.139)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = devdb)
)
)
DEVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devdb)
)
)
LISTENERS_DEVDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
)
LISTENER_DEVDB2 =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))
以上在配置好要进行相应的测试,也测试能否连同各个数据库
这个pri-rac备用库的listener.ora和tnsnames.ora文件内容
[oracle@pri-rac admin]$ cat listener.ora
# LISTENER.ORA Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.139)(PORT = 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = devdb)
(ORACLE_HOME = /home/oracle/product/9.2.0.4)
(SID_NAME = devdb)
)
)
以下是tnsname.ora文件内容
[oracle@pri-rac admin]$ cat tnsnames.ora
# TNSNAMES.ORA Network Configuration File: /home/oracle/product/9.2.0.4/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.139)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.139)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = devdb)
)
)
DEVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.151)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.152)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devdb)
)
)
以上在配置好要进行相应的测试,也测试能否连同各个数据库
5.安装和配置pri-rac上的参数文件initdevdb.ora文件
安装和配置pri-rac上的参数文件initdevdb.ora文件,并配置好相应的密码文件和dataguard的相关参数。
其实initdevdb.ora文件可以从RAC1或者RAC2的机器上COPY过来,然后再把带有RAC的项目去掉
$sqlpluc /nolog
SQL>conn / as sysdba
SQL>create pfile from spfile;
scp $ORACLE_HOME/dbs/initdevdb1.ora pri-ra:$ORACLE_HOME/dbs
再修改相应的的参数,以下是pri-rac上的initdevdb.ora文件内容:
[oracle@pri-rac dbs]$ cat initdevdb.ora
*.aq_tm_processes=1
*.background_dump_dest='/home/oracle/product/admin/devdb/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/home/oracle/product/oradata/devdb/control01.ctl','/home/oracle/product/oradata/devdb/control02.ctl','/home/oracle/product/oradata/devdb/control03.ctl'
*.core_dump_dest='/home/oracle/product/admin/devdb/cdump'
*.db_block_size=8192
*.db_cache_size=33554432
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='devdb'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=devdbXDB)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='devdb'
*.java_pool_size=20971520
*.job_queue_processes=10
*.large_pool_size=33554432
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=33554432
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/product/admin/devdb/udump'
###########################################
# DATA GURAD 备用库的参数配置
###########################################
*.aq_tm_processes=1
#*.compatible='9.2.0.0.0'
*.log_archive_start=true
*.log_archive_dest_1='LOCATION=/home/oracle/archive/primary' --本地归档的归档日志位置
*.log_archive_dest_2='service=devdb mandatory reopen=60' --传输到备用库上的归档日志位置
*.log_archive_format='%t_%s.dbf'
*.db_file_name_convert='/home/oracle/product/oradata/devdb/','/home/oracle/product/oradata/devdb/'
*.log_file_name_convert='/home/oracle/product/oradata/devdb/','/home/oracle/product/oradata/devdb/'
*.utl_file_dir='/home/oracle'
*.standby_archive_dest='/home/oracle/archive/primary' --备用库上的归档日志目录
*.standby_file_management='AUTO'
*.fal_server='devdb'
*.fal_client='standby'
在这里一定要注意db_file_name_convert,log_file_name_convert参数的值配置,在RMAN恢复他的时候,要采用,如且一定要保证配置的正确。同时也要创建好相应的目录$ORACLE_BASE/admin/devdb/bdump cdump这些相应的目录,如果感觉难创建可以直接从RAC1或者RAC2上COPY过来,然后修改下alter_devdb.log文件,就OK了。
6.配置NFS在PRI-RAC上配置
修改pri-rac备库机器上的/etc/exports文件
[oracle@pri-rac dbs]$ cat /etc/exports
/home/oracle/product/backup *(async,rw)
添加此行。
启动portmap service portmap start
启动NFS service NFS start
[root@pri-rac ~]# service nfs restart
关闭 NFS mountd:[失败]
关闭 NFS 守护进程:[失败]
关闭 NFS quotas:[失败]
关闭 NFS 服务: [失败]
启动 NFS 服务: [ 确定 ]
关掉 NFS 配额:[ 确定 ]
启动 NFS 守护进程:[ 确定 ]
启动 NFS mountd:[ 确定 ]
在RAC1和RAC2的机器上分别挂载上此目录
[root@rac2 bin]# mount -t nfs -o rw,noac,hard,timeo=600,wsize=32768,rsize=32768,vers=3,proto=tcp 192.168.20.139:/home/oracle/product/backup /home/oracle/product/backup
[root@rac2 bin]# df -h
Filesystem 容量 已用 可用 已用% 挂载点
/dev/sda1 13G 5.5G 6.7G 45% /
none 345M 0 345M 0% /dev/shm
192.168.20.139:/home/oracle/product/backup
13G 7.5G 4.8G 61% /home/oracle/product/backup
上面此目录要在RAC1和RAC2上分别挂载上。
到此准备工作已经完成。下面要开始备份RAC库,以及他的控制文件和日志文件 |
|