如何將 Amazon RDS Oracle 資料庫執行個體設定為使用共用伺服器?

2 分的閱讀內容
0

如何將 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 檔案中的本機命名參數

使用資料庫參數群組

檢視資料庫參數群組的參數值

重新啟動資料庫執行個體

AWS 官方
AWS 官方已更新 4 年前