Oracle Databaseのメモリーと記憶域のサイズを確認する方法
特定の場面では、開発環境またはスタンバイデータベースとして設定されるデータベースの推定リソース要件を求められます。 以下は、既存の本番データベースに基づいてメモリとストレージのサイズを計算するための私の方法です。 ストレージサイズの計算は、UNIXおよびLINUXのためのものです。
1. 既存のデータベースの推定メモリフットプリントを取得します。
—- データベース・インスタンスのsgaフットプリントを取得します。
SQL>select sum(value)/1024/1024″TOTAL SGA(MB)”FROM v$sga;
—- データベース・インスタンスの現在のPGA消費量の取得:
v$プロセスからsum(pga_max_mem)/1024/1024「合計最大PGA(MB)」を選択します。;
PGAメモリー使用量の詳細な内訳:
spid、プログラムを選択、
pga_max_mem max、
pga_alloc_mem alloc、
pga_used_mem used、
PGA_freeable_mem free
FROM V PROCESS PROCESS;
PGA_max_mem free
FROM V PROCESS PROCESS;
PGA_max_mem max,
PGA_max_mem max,
PGA_max_mem max,
PGA_alloc_mem alloc,
>注:結果のプログラム名に関連付けられたプロセス名がありません(例. モン、スモン、レコ、。.)はセッションプロセスである。
initパラメータプロセスの設定によっては、上記のクエリがアクティブな接続のみをキャプチャする可能性があります。
—- 接続されていないセッションの推定メモリ要件を取得します:
以下のクエリは、ユーザーセッションによって割り当てられた最大メモリを提供します。 これを使用して、接続されていないプロセスの残りのメモリ要件を計算します。
v process process p,v$session s
からmax(p.pga_max_mem)/1024/1024″PGA MAX MEMORY OF USER SESSION(MB)”
を選択します。P.ADDR=S.paddrおよびs.usernameはnullではありません;
Oracleインスタンスが処理できるプロセスの最大数を取得します。
select name,value from v$parameter
where name=’processes’;
接続されたセッションの数を数えてみましょう:
select count(1)from v session session
where username is not null;
processesパラメーター値から接続されたセッション数を減算して、使用可能な接続の合計を取得します。
結果の値に、前のクエリによって行われたセッションによって、結果の最大割り当てメモリを乗算する必要があります。
これにより、追加の接続に対応するために必要な予備メモリの推定量が得られます。
推定合計メモリ要件
SGA+PGA=現在の接続のためのESTメモリー要件
SGA+PGA+未接続セッション=最大プロセス使用時のESTメモリ要件
ここで、
未接続セッション(MB)=(プロセス接続セッション)*pgaユーザーセッションの最大メモリ
2. データベースの推定記憶域サイジング要件を取得します。
ストレージサイズを決定する際の以下の手順は、UNIXおよびLINUX環境を対象としています。 Windows用として、ちょうど右クリックして、クエリの結果によって与えられたドライブ文字のそれぞれのプロパティを選択します。
@primary server,
–結果の各コマンドをコピーしてシェルスクリプトに貼り付け、プライマリサーバーで実行してマウントポイントのサイズを取得します
一意の’df-k’||aを選択します。MTPOINT MOUNT_POINT
from(select substr(FILE_NAME,0,instr(FILE_NAME)),’/’,1,2)-1) MTPOINT
from dba_data_files
union
select substr(FILE_NAME,0,instr(FILE_NAME,’/’,1,2)-1) MTPOINT
from dba_temp_files
union
select substr(MEMBER,0,instr(MEMBER),0,instr(MEMBER),0,instr(MEMBER),0,instr(member),0,instr(member),0,instr(member),0,instr(member),’/’,1,2)-1) MTPOINT
from v log logfile
union
select substr(NAME,0,instr(NAME,’/’,1,2)-1) MTPOINT
からv$controlfile
)a;
— すべてのパラメータ・ファイルの宛先を照会し、データファイル・マウント・ポイントまたはORACLE_BASE dirとは異なるパスであるかどうかを判断します。
ファイル宛先のマウントポイントサイズを取得
名前、値を選択
from v parameter parameter
where(regexp_like(name,’^log_archive_(dest|dest\_())”,’i’)またはname like’%dump_dest’またはname like’%file_dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’diag%dest’またはname like’=’utl_file_dir’)および値がnullではありません;
— データベースディレクトリにマウントポイントを照会します
‘df-k’を選択します。||substr(DIRECTORY_PATH,0,instr(DIRECTORY_PATH,’/’,1,2)-1) DBA_directoriesからのMTPOINT;
dfコマンドの代わりに、すべての有効なデータベース関連のマウントポイントを単一の文字列でgrepして、より簡潔なレポートを取得することができます。
例:
$df-k|grep-E’|u01||u02||utldir||opt’