1、什么是OPS
OPS(Oracle Parallel Server)可以讓位于不同系統的多個實例同時訪問同一個數據庫。并行服務器可以有效地提高系統的可用性和對多系統的訪問性能,但是,如果你的數據沒有做很好的分割,性能可能還會下降。
安裝OPS時,多個實例mount同一數據庫文件,實例間的通訊由分布式鎖管理器(DLM)來管理。需要注意的是分布式鎖管理器與你所使用的硬件和操作系統有著密切的關系。為了確定多個企圖同時修改同一數據的實例,Oracle使用了十個后臺進程:LCK0-LCK9,來鎖定某一實例所使用的資源。
OPS主要用于UNIX/LINUX集群環境中。
2、OPS的優點
1)高可用性
2)加快事務響應時間 - 可用于決策支持系統
3)增大交易連接數 - 可用于聯機事務處理系統
3、所有的應用都是適合OPS嗎?
可以根據功能或數據進行分割的應用最適合OPS。那些有"熱數據"(經常被多實例同時訪問的數據)的應用并不適合使用OPS。
4、OPS需要特殊的硬件嗎?
OPS要求服務器之間互連并共享磁盤子系統。所有可以做成集群的系統都可以,常用的有UNIX/LINUX和NT等。
5、如何設置OPS?
1)關閉數據庫
2)啟用OPS選項,在UNIX中通過重新連接Oracle軟件的方式來完成。
3)使Oracle軟件在所有節點上都有效,可以通過復制軟件到其他節點或共享磁盤的方式來完成。
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)編輯初始化參數文件initSID.ora文件,添加如下幾項:
PARALLEL_SERVER = TRUE
INSTANCE_NUMBER = 1
THREAD = 1
ROLLBACK_SEGMENTS = (r01, r02, r03, r04)
7)創建OPS所需的數據字典,即運行CATPARR.SQL。
8)在所有的節點上啟動實例。
6、如何確定一個數據庫是運行在并行狀態?
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、如何查看每個數據文件分配了多少個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是進程,用于協調多實例對同一數據塊的讀寫操作。OPS性能優化的一個挑戰就是要最小化pinging。
11、如何監控PCM鎖的活動情況?
查看當前實例活動PCM鎖的總數:select * from sys.v$lock_activity;
查看每個數據庫對象的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、如何設置一個對所有OPS實例通用的SQL*Net連接串?
1)首先要求所有節點上的SID相同,如果不相同可以按如下操作進行更改:
關閉數據庫的所有實例
將ORACLE_SID環境變量設成一致
復制原來的初始化文件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)
)
)
posted on 2007-06-13 14:53
老董 閱讀(249)
評論(0) 編輯 收藏 所屬分類:
Oracle