當前位置:首頁 » 數據倉庫 » rac資料庫自動啟動
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

rac資料庫自動啟動

發布時間: 2022-08-09 05:26:37

『壹』 如何進行 Oracle 10g RAC關閉及啟動

一. 檢查共享設備
一般情況下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自動啟動的。 如果他們沒有啟動,RAC 肯定是啟動不了的。 
 
1.1 如果使用ocfs2的,檢查ocfs2 狀態
/etc/init.d/o2cb status
 
在掛載之前,/etc/init.d/o2cb status 顯示為Checking O2CB heartbeat: Not active。
在格式化和掛載文件系統之前,應驗證 O2CB 在兩個節點上均聯機;O2CB 心跳當前沒有
活動,因為文件系統還沒有掛載 。掛載之後就會變成active。
mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
 
 
1,2. 如果使用raw device.
[root@raw1 ~]# cd /dev/raw/
[root@raw1 raw]# ls
raw1  raw2
或者:
[root@raw1 init.d]# /etc/init.d/rawdevices status
/dev/raw/raw1:  bound to major 8, minor 17
/dev/raw/raw2:  bound to major 8, minor 18
 
 
1.3. 檢查ASM  
/etc/init.d/oracleasm listdisks 
 
 
 
二. 自動啟動RAC並檢查相關進程
 RAC 在啟動的時候crs 等進程都是自動啟動的:
[root@rac1 init.d]# ls -l /etc/init.d/init.*
-r-xr-xr-x  1 root root  1951 Feb 26 22:38 /etc/init.d/init.crs
-r-xr-xr-x  1 root root  4714 Feb 26 22:38 /etc/init.d/init.crsd
-r-xr-xr-x  1 root root  35394 Feb 26 22:38 /etc/init.d/init.cssd
-r-xr-xr-x  1 root root  3190 Feb 26 22:38 /etc/init.d/init.evmd
 
我們要查看一下crs 的狀態:
正常情況下, 進程都是online的:
[root@raw1 bin]# ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.raw.db      application    ONLINE    ONLINE    raw1
ora.raw.raw.cs   application    ONLINE    ONLINE    raw1
ora....aw1.srv   application    ONLINE    ONLINE    raw1
ora....aw2.srv   application    ONLINE    ONLINE    raw2
ora....w1.inst    application    ONLINE    ONLINE    raw1
ora....w2.inst    application    ONLINE    ONLINE    raw2
ora....SM1.asm  application    ONLINE    ONLINE    raw1
ora....W1.lsnr   application    ONLINE    ONLINE    raw1
ora.raw1.gsd    application    ONLINE    ONLINE    raw1
ora.raw1.ons    application    ONLINE    ONLINE    raw1
ora.raw1.vip    application    ONLINE    ONLINE    raw1
ora....SM2.asm  application    ONLINE    ONLINE    raw2
ora....W2.lsnr   application    ONLINE    ONLINE    raw2
ora.raw2.gsd   application    ONLINE    ONLINE    raw2
ora.raw2.ons   application    ONLINE    ONLINE    raw2
ora.raw2.vip   application    ONLINE    ONLINE    raw2
 
 
如果出現以下情況:
[root@rac2 bin]# ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.rac.db     application    ONLINE    UNKNOWN   rac1
ora....orcl.cs   application    ONLINE    UNKNOWN   rac1
ora....ac1.srv   application    OFFLINE   OFFLINE
ora....ac2.srv   application    OFFLINE   OFFLINE
ora....c1.inst   application    ONLINE    UNKNOWN   rac1
ora....c2.inst   application    ONLINE    UNKNOWN   rac2
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr   application    ONLINE    UNKNOWN   rac1
ora.rac1.gsd   application    ONLINE    UNKNOWN   rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora....SM2.asm  application    ONLINE    ONLINE    rac2
ora....C2.lsnr   application    ONLINE    UNKNOWN   rac2
ora.rac2.gsd   application    ONLINE    UNKNOWN   rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2
 
 
解決方法: 
1. 用crs_stat 查看進程全部信息:
[root@rac2 bin]# ./crs_stat
NAME=ora.rac.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
 
NAME=ora.rac1.LISTENER_RAC1.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac1
 
NAME=ora.rac1.gsd
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac1
 
NAME=ora.rac2.LISTENER_RAC2.lsnr
TYPE=application
TARGET=ONLINE
STATE=UNKNOWN on rac2
... ...
 
2. 對於offline 的進程,我們可以直接手動的啟動它
[root@rac2 bin]# ./crs_start ora.rac.orcl.rac1.srv
Attempting to start `ora.rac.orcl.rac1.srv` on member `rac1`
Start of `ora.rac.orcl.rac1.srv` on member `rac1` succeeded.
 
 
3. 對於UNKNOWN 的進程,我們可以先stop 它, 在start。
[root@rac2 bin]# ./crs_stop ora.rac2.gsd
Attempting to stop `ora.rac2.gsd` on member `rac2`
Stop of `ora.rac2.gsd` on member `rac2` succeeded.
[root@rac2 bin]# ./crs_start ora.rac2.gsd
Attempting to start `ora.rac2.gsd` on member `rac2`
Start of `ora.rac2.gsd` on member `rac2` succeeded.
 
 
4. 如果crs_stop不能結束,crs_start 不能啟動的進程,我們有2中方法來解決:
4.1)是用crs_stop -f  參數把crs中狀態是UNKNOWN的服務關掉,然後再用crs_start -f (加一個-f的參數)啟動所有的服務就可以。要分別在兩個節點上執行;
[oracle@rac2 ~]$ crs_start -f ora.ora9i.ora9i2.inst
Attempting to start `ora.ora9i.ora9i2.inst` on member `rac2`
Start of `ora.ora9i.ora9i2.inst` on member `rac2` succeeded.
[oracle@rac2 ~]$ crs_stop -f ora.ora9i.db
Attempting to stop `ora.ora9i.db` on member `rac2`
Stop of `ora.ora9i.db` on member `rac2` succeeded.
 
4.2)轉換到root用戶下用/etc/init.d/init.crs stop先禁用crs,然後再用/etc/init.d/init.crs start去啟用crs,啟用crs後會自動啟動crs的一系列服務,注意此種方法需要在兩台節點上都執行;
 
5. 可以用命令一次啟動和關閉相關進程
[root@rac2 bin]# ./crs_stop -all
[root@rac2 bin]# ./crs_start -all
 
 
 
 
三. 手動啟動RAC 
       一般情況下每次節點啟動的時候,所有服務都會自動啟動,如果需要關閉或者啟動某個節點,如下所示 
        停止RAC:
                emctl stop dbconsole 
                srvctl stop instance -d raw -i raw1 
                srvctl stop instance -d raw -i raw2 
                srvctl stop asm -n raw1 
                srvctl stop asm -n raw2 
                srvctl stop nodeapps -n raw1 
                srvctl stop nodeapps -n raw2 
        啟動RAC:      
                和上面的步驟正好相反即 
                srvctl start nodeapps -n raw1 
                srvctl start nodeapps -n raw2 
                srvctl start asm -n raw1 
                srvctl start asm -n raw2 
                srvctl start instance -d raw -i raw2 
                srvctl start instance -d orcl -i raw1 
                emctl start dbconsole 
                
     使用 SRVCTL 啟動/停止所有實例及其啟用的服務。 
srvctl start database -d orcl 
srvctl stop database -d orcl 
 
註:CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service. 這些資源被分成2類:
GSD,ONS,VIP 和 Listener 屬於Noteapps類
Database,Instance 和Service 屬於 Database-Related Resource 類。
 
有關Oracle RAC 的概念,請參考我的blog:
RAC 的一些概念性和原理性的知識
http://blog.csdn.net/tianlesoftware/archive/2010/02/27/5331067.aspx
 
示例:
[root@raw1 bin]# ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.raw.db     application    ONLINE    ONLINE    raw1
ora.raw.raw.cs  application    ONLINE    ONLINE    raw1
ora....aw1.srv   application    ONLINE    ONLINE    raw1
ora....aw2.srv   application    ONLINE    ONLINE    raw2
ora....w1.inst   application    ONLINE    ONLINE    raw1
ora....w2.inst   application    ONLINE    ONLINE    raw2
ora....SM1.asm  application    ONLINE    ONLINE    raw1
ora....W1.lsnr   application    ONLINE    ONLINE    raw1
ora.raw1.gsd   application    ONLINE    ONLINE    raw1
ora.raw1.ons   application    ONLINE    ONLINE    raw1
ora.raw1.vip   application    ONLINE    ONLINE    raw1
ora....SM2.asm  application    ONLINE    ONLINE    raw2
ora....W2.lsnr  application    ONLINE    ONLINE    raw2
ora.raw2.gsd   application    ONLINE    ONLINE    raw2
ora.raw2.ons   application    ONLINE    ONLINE    raw2
ora.raw2.vip   application    ONLINE    ONLINE    raw2
 
[oracle@raw1 ~]$ emctl stop 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.
http://raw1:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
 ...  Stopped.
[oracle@raw1 ~]$ srvctl stop instance -d raw -i raw1
[oracle@raw1 ~]$ srvctl stop instance -d raw -i raw2
[oracle@raw1 ~]$ srvctl stop asm -n raw1
[oracle@raw1 ~]$ srvctl stop asm -n raw2
[oracle@raw1 ~]$ srvctl stop nodeapps -n raw1
[oracle@raw1 ~]$ srvctl stop nodeapps -n raw2
 
[oracle@raw1 bin]$ crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.raw.db     application    OFFLINE   OFFLINE
Ora.raw.raw.cs  application    OFFLINE   OFFLINE
ora....aw1.srv  application    OFFLINE   OFFLINE
ora....aw2.srv  application    OFFLINE   OFFLINE
ora....w1.inst   application    OFFLINE   OFFLINE
ora....w2.inst   application    OFFLINE   OFFLINE
ora....SM1.asm  application    OFFLINE   OFFLINE
ora....W1.lsnr   application    OFFLINE   OFFLINE
ora.raw1.gsd   application    OFFLINE   OFFLINE
ora.raw1.ons   application    OFFLINE   OFFLINE
ora.raw1.vip   application    OFFLINE   OFFLINE
ora....SM2.asm  application    OFFLINE   OFFLINE
ora....W2.lsnr   application    OFFLINE   OFFLINE
ora.raw2.gsd   application    OFFLINE   OFFLINE
ora.raw2.ons   application    OFFLINE   OFFLINE
ora.raw2.vip   application    OFFLINE   OFFLINE
 
 
 
 
 四. 在啟動的過程中最好檢測著crs、ASM和資料庫的日誌:
 
crs日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/proct/10.2.0/crs_1/log/rac1/alertrac1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/proct/10.2.0/crs_1/log/rac2/alertrac2.log
 
ASM日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/+ASM/bmp/alert_+ASM1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/+ASM/bmp/alert_+ASM2.log
 
資料庫日誌:
[oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/ora9i/bmp/alert_ora9i1.log
[oracle@rac2 ~]$ tail -f /u01/app/oracle/admin/ora9i/bmp/alert_ora9i2.log
 
註:tail -f命令可用於監視另一個進程正在寫入的文件的增長。

『貳』 安裝完oracle11g rac為什麼重啟伺服器後資料庫不能自動啟動了

看下集群日誌分析原因
一般情況下可能是沒有找到集群注冊表,這種情況一般是 共享存儲的問題,有可能盤符發生變化啊,你做的裸設備沒有raw啊等

『叄』 oracle rac單實例下為什麼會重啟

總體步驟:
1、創建pfile
2、relink oracle
3、pfile啟動資料庫

4、配置VIP
rac轉換為單機:

『肆』 oracle 11G R2 RAC資料庫能自動啟動嗎

所謂自動啟動就是隨系統啟動!
命令如下
$ORACLE_HOME/bin/crsctl modify resource "ora.資料庫名.db" -attr "AUTO_START=always"

『伍』 Linux+Oracle+RAC 資料庫重新啟動的問題:shutdown immediate, startup mount

你看看你的oracle用戶的.bash_profile 中的oracle_sid的設置是否正確,或者貼出來看看。一般是oracle_sid問題導致的。

『陸』 oracle rac怎麼設置資料庫開機啟動

一些CRS的服務
你可以,手工SHUTDOWN 每個實例
然後CRS_STOP -ALL,關閉其他服務。
啟動的時候可以通過CRS_START -ALL啟動

『柒』 oracle11g rac安裝完後 crs默認不是自動啟動的嗎

No bean named \\'blogDao\\' is defined,你應該沒有在actioncontext.xml中配置這個bean,請仔細檢查配置文件!

『捌』 oracle11grac會用到rexec服務嗎

我們可以為特定的應用或者應用操作集合定義服務,例如為聯機事務處理,批處理和報表應用分別定義服務。然後通過這些服務來連接到資料庫。使用服務的原因在於可以通過對服務進行配置,獲得諸如應用程序性能,負載,以及可用性等各個方面的好處。
2、Service的幾個重要的配置
2.1 Service Management Policy
service的startup設置,如果將一個service的management policy配置為AUTOMATIC,則在使用srvctl啟動database的時候,服務也自動啟動。
如果將management policy設置為MANUAL,則必須使用srvctl來啟動服務。
使用crsctl重啟集群時,如果服務之前是運行的,那麼服務也將重新啟動。
2.2 Instance Preference
一個服務的優選實例是將在其中啟動該服務的實例,這些實例將為用戶服務。可用實例是備用實例,當優選實例發證故障時,將在這些實例上啟動服務。
假設為一個服務定義了2個優選實例,那麼集群會盡量確保服務始終運行在2個實例上。
當服務運行在可用實例上時,當優選實例恢復完成,服務不會在再次回到優選實例上。
注意優選實例和可用實例的定義只有在資料庫為administrator-managed的方式下才能設置。如果database處於policy-managed的方式下,則應當為服務指定server pool。見下一節。
2.3 server pool
When you define services for a policy-managed database, you assign the service to aserver pool where the database is running using SRVCTL with the -g option. You can define the service as either UNIFORM (running on all instances in the server pool) orSINGLETON (running on only one instance in the server pool) using the -c option. For singleton services, Oracle RAC chooses on which instance in the server pool theservice is active. If that instance fails, then the service fails over to another instance in the server pool. A service can only run in one server pool.
server pool相當於虛擬實例組,它包含一定數量的實例,而不指定具體是哪些實例。可以定義服務在一個server pool中的所有實例上運行或者在server pool中的一個實例中運行。
3、Oracle中與Service集成的功能
3.1 Resource Profile for a Service
resource profile在定義service時自動創建。它描述了集群如何管理service以及當優選實例故障時service將轉移到哪個實例。resource profile還定義了服務的依賴關系,保證在資料庫 停止時,實例與服務可以自動以正確的順序停止。
3.2 Database Resource Manager Consumer Group Mappings for Serviceservice可以和Resource Manager Consumer Group集成,一個service屬於一個Resource Manager Consumer Group。通過Resource Manager Consumer Group可以定義服務對資源的使用優先順序。例如可以限定三個Group的優先順序及CPU使用率,那麼CPU資源將按優先順序分配給各個組。
3.3 AWR for Service
可以通過AWR報告監控service性能。
4、創建服務
文檔中創建服務的語法和選項如下:
5、關於服務在實例中切換的實驗
測試環境OGI和RDBMS都是11.2.0.1版本,資料庫有兩個節點node1,node2,對應實例為orarac1,orarac2該服務使用管理員管理方式,首選實例和可用實例相關配置如下:
[oracle@node1 ~]$ srvctl config service -d orarac -s test_service服務名: test_service
服務已啟用
伺服器池: orarac_test_service
基數: 1
斷開連接: 假
服務角色: PRIMARY
管理策略: AUTOMATIC
DTP 事務處理: 假
AQ HA 通知: 假
故障轉移類型: SELECT
故障轉移方法: BASIC
TAF 故障轉移重試次數: 0
TAF 故障轉移延遲: 0
連接負載平衡目標: LONG
運行時負載平衡目標: NONE
TAF 策略規范: BASIC
首選實例: orarac2
可用實例: orarac1
服務的運行狀態服下:
[[oracle@node1 ~]$ srvctl status instance -d orarac -i orarac1實例 orarac1 正在節點 node1 上運行
[oracle@node1 ~]$ srvctl status instance -d orarac -i orarac2實例 orarac2 正在節點 node2 上運行
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac2 上運行由於首選實例設置為orarac2,所以服務默認隨實例orarac2自動啟動。
使用srvctl關閉實例2,在查看服務的情況:
[oracle@node1 ~]$ srvctl stop instance -d orarac -i orarac2[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 未運行。
使用srvctl關閉首選實例,則服務並未轉移到可用實例上。
再看使用sqlplus關閉實例2的情況:
首先開啟實例2,服務又隨實例自動啟動了
[oracle@node1 ~]$ srvctl start instance -d orarac -i orarac2[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac2 上運行在節點2上登入sqlplus關閉實例2
SQL> select instance_name from v$instance;INSTANCE_NAME
------------------------------------------------orarac2
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
再查看服務狀態:
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac1 上運行服務已經轉移到備選實例上了。
上面的實驗結果表明:
服務會隨srvctl啟動實例而啟動,服務不會隨srvctl關閉實例而轉移,服務會隨sqlplus關閉實例而轉移。
再看看服務是否會隨sqlplus啟動實例而啟動:
[oracle@node1 ~]$ srvctl stop service -d orarac -s test_service[oracle@node1 ~]$ srvctl status instance -d orarac -i orarac1實例 orarac1 正在節點 node1 上運行
[oracle@node1 ~]$ srvctl status instance -d orarac -i orarac2實例 orarac2 沒有在 node2 節點上運行
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 未運行。
node2上通過sqlplus啟動實例:
INSTANCE_NAME
------------------------------------------------orarac2
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1603411968 bytesFixed Size 2213776 bytesVariable Size 1207961712 bytesDatabase Buffers 385875968 bytesRedo Buffers 7360512 bytesDatabase mounted.
Database opened.
查看服務有沒有隨SQLPLUS啟動實例而啟動:
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 未運行。
結論:
服務會隨srvctl啟動實例而啟動,服務不會隨srvctl關閉實例而轉移。
服務不會隨sqlplus中startup啟動實例而啟動,服務會隨sqlplus關閉實例而轉移。
註:測試環境OGI與RDBMS版本都是11.2.0.1。
6、關於RAC中的故障轉移
6.1 關於RAC中的故障轉移
6.1.1 客戶端的故障轉移
在客戶端的tns中配置多個VIP連接,客戶端連接時依次嘗試連接,直至連接成功,如果連接中故障,則需要重新連接。
tnsnames.ora中有一個參數FAILOVER=ON,這個參數默認為ON所以不需要配置,一個tns條目可能如下:
ORARAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = orarac1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = orarac2-vip)(PORT = 1521))(LOAD_BALANCE=YES)
(
CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orarac)
)
)
6.1.2 TAF
由於大部分應用使用長連接,即只創建一次到oracle的連接,以後都使用這個連接,如果用客戶端故障轉移必須要重新建立連接。為解決這個問題,需要新的故障轉移方式TAF。
TAF也是在tnsnames.ora中定義。其包含METHOD及TYPE選項。
METHOD取值有BASIC和PRECONNECT兩種:BASIC為發生故障時立刻切換。PRECONNECT為事先創建冗餘連接。
TYPE取值有SESSION和SELECT兩種:對於正在查詢的語句,如果實例故障,SESSION模式需要重新查詢,SELECT模式可以繼續返回結果集,用戶感受不到故障轉移。
一個TAF的tnsnames中的配置可能如下:
ORARAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = orarac1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = orarac2-vip)(PORT = 1521))(LOAD_BALANCE=YES)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ORARAC)
(FAILOVER_MODE=
(TYPE=session)
(METHOD=basic)
(RETRIES=180)
(DELAY=5)
)
)
)
6.1.3 Service-Side TAF
TAF需要客戶端配置tnsnames,非常麻煩,有一種只需要在伺服器端配置故障轉移的選項而不需要配置客戶端的方法,即Service-Side TAF。
實現方法為:在實例上創建服務,為服務配置故障轉移選項,客戶端直接通過服務連接到資料庫。
7、RAC環境中利用服務實現故障轉移的實驗
首先查看服務配置:
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac2 上運行[oracle@node1 ~]$ srvctl config service -d orarac -s test_service服務名: test_service
服務已啟用
伺服器池: orarac_test_service
基數: 1
斷開連接: 假
服務角色: PRIMARY
管理策略: AUTOMATIC
DTP 事務處理: 假
AQ HA 通知: 假
故障轉移類型: SELECT
故障轉移方法: BASIC
TAF 故障轉移重試次數: 0
TAF 故障轉移延遲: 0
連接負載平衡目標: LONG
運行時負載平衡目標: NONE
TAF 策略規范: BASIC
首選實例: orarac2
可用實例: orarac1
可以看出故障轉移的方法及類型:
故障轉移類型: SELECT
故障轉移方法: BASIC
客戶端tns的配置如下:
TEST_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cluster-scan)(PORT = 1521))(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test_service)
)
)
客戶端連接資料庫:
C:\Documents and Settings\Administrator>sqlplus system/oracle@test_serviceSQL*Plus: Release 10.2.0.1.0 - Proction on Tue Dec 2 09:49:16 2014Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProctionWith the Partitioning, Real Application Clusters, Automatic Storage Management,OLAP,
Data Mining and Real Application Testing optionsSQL> select instance_name from v$instance;INSTANCE_NAME
----------------
orarac2
為了創建長時間查詢先創建大表:
SQL> create table testuser.object as select * from dba_objects;Table created.
SQL> insert into testuser.object select * from dba_objects;72252 rows created.
insert語句多執行幾次
SQL> select count(*) from testuser.object;COUNT(*)
----------
1156032
執行長查詢:
SQL> select * from testuser.object;
中途關閉orarac2(使用sqlplus關閉),客戶端顯示:
ERROR:
ORA-25402: transaction must roll back
855 rows selected.
原因是事務未提交,必須回滾。此時客戶端再執行任何查詢仍然報錯:
SQL> select instance_name from v$instance;select instance_name from v$instance
*
ERROR at line 1:
ORA-25402: transaction must roll back
回滾事務:
SQL> rollback;
Rollback complete.
客戶端在執行查詢:
SQL> select instance_name from v$instance;INSTANCE_NAME
----------------
orarac1
服務被轉移到了orarac1上運行了,並且客戶端session並未中斷。
將上述過程重來一遍,但是在長查詢之前進行提交:
先將orarac2啟動,然後手動重定位服務
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac1 上運行[oracle@node1 ~]$ srvctl relocate service -d orarac -s test_service -h將服務從集群的一個節點臨時重新定位到另一個節點(命令忘記了,中途查一下幫助)。
[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac1 上運行[oracle@node1 ~]$ srvctl relocate service -d orarac -s test_service -h用法: srvctl relocate service -d <db_unique_name> -s <service_name> {-i <old_inst_name> -t <new_inst_name> | -c <current_node> -n <target_node>} [-f]
為管理員管理的資料庫指定實例, 或者為策略管理的資料庫指定節點-d <db_unique_name> 資料庫的唯一名稱-s <service> 服務名
-i <old_inst> 舊的實例名
-t <new_inst> 新的實例名
-c <current_node> 要從中重新定位服務的節點名-n <target_node> 要將服務重新定位到的節點名-f 在停止或重新定位服務操作期間斷開所有會話-h 輸出用法
[oracle@node1 ~]$ srvctl relocate service -d orarac -s test_service -i orarac1 -t orarac2[oracle@node1 ~]$ srvctl status service -d orarac -s test_service服務 test_service 正在實例 orarac2 上運行此時驗證一下客戶端session是否正常:
SQL> select count(*) from testuser.object;COUNT(*)
----------
72252
沒有問題。
SQL> select instance_name from v$instance;INSTANCE_NAME
----------------
orarac1
雖然relocate了服務到orarac2上,但是已經連接的session仍然處於orarac1上。
重新連接sqlplus確認連接到orarac2上,並確認不存在未提交事務:
SQL> commit;
Commit complete.
這一次只使用72252行,此時沒有未提交事務。
執行長查詢之前確認連接實例:
SQL> select instance_name from v$instance;INSTANCE_NAME
----------------
orarac2
SQL> select * from testuser.object;
在伺服器上關閉實例2:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
客戶端查詢仍在進行,等待運行結果:
......
72252 rows selected.
看到客戶端查詢正常完成,和定義的TYPE=SELECT結果相一致。
8、 一些關於服務故障轉移的結論
測試版本為11.2.0.1;節點為node1,node2;資料庫名為orarac;實例名為orarac1,orarac2;服務名為test_service;服務配置信息見上面說明。
通過上述實驗可以得出下面結論:
通過服務可以定義負載均衡及故障轉移,而不需要在客戶端做任務配置。
srvctl啟動首選實例,服務會自動啟動。
srvctl關閉服務的首選實例,服務不會自動轉移到備選實例。
sqlplus中啟動首選實例,服務不會自動啟動。
sqlplus中關閉首選實例,服務會自動轉移到備選實例。
服務轉移到備用實例後,此時首選實例恢復正常,服務不會自動回到首選實例。
客戶端session連接到服務後,如果此時通過srvctl relocate將服務轉移到其他實例,客戶端連接的實例仍然不變。此時故障轉移仍然正常。
如果事務未提交,此時發生故障轉移,則必須回滾事務,才能進行其他操作。

『玖』 如何正確手工啟動Windows下的Oracle RAC資料庫

這是一則來自於某德國客戶生產環境的RAC資料庫啟動出現故障的案例,記錄下來一是用於對自己的警醒,二是可以同廣大網友分享。
操作系統環境:Windows Server 2008 R2 Enterprise version 6.1(Build 7601:Service Pack 1)
資料庫環境:10gR2 10.2.0.5.0的64位RAC雙節點資料庫;
上周末,在順利地對RAC資料庫的幾張分區表做調整之後,正常關閉RAC資料庫,並重新啟動2台Windows 2008 R2的操作系統之後,嘗試啟動Oracle CRS時,發現報錯:
1 在任何一個節點的服務項里,啟動OracleCRService服務時,報錯,其中OracleCSService的狀態一直停留在Starting狀態,其它服務項無任何變化;
2 重啟Windows伺服器後,使用$CRS_HOME\bin\crsctl start crs在命令行嘗試啟動CRS時,依然報錯;
3 接下去,開始檢查CRS的錯誤日誌:在C:\oracle\proct\10.2.0\crs\log\dehamora002\crsd\crsd.log日誌文件中看到下述報錯信息:

view sourceprint?
1 2012-12-08 11:52:52.606: [ OCRMAS][3876]th_master:13: I AM THE NEW OCR MASTER at incar 2. Node Number 2
2 2012-12-08 11:52:52.606: [ OCROSD][3876]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
3
4 2012-12-08 11:52:52.621: [ OCROSD][3876]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
5
6 2012-12-08 11:52:52.637: [ OCRRAW][3876]proprioo: for disk 0 (\\.\ocrcfg), id match (1), my id set (1381592635,1028247821) total id sets (1), 1st set (1381592635,1028247821), 2nd set (0,0) my votes (2), total votes (2)
7 2012-12-08 11:52:52.715: [ OCRMAS][3876]th_master: Deleted ver keys from cache (master)
從上可以看出,問題應該是出現在伺服器訪問共享存儲時出現的。果然,在遠程聯系德國漢堡客戶IT人員檢查後,發現是伺服器同存儲間出現了問題,協調並解決該錯誤。

4 再次重啟Windows,並嘗試啟動CRS時,C:\oracle\proct\10.2.0\crs\log\dehamora002\cssd\cssdOUT.log日誌文件中看到下述報錯信息:
view sourceprint?
01 Oracle Database 10g CSS Release 10.2.0.5.0 Proction Copyright 1996, 2004, Oracle. All rights reserved.
02 12/08/12 12:02:06 ssmain_run_css: launching boot check 1 with c:\oracle\proct\10.2.0\crs\bin\crsctl.exe check boot
03 OCR initialization failed accessing OCR device: PROC-26: Error while accessing the physical storage Operating System error [The system cannot find the file specified.
04
05 ] [2]
06 12/08/12 12:02:06 ssmain_run_css: boot check returned 8, looping
07 12/08/12 12:02:07 ssmain_run_css: launching boot check 2 with c:\oracle\proct\10.2.0\crs\bin\crsctl.exe check boot
08 OCR initialization failed accessing OCR device: PROC-26: Error while accessing the physical storage Operating System error [The system cannot find the file specified.
09
10 ] [2]
11 12/08/12 12:02:07 ssmain_run_css: boot check returned 8, looping
12 12/08/12 12:02:08 ssmain_run_css: launching boot check 3 with c:\oracle\proct\10.2.0\crs\bin\crsctl.exe check boot
13 OCR initialization failed accessing OCR device: PROC-26: Error while accessing the physical storage Operating System error [The system cannot find the file specified.
14
15 ] [2]
通過查詢Metalink:
Can not Start CRS on Windows Cluster [ID 1115153.1]
How to Start (or stop) 10gR2 or 11gR1 Oracle Clusterware Services Manually in Windows [ID 729512.1]
OracleCSService does not start – PROC-26 error possible [ID 305093.1]
找到產生問題的原因:原來這套RAC環境下的所有Oracle服務都是手工啟動的方式,正常情況下,手工啟動OracleCRService服務時,會自動啟動依賴的相關服務。而該環境下,oracle並沒有如我們期待的那樣去啟動與OracleCRService相關的服務。
准確定位到原因後,解決問題的辦法其實也很簡單,就是如Metalink文檔上說明的方案,手工依次啟動. OracleObjectService、OracleClusterVolumeService 、OracleCSService、OracleEVMService、OracleCRService 很快,RAC資料庫重新正常啟動!

啟示:
1 對於Windows環境下的RAC,最好是將OracleObjectService的啟動類型置為自動啟動;
2 如果上述服務是手工啟動的,那麼正確手工啟動Windows下的Oracle RAC資料庫的順序依次是:OracleObjectService、OracleClusterVolumeService(if using OCFS) 、OracleCSService、OracleEVMService、OracleCRService

『拾』 aix5.3 上安裝了oracle10g,以rac的方式集群(共兩個節點),怎重啟資料庫

關閉:
srvctl stop instance -d orcl -i orcl1
srvctl stop instance -d orcl -i orcl2
啟動:
srvctl start instance -d orcl -i orcl1
srvctl start instance -d orcl -i orcl2
以上命令假設你的資料庫名為orcl,實例名分別為orcl1,orcl2