如何將 Amazon Relational Database Service (Amazon RDS) Oracle 資料庫執行個體設定為使用共用伺服器?
簡短描述
Oracle 使用者可以使用專用或共用伺服器程序連線到 RDS 資料庫執行個體。使用共用伺服器之前,請考量下列事項:
- 使用共用伺服器會造成 CPU 額外負荷,這可能會造成效能問題。
- 使用共用伺服器表示 UGA 配置會在大型集區內配置。請確定 SGA 內有足夠的可用空間來容納共用伺服器。可用空間不足會導致執行個體的警示日誌和追蹤檔中出現「大型集區可用」錯誤。
- 使用共用伺服器可能會使 SGA 記憶體的動態重新配置更加頻繁,進而造成效能問題。
- 在資料庫重新啟動或容錯移轉期間,如果 DISPATCHERS 參數相對於連線輸送量設定得不够高,則應用程式連線的大量新增可能會使發送器不堪重負。
- 在共用伺服器上執行批次程序、長時間執行的查詢、繁重負載或長時間執行的 DBA 任務可能會導致其他工作排入佇列,進而造成效能問題。使用專用伺服器執行大型工作。
如需有關 Oracle 資料庫共用伺服器和專用伺服器架構的詳細資訊,請參閱 Oracle 文件中的了解共用伺服器架構。
解決方法
若要平衡使用共用伺服器的優點和限制,請執行下列操作:
- 將共用伺服器用於大量 OLTP 工作階段,這些工作階段會經常連線和中斷連線,並且執行輕度作業。
- 將專用伺服器用於長時間執行的批次作業和繁重的管理工作,例如建立索引。
**注意:**下列範例是啟用具有指定執行個體大小 (db.r3.large 執行個體) 之共用伺服器的基準。管理員應套用參數群組設定,以根據其使用案例最佳化記憶體。如需詳細資訊,請參閱 Amazon RDS 上的 Oracle。
1. 修改自訂參數群組,將下列參數設定為允許的最大值或符合您使用案例的值:
dispatchers=(PROTOCOL=TCP)(DISPATCHERS=30)
max_dispatchers=30
2. 登入執行個體,然後檢視主機大小的 SESSIONS 預設值。如果未使用預設設定,請使用預設參數群組測試執行個體:
SQL> show parameter sessions
2428
3. 將 SHARED_SERVERS 和 MAX_SHARED_SERVERS 設定為該值的 10%:
sessions=2428
shared_servers=243
max_shared_servers=243
4. 將 LARGE_POOL_SIZE 設定為 SHARED_SERVERS 值 * 1 MB (在本例中為 243 * 1048576 位元組)。
large_pool_size= 254803968
5. 針對 large_pool_size「可用記憶體」查詢 v$sgastat,以確保大型集區的大小足夠。
SQL> select name, pool, bytes/1024/1024 megs from v$sgastat where name='free memory' and pool='large pool';
Name POOL Megs
-------------- ----------- -------
free memory large pool 243
6. 檢視套用至執行中 Oracle 執行個體的參數群組設定,然後從執行個體執行下列 SQL 查詢:
select name, value from v$parameter where name in ('processes', 'sessions', 'shared_servers', 'dispatchers', 'memory_target', 'memory_max_target', 'large_pool_size');
7. 從 Oracle 執行個體執行下列 SQL 查詢,查看工作階段是否以共用的形式連線:
SQL> select decode(server,'NONE','SHARED',server), count(*) from v$session
group by decode(server,'NONE','SHARED',server);
若要允許專用伺服器和共用伺服器存取相同的 Oracle 執行個體,請使用雙重 tnsnames.ora 項目,如下列範例所示:
# make the default shared
dbname =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
)
(CONNECT_DATA=
(SID=dbname)
)
)
# use the dedicated one for batch processes and dba tasks such as creating indexes
dbname_d=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbname.endpoint.amazonaws.com)(PORT=1521))
)
(CONNECT_DATA=
(SID=dbname)
(SERVER=DEDICATED)
)
)
相關資訊
tnsnames.ora 檔案中的本機命名參數
使用資料庫參數群組
檢視資料庫參數群組的參數值
重新啟動資料庫執行個體