Logo   Oracle Knowledge - KROWN: 135543 (Doc ID: 1746428.1)

Last update : 2024-09-19  

    [ 対象リリース ] 
    Oracle9i Database Release 2 以降のすべてのリリース
    
    [ 対象プラットフォーム ]
    すべてのプラットフォーム
    
    [ 詳細 ]
    マテリアライズド・ビューの問題を診断する為に役立つ情報を取得するスクリプト。
    
    スクリプトはマスター表に関する情報を取得するマスターサイト向けのスクリプトと、マテリアライズド・ビューに関する情報を取得するマテリアライズド・ビューサイト向けの2つのスクリプトを記載しています。
    マスター表とマテリアライズド・ビューが同一サイトに存在する場合は2つのスクリプトを同一サイトにて実行し、情報を取得してください。
    
    < 実行方法 >
     (1) 後述のスクリプトを setup.sql や mview.sql などの sql ファイルとして保存してください。
    
     (2) 各サイトにて、SQL*Plus よりスクリプトを実行します。
    
       - マスターサイト
    
         % sqlplus /nolog @setup.sql 
    
       - マテリアライズド・ビューサイト
    
         % sqlplus /nolog @mview.sql
    
     (3) 上記実行後、以下が出力されますので、結果を出力するファイル名を指定してください。
    
         Please enter the pathname / filename of the spool file to write the output to below:
    
         Filename/Pathname:
    
    < スクリプト >
    -------------- setup.sql (マスターサイト用スクリプト) ココから  --------------------------------------------------
    connect / as sysdba
    
    set echo off
    alter session set nls_date_format='HH24:Mi:SS YY/MM/DD';
    set feedback off
    set heading off
    set long 200000
    set line 100
    set pages 100
    set trimspool on
    set serveroutput on
    
    PROMPT
    PROMPT Please enter the pathname / filename of the spool file to write the output to below:
    PROMPT
    ACCEPT pathname PROMPT 'Filename/Pathname: '
    
    spool &pathname
    
    PROMPT
    PROMPT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    select 'Materialized Miew Master Site Environment Script Ouput
    for global_name='||global_name||' on Instance='||instance_name||' hostname='||HOST_NAME||' generated: '||sysdate o from global_name, v$instance;
    PROMPT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    PROMPT
    
    set heading on timing off
    
    prompt
    prompt
    prompt ++ VERSION ++
    
    select * from v$version;
    
    prompt
    prompt
    prompt ++ PARAMETER INFORMATION ++
    show parameter
    
    prompt
    prompt
    prompt ++ SYS.MLOG$ INFORMATION ++
    
    select * from sys.mlog$;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_LOGS INFORMATION ++
    
    select * from DBA_MVIEW_LOGS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_LOG_FILTER_COLS INFORMATION ++
    
    select * from DBA_MVIEW_LOG_FILTER_COLS;
    
    prompt
    prompt
    prompt ++ SYS.SLOG$ (DBA_BASE_TABLE_MVIEWS) INFORMATION ++
    
    select * from sys.slog$;
    
    prompt
    prompt
    prompt ++ DBA_REGISTERED_MVIEWS INFORMATION ++
    
    select * from DBA_REGISTERED_MVIEWS;
    
    prompt
    prompt
    prompt ++ DBA_INTERNAL_TRIGGERS INFORMATION ++
    
    select * from DBA_INTERNAL_TRIGGERS;
    
    prompt
    prompt
    prompt ++ DIAGNOSTIC ORA-12004 (Document 179469.1), ORA-12034 (Document 204127.1) ++
    
    SELECT m.mowner, m.master, m.log,m.youngest,s.snapid,s.snaptime,oldest_pk,oldest
    from sys.mlog$ m, sys.slog$ s
    WHERE s.mowner (+) = m.mowner
    and s.master (+) = m.master;
    
    prompt
    prompt
    prompt ++ MVIEW REGISTRATION INFORMATION (Document 236233.1) ++
    select l.snapshot_id, owner, name, substr(snapshot_site,1,30) snapshot_site, current_snapshots
    from dba_registered_snapshots r, dba_snapshot_logs l
    where r.snapshot_id = l.snapshot_id (+);
    
    prompt
    prompt
    prompt ++ DBA_SEGMENTS INFORMATION ++
    col SEGMENT_NAME form a30
    select owner,segment_name,partition_name,bytes/1024 KB ,blocks,extents
    from dba_segments where ((owner,segment_name) in (select mowner,master from sys.mlog$)) or segment_name like 'MLOG$%'
    order by owner,segment_name;
    
    prompt
    prompt
    prompt ++ DBA_OBJECTS INFORMATION ++
    col OBJECT_NAME form a30
    select * from dba_objects where ((owner , object_name) in (select mowner,master from sys.mlog$)) or object_name like 'MLOG$%'
    order by owner,object_name;
    
    prompt
    prompt
    prompt ++ MLOG RECORD INFORMATION ++
    declare
     cursor c_mlog is select mowner, master, log, flag from sys.mlog$;
     cnt number;
     mindate date;
     bnum number;
    begin
     for r_mlog in c_mlog loop
      execute immediate 'select count(*),min(SNAPTIME$$),count(distinct dbms_rowid.rowid_block_number(rowid))
                         from '||r_mlog.mowner||'.'||r_mlog.log into cnt , mindate ,bnum;
      dbms_output.put_line(r_mlog.mowner||'.'||r_mlog.log||' num_records=>'||cnt||' min_snaptime=>'|| to_char(mindate,'yyyy/mm/dd hh24:mi:ss')||' num_blocks=>'||bnum);
     end loop;
    end;
    /
    
    prompt
    prompt
    prompt End script.
    spool off
    prompt
    prompt Done spooling to &pathname
    prompt
    exit;
    -------------- マスターサイト用スクリプト ココまで  --------------------------------------------------------------
    
    -------------- mview.sql (マテリアライズド・ビューサイト用スクリプト) ココから  -----------------------------------
    connect / as sysdba
    
    set echo off
    alter session set nls_date_format='HH24:Mi:SS MM/DD/YY';
    set feedback off
    set heading off
    set long 200000
    set line 100
    set pages 100
    set trimspool on
    set serveroutput on
    
    PROMPT
    PROMPT Please enter the pathname / filename of the spool file to write the output to below:
    PROMPT
    ACCEPT pathname PROMPT 'Filename/Pathname: '
    
    spool &pathname
    
    PROMPT
    PROMPT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    select 'Materialized Miew Mview Site Environment Script Ouput
    for global_name='||global_name||' on Instance='||instance_name||' hostname='||HOST_NAME||' generated: '||sysdate o from global_name, v$instance;
    PROMPT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    PROMPT
    
    set heading on timing off
    
    prompt
    prompt
    prompt ++ VERSION ++
    
    select * from v$version;
    
    prompt
    prompt
    prompt ++ PARAMETER INFORMATION ++
    show parameter
    
    prompt
    prompt
    prompt ++ SYS.SNAP$ INFORMATION ++
    
    select * from sys.snap$;
    
    prompt
    prompt
    prompt ++ SYS.SNAP_REFTIME$(DBA_MVIEW_REFRESH_TIMES) INFORMATION ++
    
    select * from sys.snap_reftime$;
    
    prompt
    prompt
    prompt ++ DBA_MVIEWS INFORMATION ++
    
    select * from DBA_MVIEWS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_ANALYSIS INFORMATION ++
    
    select * from DBA_MVIEW_ANALYSIS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_AGGREGATES INFORMATION ++
    
    select * from DBA_MVIEW_AGGREGATES;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_DETAIL_RELATIONS INFORMATION ++
    
    select * from DBA_MVIEW_DETAIL_RELATIONS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_KEYS INFORMATION ++
    
    select * from DBA_MVIEW_KEYS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_JOINS INFORMATION ++
    
    select * from DBA_MVIEW_JOINS;
    
    prompt
    prompt
    prompt ++ DBA_REGISTERED_MVIEW_GROUPS INFORMATION ++
    
    select * from DBA_REGISTERED_MVIEW_GROUPS;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_DETAIL_PARTITION INFORMATION (11g onward)++
    
    select * from DBA_MVIEW_DETAIL_PARTITION;
    
    prompt
    prompt
    prompt ++ DBA_MVIEW_DETAIL_SUBPARTITION INFORMATION (11g onward)++
    
    select * from DBA_MVIEW_DETAIL_SUBPARTITION;
    
    prompt
    prompt
    prompt ++ DBA_REFRESH INFORMATION ++
    
    select * from DBA_REFRESH;
    
    prompt
    prompt
    prompt ++ DBA_REFRESH_CHILDREN INFORMATION ++
    
    select * from DBA_REFRESH_CHILDREN;
    
    prompt
    prompt
    prompt ++ DBA_RGROUP INFORMATION ++
    
    select * from DBA_RGROUP;
    
    prompt
    prompt
    prompt ++ DBA_RCHILD INFORMATION ++
    
    select * from DBA_RCHILD;
    
    prompt
    prompt
    prompt ++ DBA_DB_LINKS INFORMATION ++
    
    select * from DBA_DB_LINKS;
    
    prompt
    prompt
    prompt ++ DBA_JOBS INFORMATION ++
    
    select * from DBA_JOBS;
    
    prompt
    prompt
    prompt ++ DBA_JOBS_RUNNING INFORMATION ++
    
    select * from DBA_JOBS_RUNNING;
    
    prompt
    prompt
    prompt ++ GV$MVRESRESH INFORMATION ++
    
    SELECT * FROM GV$MVREFRESH;
    
    
    prompt
    prompt
    prompt ++ DBA_SEGMENTS INFORMATION ++
    col SEGMENT_NAME form a30
    select owner,segment_name,partition_name,bytes/1024 KB ,blocks,extents
    from dba_segments where (owner,segment_name) in (select sowner,vname from sys.snap$)
    order by owner,segment_name;
    
    prompt
    prompt
    prompt ++ DBA_OBJECTS INFORMATION ++
    col OBJECT_NAME form a30
    select * from dba_objects where (owner , object_name) in  (select sowner,vname from sys.snap$)
    order by owner,object_name,object_type;
    
    prompt
    prompt
    prompt ++ DBA_INDEXES INFORMATION ++
    col INDEX_NAME form a30
    select * from dba_indexes where (table_owner,table_name) in 
    (select sowner,vname from sys.snap$)
    order by owner,index_name;
    
    prompt
    prompt
    prompt End script.
    spool off
    prompt
    prompt Done spooling to &pathname
    prompt
    exit;
    -------------- マテリアライズド・ビューサイト用スクリプト ココまで  -----------------------------------
    
    
    
    [ 補足事項 ]
    DBA_MVIEW_DETAIL_PARTITION 及び DBA_MVIEW_DETAIL_SUBPARTITION のデータ
    ディクショナリビューは 11.1.0 以後のリリースのみ検索可能です。10.2.0 以
    前のリリースでは ORA-942 のエラーが出力されますが問題はございません。