データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

OracleDatabaseでの統計の復元

このブログ投稿では、Oracle®Databaseで統計を復元するタイミングと方法について説明しています。

はじめに

データベース管理者(DBA)として、freshstatisticsを収集すると、オプティマイザーが次善の実行プランを実行することにつながることがよくあります。そのような場合は、パフォーマンスが向上した時点から統計を復元することをお勧めします。

ただし、Oracle Databaseのバージョンが異なれば、統計の処理方法に小さな変更があります。

  • Oracle 10gは、簡単に復元できるように統計の自動保存を開始しました。
  • 11.1以降、Oracleはより優れた方法を導入し、統計の公開を延期できるようにしました。
統計パフォーマンスが低い理由として考えられるもの

最適化が最適な実行プランを確実に実行するために統計を収集する必要がある場合がありますが、統計を収集すると、SQLステートメントの解析された表現が無効になります。また、統計を収集した後にステートメントを再解析すると、オプティマイザーは元のプランとは異なり、最適化されていない実行プランを選択する可能性があります。

Oracle 10g以降では、 dbms_statsを使用して統計を復元できます。 パッケージ。統計を復元して統計をエクスポートするオプションを提供します。

デフォルトでは、Oracleは31日間の履歴統計を保持しますが、その期間を変更できます。

次の画像は、現在の保持期間を表示するSQLコマンドを示しています。

OracleDatabaseでの統計の復元

保存期間を変更するには、次のコマンドを実行します。ここで、 xx 使用する日数です:

 SQL> execute DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (xx)

次のクエリは、復元できる履歴データの統計を理解するのに役立ちます。

OracleDatabaseでの統計の復元

注: この例は、前述の日付以降の統計を示しています。

テーブル統計の復元

この例は、前の日付からテーブル統計を復元する方法を示しています。

まず、次のコマンドを実行して、使用可能な統計を特定します。

SQL> select TABLE_NAME, STATS_UPDATE_TIME from dba_tab_stats_history where table_name like 'MY_TABLE' and owner='MYSELF' order by 2;

TABLE_NAME      STATS_UPDATE_TIME
--------------- --------------------------------------
MY_TABLE        20-DEC-19 05.32.26.887184 AM -05:00
MY_TABLE        20-DEC-19 10.10.19.361091 PM -05:00
MY_TABLE        21-DEC-19 05.32.14.475934 AM -05:00
MY_TABLE        21-DEC-19 10.10.18.725917 PM -05:00
MY_TABLE        22-DEC-19 10.10.17.841143 PM -05:00
MY_TABLE        23-DEC-19 05.32.56.168779 AM -05:00
MY_TABLE        23-DEC-19 10.10.23.633939 PM -05:00
MY_TABLE        24-DEC-19 05.32.14.082730 AM -05:00
MY_TABLE        24-DEC-19 10.10.21.712948 PM -05:00
MY_TABLE        25-DEC-19 05.32.13.710159 AM -05:00
MY_TABLE        25-DEC-19 10.10.17.836929 PM -05:00
MY_TABLE        26-DEC-19 05.32.14.545533 AM -05:00
MY_TABLE        26-DEC-19 10.10.12.808687 PM -05:00
MY_TABLE        27-DEC-19 05.32.13.779967 AM -05:00

そのMY_TABLEを見ることができます 過去数日間に数回分析されました。21-DEC-1910.10.18.725917 PM -05:00に収集されたテーブルのテーブル統計を復元するには 、次のコマンドを実行します:

SQL> execute dbms_stats.restore_table_stats('MYSELF','MY_TABLE','21-DEC-19 10.10.18.725917 PM -05:00');

PL/SQL procedure successfully completed.
スキーマ統計の復元

この例は、前の日付からスキーマ統計を復元する方法を示しています。

21-DEC-19 10.10.18.725917 PM -05:00に収集されたテーブルのスキーマ統計を復元するには 、次のコマンドを実行します:

SQL> exec dbms_stats.restore_schema_stats(ownname=>'MYSELF', AS_OF_TIMESTAMP=>'21-DEC-19 10.10.18.725917 PM -05:00');

AS_OF_TIMESTAMPで使用可能なスキーマ統計オプションを見つけるには 、次のコマンドを実行して、復元する適切な日付を選択します。

 select count(*), stats_update_time from dba_tab_stats_history where owner='MYSELF'group by stats_update_time;
他の統計を復元する

テーブルとスキーマの統計を復元する方法を見てきました。次のリストは、以前の統計を復元できるすべてのエンティティを示しています。

  • TABLE_STATS
  • SCHEMA_STATS
  • DATABASE_STATS
  • DICTIONARY_STATS
  • FIXED_OBJECTS_STATS
  • SYSTEM_STATS
保存する統計をエクスポート

次の手順を実行して、変更を加える前に、保存する統計をエクスポートしたり、現在の統計をエクスポートしたりすることもできます。

  1. 次の例のようなコマンドを実行して、統計テーブルを作成します。

    Exec dbms_stats.create_stat_table(ownname =>‘MYSELF’、stattab =>‘MYSELF_STATS_ '、tblspace =>‘

    ');

    自分の名前: 所有者名stattab: tblspaceを作成するためのユーザーMYSELFの下のテーブル名: このテーブルを作成するテーブルスペース

  2. 次の例のようなコマンドを実行して、前の表の統計をエクスポートします。

    exec dbms_stats.export_table_stats(‘SCHEMA1’、‘TAB1’、NULL、‘STATS’、‘TAG1_TAB1’、TRUE);

    例:

    Exec dbms_stats.export_database_stats(statown =>‘MYSELF’、stattab =>‘MYSELF_STATS’);

  3. 結論

    この投稿の情報とクエリは、すべてのタイプのデータベース統計(テーブル、データベース、スキーマ、Fixed_Object、システム、および辞書)を妥当な過去の日付に復元し、スムーズなデータベースパフォーマンスを保証するのに役立ちます。

    コメントや質問をするには、[フィードバック]タブを使用します。今すぐチャットして会話を開始することもできます。

    データベースサービスの詳細


    1. Oracle19cでDBCAコマンドを使用してデータベースのクローンを作成する

      このブログでは、Oracle19cの新機能であるDatabaseConfiguration Assistant(DBCA)を使用して、ソースデータベースのバックアップを作成せずにリモートプラガブルデータベース(PDB)をコンテナデータベース(CDB)に複製する方法を紹介します。 ソースからターゲットへのクローン作成にかかる時間は最小限です。 ソースDBの詳細 CDB:LCONCDBPDB:LCON 以下は総数です。ソース内の各コンテナ(CDBおよびPDB)の下にあるDBFファイルのうち、クローンがターゲット内にある後に検証する必要があります。上記のソースDBから、ターゲットホスト内にCDB

    2. データベース管理者向けの新しいOracle19c機能

      Oracle®Databaseバージョン19cでは、多数の新機能と改善された機能が導入されました。 はじめに Oracle 19cは、Oracle Database 12cリリース2製品ファミリの最後であり、長期的なサポートがあります。 Linux®、Windows®、Solaris®、HP /UX®、AIX®プラットフォーム、およびOracleCloudで使用できます。 Oracle 19cは、すべての運用および分析ワークロードに対して最高のパフォーマンス、スケーラビリティ、信頼性、およびセキュリティ機能をお客様に提供します。 機能 データベース管理者(DBA)のタスクを簡単にする新機能