VMWARE+linux+oracle 10g RAC 之四
驗證 TNS 聯網檔案
只要按照上述文件進行操作,那麼,自動生成的tnsnames.ora檔案中,就包括了TNS 聯網部分
確保在叢集的所有節點上配置 TNS 聯網檔案!
listener.ora
tnsnames.ora 檔案由 Oracle 配置並可以用於測試透明應用程式故障切換 (TAF)。此檔案應已在 RAC 叢集的每個節點上進行了配置。
您可以將這些條目中的任何條目包含在需要訪問叢集化資料庫的其他客戶端計算機上。
從外部客戶端連線叢集化資料庫
這是一個可選步驟,但我要執行它以便確認正確配置了 TNS 檔案。使用其他安裝了 Oracle(9i 或 10g)的計算機(例如,連線網路的 Windows 計算機)並從叢集的任一節點新增為叢集化資料庫建立的 TNS 條目(位於 tnsnames.ora 中)。
然後使用在 tnsnames.ora 檔案中定義的所有可用服務名稱連線叢集化資料庫:
C:> sqlplus system/manager@orcl2
C:> sqlplus system/manager@orcl1
C:> sqlplus system/manager@orcltest
C:> sqlplus system/manager@orcl
注:我的測試結果是使用orcl1 orcl2 orcl連線都可以,但orcltest會出現連線不上的情況。
---------------------------------------------------------------- ----------------------------------------------------------------
建立/更改表空間
......
第八部分 驗證 RAC 叢集和資料庫配置
應在叢集的所有節點上執行以下 RAC 驗證檢查!本節提供了幾個可用於驗證 Oracle RAC 10g 配置的 srvctl 命令和 SQL 查詢。
有五個為 SRVCTL 定義的節點級任務:
- 新增和刪除節點級應用程式
- 設定和取消設定節點級應用程式的環境
- 管理節點應用程式
- 管理 ASM 例項
- 啟動和停止一組包含虛擬 IP 地址、監聽器、Oracle 通知服務和 Oracle 企業管理器代理的程式(出於維護目的)。
所有例項和服務的狀態
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
單個例項的狀態
$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node linux2
在資料庫全域性命名服務的狀態
$ srvctl status service -d orcl -s orcltest
Service orcltest is running on instance(s) orcl2, orcl1
特定節點上節點應用程式的狀態
$ srvctl status nodeapps -n linux1
VIP is running on node:linux1
GSD is running on node:linux1
Listener is running on node:linux1
ONS daemon is running on node:linux1
ASM 例項的狀態
$ srvctl status asm -n linux1
ASM instance +ASM1 is running on node linux1.
列出配置的所有資料庫
$ srvctl config database
orcl
顯示 RAC 資料庫的配置
$ srvctl config database -d orcl
linux1 orcl1 /u01/app/oracle/product/10.2.0/db_1
linux2 orcl2 /u01/app/oracle/product/10.2.0/db_1
顯示指定叢集資料庫的所有服務
$ srvctl config service -d orcl
orcltest PREF:orcl2 orcl1 AVAIL:
顯示節點應用程式的配置 -(VIP、GSD、ONS、監聽器)
$ srvctl config nodeapps -n linux1 -a -g -s -l
VIP exists.:/vip-linux1/192.168.1.200/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
顯示 ASM 例項的配置
$ srvctl config asm -n linux1
+ASM1 /u01/app/oracle/product/10.2.0/db_1
叢集中所有正在執行的例項
SELECT
inst_id
, instance_number inst_no
, instance_name inst_name
, parallel
, status
, database_status db_status
, active_state state
, host_name host
FROM gv$instance
ORDER BY inst_id;
INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST
-------- -------- ---------- --- ------- ------------ --------- -------
1 1 orcl1 YES OPEN ACTIVE NORMAL linux1
2 2 orcl2 YES OPEN ACTIVE NORMAL linux2
位於磁碟組中的所有資料檔案
select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;
NAME
-------------------------------------------
+FLASH_RECOVERY_AREA/orcl/controlfile/current.258.570913191
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_1.257.570913201
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_2.256.570913211
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_3.259.570918285
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_4.260.570918295
+ORCL_DATA1/orcl/controlfile/current.259.570913189
+ORCL_DATA1/orcl/datafile/example.257.570913311
+ORCL_DATA1/orcl/datafile/indx.270.570920045
+ORCL_DATA1/orcl/datafile/sysaux.260.570913287
+ORCL_DATA1/orcl/datafile/system.262.570913215
+ORCL_DATA1/orcl/datafile/undotbs1.261.570913263
+ORCL_DATA1/orcl/datafile/undotbs1.271.570920865
+ORCL_DATA1/orcl/datafile/undotbs2.265.570913331
+ORCL_DATA1/orcl/datafile/undotbs2.272.570921065
+ORCL_DATA1/orcl/datafile/users.264.570913355
+ORCL_DATA1/orcl/datafile/users.269.570919829
+ORCL_DATA1/orcl/onlinelog/group_1.256.570913195
+ORCL_DATA1/orcl/onlinelog/group_2.263.570913205
+ORCL_DATA1/orcl/onlinelog/group_3.266.570918279
+ORCL_DATA1/orcl/onlinelog/group_4.267.570918289
+ORCL_DATA1/orcl/tempfile/temp.258.570913303
21 rows selected.
屬於“ORCL_DATA1”磁碟組的所有 ASM 磁碟
SELECT path
FROM v$asm_disk
WHERE group_number IN (select group_number
from v$asm_diskgroup
where name = 'ORCL_DATA1');
PATH
----------------------------------
ORCL:VOL1
ORCL:VOL2
27. 啟動/停止叢集
此時,我們已經完全安裝並配置了 Oracle RAC 10g 並擁有了一個功能完善的叢集化資料庫。
至此完成所有工作後,您可能會問“那我又怎樣啟動和停止服務呢?”如果您遵循了本指南中的說明,則所有服務(包括 Oracle 叢集件、所有 Oracle 例項、企業管理器資料庫控制檯等)應在 Linux 節點每次重新引導時自動啟動。
但有時您可能想要關閉某個節點,然後手動重新啟動它。或者,您可能發現企業管理器沒有啟動它而需要啟動它。本節提供了啟動和停止叢集環境的命令(使用 SRVCTL)。
確保您是以 oracle UNIX 使用者登入的。我們將從 linux1 執行本節中的所有命令:
# su - oracle
$ hostname
linux1
停止 Oracle RAC 10g 環境
第一步是停止 Oracle 例項。當此例項(和相關服務)關閉後,關閉 ASM 例項。最後,關閉節點應用程式(虛擬 IP、GSD、TNS 監聽器和 ONS)。
$ export ORACLE_SID=orcl1
$ emctl stop dbconsole
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop asm -n linux1
$ srvctl stop nodeapps -n linux1
啟動 Oracle RAC 10g 環境
第一步是啟動節點應用程式(虛擬 IP、GSD、TNS 監聽器和 ONS)。當成功啟動節點應用程式後,啟動 ASM 例項。最後,啟動 Oracle 例項(和相關服務)以及企業管理器資料庫控制檯。
$ export ORACLE_SID=orcl1
$ srvctl start nodeapps -n linux1
$ srvctl start asm -n linux1
$ srvctl start instance -d orcl -i orcl1
$ emctl start dbconsole
命令及結果解釋:
啟動節點應用程式
[oracle@linux1 zhs]$ srvctl start nodeapps -n linux1
結果如下:
[oracle@linux2 oracle]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....X1.lsnr application ONLINE ONLINE linux1
ora.linux1.gsd application ONLINE ONLINE linux1
ora.linux1.ons application ONLINE ONLINE linux1
ora.linux1.vip application ONLINE ONLINE linux1
啟動節點1上的例項
[oracle@linux1 zhs]$ srvctl start instance -d orcl -i orcl1
結果如下:
ora....l1.inst application ONLINE ONLINE linux1
ora.orcl.db application ONLINE ONLINE linux2
使用 SRVCTL 啟動/停止所有例項
啟動/停止所有例項及其啟用的服務。我只是覺得有意思就把此步驟作為關閉所有例項的一種方法加進來了!
$ srvctl start database -d orcl
$ srvctl stop database -d orcl
另外一種啟動CRS服務的方法
crs_stop -all
crs_start -all
這一種方法能解決下面三個服務在使用srvctl啟動時沒反應的問題.
ora....test.cs application ONLINE ONLINE linux2
ora....cl1.srv application ONLINE ONLINE linux1
ora....cl2.srv application ONLINE ONLINE linux2
28. 透明的應用程式故障切換 (TAF)
企業通常需要他們的企業應用程式提供 99.99%(甚至 99.999%)的可用性。想一想,要確保全年停機時間不超過 0.5 小時或者甚至沒有停機時間得花費多大代價!為了滿足眾多這種高可用性要求,企業正投資於可以在一個參與系統出現故障時提供自動故障切換的機制。就 Oracle 資料庫的可用性而言,Oracle RAC 10g 透過它的高階故障切換機制提供了一個卓越的解決方案。Oracle RAC 10g 包含了提供持續可用性所需的必要元件,這些元件均在一個叢集配置中工作;當叢集中的某個參與系統出現故障時,將把使用者自動移植到其他可用系統。
透明的應用程式故障切換 (TAF) 選件是 Oracle RAC 10g 一個負責處理故障切換的主要元件。它將把所有斷開的資料庫連線(和程式)重新連線到叢集的其他節點上。故障切換對使用者是完全透明的。
這最後一節簡短介紹了 TAF 在 Oracle RAC 10g 中的工作方式。請注意,對 Oracle RAC 10g 中的故障切換進行全面介紹可能需要單獨的一篇文章,我在此處只想提供一個簡短概述。
一個重要的說明是,TAF 自動在 OCI 庫中發生。也就是說,您的應用程式(客戶端)程式碼不需要更改便可以利用 TAF。但您需要在 Oracle TNS 檔案 tnsnames.ora 中執行某些配置步驟。(請記住,直到編寫本文時,由於 Java 瘦客戶端從不讀取 tnsnames.ora,因此它將無法參與 TAF。)
設定 tnsnames.ora 檔案
在演示 TAF 之前,我們需要驗證在一個非 RAC 客戶端計算機(如果您有一臺安裝了 Windows 計算機)上的 tnsnames.ora 檔案中存在一個有效的條目。確保您安裝了 Oracle RDBMS 軟體。(實際上,您只需要在客戶端上安裝 Oracle 軟體。)
在本指南的建立叢集化資料庫過程中,我們建立了一個將用於測試 TAF 的名為 ORCLTEST 的新服務。它為負載均衡和故障切換提供了所有必需的配置引數。可以將此條目的內容複製到客戶端計算機(本示例中使用了我的 Windows 行動式計算機)上的 %ORACLE_HOME%networkadmintnsnames.ora 檔案中:
...
ORCLTEST =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux2)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = orcltest.idevelopment.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
...
檢視會話的故障切換資訊的 SQL 查詢
以下 SQL 查詢可以用來檢視一個會話的故障切換型別、故障切換方法和是否發生了故障切換。我們將在這個例子中自始至終使用這個查詢。
COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
TAF 演示
從 Windows 計算機(或其他非 RAC 客戶端計算機)中,以 SYSTEM 使用者登入使用 orcltest 服務的叢集化資料庫:
C:> sqlplus system/manager@orcltest
COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl1 linux1
SELECT BASIC NO
不要登出上面的 SQL*Plus 會話!
我們已經執行了上面的查詢,現在我們應該使用 abort 選項來關閉 linux1 上的 orcl1 例項。要執行這一操作,我們可以使用 srvctl 命令列實用程式,如下所示:
# su - oracle
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
$ srvctl stop instance -d orcl -i orcl1 -o abort
$ srvctl status database -d orcl
Instance orcl1 is not running on node linux1
Instance orcl2 is running on node linux2
現在我們返回到我們的 SQL 會話,然後重新執行緩衝中的 SQL 語句:
COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl2 linux2
SELECT BASIC YES
SQL> exit
從上面的演示中,我們可以看到現在已將上述會話故障切換到了 linux2 的例項 orcl2 上。
其它
10g 的em中文亂碼的解決過程:
這兩個目錄下的檔案都需 要替換!
[oracle@linux1 admin]$ cd /u01/app/oracle/product/10.2.0/db_1/jdk/jre/lib/
[oracle@linux1 lib]$
[oracle@linux1 lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Sun
font.properties.zh_CN.Redhat2.1 font.properties.zh_CN_UTF8.Sun
[oracle@linux1 lib]$ cd /u01/app/oracle/product/10.2.0/db_1/jre/1.4.2/lib/
[oracle@linux1 lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Sun
font.properties.zh_CN.Redhat2.1 font.properties.zh_CN_UTF8.Sun
[oracle@linux1 lib]$ mv font.properties font.properties.bak
[oracle@linux1 lib]$ cp font.properties.zh_CN.Redhat font.properties
[oracle@linux1 lib]$ emctl stop dbconsole
TZ set to PRC
cd $Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
[oracle@linux1 lib]$ cd /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/
[oracle@linux1 zhs]$ ls
b-3d.gif b-68.gif b-70.gif b-b5.gif b-iagree.gif tb-0-0.gif
b-3d.imx b-68.imx b-70.imx b-b5.imx b-iagree.imx tb-0-0.imx
[oracle@linux1 zhs]$ rm -f *.gif
[oracle@linux1 zhs]$ emctl start dbconsole
TZ set to PRC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
Starting Oracle Enterprise Manager 10g Database Control ......
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271063/viewspace-998786/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VMWARE+linux+oracle 10g RAC 之三LinuxOracle 10g
- VMWARE+linux+oracle 10g RAC 之二LinuxOracle 10g
- VMWARE+linux+oracle 10g RAC 之一LinuxOracle 10g
- Vmware+Linux+Oracle 10G RAC全程詳細圖解(一)LinuxOracle 10g圖解
- oracle 10g 之RAC 搭建Oracle 10g
- Solaris 10下遷移10G RAC (四)
- [RAC]ORACLE Database 10g RAC for Administrators學習筆記(四)OracleDatabase筆記
- 【OCM】Oracle Database 10g: RAC for Administrators(四)OracleDatabase
- Oracle 10g RAC之配置時間同步Oracle 10g
- 10g RAC on AIXAI
- 【RAC,DATAGUARD】Creating a physical standby from ASM (RAC ) primary之四ASM
- Oracle 10g RAC NFSOracle 10gNFS
- Oracle 10g RAC TAFOracle 10g
- 【RAC】Oracle 10g RAC 重建控制檔案Oracle 10g
- 配置 Oracle 10g RAC primary + RAC physical standby dataguardOracle 10g
- 配置 Oracle 10g RAC primary + RAC logical standbyOracle 10g
- oracle 10g rac升級Oracle 10g
- 10g RAC 解除安裝
- 10g RAC安裝成功
- 10g RAC rman tips
- Oracle 10g RAC故障處理Oracle 10g
- Oracle 10g RAC TAF介紹Oracle 10g
- 10G RAC: srvctl 命令總結
- oracle 10g rac 解除安裝Oracle 10g
- oracle 10g rac問題(一)Oracle 10g
- Oracle 10g RAC中的DRMOracle 10g
- 10g RAC中修改VIP地址
- oracle 10g RAC簡單管理Oracle 10g
- 10G RAC歸檔設定
- 10G RAC 的虛擬IP
- Oracle 10g rac升級(10.2.0.1 Rac到10.2.0.4)Oracle 10g
- 【TUNE_ORACLE】Oracle 19c RAC搭建番外篇之RAC引數配置參考(四)Oracle
- unix/linux環境中Oracle 10G RAC OFF和RAC ONLinuxOracle 10g
- Oracle 10g RAC Install for rhel 5.8Oracle 10g
- ORACLE 10G RAC 升級補丁Oracle 10g
- OCM 10G RAC安裝大綱
- oracle 10g rac install for linuxOracle 10gLinux
- Oracle 10g RAC 網路設定Oracle 10g