一定期間にOracleデータベースで発生した挿入/更新の総数を取得するにはどうすればよいですか?Oracleデータベースで挿入/更新の回数を取得するにはどうすればよいですか?
答えて
すべてのSQL文のデータを保持するようにAWRを構成したとします(STATISTICS_LEVEL
が「TYPICAL」の場合はデフォルトでCPU、経過時間などで上位30を保持し、STATISTICS_LEVEL
BEGIN
dbms_workload_repository.modify_snapshot_settings (
topnsql => 'MAXIMUM'
);
END;
、あなたは、このいくつかのためにAWRのテーブルを使用することができ、スナップショットは、それらをキャプチャする前に、SQL文がキャッシュの期限がないと仮定してのようなものを経由して「ALL」)です。
あなたはこれらのクエリは、両方のステートメントが含まれていることを、あなたのアプリケーションの問題や文そのOracleいることを注意
SELECT sum(stat.executions_delta) insert_executions
FROM dba_hist_sqlstat stat
JOIN dba_hist_sqltext txt ON (stat.sql_id = txt.sql_id)
JOIN dba_hist_snapshot snap ON (stat.snap_id = snap.snap_id)
WHERE snap.begin_interval_time BETWEEN <<start time>> AND <<end time>>
AND txt.command_type = 2;
SELECT sum(stat.executions_delta) update_executions
FROM dba_hist_sqlstat stat
JOIN dba_hist_sqltext txt ON (stat.sql_id = txt.sql_id)
JOIN dba_hist_snapshot snap ON (stat.snap_id = snap.snap_id)
WHERE snap.begin_interval_time BETWEEN <<start time>> AND <<end time>>
AND txt.command_type = 6;
UPDATE文が実行されたことをINSERT文が実行された回数と回数を収集することができますバックグラウンドでの問題特定のSQL文を除外するには、追加の条件を追加することができます。
同様に、あなたは
SELECT count(distinct stat.sql_id) distinct_insert_stmts
FROM dba_hist_sqlstat stat
JOIN dba_hist_sqltext txt ON (stat.sql_id = txt.sql_id)
JOIN dba_hist_snapshot snap ON (stat.snap_id = snap.snap_id)
WHERE snap.begin_interval_time BETWEEN <<start time>> AND <<end time>>
AND txt.command_type = 2;
SELECT count(distinct stat.sql_id) distinct_update_stmts
FROM dba_hist_sqlstat stat
JOIN dba_hist_sqltext txt ON (stat.sql_id = txt.sql_id)
JOIN dba_hist_snapshot snap ON (stat.snap_id = snap.snap_id)
WHERE snap.begin_interval_time BETWEEN <<start time>> AND <<end time>>
AND txt.command_type = 6;
個別のINSERTおよびUPDATEステートメントの合計数を得ることができるOracleは、しかし、一定の間隔で挿入または更新された行の数を追跡することはありません。 AWRからその情報を得ることができなくなります。あなたが得ることができる最も近いのは、統計が古くなっているかどうかを判断するために、Oracleの監視を活用しようとすることです。 MONITORING
と仮定すると、各テーブルのために有効になっている(これは、11gのデフォルトであり、私はそれが10グラムで、デフォルトであると考えている)、すなわち
ALTER TABLE table_name
MONITORING;
Oracleは、定期的に、挿入、更新、および削除された行の概数をフラッシュしますテーブルごとにSYS.DBA_TAB_MODIFICATIONS
テーブルに追加します。しかし、統計は特定の間隔での活動ではなく、表に集められているので、これは活動を示すだけです。しかし、定期的にこのデータを自分のテーブルに取り込み、それを報告するプロセスを作成しようとすることもできます。
あなたがメモリからディスクに監視情報をフラッシュするためにOracleに指示した場合は(そうでない場合は、数時間までのタイムラグがある)
BEGIN
dbms_stats.flush_database_monitoring_info;
END;
変更した行数のおおよその数を取得することができます統計が最後に収集されてから各テーブルに表示されます
SELECT table_owner,
table_name,
inserts,
updates,
deletes
FROM sys.dba_tab_modifications
- 1. JPA:挿入後に更新されたエンティティオブジェクトを取得するにはどうすればよいですか?
- 2. 挿入/更新時にデータベースの変更を確認するにはどうすればよいですか?
- 3. Oracleテーブルに大きなサイズのデータを挿入/更新するにはどうすればよいですか?
- 4. データベースで最後に挿入された値を取得するにはどうすればよいですか?
- 5. mysql_real_escape_string()の結果をOracleデータベースに挿入するにはどうすればよいですか?
- 6. Oracleでブロックヘッダーサイズを取得するにはどうすればよいですか?
- 7. データベーステーブルが更新/挿入された場合、自動的に更新するWindows C#コントロールを取得するにはどうすればよいですか?
- 8. Oracleデータベースから行のサブセットを取得するにはどうすればよいですか?
- 9. Sharepointの複数行フィールドに新しい行を挿入するにはどうすればよいですか?
- 10. jQuery:html文字列を任意の回数挿入するにはどうすればよいですか?
- 11. データベースに複数の行を挿入するにはどうすればよいですか?
- 12. 挿入コードに必要な数のIDを挿入するにはどうすればよいですか?
- 13. 更新中にデータを挿入するにはどうすればよいですか?
- 14. データベースが更新されたときにページを更新するにはどうすればよいですか?
- 15. Oracle 11gで2日間の日数を取得するにはどうすればよいですか?
- 16. 一括挿入のようなテーブルに値を挿入するにはどうすればよいですか?
- 17. テーブルに挿入してプライマリキーの値を取得するにはどうすればよいですか?
- 18. Pymongoでは、データベースのフォームからデータを挿入するにはどうすればよいですか?
- 19. 複数の入力フィールドで複数の値を取得するにはどうすればよいですか?
- 20. OracleにBCの日付を挿入するにはどうすればよいですか?
- 21. PHPを使用してOracleデータベースに変数を使用して複数の行を挿入するにはどうすればよいですか?
- 22. C#のWindowsアプリケーションでデータグリッドビューのエントリをSQLデータベースに挿入するにはどうすればよいですか?
- 23. カサンドラの更新と挿入カラムをヌルに設定するにはどうすればいいですか?
- 24. Yii2:更新/挿入フォームにdropDownの名前を表示するにはどうすればいいですか?
- 25. ZENDで更新された行IDを取得するにはどうすればよいですか?
- 26. MongoDBサブ文書をMongerで更新/挿入するにはどうすればいいですか?
- 27. Androidデバイスでカレンダーの予定の更新を取得するにはどうすればよいですか?
- 28. ASP.NET Core MVCでファイルの最終更新日を取得するにはどうすればよいですか?
- 29. フォーラムに新しいユーザーをプログラムで挿入するにはどうすればよいですか?
- 30. Oracleデータベースをリモートからアクセスできるようにするにはどうすればよいですか?
AWRテーブルを使用するライセンスはありますか? –
データベース全体または特定のテーブルについて懸念していますか? –
@justin:はい、@ j0rd4n:データベース全体 – Nohsib