Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
2.2. Oracle の設定
Oracle で JBoss ON を実行するには、以下の 2 つの項目のみが必要です。
- データベース
- 適切なパーミッションを持つユーザー
基本設定は、データベースとユーザーの設定プロセスに従います。また、大規模な JBoss ON デプロイメントのパフォーマンスを向上させる可能性のある、メモリー制限の増加などのデータベース設定の制御を強化する高度な設定プロセスもあります。
2.2.1. Oracle 設定の事前設定
Oracle 設定には、JBoss ON のパフォーマンスを向上させるように調整できる複数の設定があります。
2.2.1.1. SGA および PGA サイズの設定
JBoss ON のパフォーマンスでは、SGA および PGA サイズの Oracle の設定は非常に重要です。これらの値が小さすぎると、データベースは非常に遅くなります。調整する設定は 2 つあります。
- sga_target
- pga_aggregate_target
データベース管理者に連絡し、Oracle の SGA および PGA 設定のサイジング要件を確認します。
2.2.1.2. Open Cursors の調整
以下の SQL コマンドを実行して、
max_open_cur
設定の値が 300 未満かどうかを確認します。
select max(a.value) as highest_open_cur, p.value as max_open_cur from v$sesstat a, v$statname b, v$parameter p where a.statistic# = b.statistic# and b.name = 'opened cursors current' and p.name= 'open_cursors' group by p.value;
値が小さい場合 は 300 未満のカーソルをさらに開きます。
alter system set open_cursors=300 scope=spfile;
注記
このクエリーは、既存のセッションにのみ適用されます。セッションが切断されると、以前の値に設定が返されます。
2.2.1.3. プロセスおよびセッション数の設定
この v$resource_limit 制限は、JBoss ON が許可される Oracle プロセスおよびセッションの最大数を設定します。この計算の式には、以下の一般的なフローがあります。
calculate the number of processes => add additional processes for Enterprise Manager => calculate the total number of sessions (final value)
プロセス数を計算する方法は 2 つあります(エージェントの数と他のサーバー数を使用する)。どのメソッドも使用すると数値が高くなります。
表2.1 Oracle プロセスの計算
計算タイプ | 式 | 例 |
---|---|---|
エージェント | 1.5 * number_of_agents | 1.5 * 100 エージェント = 150 |
サーバー | 60 * number_of_servers | 60 * 2 のサーバー = 120 |
Oracle Enterprise Manager の使用 | highest_number_of_processes + 40 | 1.5 * 100 エージェント + 40 = 190 |
前述のとおり 表2.1「Oracle プロセスの計算」、Oracle Enterprise Manager を使用するシステムの計算は若干異なります。このような場合には、まずエージェントとサーバーのプロセスを計算します。次に、どの値も最大値を取り、別の 40(Oracle Enterprise Manager に対応するために)を追加し、設定するプロセス数を生成します。
プロセスの合計数を計算したら、別の 10% を追加し(数値を 1.1 で乗算)、セッションの合計数(および最終値 v$resource_limit)を決定します。
例2.1 JBoss ON の Oracle プロセスとセッションの計算
たとえば、Corp. は 175 エージェントと 3 つのサーバーのデプロイを計画しています。Oracle Enterprise Manager を使用して Oracle インスタンスを管理します。
最初のステップは、エージェントとサーバーに基づくプロセス数を計算することです。
1.5 * 175 agents = 262.5 processes 60 * 3 servers = 180 process
したがって、プロセスに使用する方法は、その値が大きいため、エージェントの方法になります。
プロセス数に 40 を追加します。
262.5 + 40 = 302.5
プロセスの合計数は 302.5 です。そこから、セッションの数を計算します。
302.5 * 1.1 = 332.75
Oracle の v$resource_limit 制限データベース設定の最後の値は 333 です。
2.2.2. Oracle の設定
重要
以下の設定は、JBoss ON テスト環境に対して迅速にこのサーバーを設定する例になります。これらの手順で推奨される値は実稼働環境で使用しないでください。この手順は、実稼働サーバーを設定するためのサポート対象の方法として使用しないでください。本番環境を設定する際には、必ずデータベースプロバイダーの設定手順に注意して従ってください。
JBoss ON でデータを保存するには、特定の Oracle データベースとユーザーを設定する必要があります。
- JBoss ON に使用する専用の Oracle インスタンスを作成します。このプロセスは、Oracle ドキュメントに記載されています。
- システムユーザーとして Oracle にログインします。
[jsmith@server ~]$ sqlplus SQL> CONNECT sys/your_sys_password AS sysdba;
- JBoss ON のデータベースを作成します。この例では、データベースの名前が付けられてい rhqます。このプロセスは、Oracle ドキュメントを参照してください。
SQL> CREATE DATABASE rhq; SQL> @?/rdbms/admin/catalog.sql SQL> @?/rdbms/admin/catproc.sql
- JBoss ON が Oracle にアクセスするために使用するユーザーを作成します。パスワード rhqadmin でという名前のユーザーを作成し rhqadminます。例:
SQL> CREATE USER rhqadmin IDENTIFIED BY rhqadmin;
- Oracle ユーザーに必要なパーミッションを付与します。このユーザーには、少なくとも
connect
およびresource
ロールが必要です。例:SQL> GRANT connect, resource TO rhqadmin;
重要Oracle 12c を JBoss ON のバックエンドとして設定する場合は、RESOURCE
ロールはデフォルトでrhqadmin
ユーザーに付与されないことUNLIMITED TABLESPACE
に注意してください。このシステム特権をユーザーに付与する方法は手動で行う必要があります。そのためには、必要なテーブル空間にrhqadmin
ユーザーが十分なものQUOTA
である必要があります。無制限のテーブル空間を付与できる場合は、明示的に実行できます。GRANT UNLIMITED TABLESPACE TO rhqadmin;
それ以外の場合は、特定のクォータ制限を設定する必要があります。例:ALTER USER $username QUOTA 100G ON $tablespace_name;
または、以下のように設定します。ALTER USER $username QUOTA -1 ON $tablespace_name;
- データベースコミットを処理するパラメーターを定義する JBoss ON の Oracle ユーザーの追加パーミッションを設定します。JBoss ON は、一部のデータベースアクションに対して内部的に 2 フェーズコミットを使用します。2 つのフェーズコミットの失敗から回復するには、Oracle ユーザーに適切なパーミッションを付与する必要があります。そうでないと、データベースは
XAException.XAER_RMERR
エラーを返します。ユーザーに対してこれらの 4 つの権限を設定します。GRANT SELECT ON sys.dba_pending_transactions TO user; GRANT SELECT ON sys.pending_trans$ TO user; GRANT SELECT ON sys.dba_2pc_pending TO user; GRANT EXECUTE ON sys.dbms_xa TO user;
この GRANT EXECUTE 行は、Oracle サーバーがバージョン 11g R1 であることを前提としています。11g R1 よりも古いパッチが適用されていないバージョンの Oracle については、代わりに以下の行を使用してください。GRANT EXECUTE ON sys.dbms_system TO user;
- db_block_size 値が最低でも 8 KB であることを確認します。
SQL> show parameter db_block_size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192