- PR -

Oracle DB全体の統計情報取得

1
投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-30 13:19
件名の事をやりたいと思っているのですが、
そういったプロシージャ コマンドはないんでしょうか。

ご存知の方よろしくお願いいたします。

スキーマ単位ではあるようなのですが、、、↓
EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('スキーマ名','COMPUTE');
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-03-30 13:46
GATHER_DATABASE_STATS()というプロシージャがあります。
SQL*Plusから実行する場合はこんな感じです。

EXECUTE DBMS_STATS.GATHER_DATABASE_STATS(cascade=>TRUE, gather_sys=>TRUE);

上記例では
・INDEXについても統計を取得する
・SYSユーザ所有のオブジェクトについても統計情報を取得する
というオプションを設定しています。
他にもオプションがありますので、マニュアルを見た上で必要なオプションを設定していけば良いと思います。

=== 追記 ===
すみません、ANALYZEですので非オプティマイザ統計情報の収集ですね。
それなら、DBMS_UTILITY.ANALYZE_DATABASE()というプロシージャが適当だと思います。

[ メッセージ編集済み 編集者: いーた 編集日時 2005-03-30 13:51 ]
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-30 17:07
実際にやってみたのですが、以下のようなエラーがでてしまいました。
SYS.DBMS_STATSは関係してるんでしょうか???

racle9i Enterprise Edition Release 9.2.0.1.0 - Production
ith the Partitioning, OLAP and Oracle Data Mining options
Server Release 9.2.0.1.0 - Production
ノ接続されました。
QL> EXECUTE DBMS_STATS.GATHER_DATABASE_STATS(cascade=>TRUE, gather_sys=>TRUE);
EGIN DBMS_STATS.GATHER_DATABASE_STATS(cascade=>TRUE, gather_sys=>TRUE); END;


s1でエラーが発生しました。:
RA-06564: オブジェクトDATA_FILE_DIRは存在しません。
RA-06512: "SYS.DBMS_STATS", 行9136
RA-06512: "SYS.DBMS_STATS", 行9616
RA-06512: "SYS.DBMS_STATS", 行9800
RA-06512: "SYS.DBMS_STATS", 行9893
RA-06512: "SYS.DBMS_STATS", 行9873
RA-06512: 行1
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-03-31 09:51
gather_sys=>TRUEの場合はSYSユーザ所有のオブジェクトについても統計情報を収集する為、SYSDBA権限が必要です。
SYS.DBMS_STATSはDBMS_STATS.GATHER_DATABASE_STATS()内部でCallしているプロシージャなんだと思います。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-31 21:03
いーたさん ご解答有難うございます。

gather_sys=falseにしたのですが、やはり同じエラーが、、、
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-04-06 01:10
遅レスですみません。
何か違う所で引っ掛かっている気が...

SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_FIR_DIR';
を実行した結果、DIRECTORY_PATHに表示されるディレクトリにはアクセス可能でしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)