環境:
os: CentOS4.4
Oracle: oracle10gR1(安裝軟體為10201_database_linux32.zip,暫未升級到R2,不影響下面的配置)
primary: 192.168.0.5 (主機名稱RAC1)
standby: 192.168.0.7(主機名稱RAC3)
1) 配好雙機的(含rac1,rac3)的profile .
# .sh_profile
# Get the aliases and functions
#if [ -f ~/.bashrc ]; then
# . ~/.bashrc
#fi
# User specific environment and startup programs
#export BASH_ENV=$HOME/.bashrc
export PATH=$ORACLE_HOME/bin:$HOME/bin:$PATH:/sbin:/usr/local/bin:/usr/local/sbin
PATH=$PATH:/sbin:/home/oracle/product/10.2.0/db_1/bin:$oracle_home/jre/bin:/bin:/usr/bin:/usr/bin:/etc:/usr/local/bin:
export PATH
unset USERNAME
ORACLE_OWNER=oracle
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/product/10.2.0/db_1
export ORACLE_SID=rac
TNS_ADMIN=/home/Oracle/config/10.2.0; export TNS_ADMIN
NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
#ORA_NLS33=$Oracle_HOME/ocommon/nls/admin/data; export ORA_NLS33
CLASSPATH=$Oracle_HOME/JRE:$Oracle_HOME/jlib:$Oracle_HOME/rdbms/jlib:/opt/j2sdk_nb/j2sdk1.4.2/bin
export CLASSPATH
TMPDIR=/tmp;export TMPDIR
umask 022
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#export LD_PRELOAD=/home/oracle/libcwait.so;
LD_ASSUME_KERNEL=2.6.9; export LD_ASSUME_KERNEL
#NLS_LANG="Simplified Chinese_china".ZHS16GBK;export NLS_LANG
LC_CTYPE=zh_CN.GB2312
NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
LANG=
LC_ALL=
DISPLAY=192.168.0.3:0.0;export DISPLAY;
export PS1="\u@\H $"
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/sh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
2) 檢查所需軟體
在每個節點上執行相同的操作:
執行下面的命令: rpm -q binutils compat-db control-center gcc gcc-c++ glibc gnome-libs libstdc++ libstdc++-devel make openmotif21
缺少的包請安裝。
3) 配置核心參數
在每個節點上執行相同的操作:
編輯/etc/sysctl.conf 檔案,添加下面的內容:
#For Oracle
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
然後執行:
sysctl –p 或重起系統
4) 設定 Shell 對 Oracle 使用者的限制
在每個節點上執行相同的操作:
編輯 /etc/security/limits.conf,添加如下內容:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
編輯/etc/pam.d/login,添加如下內容:
session required /lib/security/pam_limits.so
5)在主庫(rac1)上安裝10gr1 軟體,不裝資料庫
將product, oraInventory目錄打包傳到輔的(rac3)的oracle_home目錄下(即/home/oracle)並在rac3上解開。
6)在主庫(rac1)上通過dbca建立資料庫,選用預設配置。
Sid和profile裡指定的一樣,為rac
7) 關閉主庫,將/home/oracle/oradata/rac/下的檔案copy到 rac3上的相同位置。
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218292 bytes
Variable Size 67111180 bytes
Database Buffers 92274688 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/product/10.2.0/db_1/dbs/arch
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence
SQL> alter system set log_archive_dest_1='location=/home/oracle/oradata/rac/archive';
System altered.
SQL> alter system set log_archive_format='log_%t_%s_%r.arc' scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
-----------------------------
Database mounted.
Database opened.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/oradata/rac/archive
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence 1
建立standby控制檔案
SQL> alter database create standby controlfile as '/home/oracle/standby.ctl' ;
Database altered.
將standby.ctl傳到 rac3 的 /home/oracle/oradata/rac/ 下
配置主庫的listener.ora tnsnames.ora
oracle@rac1 $cat listener.ora
LISTENER_RAC1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))
)
SID_LIST_LISTENER_RAC1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = rac)
(ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
(SID_NAME = rac)
)
)
rac1,rac3的tnsnames.ora皆為
RAC3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
RAC1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
輔庫的listener.ora
oracle@rac3 $vi listener.ora
# listener.ora Network Configuration File: /home/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = rac)
(ORACLE_HOME = /home/oracle/product/10.2.0/db_1)
(SID_NAME = rac)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac3)(PORT = 1521))
)
如果覺得手工編輯上述檔案容易出錯,建議用netca建立。
啟動主庫的istener
oracle@rac1 $lsnrctl start
-----------------------------------
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1)(PORT=1521)))
The listener supports no services
The command completed successfully
啟動輔庫的istener
oracle@rac3 $lsnrctl start
----------------------------------
Instance "rac", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
用tnsping檢查tns配置
oracle@rac3 $tnsping rac1
oracle@rac3 $tnsping rac3
oracle@rac1 $tnsping rac1
oracle@rac1 $tnsping rac3
在主庫rac1上建立pfile並將其傳到輔庫rac3上相應位置$oracle_home/dbs 。
oracle@rac1 $sqlplus '/as sysdba'
SQL> create pfile='/home/oracle/initrac.ora' from spfile;
File created.
將rac1上的/home/oracle/initrac.ora ftp 傳到輔庫rac3上相應位置$oracle_home/dbs
在rac3上修改剛傳來的initrac.ora檔案
oracle@rac3 $more initrac.ora
rac.__db_cache_size=92274688
rac.__java_pool_size=4194304
rac.__large_pool_size=4194304
rac.__shared_pool_size=58720256
rac.__streams_pool_size=0
*.audit_file_dest='/home/oracle/admin/rac/adump'
*.background_dump_dest='/home/oracle/admin/rac/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/home/oracle/oradata/rac/standby.ctl'
*.core_dump_dest='/home/oracle/admin/rac/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='rac'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=/home/oracle/oradata/rac/archive'
*.log_archive_format='log_%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/admin/rac/udump'
*.STANDBY_ARCHIVE_DEST='/home/oracle/oradata/rac/standbyarchive'
*.fal_server='rac1'
*.fal_client='rac3'
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.DB_FILE_NAME_CONVERT='/home/oracle/oradata/rac/','/home/oracle/oradata/rac/'
*.LOG_FILE_NAME_CONVERT='/home/oracle/oradata/rac/archivelog','/home/oracle/oradata/rac/archivelog'
其中/home/oracle/oradata/rac/standbyarchive需要建立
將主庫上的口令檔案orapwrac傳到輔庫rac3上的對應位置。
將輔庫rac3啟動
oracle@rac3 $sqlplus '/as sysdba'
SQL> startup nomount;
ORACLE instance started.
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
在主庫上設定到輔庫rac3上的歸檔路徑
oracle@rac1 $sqlplus '/as sysdba'
SQL> alter system set log_archive_dest_2='service=rac3 mandatory reopen=60';
System altered.
定義了主庫向副庫傳輸日誌
# 定義歸檔到備用庫,強制歸檔,重試時間60秒。
# 如果定義為可選狀態(optional),那麼在歸檔失敗後不會再次嘗試歸檔的。定義
# 為madatory狀態後,如果本次歸檔失敗,則在歸檔下一個日誌時會再次嘗試
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TIME
1 1 0 52428800 1 YES UNUSED
2 1 0 52428800 1 YES UNUSED 0
3 1 1 52428800 1 NO CURRENT 446075 2007-06-28 13:41:10
SQL> alter system switch logfile;
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS IRST_CHANGE# FIRST_TIME
-------------------------------- ------------- -------------------
1 1 2 52428800 1 NO CURRENT 457776 2007-06-29 23:47:06
2 1 0 52428800 1 YES UNUSED 0
3 1 1 52428800 1 NO ACTIVE 446075 2007-06-28 13:41:10
察看輔庫上alert日誌
oracle@rac3 $tail -f alert_rac.log
Mon Jul 9 18:50:51 2007
Completed: alter database recover managed standby database disconnect from session
Mon Jul 9 18:50:51 2007
Clearing online redo logfile 3 complete
Media Recovery Log /home/oracle/oradata/rac/standbyarchive/log_1_1_626449270.arc
Media Recovery Log /home/oracle/oradata/rac/standbyarchive/log_1_2_626449270.arc
Media Recovery Log /home/oracle/oradata/rac/standbyarchive/log_1_3_626449270.arc
Media Recovery Log /home/oracle/oradata/rac/standbyarchive/log_1_4_626449270.arc
Media Recovery Log /home/oracle/oradata/rac/standbyarchive/log_1_5_626449270.arc
Media Recovery Waiting for thread 1 sequence 6
Mon Jul 9 18:54:03 2007
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[1]: Assigned to RFS process 3025
RFS[1]: Identified database type as 'physical standby'
Mon Jul 9 18:54:03 2007
RFS LogMiner: Client disabled from further notification
| 【內容導航】 |
| 第1頁:Centos 4.4下10G Dataguard配置(上) |
第2頁:Centos 4.4下10G Dataguard配置(下) |