専用サーバー接続について

Oracle Master Silver

専用サーバー接続とは?

Oracleデータベースは、クライアントとデータベース間の通信を2つの異なる方式で行います。1つは専用サーバー接続、もう1つは共有サーバー接続です。この記事では、特に専用サーバー接続に焦点を当て、効率的な接続方式の選択方法や設定方法を解説します。

専用サーバー接続では、クライアント接続ごとに専用のサーバー・プロセスが割り当てられ、データベースに対するクエリ実行やデータ処理が行われます。このため、各接続に対し独立したプロセスとメモリ領域が確保され、他の接続と干渉しにくいのが特徴です。


PGAの役割とリソース消費の管理

専用サーバー接続で利用されるPGA(Program Global Area) は、各接続のセッション情報やソート、ハッシュ結合といったデータ処理に必要な情報を保持するメモリ領域です。専用サーバー接続ではPGAが接続ごとに割り当てられるため、メモリ消費がクライアント数に比例して増加します。

PGAサイズの設定方法

PGAメモリ使用量を適切に管理するには、次のパラメータを確認し設定します。

  • pga_aggregate_target
    サーバー全体でPGAに割り当てるメモリの目標値です。Oracleが自動的にメモリを調整し、負荷に応じて適切なメモリ割り当てを行います。
  • pga_aggregate_limit
    PGAに割り当てられるメモリの上限を設定します。この上限を設定しておくことで、予期せぬメモリ消費の増加を防ぐことができます。

設定例:

ALTER SYSTEM SET pga_aggregate_target = 1G SCOPE = BOTH;
ALTER SYSTEM SET pga_aggregate_limit = 2G SCOPE = BOTH;

専用サーバー接続のメリットとデメリット

メリット

  1. 高い安定性とパフォーマンス
    • 専用サーバー接続では、各接続が独立したプロセスで動作するため、他の接続の影響を受けず、安定した応答時間が期待できます。特に、大規模なデータ処理を行う場合や、パフォーマンスが重視される環境に適しています。
  2. デバッグとトラブルシューティングの容易さ
    • 接続ごとに専用プロセスがあるため、トラブル発生時には影響範囲を特定しやすく、問題の解決が迅速に行えます。特定のセッションでリソースを多く消費する場合も、原因が明確になりやすいです。

デメリット

  1. リソースの大量消費
    • 接続ごとに独立したプロセスとPGAメモリが必要なため、多数のクライアントが同時接続する場合、サーバーのCPUやメモリの消費量が増加します。
  2. スケーラビリティの限界
    • 専用サーバー接続は大量の同時接続に対してスケーラブルではありません。大規模環境では、リソース消費の観点から共有サーバー接続のほうが適している場合があります。

専用サーバー接続と共有サーバー接続の使い分け

専用サーバー接続は高負荷処理を伴う業務に最適ですが、効率的なリソース活用が求められる環境では共有サーバー接続との併用が効果的です。

使用シナリオ別の推奨接続方式

  • 大規模なバッチ処理やデータ分析が多い場合
    専用サーバー接続が適しています。大量のデータ処理を並列で行う際も、独立したプロセスが確保されるため、パフォーマンスを犠牲にせず安定的に処理できます。
  • 一般ユーザーによる参照系の操作が多い場合
    共有サーバー接続が適しています。軽いクエリやデータ参照が中心のユーザーには、共有サーバーを使用してリソースの無駄を減らします。
  • 混在環境
    高負荷のデータ処理を行うユーザーには専用サーバー接続を提供し、参照系の操作を行うユーザーには共有サーバー接続を提供することで、負荷の分散が可能になります。

専用サーバー接続の設定方法

専用サーバー接続を設定するには、listener.oratnsnames.ora の2つの構成ファイルの編集が必要です。

listener.oraの設定

専用サーバー接続用にリスナーを設定するには、listener.oraに以下のように記述します。

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(PROGRAM = oracle)
)
)

tnsnames.oraの設定

tnsnames.oraで専用サーバー接続を指定するには、SERVER = dedicatedを設定します。

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = dedicated)
(SERVICE_NAME = orcl)
)
)

この設定により、クライアントは専用サーバー接続としてデータベースに接続することができます。

共有サーバー接続の設定(併用する場合)

共有サーバー接続を有効にするには、以下のようにSERVER = sharedを指定します。

ORCL_SHARED =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = shared)
(SERVICE_NAME = orcl)
)
)

接続方式の動作確認と管理

動作確認

リスナーを再起動し、新しい設定が反映されていることを確認します。

lsnrctl stop
lsnrctl start

接続方式の動作確認

クライアントから接続してプロセスを確認し、専用サーバー接続が使用されているか確認できます。

SELECT sid, serial#, server
FROM v$session
WHERE username = 'ユーザー名';
[oracle@v19single ~]$ sqlplus scott/tiger@v19single:1521/v19

SQL*Plus: Release 19.0.0.0.0 - Production on 土 11月 9 00:12:45 2024
Version 19.21.0.0.0

Copyright (c) 1982, 2022, Oracle. All rights reserved.

最終正常ログイン時間: 土 11月 09 2024 00:02:04 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> set linesize 1000 pagesize 1000
SQL> col username for a20
SQL> select sid,serial#,username,server from v$session
2 where username='SCOTT';

SID SERIAL# USERNAME SERVER
---------- ---------- -------------------- ---------------------------
34 37104 SCOTT DEDICATED ★専用サーバー接続

トラブルシューティング

  • メモリ不足エラーが発生する場合は、pga_aggregate_limitを増やすか、共有サーバー接続の併用を検討してください。
  • 遅延が発生する場合、高負荷な処理を専用サーバー接続に限定し、その他のユーザーを共有サーバー接続に切り替えることで改善することが多いです。

まとめとベストプラクティス

専用サーバー接続は、PGAを活用して高いパフォーマンスを提供しますが、大量の同時接続に対してはリソース消費が激しく、スケーラビリティに課題が生じます。したがって、次のベストプラクティスに基づいて利用することが推奨されます。

  1. 接続の負荷レベルに応じて接続方式を選択する
    高負荷処理には専用サーバー接続を、軽負荷処理には共有サーバー接続を割り当て、効率的にリソースを活用します。
  2. PGAメモリの上限を適切に設定する
    メモリ消費を適切に管理するため、pga_aggregate_targetpga_aggregate_limitを環境に合わせて設定します。
  3. リソース使用状況の監視
    v$sessionビューや他の管理ビューを使用し、接続ごとの負荷を定期的に監視することで、リソース不足やパフォーマンス低下を事前に防ぎます。

このように、用途に応じた接続方式を活用し、Oracleデータベースの効率的な運用を実現することが可能です。

[参考]
Oracle Database Net Services 管理者ガイド 19c

コメント

タイトルとURLをコピーしました