web-dev-qa-db-ja.com

Oracle:ロジカルスタンバイデータベースで統計を収集する方法?

プライマリデータベースと(論理)スタンバイデータベースがあります。スキーマ「APP」が同期されます。これで、ユーザーは、スタンバイデータベースのこの「APP」スキーマの一部のテーブルに対してクエリを実行すると、パフォーマンスの問題が発生します。プライマリでは、テーブル(DBMS_STATS.GATHER_TABLE_STATS)の統計を収集した後、同じクエリが適切に実行されました。

スタンバイ側の統計を更新する方法は? DBMS_STATS.GATHER_TABLE_STATSは ORA-16224 を提供します。

SELECT table_name,last_analyzed FROM dba_tables WHERE table_name IN ('TAB1','TAB2');

スタンバイ統計が少し古すぎることがはっきりとわかります;)

SELECT guard_status FROM v$database;

GUARD_STATUS
------------
STANDBY 
4
scratch

ガード機能を一時的に非アクティブ化しない限り、ロジカルスタンバイデータベースでDMLを実行することはできません。あなたの問題を克服するためにあなたは行うことができます:

SQL> ALTER DATABASE GUARD NONE;
SQL> SELECT GUARD_STATUS FROM V$DATABASE; 
GUARD_STATUS 
-------------------- 
NONE

次に、dbms_statsを実行します。

1
Ste