Oracle并行服務(wù)器(OPS)經(jīng)典FAQ12問
2024-08-29 13:40:54
供稿:網(wǎng)友
1、什么是OPS
OPS(Oracle Parallel Server)可以讓位于不同系統(tǒng)的多個實例同時訪問同一個數(shù)據(jù)庫。并行服務(wù)器可以有效地提高系統(tǒng)的可用性和對多系統(tǒng)的訪問性能,但是,假如你的數(shù)據(jù)沒有做很好的分割,性能可能還會下降。
安裝OPS時,多個實例mount同一數(shù)據(jù)庫文件,實例間的通訊由分布式鎖治理器(DLM)來治理。需要注重的是分布式鎖治理器與你所使用的硬件和操作系統(tǒng)有著密切的關(guān)系。為了確定多個企圖同時修改同一數(shù)據(jù)的實例,Oracle使用了十個后臺進程:LCK0-LCK9,來鎖定某一實例所使用的資源。
OPS主要用于UNIX/linux集群環(huán)境中。
2、OPS的優(yōu)點
1)高可用性
2)加快事務(wù)響應(yīng)時間 - 可用于決策支持系統(tǒng)
3)增大交易連接數(shù) - 可用于聯(lián)機事務(wù)處理系統(tǒng)
3、所有的應(yīng)用都是適合OPS嗎?
可以根據(jù)功能或數(shù)據(jù)進行分割的應(yīng)用最適合OPS。那些有"熱數(shù)據(jù)"(經(jīng)常被多實例同時訪問的數(shù)據(jù))的應(yīng)用并不適合使用OPS。
4、OPS需要非凡的硬件嗎?
OPS要求服務(wù)器之間互連并共享磁盤子系統(tǒng)。所有可以做成集群的系統(tǒng)都可以,常用的有UNIX/LINUX和NT等。
5、如何設(shè)置OPS?
1)關(guān)閉數(shù)據(jù)庫
2)啟用OPS選項,在UNIX中通過重新連接Oracle軟件的方式來完成。
3)使Oracle軟件在所有節(jié)點上都有效,可以通過復(fù)制軟件到其他節(jié)點或共享磁盤的方式來完成。
4)每個實例要有自己的Redo log file,所以要增加必要的log文件:
ALTER DATABASE ADD LOGFILE THREAD 2
GROUP G4 ('RAW_FILE1') SIZE 500k,
GROUP G5 ('RAW_FILE2') SIZE 500k,
GROUP G6 ('RAW_FILE3') SIZE 500k;
ALTER DATABASE ENABLE PUBLIC THREAD 2;
5)每個實例要有自己的回滾段,所以要增加必要的回滾段:
CREATE ROLLBACK SEGMENT RB2 TABLESPACE RBS;
6)編輯初始化參數(shù)文件initSID.ora文件,添加如下幾項:
PARALLEL_SERVER = TRUE
INSTANCE_NUMBER = 1
THREAD = 1
ROLLBACK_SEGMENTS = (r01, r02, r03, r04)
7)創(chuàng)建OPS所需的數(shù)據(jù)字典,即運行CATPARR.SQL。
8)在所有的節(jié)點上啟動實例。
6、如何確定一個數(shù)據(jù)庫是運行在并行狀態(tài)?
show parameter parallel_server
7、如何跟蹤活動的實例?
SELECT * FROM SYS.V_$ACTIVE_INSTANCES;
SELECT * FROM SYS.V_$THREAD;
8、如何確定每個實例使用了多少個PCM鎖?
select count(*) "Number of hashed PCM locks"
from v$lock_element where bitand(flags, 4) != 0
/
select count(*) "Number of fine grain PCM locks"
from v$lock_element where bitand(flags, 4) = 0
/
9、如何查看每個數(shù)據(jù)文件分配了多少個PCM鎖以及ping率?
col file_name format a29
col tablespace format a12
col blocking format 9999999
col nlocks format 99999
col start_lk format 9999999
select l.file_id ' ' l.file_name file_name,
l.ts_name "TABLESPACE",
start_lk, nlocks, blocking, frequency "PING COUNT"
from sys.file_ping p, sys.file_lock l
where l.file_id = p.file_id
order by l.file_id
/
10、什么是pinging?
Pinging是進程,用于協(xié)調(diào)多實例對同一數(shù)據(jù)塊的讀寫操作。
OPS性能優(yōu)化的一個挑戰(zhàn)就是要最小化pinging。
11、如何監(jiān)控PCM鎖的活動情況?
查看當前實例活動PCM鎖的總數(shù):select * from sys.v$lock_activity;
查看每個數(shù)據(jù)庫對象的PCM鎖活動狀況:
col table format a40
select file#, kind' 'username'.'name "TABLE", sum(xnc) pings
from sys.v$false_ping p, sys.dba_users u
where u.user_id = p.owner#
group by file#, kind' 'username'.'name, xnc
order by xnc desc
/
12、如何設(shè)置一個對所有OPS實例通用的SQL*Net連接串?
1)首先要求所有節(jié)點上的SID相同,假如不相同可以按如下操作進行更改:
關(guān)閉數(shù)據(jù)庫的所有實例
將ORACLE_SID環(huán)境變量設(shè)成一致
復(fù)制原來的初始化文件initOLDSID.ora為initCOMMON.ora
重起所有實例
2)編輯本地TNSNAMES.ora,如下例:
PHOENIX =
(DEscriptION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.50)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.51)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora8)
)
)