您的位置:首页 > 数据库

Scripts:数据库巡检脚本for 10g dba_snapshot_database_10g.sql

2014-05-27 10:16 453 查看
-- +----------------------------------------------------------------------------+

-- | Jeffrey M. Hunter |

-- | jhunter@idevelopment.info |

-- | www.idevelopment.info |

-- |----------------------------------------------------------------------------|

-- | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. |

-- |----------------------------------------------------------------------------|

-- | DATABASE : Oracle |

-- | FILE : dba_snapshot_database_10g.sql |

-- | CLASS : Database Administration |

-- | PURPOSE : This SQL script provides a detailed report (in HTML format) on |

-- | all database metrics including installed options, storage, |

-- | performance data, and security. |

-- | VERSION : This script was designed for Oracle Database 10g Release 2. |

-- | Although this script will also work with Oracle Database 10g |

-- | Release 1, several sections will error out from missing tables |

-- | or columns. |

-- | USAGE : |

-- | |

-- | sqlplus -s <dba>/<password>@<TNS string> @dba_snapshot_database_10g.sql |

-- | |

-- | TESTING : This script has been successfully tested on the following |

-- | platforms: |

-- | |

-- | Linux : Oracle Database 10.2.0.3.0 |

-- | Linux : Oracle RAC 10.2.0.3.0 |

-- | Solaris : Oracle Database 10.2.0.2.0 |

-- | Solaris : Oracle Database 10.2.0.3.0 |

-- | Windows XP : Oracle Database 10.2.0.3.0 |

-- | |

-- | NOTE : As with any code, ensure to test this script in a development |

-- | environment before attempting to run it in production. |

-- +----------------------------------------------------------------------------+

prompt

prompt +-----------------------------------------------------------------------------------------+

prompt | Snapshot Database 10g Release 2 |

prompt |-----------------------------------------------------------------------------------------+

prompt | Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. (www.idevelopment.info) |

prompt +-----------------------------------------------------------------------------------------+

prompt

prompt Creating database report.

prompt This script must be run as a user with SYSDBA privileges.

prompt This process can take several minutes to complete.

prompt

define reportHeader="<font size=+3 color=darkgreen><b>Snapshot Database 10<i>g</i> Release 2</b></font><hr>Copyright (c) 1998-2012 Jeffrey M. Hunter. All rights reserved. (<a target=""_blank"" href=""http://www.idevelopment.info"">www.idevelopment.info</a>)<p>"

-- +----------------------------------------------------------------------------+

-- | SCRIPT SETTINGS |

-- +----------------------------------------------------------------------------+

set termout off

set echo off

set feedback off

set heading off

set verify off

set wrap on

set trimspool on

set serveroutput on

set escape on

set pagesize 50000

set linesize 175

set long 2000000000

clear buffer computes columns breaks

define fileName=dba_snapshot_database_10g

define versionNumber=5.3

-- +----------------------------------------------------------------------------+

-- | GATHER DATABASE REPORT INFORMATION |

-- +----------------------------------------------------------------------------+

COLUMN tdate NEW_VALUE _date NOPRINT

SELECT TO_CHAR(SYSDATE,'MM/DD/YYYY') tdate FROM dual;

COLUMN time NEW_VALUE _time NOPRINT

SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') time FROM dual;

COLUMN date_time NEW_VALUE _date_time NOPRINT

SELECT TO_CHAR(SYSDATE,'MM/DD/YYYY HH24:MI:SS') date_time FROM dual;

COLUMN date_time_timezone NEW_VALUE _date_time_timezone NOPRINT

SELECT TO_CHAR(systimestamp, 'Mon DD, YYYY (') || TRIM(TO_CHAR(systimestamp, 'Day')) || TO_CHAR(systimestamp, ') "at" HH:MI:SS AM') || TO_CHAR(systimestamp, ' "in Timezone" TZR') date_time_timezone

FROM dual;

COLUMN spool_time NEW_VALUE _spool_time NOPRINT

SELECT TO_CHAR(SYSDATE,'YYYYMMDD') spool_time FROM dual;

COLUMN dbname NEW_VALUE _dbname NOPRINT

SELECT name dbname FROM v$database;

COLUMN dbid NEW_VALUE _dbid NOPRINT

SELECT dbid dbid FROM v$database;

COLUMN platform_id NEW_VALUE _platform_id NOPRINT

SELECT platform_id platform_id FROM v$database;

COLUMN platform_name NEW_VALUE _platform_name NOPRINT

SELECT platform_name platform_name FROM v$database;

COLUMN global_name NEW_VALUE _global_name NOPRINT

SELECT global_name global_name FROM global_name;

COLUMN blocksize NEW_VALUE _blocksize NOPRINT

SELECT value blocksize FROM v$parameter WHERE name='db_block_size';

COLUMN startup_time NEW_VALUE _startup_time NOPRINT

SELECT TO_CHAR(startup_time, 'MM/DD/YYYY HH24:MI:SS') startup_time FROM v$instance;

COLUMN host_name NEW_VALUE _host_name NOPRINT

SELECT host_name host_name FROM v$instance;

COLUMN instance_name NEW_VALUE _instance_name NOPRINT

SELECT instance_name instance_name FROM v$instance;

COLUMN instance_number NEW_VALUE _instance_number NOPRINT

SELECT instance_number instance_number FROM v$instance;

COLUMN thread_number NEW_VALUE _thread_number NOPRINT

SELECT thread# thread_number FROM v$instance;

COLUMN cluster_database NEW_VALUE _cluster_database NOPRINT

SELECT value cluster_database FROM v$parameter WHERE name='cluster_database';

COLUMN cluster_database_instances NEW_VALUE _cluster_database_instances NOPRINT

SELECT value cluster_database_instances FROM v$parameter WHERE name='cluster_database_instances';

COLUMN reportRunUser NEW_VALUE _reportRunUser NOPRINT

SELECT user reportRunUser FROM dual;

-- +----------------------------------------------------------------------------+

-- | GATHER DATABASE REPORT INFORMATION |

-- +----------------------------------------------------------------------------+

set heading on

set markup html on spool on preformat off entmap on -

head ' -

<title>Database Report</title> -

<style type="text/css"> -

body {font:9pt Arial,Helvetica,sans-serif; color:black; background:White;} -

p {font:9pt Arial,Helvetica,sans-serif; color:black; background:White;} -

table,tr,td {font:9pt Arial,Helvetica,sans-serif; color:Black; background:#C0C0C0; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;} -

th {font:bold 9pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} -

h1 {font:bold 12pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} -

h2 {font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} -

a {font:9pt Arial,Helvetica,sans-serif; color:#663300; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.link {font:9pt Arial,Helvetica,sans-serif; color:#663300; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLink {font:9pt Arial,Helvetica,sans-serif; color:#663300; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkBlue {font:9pt Arial,Helvetica,sans-serif; color:#0000ff; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkDarkBlue {font:9pt Arial,Helvetica,sans-serif; color:#000099; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkRed {font:9pt Arial,Helvetica,sans-serif; color:#ff0000; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkDarkRed {font:9pt Arial,Helvetica,sans-serif; color:#990000; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkGreen {font:9pt Arial,Helvetica,sans-serif; color:#00ff00; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

a.noLinkDarkGreen {font:9pt Arial,Helvetica,sans-serif; color:#009900; text-decoration: none; margin-top:0pt; margin-bottom:0pt; vertical-align:top;} -

</style>' -

body 'BGCOLOR="#C0C0C0"' -

table 'WIDTH="90%" BORDER="1"'

spool &FileName._&_dbname._&_spool_time..html

set markup html on entmap off

-- +----------------------------------------------------------------------------+

-- | - REPORT HEADER - |

-- +----------------------------------------------------------------------------+

prompt <a name=top></a>

prompt &reportHeader

-- +----------------------------------------------------------------------------+

-- | - REPORT INDEX - |

-- +----------------------------------------------------------------------------+

prompt <a name="report_index"></a>

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Report Index</b></font><hr align="center" width="250"></center> -

<table width="90%" border="1"> -

<tr><th colspan="4">Database and Instance Information</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#report_header">Report Header</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#version">Version</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#options">Options</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#database_registry">Database Registry</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#feature_usage_statistics">Feature Usage Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#high_water_mark_statistics">High Water Mark Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#instance_overview">Instance Overview</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#database_overview">Database Overview</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#initialization_parameters">Initialization Parameters</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#control_files">Control Files</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#control_file_records">Control File Records</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#online_redo_logs">Online Redo Logs</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#redo_log_switches">Redo Log Switches</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#outstanding_alerts">Outstanding Alerts</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#statistics_level">Statistics Level</a></td> -

<td nowrap align="center" width="25%"><br></td> -

</tr>

prompt -

<tr><th colspan="4">Scheduler / Jobs</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#jobs">Jobs</a></td> -

<td nowrap align="center" width="25%"><br></td> -

<td nowrap align="center" width="25%"><br></td> -

<td nowrap align="center" width="25%"><br></td> -

</tr> -

<tr><th colspan="4">Storage</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#tablespaces">Tablespaces</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#data_files">Data Files</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#database_growth">Database Growth</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#tablespace_extents">Tablespace Extents</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#tablespace_to_owner">Tablespace to Owner</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#owner_to_tablespace">Owner to Tablespace</a></td> -

<td nowrap align="center" width="25%"><br></td> -

<td nowrap align="center" width="25%"><br></td> -

</tr>

prompt -

<tr><th colspan="4">UNDO Segments</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#undo_segments">UNDO Segments</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#undo_segment_contention">UNDO Segment Contention</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#undo_retention_parameters">UNDO Retention Parameters</a></td> -

<td nowrap align="center" width="25%"><br></td> -

</tr>

prompt -

<tr><th colspan="4">Backups</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_backup_jobs">RMAN Backup Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_configuration">RMAN Configuration</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_backup_sets">RMAN Backup Sets</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_backup_pieces">RMAN Backup Pieces</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_backup_control_files">RMAN Backup Control Files</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#rman_backup_spfile">RMAN Backup SPFILE</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#archiving_mode">Archiving Mode</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#archive_destinations">Archive Destinations</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#archiving_instance_parameters">Archiving Instance Parameters</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#archiving_history">Archiving History</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#flash_recovery_area_parameters">Flash Recovery Area Parameters</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#flash_recovery_area_status">Flash Recovery Area Status</a></td> -

</tr>

prompt -

<tr><th colspan="4">Flashback Technologies</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#undo_retention_parameters">UNDO Retention Parameters</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#flashback_database_parameters">Flashback Database Parameters</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#flashback_database_status">Flashback Database Status</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#flashback_database_redo_time_matrix">Flashback Database Redo Time Matrix</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_recycle_bin">Recycle Bin</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr>

prompt -

<tr><th colspan="4">Performance</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#sga_information">SGA Information</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#sga_target_advice">SGA Target Advice</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#sga_asmm_dynamic_components">SGA (ASMM) Dynamic Components</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#pga_target_advice">PGA Target Advice</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#file_io_statistics">File I/O Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#file_io_timings">File I/O Timings</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#average_overall_io_per_sec">Average Overall I/O per Second</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#redo_log_contention">Redo Log Contention</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#full_table_scans">Full Table Scans</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#sorts">Sorts</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_outlines">Outlines</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_outline_hints">Outline Hints</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#sql_statements_with_most_buffer_gets">SQL Statements With Most Buffer Gets</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#sql_statements_with_most_disk_reads">SQL Statements With Most Disk Reads</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_enabled_traces">Enabled Traces</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_enabled_aggregations">Enabled Aggregations</a></td> -

</tr>

prompt -

<tr><th colspan="4">Automatic Workload Repository - (AWR)</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#awr_workload_repository_information">Workload Repository Information</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#awr_snapshot_settings">AWR Snapshot Settings</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#awr_snapshot_list">AWR Snapshot List</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#awr_snapshot_size_estimates">AWR Snapshot Size Estimates</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#awr_baselines">AWR Baselines</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr> -

<tr><th colspan="4">Sessions</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#current_sessions">Current Sessions</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#user_session_matrix">User Session Matrix</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_enabled_traces">Enabled Traces</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_enabled_aggregations">Enabled Aggregations</a></td> -

</tr>

prompt -

<tr><th colspan="4">Security</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#user_accounts">User Accounts</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#users_with_dba_privileges">Users With DBA Privileges</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#roles">Roles</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#default_passwords">Default Passwords</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#db_links">DB Links</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr>

prompt -

<tr><th colspan="4">Objects</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#object_summary">Object Summary</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#segment_summary">Segment Summary</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#top_100_segments_by_size">Top 100 Segments (by size)</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#top_100_segments_by_extents">Top 100 Segments (by number of extents)</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_directories">Directories</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_directory_privileges">Directory Privileges</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_libraries">Libraries</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_types">Types</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_type_attributes">Type Attributes</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_type_methods">Type Methods</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_collections">Collections</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_lob_segments">LOB Segments</a></td> -

</tr>

prompt -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#objects_unable_to_extend">Objects Unable to Extend</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#objects_which_are_nearing_maxextents">Objects Which Are Nearing MAXEXTENTS</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#invalid_objects">Invalid Objects</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#procedural_object_errors">Procedural Object Errors</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#objects_without_statistics">Objects Without Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#tables_suffering_from_row_chaining_migration">Tables Suffering From Row Chaining/Migration</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#users_with_default_tablespace_defined_as_system">Users With Default Tablespace - (SYSTEM)</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#users_with_default_temporary_tablespace_as_system">Users With Default Temp Tablespace - (SYSTEM)</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#objects_in_the_system_tablespace">Objects in the SYSTEM Tablespace</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_recycle_bin">Recycle Bin</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr>

prompt -

<tr><th colspan="4">Online Analytical Processing - (OLAP)</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_dimensions">Dimensions</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_dimension_levels">Dimension Levels</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_dimension_attributes">Dimension Attributes</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_dimension_hierarchies">Dimension Hierarchies</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_cubes">Cubes</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_olap_materialized_views">Materialized Views</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_olap_materialized_view_logs">Materialized View Logs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#dba_olap_materialized_view_refresh_groups">Materialized View Refresh Groups</a></td> -

</tr>

prompt -

<tr><th colspan="4">Data Pump</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#data_pump_jobs">Data Pump Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#data_pump_sessions">Data Pump Sessions</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#data_pump_job_progress">Data Pump Job Progress</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr>

prompt -

<tr><th colspan="4">Networking</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#mts_dispatcher_statistics">MTS Dispatcher Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#mts_dispatcher_response_queue_wait_stats">MTS Dispatcher Response Queue Wait Stats</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#mts_shared_server_wait_statistics">MTS Shared Server Wait Statistics</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#"><br></a></td> -

</tr>

prompt -

<tr><th colspan="4">Replication</th></tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#replication_summary">Replication Summary</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#deferred_transactions">Deferred Transactions</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#administrative_request_jobs">Administrative Request Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#rep_initialization_parameters">Initialization Parameters</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#schedule_purge_jobs">(Schedule) - Purge Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#schedule_push_jobs">(Schedule) - Push Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#schedule_refresh_jobs">(Schedule) - Refresh Jobs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#multimaster_master_groups">(Multi-Master) - Master Groups</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#multimaster_master_groups_and_sites">(Multi-Master) - Master Groups and Sites</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_master_site_summary">(Materialized View) - Master Site Summary</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_master_site_logs">(Materialized View) - Master Site Logs</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_master_site_templates">(Materialized View) - Master Site Templates</a></td> -

</tr> -

<tr> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_summary">(Materialized View) - Summary</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_groups">(Materialized View) - Groups</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_materialized_views">(Materialized View) - Materialized Views</a></td> -

<td nowrap align="center" width="25%"><a class="link" href="#materialized_view_refresh_groups">(Materialized View) - Refresh Groups</a></td> -

</tr> -

</table>

prompt <p>

-- +============================================================================+

-- | |

-- | <<<<< Database and Instance Information >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Database and Instance Information</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - REPORT HEADER - |

-- +----------------------------------------------------------------------------+

prompt

prompt <a name="report_header"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Report Header</b></font><hr align="left" width="460">

prompt <table width="90%" border="1"> -

<tr><th align="left" width="20%">Report Name</th><td width="80%"><tt>&FileName._&_dbname._&_spool_time..html</tt></td></tr> -

<tr><th align="left" width="20%">Snapshot Database Version</th><td width="80%"><tt>&versionNumber</tt></td></tr> -

<tr><th align="left" width="20%">Run Date / Time / Timezone</th><td width="80%"><tt>&_date_time_timezone</tt></td></tr> -

<tr><th align="left" width="20%">Host Name</th><td width="80%"><tt>&_host_name</tt></td></tr> -

<tr><th align="left" width="20%">Database Name</th><td width="80%"><tt>&_dbname</tt></td></tr> -

<tr><th align="left" width="20%">Database ID</th><td width="80%"><tt>&_dbid</tt></td></tr> -

<tr><th align="left" width="20%">Global Database Name</th><td width="80%"><tt>&_global_name</tt></td></tr> -

<tr><th align="left" width="20%">Platform Name / ID</th><td width="80%"><tt>&_platform_name / &_platform_id</tt></td></tr> -

<tr><th align="left" width="20%">Clustered Database?</th><td width="80%"><tt>&_cluster_database</tt></td></tr> -

<tr><th align="left" width="20%">Clustered Database Instances</th><td width="80%"><tt>&_cluster_database_instances</tt></td></tr> -

<tr><th align="left" width="20%">Instance Name</th><td width="80%"><tt>&_instance_name</tt></td></tr> -

<tr><th align="left" width="20%">Instance Number</th><td width="80%"><tt>&_instance_number</tt></td></tr> -

<tr><th align="left" width="20%">Thread Number</th><td width="80%"><tt>&_thread_number</tt></td></tr> -

<tr><th align="left" width="20%">Database Startup Time</th><td width="80%"><tt>&_startup_time</tt></td></tr> -

<tr><th align="left" width="20%">Database Block Size</th><td width="80%"><tt>&_blocksize</tt></td></tr> -

<tr><th align="left" width="20%">Report Run User</th><td width="80%"><tt>&_reportRunUser</tt></td></tr> -

</table>

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- SET TIMING ON

-- +----------------------------------------------------------------------------+

-- | - VERSION - |

-- +----------------------------------------------------------------------------+

prompt <a name="version"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Version</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN banner FORMAT a120 HEADING 'Banner'

SELECT * FROM v$version;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OPTIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="options"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Options</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN parameter HEADING 'Option Name' ENTMAP off

COLUMN value HEADING 'Installed?' ENTMAP off

SELECT

DECODE( value

, 'FALSE'

, '<b><font color="#336699">' || parameter || '</font></b>'

, '<b><font color="#336699">' || parameter || '</font></b>') parameter

, DECODE( value

, 'FALSE'

, '<div align="center"><font color="#990000"><b>' || value || '</b></font></div>'

, '<div align="center">' || value || '</div>' ) value

FROM v$option

ORDER BY parameter;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATABASE REGISTRY - |

-- +----------------------------------------------------------------------------+

prompt <a name="database_registry"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Database Registry</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN comp_id FORMAT a75 HEADING 'Component ID' ENTMAP off

COLUMN comp_name FORMAT a75 HEADING 'Component Name' ENTMAP off

COLUMN version HEADING 'Version' ENTMAP off

COLUMN status FORMAT a75 HEADING 'Status' ENTMAP off

COLUMN modified FORMAT a75 HEADING 'Modified' ENTMAP off

COLUMN control HEADING 'Control' ENTMAP off

COLUMN schema HEADING 'Schema' ENTMAP off

COLUMN procedure HEADING 'Procedure' ENTMAP off

SELECT

'<font color="#336699"><b>' || comp_id || '</b></font>' comp_id

, '<div nowrap>' || comp_name || '</div>' comp_name

, version

, DECODE( status

, 'VALID', '<div align="center"><b><font color="darkgreen">' || status || '</font></b></div>'

, 'INVALID', '<div align="center"><b><font color="#990000">' || status || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || status || '</font></b></div>' ) status

, '<div nowrap align="right">' || modified || '</div>' modified

, control

, schema

, procedure

FROM dba_registry

ORDER BY comp_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FEATURE USAGE STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="feature_usage_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Feature Usage Statistics</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN feature_name FORMAT a115 HEADING 'Feature|Name'

COLUMN version FORMAT a75 HEADING 'Version'

COLUMN detected_usages FORMAT a75 HEADING 'Detected|Usages'

COLUMN total_samples FORMAT a75 HEADING 'Total|Samples'

COLUMN currently_used FORMAT a60 HEADING 'Currently|Used'

COLUMN first_usage_date FORMAT a95 HEADING 'First Usage|Date'

COLUMN last_usage_date FORMAT a95 HEADING 'Last Usage|Date'

COLUMN last_sample_date FORMAT a95 HEADING 'Last Sample|Date'

COLUMN next_sample_date FORMAT a95 HEADING 'Next Sample|Date'

SELECT

'<div align="left"><font color="#336699"><b>' || name || '</b></font></div>' feature_name

, DECODE( detected_usages

, 0

, version

, '<font color="#663300"><b>' || version || '</b></font>') version

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR(detected_usages), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR(detected_usages), '<br>') || '</b></font></div>') detected_usages

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR(total_samples), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR(total_samples), '<br>') || '</b></font></div>') total_samples

, DECODE( detected_usages

, 0

, '<div align="center">' || NVL(currently_used, '<br>') || '</div>'

, '<div align="center"><font color="#663300"><b>' || NVL(currently_used, '<br>') || '</b></font></div>') currently_used

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR(first_usage_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR(first_usage_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</b></font></div>') first_usage_date

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR(last_usage_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR(last_usage_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</b></font></div>') last_usage_date

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR(last_sample_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR(last_sample_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</b></font></div>') last_sample_date

, DECODE( detected_usages

, 0

, '<div align="right">' || NVL(TO_CHAR((last_sample_date+SAMPLE_INTERVAL/60/60/24), 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>'

, '<div align="right"><font color="#663300"><b>' || NVL(TO_CHAR((last_sample_date+SAMPLE_INTERVAL/60/60/24), 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</b></font></div>') next_sample_date

FROM dba_feature_usage_statistics

ORDER BY name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - HIGH WATER MARK STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="high_water_mark_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>High Water Mark Statistics</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN statistic_name FORMAT a115 HEADING 'Statistic Name'

COLUMN version FORMAT a62 HEADING 'Version'

COLUMN highwater FORMAT 9,999,999,999,999,999 HEADING 'Highwater'

COLUMN last_value FORMAT 9,999,999,999,999,999 HEADING 'Last Value'

COLUMN description FORMAT a120 HEADING 'Description'

SELECT

'<div align="left"><font color="#336699"><b>' || name || '</b></font></div>' statistic_name

, '<div align="right">' || version || '</div>' version

, highwater highwater

, last_value last_value

, description description

FROM dba_high_water_mark_statistics

ORDER BY name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - INSTANCE OVERVIEW - |

-- +----------------------------------------------------------------------------+

prompt <a name="instance_overview"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Instance Overview</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a75 HEADING 'Instance|Name' ENTMAP off

COLUMN instance_number_print FORMAT a75 HEADING 'Instance|Num' ENTMAP off

COLUMN thread_number_print HEADING 'Thread|Num' ENTMAP off

COLUMN host_name_print FORMAT a75 HEADING 'Host|Name' ENTMAP off

COLUMN version HEADING 'Oracle|Version' ENTMAP off

COLUMN start_time FORMAT a75 HEADING 'Start|Time' ENTMAP off

COLUMN uptime HEADING 'Uptime|(in days)' ENTMAP off

COLUMN parallel FORMAT a75 HEADING 'Parallel - (RAC)' ENTMAP off

COLUMN instance_status FORMAT a75 HEADING 'Instance|Status' ENTMAP off

COLUMN database_status FORMAT a75 HEADING 'Database|Status' ENTMAP off

COLUMN logins FORMAT a75 HEADING 'Logins' ENTMAP off

COLUMN archiver FORMAT a75 HEADING 'Archiver' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || instance_number || '</div>' instance_number_print

, '<div align="center">' || thread# || '</div>' thread_number_print

, '<div align="center">' || host_name || '</div>' host_name_print

, '<div align="center">' || version || '</div>' version

, '<div align="center">' || TO_CHAR(startup_time,'mm/dd/yyyy HH24:MI:SS') || '</div>' start_time

, ROUND(TO_CHAR(SYSDATE-startup_time), 2) uptime

, '<div align="center">' || parallel || '</div>' parallel

, '<div align="center">' || status || '</div>' instance_status

, '<div align="center">' || logins || '</div>' logins

, DECODE( archiver

, 'FAILED'

, '<div align="center"><b><font color="#990000">' || archiver || '</font></b></div>'

, '<div align="center"><b><font color="darkgreen">' || archiver || '</font></b></div>') archiver

FROM gv$instance

ORDER BY instance_number;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATABASE OVERVIEW - |

-- +----------------------------------------------------------------------------+

prompt <a name="database_overview"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Database Overview</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name FORMAT a75 HEADING 'Database|Name' ENTMAP off

COLUMN dbid HEADING 'Database|ID' ENTMAP off

COLUMN db_unique_name HEADING 'Database|Unique Name' ENTMAP off

COLUMN creation_date HEADING 'Creation|Date' ENTMAP off

COLUMN platform_name_print HEADING 'Platform|Name' ENTMAP off

COLUMN current_scn HEADING 'Current|SCN' ENTMAP off

COLUMN log_mode HEADING 'Log|Mode' ENTMAP off

COLUMN open_mode HEADING 'Open|Mode' ENTMAP off

COLUMN force_logging HEADING 'Force|Logging' ENTMAP off

COLUMN flashback_on HEADING 'Flashback|On?' ENTMAP off

COLUMN controlfile_type HEADING 'Controlfile|Type' ENTMAP off

COLUMN last_open_incarnation_number HEADING 'Last Open|Incarnation Num' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || name || '</b></font></div>' name

, '<div align="center">' || dbid || '</div>' dbid

, '<div align="center">' || db_unique_name || '</div>' db_unique_name

, '<div align="center">' || TO_CHAR(created, 'mm/dd/yyyy HH24:MI:SS') || '</div>' creation_date

, '<div align="center">' || platform_name || '</div>' platform_name_print

, '<div align="center">' || current_scn || '</div>' current_scn

, '<div align="center">' || log_mode || '</div>' log_mode

, '<div align="center">' || open_mode || '</div>' open_mode

, '<div align="center">' || force_logging || '</div>' force_logging

, '<div align="center">' || flashback_on || '</div>' flashback_on

, '<div align="center">' || controlfile_type || '</div>' controlfile_type

, '<div align="center">' || last_open_incarnation# || '</div>' last_open_incarnation_number

FROM v$database;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - INITIALIZATION PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="initialization_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Initialization Parameters</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN spfile HEADING 'SPFILE Usage'

SELECT

'This database '||

DECODE( (1-SIGN(1-SIGN(count(*) - 0)))

, 1

, '<font color="#663300"><b>IS</b></font>'

, '<font color="#990000"><b>IS NOT</b></font>') ||

' using an SPFILE.'spfile

FROM v$spparameter

WHERE value IS NOT null;

COLUMN pname FORMAT a75 HEADING 'Parameter Name' ENTMAP off

COLUMN instance_name_print FORMAT a45 HEADING 'Instance Name' ENTMAP off

COLUMN value FORMAT a75 HEADING 'Value' ENTMAP off

COLUMN isdefault FORMAT a75 HEADING 'Is Default?' ENTMAP off

COLUMN issys_modifiable FORMAT a75 HEADING 'Is Dynamic?' ENTMAP off

BREAK ON report ON pname

SELECT

DECODE( p.isdefault

, 'FALSE'

, '<b><font color="#336699">' || SUBSTR(p.name,0,512) || '</font></b>'

, '<b><font color="#336699">' || SUBSTR(p.name,0,512) || '</font></b>' ) pname

, DECODE( p.isdefault

, 'FALSE'

, '<font color="#663300"><b>' || i.instance_name || '</b></font>'

, i.instance_name ) instance_name_print

, DECODE( p.isdefault

, 'FALSE'

, '<font color="#663300"><b>' || SUBSTR(p.value,0,512) || '</b></font>'

, SUBSTR(p.value,0,512) ) value

, DECODE( p.isdefault

, 'FALSE'

, '<div align="center"><font color="#663300"><b>' || p.isdefault || '</b></font></div>'

, '<div align="center">' || p.isdefault || '</div>') isdefault

, DECODE( p.isdefault

, 'FALSE'

, '<div align="right"><font color="#663300"><b>' || p.issys_modifiable || '</b></font></div>'

, '<div align="right">' || p.issys_modifiable || '</div>') issys_modifiable

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

ORDER BY

p.name

, i.instance_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - CONTROL FILES - |

-- +----------------------------------------------------------------------------+

prompt <a name="control_files"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Control Files</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name HEADING 'Controlfile Name' ENTMAP off

COLUMN status FORMAT a75 HEADING 'Status' ENTMAP off

COLUMN file_size FORMAT a75 HEADING 'File Size' ENTMAP off

SELECT

'<tt>' || c.name || '</tt>' name

, DECODE( c.status

, NULL

, '<div align="center"><b><font color="darkgreen">VALID</font></b></div>'

, '<div align="center"><b><font color="#663300">' || c.status || '</font></b></div>') status

, '<div align="right">' || TO_CHAR(block_size * file_size_blks, '999,999,999,999') || '</div>' file_size

FROM

v$controlfile c

ORDER BY

c.name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - CONTROL FILE RECORDS - |

-- +----------------------------------------------------------------------------+

prompt <a name="control_file_records"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Control File Records</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN type FORMAT a95 HEADING 'Record Section Type' ENTMAP off

COLUMN record_size FORMAT 999,999 HEADING 'Record Size|(in bytes)' ENTMAP off

COLUMN records_total FORMAT 999,999 HEADING 'Records Allocated' ENTMAP off

COLUMN bytes_alloc FORMAT 999,999,999 HEADING 'Bytes Allocated' ENTMAP off

COLUMN records_used FORMAT 999,999 HEADING 'Records Used' ENTMAP off

COLUMN bytes_used FORMAT 999,999,999 HEADING 'Bytes Used' ENTMAP off

COLUMN pct_used FORMAT B999 HEADING '% Used' ENTMAP off

COLUMN first_index HEADING 'First Index' ENTMAP off

COLUMN last_index HEADING 'Last Index' ENTMAP off

COLUMN last_recid HEADING 'Last RecID' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' of record_size records_total bytes_alloc records_used bytes_used ON report

COMPUTE avg LABEL '<font color="#990000"><b>Average: </b></font>' of pct_used ON report

SELECT

'<div align="left"><font color="#336699"><b>' || type || '</b></font></div>' type

, record_size record_size

, records_total records_total

, (records_total * record_size) bytes_alloc

, records_used records_used

, (records_used * record_size) bytes_used

, NVL(records_used/records_total * 100, 0) pct_used

, first_index first_index

, last_index last_index

, last_recid last_recid

FROM v$controlfile_record_section

ORDER BY type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ONLINE REDO LOGS - |

-- +----------------------------------------------------------------------------+

prompt <a name="online_redo_logs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Online Redo Logs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a95 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a95 HEADING 'Thread Number' ENTMAP off

COLUMN groupno HEADING 'Group Number' ENTMAP off

COLUMN member HEADING 'Member' ENTMAP off

COLUMN redo_file_type FORMAT a75 HEADING 'Redo Type' ENTMAP off

COLUMN log_status FORMAT a75 HEADING 'Log Status' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999 HEADING 'Bytes' ENTMAP off

COLUMN archived FORMAT a75 HEADING 'Archived?' ENTMAP off

BREAK ON report ON instance_name_print ON thread_number_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || i.thread# || '</div>' thread_number_print

, f.group# groupno

, '<tt>' || f.member || '</tt>' member

, f.type redo_file_type

, DECODE( l.status

, 'CURRENT'

, '<div align="center"><b><font color="darkgreen">' || l.status || '</font></b></div>'

, '<div align="center"><b><font color="#990000">' || l.status || '</font></b></div>') log_status

, l.bytes bytes

, '<div align="center">' || l.archived || '</div>' archived

FROM

gv$logfile f

, gv$log l

, gv$instance i

WHERE

f.group# = l.group#

AND l.thread# = i.thread#

AND i.inst_id = f.inst_id

AND f.inst_id = l.inst_id

ORDER BY

i.instance_name

, f.group#

, f.member;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - REDO LOG SWITCHES - |

-- +----------------------------------------------------------------------------+

prompt <a name="redo_log_switches"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Redo Log Switches</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN DAY FORMAT a75 HEADING 'Day / Time' ENTMAP off

COLUMN H00 FORMAT 999,999B HEADING '00' ENTMAP off

COLUMN H01 FORMAT 999,999B HEADING '01' ENTMAP off

COLUMN H02 FORMAT 999,999B HEADING '02' ENTMAP off

COLUMN H03 FORMAT 999,999B HEADING '03' ENTMAP off

COLUMN H04 FORMAT 999,999B HEADING '04' ENTMAP off

COLUMN H05 FORMAT 999,999B HEADING '05' ENTMAP off

COLUMN H06 FORMAT 999,999B HEADING '06' ENTMAP off

COLUMN H07 FORMAT 999,999B HEADING '07' ENTMAP off

COLUMN H08 FORMAT 999,999B HEADING '08' ENTMAP off

COLUMN H09 FORMAT 999,999B HEADING '09' ENTMAP off

COLUMN H10 FORMAT 999,999B HEADING '10' ENTMAP off

COLUMN H11 FORMAT 999,999B HEADING '11' ENTMAP off

COLUMN H12 FORMAT 999,999B HEADING '12' ENTMAP off

COLUMN H13 FORMAT 999,999B HEADING '13' ENTMAP off

COLUMN H14 FORMAT 999,999B HEADING '14' ENTMAP off

COLUMN H15 FORMAT 999,999B HEADING '15' ENTMAP off

COLUMN H16 FORMAT 999,999B HEADING '16' ENTMAP off

COLUMN H17 FORMAT 999,999B HEADING '17' ENTMAP off

COLUMN H18 FORMAT 999,999B HEADING '18' ENTMAP off

COLUMN H19 FORMAT 999,999B HEADING '19' ENTMAP off

COLUMN H20 FORMAT 999,999B HEADING '20' ENTMAP off

COLUMN H21 FORMAT 999,999B HEADING '21' ENTMAP off

COLUMN H22 FORMAT 999,999B HEADING '22' ENTMAP off

COLUMN H23 FORMAT 999,999B HEADING '23' ENTMAP off

COLUMN TOTAL FORMAT 999,999,999 HEADING 'Total' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total:</b></font>' avg label '<font color="#990000"><b>Average:</b></font>' OF total ON report

SELECT

'<div align="center"><font color="#336699"><b>' || SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) || '</b></font></div>' DAY

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'01',1,0)) H01

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'02',1,0)) H02

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'03',1,0)) H03

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'04',1,0)) H04

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'05',1,0)) H05

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'06',1,0)) H06

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'07',1,0)) H07

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'08',1,0)) H08

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'09',1,0)) H09

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'10',1,0)) H10

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'11',1,0)) H11

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'12',1,0)) H12

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'13',1,0)) H13

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'14',1,0)) H14

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'15',1,0)) H15

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'16',1,0)) H16

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'17',1,0)) H17

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'18',1,0)) H18

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'19',1,0)) H19

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'20',1,0)) H20

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'21',1,0)) H21

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'22',1,0)) H22

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'23',1,0)) H23

, COUNT(*) TOTAL

FROM

v$log_history a

GROUP BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5)

ORDER BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5)

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OUTSTANDING ALERTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="outstanding_alerts"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Outstanding Alerts</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN severity FORMAT a75 HEADING 'Severity' ENTMAP off

COLUMN target_name FORMAT a75 HEADING 'Target Name' ENTMAP off

COLUMN target_type FORMAT a75 HEADING 'Target Type' ENTMAP off

COLUMN category FORMAT a75 HEADING 'Category' ENTMAP off

COLUMN name FORMAT a75 HEADING 'Name' ENTMAP off

COLUMN message FORMAT a125 HEADING 'Message' ENTMAP off

COLUMN alert_triggered FORMAT a75 HEADING 'Alert Triggered' ENTMAP off

SELECT

DECODE( alert_state

, 'Critical'

, '<div align="center"><b><font color="#990000">' || alert_state || '</font></b></div>'

, '<div align="center"><b><font color="#336699">' || alert_state || '</font></b></div>') severity

, target_name target_name

, (CASE target_type

WHEN 'oracle_listener' THEN 'Oracle Listener'

WHEN 'rac_database' THEN 'Cluster Database'

WHEN 'cluster' THEN 'Clusterware'

WHEN 'host' THEN 'Host'

WHEN 'osm_instance' THEN 'OSM Instance'

WHEN 'oracle_database' THEN 'Database Instance'

WHEN 'oracle_emd' THEN 'Oracle EMD'

WHEN 'oracle_emrep' THEN 'Oracle EMREP'

ELSE

target_type

END) target_type

, metric_label category

, column_label name

, message message

, '<div nowrap align="right">' || TO_CHAR(collection_timestamp, 'mm/dd/yyyy HH24:MI:SS') || '</div>' alert_triggered

FROM

mgmt$alert_current

ORDER BY

alert_state

, collection_timestamp;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - STATISTICS LEVEL - |

-- +----------------------------------------------------------------------------+

prompt <a name="statistics_level"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Statistics Level</b></font><hr align="left" width="460">

prompt "Automatic Database Management" was first introduced in Oracle10<i>g</i> where the Oracle database

prompt can now automatically perform many of the routine monitoring and administrative activities that had

prompt to be manually executed by the DBA in previous versions. Several of the new components that make

prompt up this new feature include (1) Automatic Workload Repository (2) Automatic Database Diagnostic

prompt Monitoring (3) Automatic Shared Memory Management and (4) Automatic UNDO Retention Tuning. All

prompt of these new components can only be enabled when the STATISTICS_LEVEL initialization parameter

prompt is set to TYPICAL (the default) or ALL. A value of BASIC turns off these components and disables

prompt all self-tuning capabilities of the database. The view V$STATISTICS_LEVEL shows the statistic

prompt component, description, and at what level of the STATISTICS_LEVEL parameter the

prompt component is enabled.

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a95 HEADING 'Instance Name' ENTMAP off

COLUMN statistics_name FORMAT a95 HEADING 'Statistics Name' ENTMAP off

COLUMN session_status FORMAT a95 HEADING 'Session Status' ENTMAP off

COLUMN system_status FORMAT a95 HEADING 'System Status' ENTMAP off

COLUMN activation_level FORMAT a95 HEADING 'Activation Level' ENTMAP off

COLUMN statistics_view_name FORMAT a95 HEADING 'Statistics View Name' ENTMAP off

COLUMN session_settable FORMAT a95 HEADING 'Session Settable?' ENTMAP off

BREAK ON report ON instance_name_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="left" nowrap>' || s.statistics_name || '</div>' statistics_name

, DECODE( s.session_status

, 'ENABLED'

, '<div align="center"><b><font color="darkgreen">' || s.session_status || '</font></b></div>'

, '<div align="center"><b><font color="#990000">' || s.session_status || '</font></b></div>') session_status

, DECODE( s.system_status

, 'ENABLED'

, '<div align="center"><b><font color="darkgreen">' || s.system_status || '</font></b></div>'

, '<div align="center"><b><font color="#990000">' || s.system_status || '</font></b></div>') system_status

, (CASE s.activation_level

WHEN 'TYPICAL' THEN '<div align="center"><b><font color="darkgreen">' || s.activation_level || '</font></b></div>'

WHEN 'ALL' THEN '<div align="center"><b><font color="darkblue">' || s.activation_level || '</font></b></div>'

WHEN 'BASIC' THEN '<div align="center"><b><font color="#990000">' || s.activation_level || '</font></b></div>'

ELSE

'<div align="center"><b><font color="#663300">' || s.activation_level || '</font></b></div>'

END) activation_level

, s.statistics_view_name statistics_view_name

, '<div align="center">' || s.session_settable || '</div>' session_settable

FROM

gv$statistics_level s

, gv$instance i

WHERE

s.inst_id = i.inst_id

ORDER BY

i.instance_name

, s.statistics_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< SCHEDULER / JOBS >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Scheduler / Jobs</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN job_id FORMAT a75 HEADING 'Job ID' ENTMAP off

COLUMN username FORMAT a75 HEADING 'User' ENTMAP off

COLUMN what FORMAT a175 HEADING 'What' ENTMAP off

COLUMN next_date FORMAT a110 HEADING 'Next Run Date' ENTMAP off

COLUMN interval FORMAT a75 HEADING 'Interval' ENTMAP off

COLUMN last_date FORMAT a110 HEADING 'Last Run Date' ENTMAP off

COLUMN failures FORMAT a75 HEADING 'Failures' ENTMAP off

COLUMN broken FORMAT a75 HEADING 'Broken?' ENTMAP off

SELECT

DECODE( broken

, 'Y'

, '<b><font color="#990000"><div align="center">' || job || '</div></font></b>'

, '<b><font color="#336699"><div align="center">' || job || '</div></font></b>') job_id

, DECODE( broken

, 'Y'

, '<b><font color="#990000">' || log_user || '</font></b>'

, log_user ) username

, DECODE( broken

, 'Y'

, '<b><font color="#990000">' || what || '</font></b>'

, what ) what

, DECODE( broken

, 'Y'

, '<div nowrap align="right"><b><font color="#990000">' || NVL(TO_CHAR(next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</font></b></div>'

, '<div nowrap align="right">' || NVL(TO_CHAR(next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>') next_date

, DECODE( broken

, 'Y'

, '<b><font color="#990000">' || interval || '</font></b>'

, interval ) interval

, DECODE( broken

, 'Y'

, '<div nowrap align="right"><b><font color="#990000">' || NVL(TO_CHAR(last_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</font></b></div>'

, '<div nowrap align="right">' || NVL(TO_CHAR(last_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>') last_date

, DECODE( broken

, 'Y'

, '<b><font color="#990000"><div align="center">' || NVL(failures, 0) || '</div></font></b>'

, '<div align="center">' || NVL(failures, 0) || '</div>') failures

, DECODE( broken

, 'Y'

, '<b><font color="#990000"><div align="center">' || broken || '</div></font></b>'

, '<div align="center">' || broken || '</div>') broken

FROM

dba_jobs

ORDER BY

job;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< STORAGE >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Storage</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - TABLESPACES - |

-- +----------------------------------------------------------------------------+

prompt <a name="tablespaces"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Tablespaces</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN status HEADING 'Status' ENTMAP off

COLUMN name HEADING 'Tablespace Name' ENTMAP off

COLUMN type FORMAT a12 HEADING 'TS Type' ENTMAP off

COLUMN extent_mgt FORMAT a10 HEADING 'Ext. Mgt.' ENTMAP off

COLUMN segment_mgt FORMAT a9 HEADING 'Seg. Mgt.' ENTMAP off

COLUMN ts_size FORMAT 999,999,999,999,999 HEADING 'Tablespace Size' ENTMAP off

COLUMN free FORMAT 999,999,999,999,999 HEADING 'Free (in bytes)' ENTMAP off

COLUMN used FORMAT 999,999,999,999,999 HEADING 'Used (in bytes)' ENTMAP off

COLUMN pct_used HEADING 'Pct. Used' ENTMAP off

BREAK ON report

COMPUTE SUM label '<font color="#990000"><b>Total:</b></font>' OF ts_size used free ON report

SELECT

DECODE( d.status

, 'OFFLINE'

, '<div align="center"><b><font color="#990000">' || d.status || '</font></b></div>'

, '<div align="center"><b><font color="darkgreen">' || d.status || '</font></b></div>') status

, '<b><font color="#336699">' || d.tablespace_name || '</font></b>' name

, d.contents type

, d.extent_management extent_mgt

, d.segment_space_management segment_mgt

, NVL(a.bytes, 0) ts_size

, NVL(f.bytes, 0) free

, NVL(a.bytes - NVL(f.bytes, 0), 0) used

, '<div align="right"><b>' ||

DECODE (

(1-SIGN(1-SIGN(TRUNC(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0)) - 90)))

, 1

, '<font color="#990000">' || TO_CHAR(TRUNC(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0))) || '</font>'

, '<font color="darkgreen">' || TO_CHAR(TRUNC(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0))) || '</font>'

)

|| '</b> %</div>' pct_used

FROM

sys.dba_tablespaces d

, ( select tablespace_name, sum(bytes) bytes

from dba_data_files

group by tablespace_name

) a

, ( select tablespace_name, sum(bytes) bytes

from dba_free_space

group by tablespace_name

) f

WHERE

d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = f.tablespace_name(+)

AND NOT (

d.extent_management like 'LOCAL'

AND

d.contents like 'TEMPORARY'

)

UNION ALL

SELECT

DECODE( d.status

, 'OFFLINE'

, '<div align="center"><b><font color="#990000">' || d.status || '</font></b></div>'

, '<div align="center"><b><font color="darkgreen">' || d.status || '</font></b></div>') status

, '<b><font color="#336699">' || d.tablespace_name || '</font></b>' name

, d.contents type

, d.extent_management extent_mgt

, d.segment_space_management segment_mgt

, NVL(a.bytes, 0) ts_size

, NVL(a.bytes - NVL(t.bytes,0), 0) free

, NVL(t.bytes, 0) used

, '<div align="right"><b>' ||

DECODE (

(1-SIGN(1-SIGN(TRUNC(NVL(t.bytes / a.bytes * 100, 0)) - 90)))

, 1

, '<font color="#990000">' || TO_CHAR(TRUNC(NVL(t.bytes / a.bytes * 100, 0))) || '</font>'

, '<font color="darkgreen">' || TO_CHAR(TRUNC(NVL(t.bytes / a.bytes * 100, 0))) || '</font>'

)

|| '</b> %</div>' pct_used

FROM

sys.dba_tablespaces d

, ( select tablespace_name, sum(bytes) bytes

from dba_temp_files

group by tablespace_name

) a

, ( select tablespace_name, sum(bytes_cached) bytes

from v$temp_extent_pool

group by tablespace_name

) t

WHERE

d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = t.tablespace_name(+)

AND d.extent_management like 'LOCAL'

AND d.contents like 'TEMPORARY'

ORDER BY 2;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATA FILES - |

-- +----------------------------------------------------------------------------+

prompt <a name="data_files"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Data Files</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN tablespace HEADING 'Tablespace Name / File Class' ENTMAP off

COLUMN filename HEADING 'Filename' ENTMAP off

COLUMN filesize FORMAT 999,999,999,999,999 HEADING 'File Size' ENTMAP off

COLUMN autoextensible HEADING 'Autoextensible' ENTMAP off

COLUMN increment_by FORMAT 999,999,999,999,999 HEADING 'Next' ENTMAP off

COLUMN maxbytes FORMAT 999,999,999,999,999 HEADING 'Max' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF filesize ON report

SELECT /*+ ordered */

'<font color="#336699"><b>' || d.tablespace_name || '</b></font>' tablespace

, '<tt>' || d.file_name || '</tt>' filename

, d.bytes filesize

, '<div align="center">' || NVL(d.autoextensible, '<br>') || '</div>' autoextensible

, d.increment_by * e.value increment_by

, d.maxbytes maxbytes

FROM

sys.dba_data_files d

, v$datafile v

, (SELECT value

FROM v$parameter

WHERE name = 'db_block_size') e

WHERE

(d.file_name = v.name)

UNION

SELECT

'<font color="#336699"><b>' || d.tablespace_name || '</b></font>' tablespace

, '<tt>' || d.file_name || '</tt>' filename

, d.bytes filesize

, '<div align="center">' || NVL(d.autoextensible, '<br>') || '</div>' autoextensible

, d.increment_by * e.value increment_by

, d.maxbytes maxbytes

FROM

sys.dba_temp_files d

, (SELECT value

FROM v$parameter

WHERE name = 'db_block_size') e

UNION

SELECT

'<font color="#336699"><b>[ ONLINE REDO LOG ]</b></font>'

, '<tt>' || a.member || '</tt>'

, b.bytes

, null

, null

, null

FROM

v$logfile a

, v$log b

WHERE

a.group# = b.group#

UNION

SELECT

'<font color="#336699"><b>[ CONTROL FILE ]</b></font>'

, '<tt>' || a.name || '</tt>'

, null

, null

, null

, null

FROM

v$controlfile a

ORDER BY

1

, 2;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATABASE GROWTH - |

-- +----------------------------------------------------------------------------+

prompt <a name="database_growth"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Database Growth</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN month FORMAT a75 HEADING 'Month'

COLUMN growth FORMAT 999,999,999,999,999 HEADING 'Growth (bytes)'

BREAK ON report

COMPUTE SUM label '<font color="#990000"><b>Total:</b></font>' OF growth ON report

SELECT

'<div align="left"><font color="#336699"><b>' || TO_CHAR(creation_time, 'RRRR-MM') || '</b></font></div>' month

, SUM(bytes) growth

FROM sys.v_$datafile

GROUP BY TO_CHAR(creation_time, 'RRRR-MM')

ORDER BY TO_CHAR(creation_time, 'RRRR-MM');

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TABLESPACE EXTENTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="tablespace_extents"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Tablespace Extents</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN tablespace_name HEADING 'Tablespace Name' ENTMAP off

COLUMN largest_ext FORMAT 999,999,999,999,999 HEADING 'Largest Extent' ENTMAP off

COLUMN smallest_ext FORMAT 999,999,999,999,999 HEADING 'Smallest Extent' ENTMAP off

COLUMN total_free FORMAT 999,999,999,999,999 HEADING 'Total Free' ENTMAP off

COLUMN pieces FORMAT 999,999,999,999,999 HEADING 'Number of Free Extents' ENTMAP off

break on report

compute sum label '<font color="#990000"><b>Total:</b></font>' of largest_ext smallest_ext total_free pieces on report

SELECT

'<b><font color="#336699">' || tablespace_name || '</font></b>' tablespace_name

, max(bytes) largest_ext

, min(bytes) smallest_ext

, sum(bytes) total_free

, count(*) pieces

FROM

dba_free_space

GROUP BY

tablespace_name

ORDER BY

tablespace_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TABLESPACE TO OWNER - |

-- +----------------------------------------------------------------------------+

prompt <a name="tablespace_to_owner"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Tablespace to Owner</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN tablespace_name FORMAT a75 HEADING 'Tablespace Name' ENTMAP off

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN segment_type FORMAT a75 HEADING 'Segment Type' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Size (in Bytes)' ENTMAP off

COLUMN seg_count FORMAT 999,999,999,999 HEADING 'Segment Count' ENTMAP off

BREAK ON report ON tablespace_name

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' of seg_count bytes ON report

SELECT

'<font color="#336699"><b>' || tablespace_name || '</b></font>' tablespace_name

, '<div align="right">' || owner || '</div>' owner

, '<div align="right">' || segment_type || '</div>' segment_type

, sum(bytes) bytes

, count(*) seg_count

FROM

dba_segments

GROUP BY

tablespace_name

, owner

, segment_type

ORDER BY

tablespace_name

, owner

, segment_type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OWNER TO TABLESPACE - |

-- +----------------------------------------------------------------------------+

prompt <a name="owner_to_tablespace"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Owner to Tablespace</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN tablespace_name FORMAT a75 HEADING 'Tablespace Name' ENTMAP off

COLUMN segment_type FORMAT a75 HEADING 'Segment Type' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Size (in Bytes)' ENTMAP off

COLUMN seg_count FORMAT 999,999,999,999 HEADING 'Segment Count' ENTMAP off

break on report on owner

compute sum label '<font color="#990000"><b>Total: </b></font>' of seg_count bytes on report

SELECT

'<font color="#336699"><b>' || owner || '</b></font>' owner

, '<div align="right">' || tablespace_name || '</div>' tablespace_name

, '<div align="right">' || segment_type || '</div>' segment_type

, sum(bytes) bytes

, count(*) seg_count

FROM

dba_segments

GROUP BY

owner

, tablespace_name

, segment_type

ORDER BY

owner

, tablespace_name

, segment_type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< UNDO Segments >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>UNDO Segments</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - UNDO RETENTION PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="undo_retention_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>UNDO Retention Parameters</b></font><hr align="left" width="460">

prompt <b>undo_retention is specified in minutes</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a95 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a95 HEADING 'Thread Number' ENTMAP off

COLUMN name FORMAT a125 HEADING 'Name' ENTMAP off

COLUMN value HEADING 'Value' ENTMAP off

BREAK ON report ON instance_name_print ON thread_number_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || i.thread# || '</div>' thread_number_print

, '<div nowrap>' || p.name || '</div>' name

, (CASE p.name

WHEN 'undo_retention' THEN '<div nowrap align="right">' || TO_CHAR(TO_NUMBER(p.value)/60, '999,999,999,999,999') || '</div>'

ELSE

'<div nowrap align="right">' || p.value || '</div>'

END) value

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

AND p.name LIKE 'undo%'

ORDER BY

i.instance_name

, p.name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - UNDO SEGMENTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="undo_segments"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>UNDO Segments</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a75 HEADING 'Instance Name' ENTMAP off

COLUMN tablespace FORMAT a85 HEADING 'Tablspace' ENTMAP off

COLUMN roll_name HEADING 'UNDO Segment Name' ENTMAP off

COLUMN in_extents HEADING 'Init/Next Extents' ENTMAP off

COLUMN m_extents HEADING 'Min/Max Extents' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN wraps FORMAT 999,999,999 HEADING 'Wraps' ENTMAP off

COLUMN shrinks FORMAT 999,999,999 HEADING 'Shrinks' ENTMAP off

COLUMN opt FORMAT 999,999,999,999 HEADING 'Opt. Size' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999 HEADING 'Bytes' ENTMAP off

COLUMN extents FORMAT 999,999,999 HEADING 'Extents' ENTMAP off

CLEAR COMPUTES BREAKS

BREAK ON report ON instance_name ON tablespace

-- COMPUTE sum LABEL '<font color="#990000"><b>Total:</b></font>' OF bytes extents shrinks wraps ON report

SELECT

'<div nowrap><font color="#336699"><b>' || NVL(i.instance_name, '<br>') || '</b></font></div>' instance_name

, '<div nowrap><font color="#336699"><b>' || a.tablespace_name || '</b></font></div>' tablespace

, '<div nowrap>' || a.owner || '.' || a.segment_name || '</div>' roll_name

, '<div align="right">' ||

TO_CHAR(a.initial_extent) || ' / ' ||

TO_CHAR(a.next_extent) ||

'</div>' in_extents

, '<div align="right">' ||

TO_CHAR(a.min_extents) || ' / ' ||

TO_CHAR(a.max_extents) ||

'</div>' m_extents

, DECODE( a.status

, 'OFFLINE'

, '<div align="center"><b><font color="#990000">' || a.status || '</font></b></div>'

, '<div align="center"><b><font color="darkgreen">' || a.status || '</font></b></div>') status

, b.bytes bytes

, b.extents extents

, d.shrinks shrinks

, d.wraps wraps

, d.optsize opt

FROM

dba_rollback_segs a

, dba_segments b

, v$rollname c

, v$rollstat d

, gv$parameter p

, gv$instance i

WHERE

a.segment_name = b.segment_name

AND a.segment_name = c.name (+)

AND c.usn = d.usn (+)

AND p.name (+) = 'undo_tablespace'

AND p.value (+) = a.tablespace_name

AND p.inst_id = i.inst_id (+)

ORDER BY

a.tablespace_name

, a.segment_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - UNDO SEGMENT CONTENTION - |

-- +----------------------------------------------------------------------------+

prompt <a name="undo_segment_contention"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>UNDO Segment Contention</b></font><hr align="left" width="460">

prompt <b>UNDO statistics from V$ROLLSTAT - (ordered by waits)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN roll_name HEADING 'UNDO Segment Name' ENTMAP off

COLUMN gets FORMAT 999,999,999 HEADING 'Gets' ENTMAP off

COLUMN waits FORMAT 999,999,999 HEADING 'Waits' ENTMAP off

COLUMN immediate_misses FORMAT 999,999,999 HEADING 'Immediate Misses' ENTMAP off

COLUMN hit_ratio HEADING 'Hit Ratio' ENTMAP off

BREAK ON report

COMPUTE SUM label '<font color="#990000"><b>Total:</b></font>' OF gets waits ON report

SELECT

'<font color="#336699"><b>' || b.name || '</b></font>' roll_name

, gets gets

, waits waits

, '<div align="right">' || TO_CHAR(ROUND(((gets - waits)*100)/gets, 2)) || '%</div>' hit_ratio

FROM

sys.v_$rollstat a

, sys.v_$rollname b

WHERE

a.USN = b.USN

ORDER BY

waits DESC;

prompt

prompt <b>Wait statistics</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN class HEADING 'Class'

COLUMN ratio HEADING 'Wait Ratio'

SELECT

'<font color="#336699"><b>' || w.class || '</b></font>' class

, '<div align="right">' || TO_CHAR(ROUND(100*(w.count/SUM(s.value)),8)) || '%</div>' ratio

FROM

v$waitstat w

, v$sysstat s

WHERE

w.class IN ( 'system undo header'

, 'system undo block'

, 'undo header'

, 'undo block'

)

AND s.name IN ('db block gets', 'consistent gets')

GROUP BY

w.class

, w.count;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< BACKUPS >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Backups</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - RMAN BACKUP JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_backup_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Backup Jobs</b></font><hr align="left" width="460">

prompt <b>Last 10 RMAN backup jobs</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN backup_name FORMAT a130 HEADING 'Backup Name' ENTMAP off

COLUMN start_time FORMAT a75 HEADING 'Start Time' ENTMAP off

COLUMN elapsed_time FORMAT a75 HEADING 'Elapsed Time' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN input_type HEADING 'Input Type' ENTMAP off

COLUMN output_device_type HEADING 'Output Devices' ENTMAP off

COLUMN input_size HEADING 'Input Size' ENTMAP off

COLUMN output_size HEADING 'Output Size' ENTMAP off

COLUMN output_rate_per_sec HEADING 'Output Rate Per Sec' ENTMAP off

SELECT

'<div nowrap><b><font color="#336699">' || r.command_id || '</font></b></div>' backup_name

, '<div nowrap align="right">' || TO_CHAR(r.start_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' start_time

, '<div nowrap align="right">' || r.time_taken_display || '</div>' elapsed_time

, DECODE( r.status

, 'COMPLETED'

, '<div align="center"><b><font color="darkgreen">' || r.status || '</font></b></div>'

, 'RUNNING'

, '<div align="center"><b><font color="#000099">' || r.status || '</font></b></div>'

, 'FAILED'

, '<div align="center"><b><font color="#990000">' || r.status || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || r.status || '</font></b></div>'

) status

, r.input_type input_type

, r.output_device_type output_device_type

, '<div nowrap align="right">' || r.input_bytes_display || '</div>' input_size

, '<div nowrap align="right">' || r.output_bytes_display || '</div>' output_size

, '<div nowrap align="right">' || r.output_bytes_per_sec_display || '</div>' output_rate_per_sec

FROM

(select

command_id

, start_time

, time_taken_display

, status

, input_type

, output_device_type

, input_bytes_display

, output_bytes_display

, output_bytes_per_sec_display

from v$rman_backup_job_details

order by start_time DESC

) r

WHERE

rownum < 11;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RMAN CONFIGURATION - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_configuration"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Configuration</b></font><hr align="left" width="460">

prompt <b>All non-default RMAN configuration settings</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name FORMAT a130 HEADING 'Name' ENTMAP off

COLUMN value HEADING 'Value' ENTMAP off

SELECT

'<div nowrap><b><font color="#336699">' || name || '</font></b></div>' name

, value

FROM

v$rman_configuration

ORDER BY

name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RMAN BACKUP SETS - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_backup_sets"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Backup Sets</b></font><hr align="left" width="460">

prompt <b>Available backup sets contained in the control file including available and expired backup sets</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN bs_key FORMAT a75 HEADING 'BS Key' ENTMAP off

COLUMN backup_type FORMAT a70 HEADING 'Backup Type' ENTMAP off

COLUMN device_type HEADING 'Device Type' ENTMAP off

COLUMN controlfile_included FORMAT a30 HEADING 'Controlfile Included?' ENTMAP off

COLUMN spfile_included FORMAT a30 HEADING 'SPFILE Included?' ENTMAP off

COLUMN incremental_level HEADING 'Incremental Level' ENTMAP off

COLUMN pieces FORMAT 999,999,999,999 HEADING '# of Pieces' ENTMAP off

COLUMN start_time FORMAT a75 HEADING 'Start Time' ENTMAP off

COLUMN completion_time FORMAT a75 HEADING 'End Time' ENTMAP off

COLUMN elapsed_seconds FORMAT 999,999,999,999,999 HEADING 'Elapsed Seconds' ENTMAP off

COLUMN tag HEADING 'Tag' ENTMAP off

COLUMN block_size FORMAT 999,999,999,999,999 HEADING 'Block Size' ENTMAP off

COLUMN keep FORMAT a40 HEADING 'Keep?' ENTMAP off

COLUMN keep_until FORMAT a75 HEADING 'Keep Until' ENTMAP off

COLUMN keep_options FORMAT a15 HEADING 'Keep Options' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total:</b></font>' OF pieces elapsed_seconds ON report

SELECT

'<div align="center"><font color="#336699"><b>' || bs.recid || '</b></font></div>' bs_key

, DECODE(backup_type

, 'L', '<div nowrap><font color="#990000">Archived Redo Logs</font></div>'

, 'D', '<div nowrap><font color="#000099">Datafile Full Backup</font></div>'

, 'I', '<div nowrap><font color="darkgreen">Incremental Backup</font></div>') backup_type

, '<div nowrap align="right">' || device_type || '</div>' device_type

, '<div align="center">' ||

DECODE(bs.controlfile_included, 'NO', '-', bs.controlfile_included) || '</div>' controlfile_included

, '<div align="center">' || NVL(sp.spfile_included, '-') || '</div>' spfile_included

, bs.incremental_level incremental_level

, bs.pieces pieces

, '<div nowrap align="right">' || TO_CHAR(bs.start_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' start_time

, '<div nowrap align="right">' || TO_CHAR(bs.completion_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' completion_time

, bs.elapsed_seconds elapsed_seconds

, bp.tag tag

, bs.block_size block_size

, '<div align="center">' || bs.keep || '</div>' keep

, '<div nowrap align="right">' || NVL(TO_CHAR(bs.keep_until, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' keep_until

, bs.keep_options keep_options

FROM

v$backup_set bs

, (select distinct

set_stamp

, set_count

, tag

, device_type

from v$backup_piece

where status in ('A', 'X')) bp

, (select distinct set_stamp, set_count, 'YES' spfile_included

from v$backup_spfile) sp

WHERE

bs.set_stamp = bp.set_stamp

AND bs.set_count = bp.set_count

AND bs.set_stamp = sp.set_stamp (+)

AND bs.set_count = sp.set_count (+)

ORDER BY

bs.recid;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RMAN BACKUP PIECES - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_backup_pieces"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Backup Pieces</b></font><hr align="left" width="460">

prompt <b>Available backup pieces contained in the control file including available and expired backup sets</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN bs_key FORMAT a75 HEADING 'BS Key' ENTMAP off

COLUMN piece# HEADING 'Piece #' ENTMAP off

COLUMN copy# HEADING 'Copy #' ENTMAP off

COLUMN bp_key HEADING 'BP Key' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN handle HEADING 'Handle' ENTMAP off

COLUMN start_time FORMAT a75 HEADING 'Start Time' ENTMAP off

COLUMN completion_time FORMAT a75 HEADING 'End Time' ENTMAP off

COLUMN elapsed_seconds FORMAT 999,999,999,999,999 HEADING 'Elapsed Seconds' ENTMAP off

COLUMN deleted FORMAT a10 HEADING 'Deleted?' ENTMAP off

BREAK ON bs_key

SELECT

'<div align="center"><font color="#336699"><b>' || bs.recid || '</b></font></div>' bs_key

, bp.piece# piece#

, bp.copy# copy#

, bp.recid bp_key

, DECODE( status

, 'A', '<div nowrap align="center"><font color="darkgreen"><b>Available</b></font></div>'

, 'D', '<div nowrap align="center"><font color="#000099"><b>Deleted</b></font></div>'

, 'X', '<div nowrap align="center"><font color="#990000"><b>Expired</b></font></div>') status

, handle handle

, '<div nowrap align="right">' || TO_CHAR(bp.start_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' start_time

, '<div nowrap align="right">' || TO_CHAR(bp.completion_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' completion_time

, bp.elapsed_seconds elapsed_seconds

FROM

v$backup_set bs

, v$backup_piece bp

WHERE

bs.set_stamp = bp.set_stamp

AND bs.set_count = bp.set_count

AND bp.status IN ('A', 'X')

ORDER BY

bs.recid

, piece#;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RMAN BACKUP CONTROL FILES - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_backup_control_files"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Backup Control Files</b></font><hr align="left" width="460">

prompt <b>Available automatic control files within all available (and expired) backup sets</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN bs_key FORMAT a75 HEADING 'BS Key' ENTMAP off

COLUMN piece# HEADING 'Piece #' ENTMAP off

COLUMN copy# HEADING 'Copy #' ENTMAP off

COLUMN bp_key HEADING 'BP Key' ENTMAP off

COLUMN controlfile_included FORMAT a75 HEADING 'Controlfile Included?' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN handle HEADING 'Handle' ENTMAP off

COLUMN start_time FORMAT a40 HEADING 'Start Time' ENTMAP off

COLUMN completion_time FORMAT a40 HEADING 'End Time' ENTMAP off

COLUMN elapsed_seconds FORMAT 999,999,999,999,999 HEADING 'Elapsed Seconds' ENTMAP off

COLUMN deleted FORMAT a10 HEADING 'Deleted?' ENTMAP off

BREAK ON bs_key

SELECT

'<div align="center"><font color="#336699"><b>' || bs.recid || '</b></font></div>' bs_key

, bp.piece# piece#

, bp.copy# copy#

, bp.recid bp_key

, '<div align="center"><font color="#663300"><b>' ||

DECODE(bs.controlfile_included, 'NO', '-', bs.controlfile_included) ||

'</b></font></div>' controlfile_included

, DECODE( status

, 'A', '<div nowrap align="center"><font color="darkgreen"><b>Available</b></font></div>'

, 'D', '<div nowrap align="center"><font color="#000099"><b>Deleted</b></font></div>'

, 'X', '<div nowrap align="center"><font color="#990000"><b>Expired</b></font></div>') status

, handle handle

FROM

v$backup_set bs

, v$backup_piece bp

WHERE

bs.set_stamp = bp.set_stamp

AND bs.set_count = bp.set_count

AND bp.status IN ('A', 'X')

AND bs.controlfile_included != 'NO'

ORDER BY

bs.recid

, piece#;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RMAN BACKUP SPFILE - |

-- +----------------------------------------------------------------------------+

prompt <a name="rman_backup_spfile"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>RMAN Backup SPFILE</b></font><hr align="left" width="460">

prompt <b>Available automatic SPFILE backups within all available (and expired) backup sets</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN bs_key FORMAT a75 HEADING 'BS Key' ENTMAP off

COLUMN piece# HEADING 'Piece #' ENTMAP off

COLUMN copy# HEADING 'Copy #' ENTMAP off

COLUMN bp_key HEADING 'BP Key' ENTMAP off

COLUMN spfile_included FORMAT a75 HEADING 'SPFILE Included?' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN handle HEADING 'Handle' ENTMAP off

COLUMN start_time FORMAT a40 HEADING 'Start Time' ENTMAP off

COLUMN completion_time FORMAT a40 HEADING 'End Time' ENTMAP off

COLUMN elapsed_seconds FORMAT 999,999,999,999,999 HEADING 'Elapsed Seconds' ENTMAP off

COLUMN deleted FORMAT a10 HEADING 'Deleted?' ENTMAP off

BREAK ON bs_key

SELECT

'<div align="center"><font color="#336699"><b>' || bs.recid || '</b></font></div>' bs_key

, bp.piece# piece#

, bp.copy# copy#

, bp.recid bp_key

, '<div align="center"><font color="#663300"><b>' ||

NVL(sp.spfile_included, '-') ||

'</b></font></div>' spfile_included

, DECODE( status

, 'A', '<div nowrap align="center"><font color="darkgreen"><b>Available</b></font></div>'

, 'D', '<div nowrap align="center"><font color="#000099"><b>Deleted</b></font></div>'

, 'X', '<div nowrap align="center"><font color="#990000"><b>Expired</b></font></div>') status

, handle handle

FROM

v$backup_set bs

, v$backup_piece bp

, (select distinct set_stamp, set_count, 'YES' spfile_included

from v$backup_spfile) sp

WHERE

bs.set_stamp = bp.set_stamp

AND bs.set_count = bp.set_count

AND bp.status IN ('A', 'X')

AND bs.set_stamp = sp.set_stamp

AND bs.set_count = sp.set_count

ORDER BY

bs.recid

, piece#;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ARCHIVING MODE - |

-- +----------------------------------------------------------------------------+

prompt <a name="archiving_mode"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Archiving Mode</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN db_log_mode FORMAT a95 HEADING 'Database|Log Mode' ENTMAP off

COLUMN log_archive_start FORMAT a95 HEADING 'Automatic|Archival' ENTMAP off

COLUMN oldest_online_log_sequence FORMAT 999999999999999 HEADING 'Oldest Online |Log Sequence' ENTMAP off

COLUMN current_log_seq FORMAT 999999999999999 HEADING 'Current |Log Sequence' ENTMAP off

SELECT

'<div align="center"><font color="#663300"><b>' || d.log_mode || '</b></font></div>' db_log_mode

, '<div align="center"><font color="#663300"><b>' || p.log_archive_start || '</b></font></div>' log_archive_start

, c.current_log_seq current_log_seq

, o.oldest_online_log_sequence oldest_online_log_sequence

FROM

(select

DECODE( log_mode

, 'ARCHIVELOG', 'Archive Mode'

, 'NOARCHIVELOG', 'No Archive Mode'

, log_mode

) log_mode

from v$database

) d

, (select

DECODE( log_mode

, 'ARCHIVELOG', 'Enabled'

, 'NOARCHIVELOG', 'Disabled') log_archive_start

from v$database

) p

, (select a.sequence# current_log_seq

from v$log a

where a.status = 'CURRENT'

and thread# = &_thread_number

) c

, (select min(a.sequence#) oldest_online_log_sequence

from v$log a

where thread# = &_thread_number

) o

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ARCHIVE DESTINATIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="archive_destinations"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Archive Destinations</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN dest_id HEADING 'Destination|ID' ENTMAP off

COLUMN dest_name HEADING 'Destination|Name' ENTMAP off

COLUMN destination HEADING 'Destination' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN schedule HEADING 'Schedule' ENTMAP off

COLUMN archiver HEADING 'Archiver' ENTMAP off

COLUMN log_sequence FORMAT 999999999999999 HEADING 'Current Log|Sequence' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || a.dest_id || '</b></font></div>' dest_id

, a.dest_name dest_name

, a.destination destination

, DECODE( a.status

, 'VALID', '<div align="center"><b><font color="darkgreen">' || status || '</font></b></div>'

, 'INACTIVE', '<div align="center"><b><font color="#990000">' || status || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || status || '</font></b></div>' ) status

, DECODE( a.schedule

, 'ACTIVE', '<div align="center"><b><font color="darkgreen">' || schedule || '</font></b></div>'

, 'INACTIVE', '<div align="center"><b><font color="#990000">' || schedule || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || schedule || '</font></b></div>' ) schedule

, a.archiver archiver

, a.log_sequence log_sequence

FROM

v$archive_dest a

ORDER BY

a.dest_id

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ARCHIVING INSTANCE PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="archiving_instance_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Archiving Instance Parameters</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name HEADING 'Parameter Name' ENTMAP off

COLUMN value HEADING 'Parameter Value' ENTMAP off

SELECT

'<b><font color="#336699">' || a.name || '</font></b>' name

, a.value value

FROM

v$parameter a

WHERE

a.name like 'log_%'

ORDER BY

a.name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ARCHIVING HISTORY - |

-- +----------------------------------------------------------------------------+

prompt <a name="archiving_history"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Archiving History</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN thread# FORMAT a79 HEADING 'Thread#' ENTMAP off

COLUMN sequence# FORMAT a79 HEADING 'Sequence#' ENTMAP off

COLUMN name HEADING 'Name' ENTMAP off

COLUMN first_change# HEADING 'First|Change #' ENTMAP off

COLUMN first_time FORMAT a75 HEADING 'First|Time' ENTMAP off

COLUMN next_change# HEADING 'Next|Change #' ENTMAP off

COLUMN next_time FORMAT a75 HEADING 'Next|Time' ENTMAP off

COLUMN log_size FORMAT 999,999,999,999,999 HEADING 'Size (in bytes)' ENTMAP off

COLUMN archived FORMAT a31 HEADING 'Archived?' ENTMAP off

COLUMN applied FORMAT a31 HEADING 'Applied?' ENTMAP off

COLUMN deleted FORMAT a31 HEADING 'Deleted?' ENTMAP off

COLUMN status FORMAT a75 HEADING 'Status' ENTMAP off

BREAK ON report ON thread#

SELECT

'<div align="center"><b><font color="#336699">' || thread# || '</font></b></div>' thread#

, '<div align="center"><b><font color="#336699">' || sequence# || '</font></b></div>' sequence#

, name

, first_change#

, '<div align="right" nowrap>' || TO_CHAR(first_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' first_time

, next_change#

, '<div align="right" nowrap>' || TO_CHAR(next_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' next_time

, (blocks * block_size) log_size

, '<div align="center">' || archived || '</div>' archived

, '<div align="center">' || applied || '</div>' applied

, '<div align="center">' || deleted || '</div>' deleted

, DECODE( status

, 'A', '<div align="center"><b><font color="darkgreen">Available</font></b></div>'

, 'D', '<div align="center"><b><font color="#663300">Deleted</font></b></div>'

, 'U', '<div align="center"><b><font color="#990000">Unavailable</font></b></div>'

, 'X', '<div align="center"><b><font color="#990000">Expired</font></b></div>'

) status

FROM

v$archived_log

WHERE

status in ('A')

ORDER BY

thread#

, sequence#;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FLASH RECOVERY AREA PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="flash_recovery_area_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Flash Recovery Area Parameters</b></font><hr align="left" width="460">

prompt <b>db_recovery_file_dest_size is specified in bytes</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a95 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a95 HEADING 'Thread Number' ENTMAP off

COLUMN name FORMAT a125 HEADING 'Name' ENTMAP off

COLUMN value HEADING 'Value' ENTMAP off

BREAK ON report ON instance_name_print ON thread_number_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || i.thread# || '</div>' thread_number_print

, '<div nowrap>' || p.name || '</div>' name

, (CASE p.name

WHEN 'db_recovery_file_dest_size' THEN '<div nowrap align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

ELSE

'<div nowrap align="right">' || NVL(p.value, '(null)') || '</div>'

END) value

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

AND p.name IN ('db_recovery_file_dest_size', 'db_recovery_file_dest')

ORDER BY

1

, 3;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FLASH RECOVERY AREA STATUS - |

-- +----------------------------------------------------------------------------+

prompt <a name="flash_recovery_area_status"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Flash Recovery Area Status</b></font><hr align="left" width="460">

prompt <b>Current location, disk quota, space in use, space reclaimable by deleting files, and number of files in the Flash Recovery Area</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name FORMAT a75 HEADING 'Name' ENTMAP off

COLUMN space_limit FORMAT 99,999,999,999,999 HEADING 'Space Limit' ENTMAP off

COLUMN space_used FORMAT 99,999,999,999,999 HEADING 'Space Used' ENTMAP off

COLUMN space_used_pct FORMAT 999.99 HEADING '% Used' ENTMAP off

COLUMN space_reclaimable FORMAT 99,999,999,999,999 HEADING 'Space Reclaimable' ENTMAP off

COLUMN pct_reclaimable FORMAT 999.99 HEADING '% Reclaimable' ENTMAP off

COLUMN number_of_files FORMAT 999,999 HEADING 'Number of Files' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || name || '</b></font></div>' name

, space_limit space_limit

, space_used space_used

, ROUND((space_used / DECODE(space_limit, 0, 0.000001, space_limit))*100, 2) space_used_pct

, space_reclaimable space_reclaimable

, ROUND((space_reclaimable / DECODE(space_limit, 0, 0.000001, space_limit))*100, 2) pct_reclaimable

, number_of_files number_of_files

FROM

v$recovery_file_dest

ORDER BY

name;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN file_type FORMAT a75 HEADING 'File Type'

COLUMN percent_space_used HEADING 'Percent Space Used'

COLUMN percent_space_reclaimable HEADING 'Percent Space Reclaimable'

COLUMN number_of_files FORMAT 999,999 HEADING 'Number of Files'

SELECT

'<div align="center"><font color="#336699"><b>' || file_type || '</b></font></div>' file_type

, percent_space_used percent_space_used

, percent_space_reclaimable percent_space_reclaimable

, number_of_files number_of_files

FROM

v$flash_recovery_area_usage;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< FLASHBACK TECHNOLOGIES >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Flashback Technologies</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - FLASHBACK DATABASE PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="flashback_database_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Flashback Database Parameters</b></font><hr align="left" width="460">

prompt <b>db_flashback_retention_target is specified in minutes</b>

prompt <b>db_recovery_file_dest_size is specified in bytes</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a95 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a95 HEADING 'Thread Number' ENTMAP off

COLUMN name FORMAT a125 HEADING 'Name' ENTMAP off

COLUMN value HEADING 'Value' ENTMAP off

BREAK ON report ON instance_name_print ON thread_number_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || i.thread# || '</div>' thread_number_print

, '<div nowrap>' || p.name || '</div>' name

, (CASE p.name

WHEN 'db_recovery_file_dest_size' THEN '<div nowrap align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

WHEN 'db_flashback_retention_target' THEN '<div nowrap align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

ELSE

'<div nowrap align="right">' || NVL(p.value, '(null)') || '</div>'

END) value

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

AND p.name IN ('db_flashback_retention_target', 'db_recovery_file_dest_size', 'db_recovery_file_dest')

ORDER BY

1

, 3;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FLASHBACK DATABASE STATUS - |

-- +----------------------------------------------------------------------------+

prompt <a name="flashback_database_status"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Flashback Database Status</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN dbid HEADING 'DB ID' ENTMAP off

COLUMN name FORMAT A75 HEADING 'DB Name' ENTMAP off

COLUMN log_mode FORMAT A75 HEADING 'Log Mode' ENTMAP off

COLUMN flashback_on FORMAT A75 HEADING 'Flashback DB On?' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || dbid || '</b></font></div>' dbid

, '<div align="center">' || name || '</div>' name

, '<div align="center">' || log_mode || '</div>' log_mode

, '<div align="center">' || flashback_on || '</div>' flashback_on

FROM v$database;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN oldest_flashback_time FORMAT a125 HEADING 'Oldest Flashback Time' ENTMAP off

COLUMN oldest_flashback_scn HEADING 'Oldest Flashback SCN' ENTMAP off

COLUMN retention_target FORMAT 999,999 HEADING 'Retention Target (min)' ENTMAP off

COLUMN retention_target_hours FORMAT 999,999 HEADING 'Retention Target (hour)' ENTMAP off

COLUMN flashback_size FORMAT 9,999,999,999,999 HEADING 'Flashback Size' ENTMAP off

COLUMN estimated_flashback_size FORMAT 9,999,999,999,999 HEADING 'Estimated Flashback Size' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || TO_CHAR(oldest_flashback_time,'mm/dd/yyyy HH24:MI:SS') || '</b></font></div>' oldest_flashback_time

, oldest_flashback_scn oldest_flashback_scn

, retention_target retention_target

, retention_target/60 retention_target_hours

, flashback_size flashback_size

, estimated_flashback_size estimated_flashback_size

FROM

v$flashback_database_log

ORDER BY

1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FLASHBACK DATABASE REDO TIME MATRIX - |

-- +----------------------------------------------------------------------------+

prompt <a name="flashback_database_redo_time_matrix"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Flashback Database Redo Time Matrix</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN begin_time FORMAT a75 HEADING 'Begin Time' ENTMAP off

COLUMN end_time FORMAT a75 HEADING 'End Time' ENTMAP off

COLUMN flashback_data FORMAT 9,999,999,999,999 HEADING 'Flashback Data' ENTMAP off

COLUMN db_data FORMAT 9,999,999,999,999 HEADING 'DB Data' ENTMAP off

COLUMN redo_data FORMAT 9,999,999,999,999 HEADING 'Redo Data' ENTMAP off

COLUMN estimated_flashback_size FORMAT 9,999,999,999,999 HEADING 'Estimated Flashback Size' ENTMAP off

SELECT

'<div align="right">' || TO_CHAR(begin_time,'mm/dd/yyyy HH24:MI:SS') || '</div>' begin_time

, '<div align="right">' || TO_CHAR(end_time,'mm/dd/yyyy HH24:MI:SS') || '</div>' end_time

, flashback_data

, db_data

, redo_data

, estimated_flashback_size

FROM

v$flashback_database_stat

ORDER BY

begin_time;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< PERFORMANCE >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Performance</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - SGA INFORMATION - |

-- +----------------------------------------------------------------------------+

prompt <a name="sga_information"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>SGA Information</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN name FORMAT a150 HEADING 'Pool Name' ENTMAP off

COLUMN value FORMAT 999,999,999,999,999 HEADING 'Bytes' ENTMAP off

BREAK ON report ON instance_name

COMPUTE sum LABEL '<font color="#990000"><b>Total:</b></font>' OF value ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, '<div align="left"><font color="#336699"><b>' || s.name || '</b></font></div>' name

, s.value value

FROM

gv$sga s

, gv$instance i

WHERE

s.inst_id = i.inst_id

ORDER BY

i.instance_name

, s.value DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SGA TARGET ADVICE - |

-- +----------------------------------------------------------------------------+

prompt <a name="sga_target_advice"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>SGA Target Advice</b></font><hr align="left" width="460">

prompt Modify the SGA_TARGET parameter (up to the size of the SGA_MAX_SIZE, if necessary) to reduce

prompt the number of "Estimated Physical Reads".

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN name FORMAT a79 HEADING 'Parameter Name' ENTMAP off

COLUMN value FORMAT a79 HEADING 'Value' ENTMAP off

BREAK ON report ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, p.name name

, (CASE p.name

WHEN 'sga_max_size' THEN '<div align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

WHEN 'sga_target' THEN '<div align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

ELSE

'<div align="right">' || p.value || '</div>'

END) value

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

AND p.name IN ('sga_max_size', 'sga_target')

ORDER BY

i.instance_name

, p.name;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN sga_size FORMAT 999,999,999,999,999 HEADING 'SGA Size' ENTMAP off

COLUMN sga_size_factor FORMAT 999,999,999,999,999 HEADING 'SGA Size Factor' ENTMAP off

COLUMN estd_db_time FORMAT 999,999,999,999,999 HEADING 'Estimated DB Time' ENTMAP off

COLUMN estd_db_time_factor FORMAT 999,999,999,999,999 HEADING 'Estimated DB Time Factor' ENTMAP off

COLUMN estd_physical_reads FORMAT 999,999,999,999,999 HEADING 'Estimated Physical Reads' ENTMAP off

BREAK ON report ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, s.sga_size

, s.sga_size_factor

, s.estd_db_time

, s.estd_db_time_factor

, s.estd_physical_reads

FROM

gv$sga_target_advice s

, gv$instance i

WHERE

s.inst_id = i.inst_id

ORDER BY

i.instance_name

, s.sga_size_factor;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SGA (ASMM) DYNAMIC COMPONENTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="sga_asmm_dynamic_components"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>SGA (ASMM) Dynamic Components</b></font><hr align="left" width="460">

prompt Provides a summary report of all dynamic components as part of the Automatic Shared Memory

prompt Management (ASMM) configuration. This will display the total real memory allocation for the current

prompt SGA from the V$SGA_DYNAMIC_COMPONENTS view, which contains both manual and autotuned SGA components.

prompt As with the other manageability features of Oracle Database 10g, ASMM requires you to set the

prompt STATISTICS_LEVEL parameter to at least TYPICAL (the default) before attempting to enable ASMM. ASMM

prompt can be enabled by setting SGA_TARGET to a nonzero value in the initialization parameter file (pfile/spfile).

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN component FORMAT a79 HEADING 'Component Name' ENTMAP off

COLUMN current_size FORMAT 999,999,999,999 HEADING 'Current Size' ENTMAP off

COLUMN min_size FORMAT 999,999,999,999 HEADING 'Min Size' ENTMAP off

COLUMN max_size FORMAT 999,999,999,999 HEADING 'Max Size' ENTMAP off

COLUMN user_specified_size FORMAT 999,999,999,999 HEADING 'User Specified|Size' ENTMAP off

COLUMN oper_count FORMAT 999,999,999,999 HEADING 'Oper.|Count' ENTMAP off

COLUMN last_oper_type FORMAT a75 HEADING 'Last Oper.|Type' ENTMAP off

COLUMN last_oper_mode FORMAT a75 HEADING 'Last Oper.|Mode' ENTMAP off

COLUMN last_oper_time FORMAT a75 HEADING 'Last Oper.|Time' ENTMAP off

COLUMN granule_size FORMAT 999,999,999,999 HEADING 'Granule Size' ENTMAP off

BREAK ON report ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, sdc.component

, sdc.current_size

, sdc.min_size

, sdc.max_size

, sdc.user_specified_size

, sdc.oper_count

, sdc.last_oper_type

, sdc.last_oper_mode

, '<div align="right">' || NVL(TO_CHAR(sdc.last_oper_time, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' last_oper_time

, sdc.granule_size

FROM

gv$sga_dynamic_components sdc

, gv$instance i

ORDER BY

i.instance_name

, sdc.component DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - PGA TARGET ADVICE - |

-- +----------------------------------------------------------------------------+

prompt <a name="pga_target_advice"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>PGA Target Advice</b></font><hr align="left" width="460">

prompt The <b>V$PGA_TARGET_ADVICE</b> view predicts how the statistics cache hit percentage and over

prompt allocation count in V$PGASTAT will be impacted if you change the value of the

prompt initialization parameter PGA_AGGREGATE_TARGET. When you set the PGA_AGGREGATE_TARGET and

prompt WORKAREA_SIZE_POLICY to <b>AUTO</b> then the *_AREA_SIZE parameter are automatically ignored and

prompt Oracle will automatically use the computed value for these parameters. Use the results from

prompt the query below to adequately set the initialization parameter PGA_AGGREGATE_TARGET as to avoid

prompt any over allocation. If column ESTD_OVERALLOCATION_COUNT in the V$PGA_TARGET_ADVICE

prompt view (below) is nonzero, it indicates that PGA_AGGREGATE_TARGET is too small to even

prompt meet the minimum PGA memory needs. If PGA_AGGREGATE_TARGET is set within the over

prompt allocation zone, the memory manager will over-allocate memory and actual PGA memory

prompt consumed will be more than the limit you set. It is therefore meaningless to set a

prompt value of PGA_AGGREGATE_TARGET in that zone. After eliminating over-allocations, the

prompt goal is to maximize the PGA cache hit percentage, based on your response-time requirement

prompt and memory constraints.

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN name FORMAT a79 HEADING 'Parameter Name' ENTMAP off

COLUMN value FORMAT a79 HEADING 'Value' ENTMAP off

BREAK ON report ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, p.name name

, (CASE p.name

WHEN 'pga_aggregate_target' THEN '<div align="right">' || TO_CHAR(p.value, '999,999,999,999,999') || '</div>'

ELSE

'<div align="right">' || p.value || '</div>'

END) value

FROM

gv$parameter p

, gv$instance i

WHERE

p.inst_id = i.inst_id

AND p.name IN ('pga_aggregate_target', 'workarea_size_policy')

ORDER BY

i.instance_name

, p.name;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name FORMAT a79 HEADING 'Instance Name' ENTMAP off

COLUMN pga_target_for_estimate FORMAT 999,999,999,999,999 HEADING 'PGA Target for Estimate' ENTMAP off

COLUMN estd_extra_bytes_rw FORMAT 999,999,999,999,999 HEADING 'Estimated Extra Bytes R/W' ENTMAP off

COLUMN estd_pga_cache_hit_percentage FORMAT 999,999,999,999,999 HEADING 'Estimated PGA Cache Hit %' ENTMAP off

COLUMN estd_overalloc_count FORMAT 999,999,999,999,999 HEADING 'ESTD_OVERALLOC_COUNT' ENTMAP off

BREAK ON report ON instance_name

SELECT

'<div align="left"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name

, p.pga_target_for_estimate

, p.estd_extra_bytes_rw

, p.estd_pga_cache_hit_percentage

, p.estd_overalloc_count

FROM

gv$pga_target_advice p

, gv$instance i

WHERE

p.inst_id = i.inst_id

ORDER BY

i.instance_name

, p.pga_target_for_estimate;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FILE I/O STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="file_io_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>File I/O Statistics</b></font><hr align="left" width="460">

prompt <b>Ordered by "Physical Reads" since last startup of the Oracle instance</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN tablespace_name FORMAT a50 HEAD 'Tablespace' ENTMAP off

COLUMN fname HEAD 'File Name' ENTMAP off

COLUMN phyrds FORMAT 999,999,999,999,999 HEAD 'Physical Reads' ENTMAP off

COLUMN phywrts FORMAT 999,999,999,999,999 HEAD 'Physical Writes' ENTMAP off

COLUMN read_pct HEAD 'Read Pct.' ENTMAP off

COLUMN write_pct HEAD 'Write Pct.' ENTMAP off

COLUMN total_io FORMAT 999,999,999,999,999 HEAD 'Total I/O' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF phyrds phywrts total_io ON report

SELECT

'<font color="#336699"><b>' || df.tablespace_name || '</b></font>' tablespace_name

, df.file_name fname

, fs.phyrds phyrds

, '<div align="right">' || ROUND((fs.phyrds * 100) / (fst.pr + tst.pr), 2) || '%</div>' read_pct

, fs.phywrts phywrts

, '<div align="right">' || ROUND((fs.phywrts * 100) / (fst.pw + tst.pw), 2) || '%</div>' write_pct

, (fs.phyrds + fs.phywrts) total_io

FROM

sys.dba_data_files df

, v$filestat fs

, (select sum(f.phyrds) pr, sum(f.phywrts) pw from v$filestat f) fst

, (select sum(t.phyrds) pr, sum(t.phywrts) pw from v$tempstat t) tst

WHERE

df.file_id = fs.file#

UNION

SELECT

'<font color="#336699"><b>' || tf.tablespace_name || '</b></font>' tablespace_name

, tf.file_name fname

, ts.phyrds phyrds

, '<div align="right">' || ROUND((ts.phyrds * 100) / (fst.pr + tst.pr), 2) || '%</div>' read_pct

, ts.phywrts phywrts

, '<div align="right">' || ROUND((ts.phywrts * 100) / (fst.pw + tst.pw), 2) || '%</div>' write_pct

, (ts.phyrds + ts.phywrts) total_io

FROM

sys.dba_temp_files tf

, v$tempstat ts

, (select sum(f.phyrds) pr, sum(f.phywrts) pw from v$filestat f) fst

, (select sum(t.phyrds) pr, sum(t.phywrts) pw from v$tempstat t) tst

WHERE

tf.file_id = ts.file#

ORDER BY phyrds DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FILE I/O TIMINGS - |

-- +----------------------------------------------------------------------------+

prompt <a name="file_io_timings"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>File I/O Timings</b></font><hr align="left" width="460">

prompt <b>Average time (in milliseconds) for an I/O call per datafile since last startup of the Oracle instance - (ordered by Physical Reads)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN fname HEAD 'File Name' ENTMAP off

COLUMN phyrds FORMAT 999,999,999,999,999 HEAD 'Physical Reads' ENTMAP off

COLUMN read_rate FORMAT 999,999,999,999,999.99 HEAD 'Average Read Time<br>(milliseconds per read)' ENTMAP off

COLUMN phywrts FORMAT 999,999,999,999,999 HEAD 'Physical Writes' ENTMAP off

COLUMN write_rate FORMAT 999,999,999,999,999.99 HEAD 'Average Write Time<br>(milliseconds per write)' ENTMAP off

BREAK ON REPORT

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF phyrds phywrts ON report

COMPUTE avg LABEL '<font color="#990000"><b>Average: </b></font>' OF read_rate write_rate ON report

SELECT

'<b><font color="#336699">' || d.name || '</font></b>' fname

, s.phyrds phyrds

, ROUND((s.readtim/GREATEST(s.phyrds,1)), 2) read_rate

, s.phywrts phywrts

, ROUND((s.writetim/GREATEST(s.phywrts,1)),2) write_rate

FROM

v$filestat s

, v$datafile d

WHERE

s.file# = d.file#

UNION

SELECT

'<b><font color="#336699">' || t.name || '</font></b>' fname

, s.phyrds phyrds

, ROUND((s.readtim/GREATEST(s.phyrds,1)), 2) read_rate

, s.phywrts phywrts

, ROUND((s.writetim/GREATEST(s.phywrts,1)),2) write_rate

FROM

v$tempstat s

, v$tempfile t

WHERE

s.file# = t.file#

ORDER BY

2 DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - AVERAGE OVERALL I/O PER SECOND - |

-- +----------------------------------------------------------------------------+

prompt <a name="average_overall_io_per_sec"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Average Overall I/O per Second</b></font><hr align="left" width="460">

prompt <b>Average overall I/O calls (physical read/write calls) since last startup of the Oracle instance</b>

CLEAR COLUMNS BREAKS COMPUTES

DECLARE

CURSOR get_file_io IS

SELECT

NVL(SUM(a.phyrds + a.phywrts), 0) sum_datafile_io

, TO_NUMBER(null) sum_tempfile_io

FROM

v$filestat a

UNION

SELECT

TO_NUMBER(null) sum_datafile_io

, NVL(SUM(b.phyrds + b.phywrts), 0) sum_tempfile_io

FROM

v$tempstat b;

current_time DATE;

elapsed_time_seconds NUMBER;

sum_datafile_io NUMBER;

sum_datafile_io2 NUMBER;

sum_tempfile_io NUMBER;

sum_tempfile_io2 NUMBER;

total_io NUMBER;

datafile_io_per_sec NUMBER;

tempfile_io_per_sec NUMBER;

total_io_per_sec NUMBER;

BEGIN

OPEN get_file_io;

FOR i IN 1..2 LOOP

FETCH get_file_io INTO sum_datafile_io, sum_tempfile_io;

IF i = 1 THEN

sum_datafile_io2 := sum_datafile_io;

ELSE

sum_tempfile_io2 := sum_tempfile_io;

END IF;

END LOOP;

total_io := sum_datafile_io2 + sum_tempfile_io2;

SELECT sysdate INTO current_time FROM dual;

SELECT CEIL ((current_time - startup_time)*(60*60*24)) INTO elapsed_time_seconds FROM v$instance;

datafile_io_per_sec := sum_datafile_io2/elapsed_time_seconds;

tempfile_io_per_sec := sum_tempfile_io2/elapsed_time_seconds;

total_io_per_sec := total_io/elapsed_time_seconds;

DBMS_OUTPUT.PUT_LINE('<table width="90%" border="1">');

DBMS_OUTPUT.PUT_LINE('<tr><th align="left" width="20%">Elapsed Time (in seconds)</th><td width="80%">' || TO_CHAR(elapsed_time_seconds, '9,999,999,999,999') || '</td></tr>');

DBMS_OUTPUT.PUT_LINE('<tr><th align="left" width="20%">Datafile I/O Calls per Second</th><td width="80%">' || TO_CHAR(datafile_io_per_sec, '9,999,999,999,999') || '</td></tr>');

DBMS_OUTPUT.PUT_LINE('<tr><th align="left" width="20%">Tempfile I/O Calls per Second</th><td width="80%">' || TO_CHAR(tempfile_io_per_sec, '9,999,999,999,999') || '</td></tr>');

DBMS_OUTPUT.PUT_LINE('<tr><th align="left" width="20%">Total I/O Calls per Second</th><td width="80%">' || TO_CHAR(total_io_per_sec, '9,999,999,999,999') || '</td></tr>');

DBMS_OUTPUT.PUT_LINE('</table>');

END;

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - REDO LOG CONTENTION - |

-- +----------------------------------------------------------------------------+

prompt <a name="redo_log_contention"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Redo Log Contention</b></font><hr align="left" width="460">

prompt <b>All latches like redo% - (ordered by misses)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name FORMAT a95 HEADING 'Latch Name'

COLUMN gets FORMAT 999,999,999,999,999,999 HEADING 'Gets'

COLUMN misses FORMAT 999,999,999,999 HEADING 'Misses'

COLUMN sleeps FORMAT 999,999,999,999 HEADING 'Sleeps'

COLUMN immediate_gets FORMAT 999,999,999,999,999,999 HEADING 'Immediate Gets'

COLUMN immediate_misses FORMAT 999,999,999,999 HEADING 'Immediate Misses'

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total:</b></font>' OF gets misses sleeps immediate_gets immediate_misses ON report

SELECT

'<div align="left"><font color="#336699"><b>' || INITCAP(name) || '</b></font></div>' name

, gets

, misses

, sleeps

, immediate_gets

, immediate_misses

FROM sys.v_$latch

WHERE name LIKE 'redo%'

ORDER BY 1;

prompt

prompt <b>System statistics like redo%</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name FORMAT a95 HEADING 'Statistics Name'

COLUMN value FORMAT 999,999,999,999,999 HEADING 'Value'

SELECT

'<div align="left"><font color="#336699"><b>' || INITCAP(name) || '</b></font></div>' name

, value

FROM v$sysstat

WHERE name LIKE 'redo%'

ORDER BY 1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - FULL TABLE SCANS - |

-- +----------------------------------------------------------------------------+

prompt <a name="full_table_scans"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Full Table Scans</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN large_table_scans FORMAT 999,999,999,999,999 HEADING 'Large Table Scans' ENTMAP off

COLUMN small_table_scans FORMAT 999,999,999,999,999 HEADING 'Small Table Scans' ENTMAP off

COLUMN pct_large_scans HEADING 'Pct. Large Scans' ENTMAP off

SELECT

a.value large_table_scans

, b.value small_table_scans

, '<div align="right">' || ROUND(100*a.value/DECODE((a.value+b.value),0,1,(a.value+b.value)),2) || '%</div>' pct_large_scans

FROM

v$sysstat a

, v$sysstat b

WHERE

a.name = 'table scans (long tables)'

AND b.name = 'table scans (short tables)';

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SORTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="sorts"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Sorts</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN disk_sorts FORMAT 999,999,999,999,999 HEADING 'Disk Sorts' ENTMAP off

COLUMN memory_sorts FORMAT 999,999,999,999,999 HEADING 'Memory Sorts' ENTMAP off

COLUMN pct_disk_sorts HEADING 'Pct. Disk Sorts' ENTMAP off

SELECT

a.value disk_sorts

, b.value memory_sorts

, '<div align="right">' || ROUND(100*a.value/DECODE((a.value+b.value),0,1,(a.value+b.value)),2) || '%</div>' pct_disk_sorts

FROM

v$sysstat a

, v$sysstat b

WHERE

a.name = 'sorts (disk)'

AND b.name = 'sorts (memory)';

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OUTLINES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_outlines"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Outlines</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN category FORMAT a125 HEADING 'Category' ENTMAP off

COLUMN owner FORMAT a125 HEADING 'Owner' ENTMAP off

COLUMN name FORMAT a125 HEADING 'Name' ENTMAP off

COLUMN used HEADING 'Used?' ENTMAP off

COLUMN timestamp FORMAT a125 HEADING 'Time Stamp' ENTMAP off

COLUMN version HEADING 'Version' ENTMAP off

COLUMN sql_text HEADING 'SQL Text' ENTMAP off

SELECT

'<div nowrap><font color="#336699"><b>' || category || '</b></font></div>' category

, owner

, name

, used

, '<div nowrap align="right">' || TO_CHAR(timestamp, 'mm/dd/yyyy HH24:MI:SS') || '</div>' timestamp

, version

, sql_text

FROM

dba_outlines

ORDER BY

category

, owner

, name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OUTLINE HINTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_outline_hints"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Outline Hints</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN category FORMAT a125 HEADING 'Category' ENTMAP off

COLUMN owner FORMAT a125 HEADING 'Owner' ENTMAP off

COLUMN name FORMAT a125 HEADING 'Name' ENTMAP off

COLUMN node HEADING 'Node' ENTMAP off

COLUMN join_pos HEADING 'Join Position' ENTMAP off

COLUMN hint HEADING 'Hint' ENTMAP off

BREAK ON category ON owner ON name

SELECT

'<div nowrap><font color="#336699"><b>' || a.category || '</b></font></div>' category

, a.owner owner

, a.name name

, '<div align="center">' || b.node || '</div>' node

, '<div align="center">' || b.join_pos || '</div>' join_pos

, b.hint hint

FROM

dba_outlines a

, dba_outline_hints b

WHERE

a.owner = b.owner

AND b.name = b.name

ORDER BY

category

, owner

, name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SQL STATEMENTS WITH MOST BUFFER GETS - |

-- +----------------------------------------------------------------------------+

prompt <a name="sql_statements_with_most_buffer_gets"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>SQL Statements With Most Buffer Gets</b></font><hr align="left" width="460">

prompt <b>Top 100 SQL statements with buffer gets greater than 1000</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username FORMAT a75 HEADING 'Username' ENTMAP off

COLUMN buffer_gets FORMAT 999,999,999,999,999 HEADING 'Buffer Gets' ENTMAP off

COLUMN executions FORMAT 999,999,999,999,999 HEADING 'Executions' ENTMAP off

COLUMN gets_per_exec FORMAT 999,999,999,999,999 HEADING 'Buffer Gets / Execution' ENTMAP off

COLUMN sql_text HEADING 'SQL Text' ENTMAP off

SELECT

'<font color="#336699"><b>' || UPPER(b.username) || '</b></font>' username

, a.buffer_gets buffer_gets

, a.executions executions

, (a.buffer_gets / decode(a.executions, 0, 1, a.executions)) gets_per_exec

, a.sql_text sql_text

FROM

(SELECT ai.buffer_gets, ai.executions, ai.sql_text, ai.parsing_user_id

FROM sys.v_$sqlarea ai

ORDER BY ai.buffer_gets

) a

, dba_users b

WHERE

a.parsing_user_id = b.user_id

AND a.buffer_gets > 1000

AND b.username NOT IN ('SYS','SYSTEM')

AND rownum < 101

ORDER BY

a.buffer_gets DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SQL STATEMENTS WITH MOST DISK READS - |

-- +----------------------------------------------------------------------------+

prompt <a name="sql_statements_with_most_disk_reads"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>SQL Statements With Most Disk Reads</b></font><hr align="left" width="460">

prompt <b>Top 100 SQL statements with disk reads greater than 1000</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username FORMAT a75 HEADING 'Username' ENTMAP off

COLUMN disk_reads FORMAT 999,999,999,999,999 HEADING 'Disk Reads' ENTMAP off

COLUMN executions FORMAT 999,999,999,999,999 HEADING 'Executions' ENTMAP off

COLUMN reads_per_exec FORMAT 999,999,999,999,999 HEADING 'Reads / Execution' ENTMAP off

COLUMN sql_text HEADING 'SQL Text' ENTMAP off

SELECT

'<font color="#336699"><b>' || UPPER(b.username) || '</b></font>' username

, a.disk_reads disk_reads

, a.executions executions

, (a.disk_reads / decode(a.executions, 0, 1, a.executions)) reads_per_exec

, a.sql_text sql_text

FROM

(SELECT ai.disk_reads, ai.executions, ai.sql_text, ai.parsing_user_id

FROM sys.v_$sqlarea ai

ORDER BY ai.buffer_gets

) a

, dba_users b

WHERE

a.parsing_user_id = b.user_id

AND a.disk_reads > 1000

AND b.username NOT IN ('SYS','SYSTEM')

AND rownum < 101

ORDER BY

a.disk_reads DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< AUTOMATIC WORKLOAD REPOSITORY - (AWR) >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Automatic Workload Repository - (AWR)</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - WORKLOAD REPOSITORY INFORMATION - |

-- +----------------------------------------------------------------------------+

prompt <a name="awr_workload_repository_information"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Workload Repository Information</b></font><hr align="left" width="460">

prompt <b>Instances found in the "Workload Repository"</b>

prompt <b>The instance running this report (&_instance_name) is indicated in "<font color="darkgreen">GREEN</font>"</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN dbbid FORMAT a75 HEAD 'Database ID' ENTMAP off

COLUMN dbb_name FORMAT a75 HEAD 'Database Name' ENTMAP off

COLUMN instt_name FORMAT a75 HEAD 'Instance Name' ENTMAP off

COLUMN instt_num FORMAT 9999999999 HEAD 'Instance Number' ENTMAP off

COLUMN host FORMAT a75 HEAD 'Host' ENTMAP off

COLUMN host_platform FORMAT a125 HEAD 'Host Platform' ENTMAP off

SELECT

DISTINCT (CASE WHEN cd.dbid = wr.dbid

AND

cd.name = wr.db_name

AND

ci.instance_number = wr.instance_number

AND

ci.instance_name = wr.instance_name

THEN '<div align="left"><font color="darkgreen"><b>' || wr.dbid || '</b></font></div>'

ELSE '<div align="left"><font color="#663300"><b>' || wr.dbid || '</b></font></div>'

END) dbbid

, wr.db_name dbb_name

, wr.instance_name instt_name

, wr.instance_number instt_num

, wr.host_name host

, cd.platform_name host_platform

FROM

dba_hist_database_instance wr

, v$database cd

, v$instance ci

ORDER BY

wr.instance_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - AWR SNAPSHOT SETTINGS - |

-- +----------------------------------------------------------------------------+

prompt <a name="awr_snapshot_settings"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>AWR Snapshot Settings</b></font><hr align="left" width="460">

prompt Use the <b>DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS</b> procedure to modify the interval

prompt of the snapshot generation and how long the snapshots are retained in the Workload Repository. The

prompt default interval is 60 minutes and can be set to a value between 10 minutes and 5,256,000 (1 year).

prompt The default retention period is 10,080 minutes (7 days) and can be set to a value between

prompt 1,440 minutes (1 day) and 52,560,000 minutes (100 years).

CLEAR COLUMNS BREAKS COMPUTES

COLUMN dbbid FORMAT a75 HEAD 'Database ID' ENTMAP off

COLUMN dbb_name FORMAT a75 HEAD 'Database Name' ENTMAP off

COLUMN snap_interval FORMAT a75 HEAD 'Snap Interval' ENTMAP off

COLUMN retention FORMAT a75 HEAD 'Retention Period' ENTMAP off

COLUMN topnsql FORMAT a75 HEAD 'Top N SQL' ENTMAP off

SELECT

'<div align="left"><font color="#336699"><b>' || s.dbid || '</b></font></div>' dbbid

, d.name dbb_name

, s.snap_interval snap_interval

, s.retention retention

, s.topnsql

FROM

dba_hist_wr_control s

, v$database d

WHERE

s.dbid = d.dbid

ORDER BY

dbbid;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - AWR SNAPSHOT LIST - |

-- +----------------------------------------------------------------------------+

prompt <a name="awr_snapshot_list"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>AWR Snapshot List</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a75 HEADING 'Instance Name' ENTMAP off

COLUMN snap_id FORMAT a75 HEADING 'Snap ID' ENTMAP off

COLUMN startup_time FORMAT a75 HEADING 'Instance Startup Time' ENTMAP off

COLUMN begin_interval_time FORMAT a75 HEADING 'Begin Interval Time' ENTMAP off

COLUMN end_interval_time FORMAT a75 HEADING 'End Interval Time' ENTMAP off

COLUMN elapsed_time FORMAT 999,999,999.99 HEADING 'Elapsed Time (min)' ENTMAP off

COLUMN db_time FORMAT 999,999,999.99 HEADING 'DB Time (min)' ENTMAP off

COLUMN pct_db_time FORMAT a75 HEADING '% DB Time' ENTMAP off

COLUMN cpu_time FORMAT 999,999,999.99 HEADING 'CPU Time (min)' ENTMAP off

BREAK ON instance_name_print ON startup_time

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center"><font color="#336699"><b>' || s.snap_id || '</b></font></div>' snap_id

, '<div nowrap align="right">' || TO_CHAR(s.startup_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' startup_time

, '<div nowrap align="right">' || TO_CHAR(s.begin_interval_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' begin_interval_time

, '<div nowrap align="right">' || TO_CHAR(s.end_interval_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' end_interval_time

, ROUND(EXTRACT(DAY FROM s.end_interval_time - s.begin_interval_time) * 1440 +

EXTRACT(HOUR FROM s.end_interval_time - s.begin_interval_time) * 60 +

EXTRACT(MINUTE FROM s.end_interval_time - s.begin_interval_time) +

EXTRACT(SECOND FROM s.end_interval_time - s.begin_interval_time) / 60, 2) elapsed_time

, ROUND((e.value - b.value)/1000000/60, 2) db_time

, '<div align="right">' ||

ROUND(((((e.value - b.value)/1000000/60) / (EXTRACT(DAY FROM s.end_interval_time - s.begin_interval_time) * 1440 +

EXTRACT(HOUR FROM s.end_interval_time - s.begin_interval_time) * 60 +

EXTRACT(MINUTE FROM s.end_interval_time - s.begin_interval_time) +

EXTRACT(SECOND FROM s.end_interval_time - s.begin_interval_time) / 60) ) * 100), 2)

|| ' %</div>' pct_db_time

FROM

dba_hist_snapshot s

, gv$instance i

, dba_hist_sys_time_model e

, dba_hist_sys_time_model b

WHERE

i.instance_number = s.instance_number

AND e.snap_id = s.snap_id

AND b.snap_id = s.snap_id - 1

AND e.stat_id = b.stat_id

AND e.instance_number = b.instance_number

AND e.instance_number = s.instance_number

AND e.stat_name = 'DB time'

ORDER BY

i.instance_name

, s.snap_id;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - AWR SNAPSHOT SIZE ESTIMATES - |

-- +----------------------------------------------------------------------------+

prompt <a name="awr_snapshot_size_estimates"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>AWR Snapshot Size Estimates</b></font><hr align="left" width="460">

DECLARE

CURSOR get_instances IS

SELECT COUNT(DISTINCT instance_number)

FROM wrm$_database_instance;

CURSOR get_wr_control_info IS

SELECT snapint_num, retention_num

FROM wrm$_wr_control;

CURSOR get_snaps IS

SELECT

SUM(all_snaps)

, SUM(good_snaps)

, SUM(today_snaps)

, SYSDATE - MIN(begin_interval_time)

FROM

(SELECT

1 AS all_snaps

, (CASE WHEN s.status = 0 THEN 1 ELSE 0 END) AS good_snaps

, (CASE WHEN (s.end_interval_time > SYSDATE - 1) THEN 1 ELSE 0 END) AS today_snaps

, CAST(s.begin_interval_time AS DATE) AS begin_interval_time

FROM wrm$_snapshot s

);

CURSOR sysaux_occ_usage IS

SELECT

occupant_name

, schema_name

, space_usage_kbytes/1024 space_usage_mb

FROM

v$sysaux_occupants

ORDER BY

space_usage_kbytes DESC

, occupant_name;

mb_format CONSTANT VARCHAR2(30) := '99,999,990.0';

kb_format CONSTANT VARCHAR2(30) := '999,999,990';

pct_format CONSTANT VARCHAR2(30) := '990.0';

snapshot_interval NUMBER;

retention_interval NUMBER;

all_snaps NUMBER;

awr_size NUMBER;

snap_size NUMBER;

awr_average_size NUMBER;

est_today_snaps NUMBER;

awr_size_past24 NUMBER;

good_snaps NUMBER;

today_snaps NUMBER;

num_days NUMBER;

num_instances NUMBER;

BEGIN

OPEN get_instances;

FETCH get_instances INTO num_instances;

CLOSE get_instances;

OPEN get_wr_control_info;

FETCH get_wr_control_info INTO snapshot_interval, retention_interval;

CLOSE get_wr_control_info;

OPEN get_snaps;

FETCH get_snaps INTO all_snaps, good_snaps, today_snaps, num_days;

CLOSE get_snaps;

FOR occ_rec IN sysaux_occ_usage

LOOP

IF (occ_rec.occupant_name = 'SM/AWR') THEN

awr_size := occ_rec.space_usage_mb;

END IF;

END LOOP;

snap_size := awr_size/all_snaps;

awr_average_size := snap_size*86400/snapshot_interval;

today_snaps := today_snaps / num_instances;

IF (num_days < 1) THEN

est_today_snaps := ROUND(today_snaps / num_days);

ELSE

est_today_snaps := today_snaps;

END IF;

awr_size_past24 := snap_size * est_today_snaps;

DBMS_OUTPUT.PUT_LINE('<table width="90%" border="1">');

DBMS_OUTPUT.PUT_LINE('<tr><th align="center" colspan="3">Estimates based on ' || ROUND(snapshot_interval/60) || ' minute snapshot intervals</th></tr>');

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/day</td><td align="right">'

|| TO_CHAR(awr_average_size, mb_format)

|| ' MB</td><td align="right">(' || TRIM(TO_CHAR(snap_size*1024, kb_format)) || ' K/snap * '

|| ROUND(86400/snapshot_interval) || ' snaps/day)</td></tr>' );

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/wk</td><td align="right">'

|| TO_CHAR(awr_average_size * 7, mb_format)

|| ' MB</td><td align="right">(size_per_day * 7) per instance</td></tr>' );

IF (num_instances > 1) THEN

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/wk</td><td align="right">'

|| TO_CHAR(awr_average_size * 7 * num_instances, mb_format)

|| ' MB</td><td align="right">(size_per_day * 7) per database</td></tr>' );

END IF;

DBMS_OUTPUT.PUT_LINE('<tr><th align="center" colspan="3">Estimates based on ' || ROUND(today_snaps) || ' snaps in past 24 hours</th></tr>');

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/day</td><td align="right">'

|| TO_CHAR(awr_size_past24, mb_format)

|| ' MB</td><td align="right">('

|| TRIM(TO_CHAR(snap_size*1024, kb_format)) || ' K/snap and '

|| ROUND(today_snaps) || ' snaps in past '

|| ROUND(least(num_days*24,24),1) || ' hours)</td></tr>' );

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/wk</td><td align="right">'

|| TO_CHAR(awr_size_past24 * 7, mb_format)

|| ' MB</td><td align="right">(size_per_day * 7) per instance</td></tr>' );

IF (num_instances > 1) THEN

DBMS_OUTPUT.PUT_LINE('<tr><td>AWR size/wk</td><td align="right">'

|| TO_CHAR(awr_size_past24 * 7 * num_instances, mb_format)

|| ' MB</td><td align="right">(size_per_day * 7) per database</td></tr>' );

END IF;

DBMS_OUTPUT.PUT_LINE('</table>');

END;

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - AWR BASELINES - |

-- +----------------------------------------------------------------------------+

prompt <a name="awr_baselines"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>AWR Baselines</b></font><hr align="left" width="460">

prompt Use the <b>DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE</b> procedure to create a named baseline.

prompt A baseline (also known as a preserved snapshot set) is a pair of AWR snapshots that represents a

prompt specific period of database usage. The Oracle database server will exempt the AWR snapshots

prompt assigned to a specific baseline from the automated purge routine. The main purpose of a baseline

prompt is to preserve typical run-time statistics in the AWR repository which can then be compared to

prompt current performance or similar periods in the past.

CLEAR COLUMNS BREAKS COMPUTES

COLUMN dbbid FORMAT a75 HEAD 'Database ID' ENTMAP off

COLUMN dbb_name FORMAT a75 HEAD 'Database Name' ENTMAP off

COLUMN baseline_id HEAD 'Baseline ID' ENTMAP off

COLUMN baseline_name FORMAT a75 HEAD 'Baseline Name' ENTMAP off

COLUMN start_snap_id HEAD 'Beginning Snapshot ID' ENTMAP off

COLUMN start_snap_time FORMAT a75 HEAD 'Beginning Snapshot Time' ENTMAP off

COLUMN end_snap_id HEAD 'Ending Snapshot ID' ENTMAP off

COLUMN end_snap_time FORMAT a75 HEAD 'Ending Snapshot Time' ENTMAP off

SELECT

'<div align="left"><font color="#336699"><b>' || b.dbid || '</b></font></div>' dbbid

, d.name dbb_name

, b.baseline_id baseline_id

, baseline_name baseline_name

, b.start_snap_id start_snap_id

, '<div nowrap align="right">' || TO_CHAR(b.start_snap_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' start_snap_time

, b.end_snap_id end_snap_id

, '<div nowrap align="right">' || TO_CHAR(b.end_snap_time, 'mm/dd/yyyy HH24:MI:SS') || '</div>' end_snap_time

FROM

dba_hist_baseline b

, v$database d

WHERE

b.dbid = d.dbid

ORDER BY

dbbid

, b.baseline_id;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< SESSIONS >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Sessions</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - CURRENT SESSIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="current_sessions"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Current Sessions</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a45 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a45 HEADING 'Thread Number' ENTMAP off

COLUMN count FORMAT a45 HEADING 'Current No. of Processes' ENTMAP off

COLUMN value FORMAT a45 HEADING 'Max No. of Processes' ENTMAP off

COLUMN pct_usage FORMAT a45 HEADING '% Usage' ENTMAP off

SELECT

'<div align="center"><font color="#336699"><b>' || a.instance_name || '</b></font></div>' instance_name_print

, '<div align="center">' || a.thread# || '</div>' thread_number_print

, '<div align="center">' || TO_CHAR(a.count) || '</div>' count

, '<div align="center">' || b.value || '</div>' value

, '<div align="center">' || TO_CHAR(ROUND(100*(a.count / b.value), 2)) || '%</div>' pct_usage

FROM

(select count(*) count, a1.inst_id, a2.instance_name, a2.thread#

from gv$session a1

, gv$instance a2

where a1.inst_id = a2.inst_id

group by a1.inst_id

, a2.instance_name

, a2.thread#) a

, (select value, inst_id from gv$parameter where name='processes') b

WHERE

a.inst_id = b.inst_id

ORDER BY

a.instance_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - USER SESSION MATRIX - |

-- +----------------------------------------------------------------------------+

prompt <a name="user_session_matrix"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>User Session Matrix</b></font><hr align="left" width="460">

prompt <b>User sessions (excluding SYS and background processes)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a75 HEADING 'Instance Name' ENTMAP off

COLUMN thread_number_print FORMAT a75 HEADING 'Thread Number' ENTMAP off

COLUMN username FORMAT a79 HEADING 'Oracle User' ENTMAP off

COLUMN num_user_sess FORMAT 999,999,999,999 HEADING 'Total Number of Logins' ENTMAP off

COLUMN count_a FORMAT 999,999,999 HEADING 'Active Logins' ENTMAP off

COLUMN count_i FORMAT 999,999,999 HEADING 'Inactive Logins' ENTMAP off

COLUMN count_k FORMAT 999,999,999 HEADING 'Killed Logins' ENTMAP off

BREAK ON report ON instance_name_print ON thread_number_print

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, '<div align="center"><font color="#336699"><b>' || i.thread# || '</b></font></div>' thread_number_print

, '<div align="left"><font color="#000000">' || NVL(sess.username, '[B.G. Process]') || '</font></div>' username

, count(*) num_user_sess

, NVL(act.count, 0) count_a

, NVL(inact.count, 0) count_i

, NVL(killed.count, 0) count_k

FROM

gv$session sess

, gv$instance i

, (SELECT count(*) count, NVL(username, '[B.G. Process]') username, inst_id

FROM gv$session

WHERE status = 'ACTIVE'

GROUP BY username, inst_id) act

, (SELECT count(*) count, NVL(username, '[B.G. Process]') username, inst_id

FROM gv$session

WHERE status = 'INACTIVE'

GROUP BY username, inst_id) inact

, (SELECT count(*) count, NVL(username, '[B.G. Process]') username, inst_id

FROM gv$session

WHERE status = 'KILLED'

GROUP BY username, inst_id) killed

WHERE

sess.inst_id = i.inst_id

AND (

NVL(sess.username, '[B.G. Process]') = act.username (+)

AND

sess.inst_id = act.inst_id (+)

)

AND (

NVL(sess.username, '[B.G. Process]') = inact.username (+)

AND

sess.inst_id = inact.inst_id (+)

)

AND (

NVL(sess.username, '[B.G. Process]') = killed.username (+)

AND

sess.inst_id = killed.inst_id (+)

)

AND sess.username NOT IN ('SYS')

GROUP BY

i.instance_name

, i.thread#

, sess.username

, act.count

, inact.count

, killed.count

ORDER BY

i.instance_name

, i.thread#

, sess.username;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ENABLED TRACES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_enabled_traces"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Enabled Traces</b></font><hr align="left" width="460">

prompt <b><u>End-to-End Application Tracing from View DBA_ENABLED_TRACES.</u></b>

prompt <li> <b>Trace Type:</b> Possible values are CLIENT_ID, SESSION, SERVICE, SERVICE_MODULE, SERVICE_MODULE_ACTION, and DATABASE, based on the type of tracing enabled.

prompt <li> <b>Primary ID:</b> Specific client identifier (username) or service name.

prompt <p>

prompt <b><u>Application tracing is enabled using the DBMS_MONITOR package and the following procedures:</u></b>

prompt <li> <b>CLIENT_ID_TRACE_ENABLE:</b> Enable tracing based on client identifier (username).

prompt <li> <b>CLIENT_ID_TRACE_DISABLE:</b> Disable client identifier tracing.

prompt <li> <b>SESSION_TRACE_ENABLE:</b> Enable tracing based on SID and SERIAL# of V$SESSION.

prompt <li> <b>SESSION_TRACE_DISABLE:</b> Disable session tracing.

prompt <li> <b>SERV_MOD_ACT_TRACE_ENABLE:</b> Enable tracing for a given combination of service name, module, and action.

prompt <li> <b>SERV_MOD_ACT_TRACE_DISABLE:</b> Disable service, module, and action tracing.

prompt <li> <b>DATABASE_TRACE_ENABLE:</b> Enable tracing for the entire database.

prompt <li> <b>DATABASE_TRACE_DISABLE:</b> Disable database tracing.

prompt <p>

prompt <b><font color="#ff0000">Hint</font>:</b> In a shared environment where you have more than one session to trace, it is

prompt possible to end up with many trace files when tracing is enabled (i.e. connection pools).

prompt Oracle10<i>g</i> introduces the <b>trcsess</b> command-line utility to combine all the relevant

prompt trace files based on a session or client identifier or the service name, module name, and

prompt action name hierarchy combination. The output trace file from the trcsess command can then be

prompt sent to tkprof for a formatted output. Type trcsess at the command-line without any arguments to

prompt show the parameters and usage.

CLEAR COLUMNS BREAKS COMPUTES

COLUMN trace_type FORMAT a75 HEADING 'Trace Type' ENTMAP off

COLUMN primary_id FORMAT a75 HEADING 'Primary ID' ENTMAP off

COLUMN qualifier_id1 FORMAT a75 HEADING 'Module Name' ENTMAP off

COLUMN qualifier_id2 FORMAT a75 HEADING 'Action Name' ENTMAP off

COLUMN waits FORMAT a75 HEADING 'Waits?' ENTMAP off

COLUMN binds FORMAT a75 HEADING 'Binds?' ENTMAP off

COLUMN instance_name_print FORMAT a75 HEADING 'Instance Name' ENTMAP off

SELECT

'<div align="left"><font color="#336699"><b>' || trace_type || '</b></font></div>' trace_type

, '<div align="left">' || NVL(primary_id, '<br>') || '</div>' primary_id

, '<div align="left">' || NVL(qualifier_id1, '<br>') || '</div>' qualifier_id1

, '<div align="left">' || NVL(qualifier_id2, '<br>') || '</div>' qualifier_id2

, '<div align="center">' || waits || '</div>' waits

, '<div align="center">' || binds || '</div>' binds

, '<div align="left">' || NVL(instance_name, '<br>') || '</div>' instance_name_print

FROM

dba_enabled_traces

ORDER BY

trace_type

, primary_id

, qualifier_id1

, qualifier_id2;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ENABLED AGGREGATIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_enabled_aggregations"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Enabled Aggregations</b></font><hr align="left" width="460">

prompt <b><u>Statistics Aggregation from View DBA_ENABLED_AGGREGATIONS.</u></b>

prompt <li> <b>Aggregation Type:</b> Possible values are CLIENT_ID, SERVICE_MODULE, and SERVICE_MODULE_ACTION, based on the type of statistics being gathered.

prompt <li> <b>Primary ID:</b> Specific client identifier (username) or service name.

prompt <p>

prompt <b><u>Statistics aggregation is enabled using the DBMS_MONITOR package and the following procedures.</u></b>

prompt Note that statistics gathering is global for the database and is persistent across instance starts

prompt and restarts.

prompt <li> <b>CLIENT_ID_STAT_ENABLE:</b> Enable statistics gathering based on client identifier (username).

prompt <li> <b>CLIENT_ID_STAT_DISABLE:</b> Disable client identifier statistics gathering.

prompt <li> <b>SERV_MOD_ACT_STAT_ENABLE:</b> Enable statistics gathering for a given combination of service name, module, and action.

prompt <li> <b>SERV_MOD_ACT_STAT_DISABLE:</b> Disable service, module, and action statistics gathering.

prompt <p>

prompt <b><font color="#ff0000">Hint</font>:</b> While the DBA_ENABLED_AGGREGATIONS provides global statistics for currently enabled

prompt statistics, several other views can be used to query statistics aggregation values: V$CLIENT_STATS,

prompt V$SERVICE_STATS, V$SERV_MOD_ACT_STATS, and V$SERVICEMETRIC.

CLEAR COLUMNS BREAKS COMPUTES

COLUMN aggregation_type FORMAT a75 HEADING 'Aggregation Type' ENTMAP off

COLUMN primary_id FORMAT a75 HEADING 'Primary ID' ENTMAP off

COLUMN qualifier_id1 FORMAT a75 HEADING 'Module Name' ENTMAP off

COLUMN qualifier_id2 FORMAT a75 HEADING 'Action Name' ENTMAP off

SELECT

'<div align="left"><font color="#336699"><b>' || aggregation_type || '</b></font></div>' aggregation_type

, '<div align="left">' || NVL(primary_id, '<br>') || '</div>' primary_id

, '<div align="left">' || NVL(qualifier_id1, '<br>') || '</div>' qualifier_id1

, '<div align="left">' || NVL(qualifier_id2, '<br>') || '</div>' qualifier_id2

FROM

dba_enabled_aggregations

ORDER BY

aggregation_type

, primary_id

, qualifier_id1

, qualifier_id2;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< SECURITY >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Security</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - USER ACCOUNTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="user_accounts"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>User Accounts</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username FORMAT a75 HEAD 'Username' ENTMAP off

COLUMN account_status FORMAT a75 HEAD 'Account Status' ENTMAP off

COLUMN expiry_date FORMAT a75 HEAD 'Expire Date' ENTMAP off

COLUMN default_tablespace FORMAT a75 HEAD 'Default Tbs.' ENTMAP off

COLUMN temporary_tablespace FORMAT a75 HEAD 'Temp Tbs.' ENTMAP off

COLUMN created FORMAT a75 HEAD 'Created On' ENTMAP off

COLUMN profile FORMAT a75 HEAD 'Profile' ENTMAP off

COLUMN sysdba FORMAT a75 HEAD 'SYSDBA' ENTMAP off

COLUMN sysoper FORMAT a75 HEAD 'SYSOPER' ENTMAP off

SELECT distinct

'<b><font color="#336699">' || a.username || '</font></b>' username

, DECODE( a.account_status

, 'OPEN'

, '<div align="left"><b><font color="darkgreen">' || a.account_status || '</font></b></div>'

, '<div align="left"><b><font color="#663300">' || a.account_status || '</font></b></div>') account_status

, '<div nowrap align="right">' || NVL(TO_CHAR(a.expiry_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' expiry_date

, a.default_tablespace default_tablespace

, a.temporary_tablespace temporary_tablespace

, '<div nowrap align="right">' || TO_CHAR(a.created, 'mm/dd/yyyy HH24:MI:SS') || '</div>' created

, a.profile profile

, '<div nowrap align="center">' || NVL(DECODE(p.sysdba,'TRUE', 'TRUE',''), '<br>') || '</div>' sysdba

, '<div nowrap align="center">' || NVL(DECODE(p.sysoper,'TRUE','TRUE',''), '<br>') || '</div>' sysoper

FROM

dba_users a

, v$pwfile_users p

WHERE

p.username (+) = a.username

ORDER BY

username;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - USERS WITH DBA PRIVILEGES - |

-- +----------------------------------------------------------------------------+

prompt <a name="users_with_dba_privileges"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Users With DBA Privileges</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN grantee FORMAT a70 HEADING 'Grantee' ENTMAP off

COLUMN granted_role FORMAT a35 HEADING 'Granted Role' ENTMAP off

COLUMN admin_option FORMAT a75 HEADING 'Admin. Option?' ENTMAP off

COLUMN default_role FORMAT a75 HEADING 'Default Role?' ENTMAP off

SELECT

'<b><font color="#336699">' || grantee || '</font></b>' grantee

, '<div align="center">' || granted_role || '</div>' granted_role

, DECODE( admin_option

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || admin_option || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || admin_option || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || admin_option || '</b></font></div>') admin_option

, DECODE( default_role

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || default_role || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || default_role || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || default_role || '</b></font></div>') default_role

FROM

dba_role_privs

WHERE

granted_role = 'DBA'

ORDER BY

grantee

, granted_role;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ROLES - |

-- +----------------------------------------------------------------------------+

prompt <a name="roles"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Roles</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN role FORMAT a70 HEAD 'Role Name' ENTMAP off

COLUMN grantee FORMAT a35 HEAD 'Grantee' ENTMAP off

COLUMN admin_option FORMAT a75 HEAD 'Admin Option?' ENTMAP off

COLUMN default_role FORMAT a75 HEAD 'Default Role?' ENTMAP off

BREAK ON role

SELECT

'<b><font color="#336699">' || b.role || '</font></b>' role

, a.grantee grantee

, DECODE( a.admin_option

, null

, '<br>'

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || a.admin_option || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || a.admin_option || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || a.admin_option || '</b></font></div>') admin_option

, DECODE( a.default_role

, null

, '<br>'

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || a.default_role || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || a.default_role || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || a.default_role || '</b></font></div>') default_role

FROM

dba_role_privs a

, dba_roles b

WHERE

granted_role(+) = b.role

ORDER BY

b.role

, a.grantee;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DEFAULT PASSWORDS - |

-- +----------------------------------------------------------------------------+

prompt <a name="default_passwords"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Default Passwords</b></font><hr align="left" width="460">

prompt <b>User(s) with default password</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username HEADING 'Username' ENTMAP off

COLUMN account_status FORMAT a75 HEADING 'Account Status' ENTMAP off

SELECT

'<b><font color="#336699">' || username || '</font></b>' username

, DECODE( account_status

, 'OPEN'

, '<div align="left"><b><font color="darkgreen">' || account_status || '</font></b></div>'

, '<div align="left"><b><font color="#663300">' || account_status || '</font></b></div>') account_status

FROM dba_users

WHERE password IN (

'E066D214D5421CCC' -- dbsnmp

, '24ABAB8B06281B4C' -- ctxsys

, '72979A94BAD2AF80' -- mdsys

, 'C252E8FA117AF049' -- odm

, 'A7A32CD03D3CE8D5' -- odm_mtr

, '88A2B2C183431F00' -- ordplugins

, '7EFA02EC7EA6B86F' -- ordsys

, '4A3BA55E08595C81' -- outln

, 'F894844C34402B67' -- scott

, '3F9FBD883D787341' -- wk_proxy

, '79DF7A1BD138CF11' -- wk_sys

, '7C9BA362F8314299' -- wmsys

, '88D8364765FCE6AF' -- xdb

, 'F9DA8977092B7B81' -- tracesvr

, '9300C0977D7DC75E' -- oas_public

, 'A97282CE3D94E29E' -- websys

, 'AC9700FD3F1410EB' -- lbacsys

, 'E7B5D92911C831E1' -- rman

, 'AC98877DE1297365' -- perfstat

, 'D4C5016086B2DC6A' -- sys

, 'D4DF7931AB130E37') -- system

ORDER BY

username;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DB LINKS - |

-- +----------------------------------------------------------------------------+

prompt <a name="db_links"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>DB Links</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN db_link FORMAT a75 HEADING 'DB Link Name' ENTMAP off

COLUMN username HEADING 'Username' ENTMAP off

COLUMN host HEADING 'Host' ENTMAP off

COLUMN created FORMAT a75 HEADING 'Created' ENTMAP off

BREAK ON owner

SELECT

'<b><font color="#336699">' || owner || '</font></b>' owner

, db_link

, username

, host

, '<div nowrap align="right">' || TO_CHAR(created, 'mm/dd/yyyy HH24:MI:SS') || '</div>' created

FROM dba_db_links

ORDER BY owner, db_link;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< OBJECTS >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Objects</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - OBJECT SUMMARY - |

-- +----------------------------------------------------------------------------+

prompt <a name="object_summary"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Object Summary</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a60 HEADING 'Owner' ENTMAP off

COLUMN object_type FORMAT a25 HEADING 'Object Type' ENTMAP off

COLUMN obj_count FORMAT 999,999,999,999 HEADING 'Object Count' ENTMAP off

BREAK ON report ON owner SKIP 2

-- compute sum label "" of obj_count on owner

-- compute sum label '<font color="#990000"><b>Grand Total: </b></font>' of obj_count on report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF obj_count ON report

SELECT

'<b><font color="#336699">' || owner || '</font></b>' owner

, object_type object_type

, count(*) obj_count

FROM

dba_objects

GROUP BY

owner

, object_type

ORDER BY

owner

, object_type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - SEGMENT SUMMARY - |

-- +----------------------------------------------------------------------------+

prompt <a name="segment_summary"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Segment Summary</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a50 HEADING 'Owner' ENTMAP off

COLUMN segment_type FORMAT a25 HEADING 'Segment Type' ENTMAP off

COLUMN seg_count FORMAT 999,999,999,999 HEADING 'Segment Count' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Size (in Bytes)' ENTMAP off

BREAK ON report ON owner SKIP 2

-- COMPUTE sum LABEL "" OF seg_count bytes ON owner

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF seg_count bytes ON report

SELECT

'<b><font color="#336699">' || owner || '</font></b>' owner

, segment_type segment_type

, count(*) seg_count

, sum(bytes) bytes

FROM

dba_segments

GROUP BY

owner

, segment_type

ORDER BY

owner

, segment_type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TOP 100 SEGMENTS (BY SIZE) - |

-- +----------------------------------------------------------------------------+

prompt <a name="top_100_segments_by_size"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Top 100 Segments (by size)</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner HEADING 'Owner' ENTMAP off

COLUMN segment_name HEADING 'Segment Name' ENTMAP off

COLUMN partition_name HEADING 'Partition Name' ENTMAP off

COLUMN segment_type HEADING 'Segment Type' ENTMAP off

COLUMN tablespace_name HEADING 'Tablespace Name' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999,999 HEADING 'Size (in bytes)' ENTMAP off

COLUMN extents FORMAT 999,999,999,999,999,999 HEADING 'Extents' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF bytes extents ON report

SELECT

a.owner

, a.segment_name

, a.partition_name

, a.segment_type

, a.tablespace_name

, a.bytes

, a.extents

FROM

(select

b.owner

, b.segment_name

, b.partition_name

, b.segment_type

, b.tablespace_name

, b.bytes

, b.extents

from

dba_segments b

order by

b.bytes desc

) a

WHERE

rownum < 100;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TOP 100 SEGMENTS (BY EXTENTS) - |

-- +----------------------------------------------------------------------------+

prompt <a name="top_100_segments_by_extents"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Top 100 Segments (by number of extents)</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner HEADING 'Owner' ENTMAP off

COLUMN segment_name HEADING 'Segment Name' ENTMAP off

COLUMN partition_name HEADING 'Partition Name' ENTMAP off

COLUMN segment_type HEADING 'Segment Type' ENTMAP off

COLUMN tablespace_name HEADING 'Tablespace Name' ENTMAP off

COLUMN extents FORMAT 999,999,999,999,999,999 HEADING 'Extents' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999,999 HEADING 'Size (in bytes)' ENTMAP off

BREAK ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total: </b></font>' OF extents bytes ON report

SELECT

a.owner

, a.segment_name

, a.partition_name

, a.segment_type

, a.tablespace_name

, a.extents

, a.bytes

FROM

(select

b.owner

, b.segment_name

, b.partition_name

, b.segment_type

, b.tablespace_name

, b.bytes

, b.extents

from

dba_segments b

order by

b.extents desc

) a

WHERE

rownum < 100;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DIRECTORIES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_directories"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Directories</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN directory_name FORMAT a75 HEADING 'Directory Name' ENTMAP off

COLUMN directory_path HEADING 'Directory Path' ENTMAP off

BREAK ON report ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, '<b><font color="#663300">' || directory_name || '</font></b>' directory_name

, '<tt>' || directory_path || '</tt>' directory_path

FROM

dba_directories

ORDER BY

owner

, directory_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DIRECTORY PRIVILEGES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_directory_privileges"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Directory Privileges</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN table_name FORMAT a75 HEADING 'Directory Name' ENTMAP off

COLUMN grantee FORMAT a75 HEADING 'Grantee' ENTMAP off

COLUMN privilege FORMAT a75 HEADING 'Privilege' ENTMAP off

COLUMN grantable FORMAT a75 HEADING 'Grantable?' ENTMAP off

BREAK ON report ON table_name ON grantee

SELECT

'<b><font color="#336699">' || table_name || '</font></b>' table_name

, '<b><font color="#663300">' || grantee || '</font></b>' grantee

, privilege privilege

, DECODE( grantable

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || grantable || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || grantable || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || grantable || '</b></font></div>') grantable

FROM

dba_tab_privs

WHERE

privilege IN ('READ', 'WRITE')

ORDER BY

table_name

, grantee

, privilege;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - LIBRARIES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_libraries"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Libraries</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN library_name FORMAT a75 HEADING 'Library Name' ENTMAP off

COLUMN file_spec HEADING 'File Spec' ENTMAP off

COLUMN dynamic FORMAT a75 HEADING 'Dynamic?' ENTMAP off

COLUMN status FORMAT a75 HEADING 'Status' ENTMAP off

BREAK ON report ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, '<b><font color="#663300">' || library_name || '</font></b>' library_name

, file_spec file_spec

, '<div align="center">' || dynamic || '</div>' dynamic

, DECODE( status

, 'VALID'

, '<div align="center"><font color="darkgreen"><b>' || status || '</b></font></div>'

, '<div align="center"><font color="#990000"><b>' || status || '</b></font></div>' ) status

FROM

dba_libraries

ORDER BY

owner

, library_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TYPES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_types"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Types</b></font><hr align="left" width="460">

prompt <b>Excluding all internal system schemas (i.e. CTXSYS, MDSYS, SYS, SYSTEM)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN type_name FORMAT a75 HEADING 'Type Name' ENTMAP off

COLUMN typecode FORMAT a75 HEADING 'Type Code' ENTMAP off

COLUMN attributes FORMAT a75 HEADING 'Num. Attributes' ENTMAP off

COLUMN methods FORMAT a75 HEADING 'Num. Methods' ENTMAP off

COLUMN predefined FORMAT a75 HEADING 'Predefined?' ENTMAP off

COLUMN incomplete FORMAT a75 HEADING 'Incomplete?' ENTMAP off

COLUMN final FORMAT a75 HEADING 'Final?' ENTMAP off

COLUMN instantiable FORMAT a75 HEADING 'Instantiable?' ENTMAP off

COLUMN supertype_owner FORMAT a75 HEADING 'Super Owner' ENTMAP off

COLUMN supertype_name FORMAT a75 HEADING 'Super Name' ENTMAP off

COLUMN local_attributes FORMAT a75 HEADING 'Local Attributes' ENTMAP off

COLUMN local_methods FORMAT a75 HEADING 'Local Methods' ENTMAP off

BREAK ON report ON owner

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || t.owner || '</b></font></div>' owner

, '<div nowrap>' || t.type_name || '</div>' type_name

, '<div nowrap>' || t.typecode || '</div>' typecode

, '<div nowrap align="right">' || TO_CHAR(t.attributes, '999,999') || '</div>' attributes

, '<div nowrap align="right">' || TO_CHAR(t.methods, '999,999') || '</div>' methods

, '<div nowrap align="center">' || t.predefined || '</div>' predefined

, '<div nowrap align="center">' || t.incomplete || '</div>' incomplete

, '<div nowrap align="center">' || t.final || '</div>' final

, '<div nowrap align="center">' || t.instantiable || '</div>' instantiable

, '<div nowrap align="left">' || NVL(t.supertype_owner, '<br>') || '</div>' supertype_owner

, '<div nowrap align="left">' || NVL(t.supertype_name, '<br>') || '</div>' supertype_name

, '<div nowrap align="right">' || NVL(TO_CHAR(t.local_attributes, '999,999'), '<br>') || '</div>' local_attributes

, '<div nowrap align="right">' || NVL(TO_CHAR(t.local_methods, '999,999'), '<br>') || '</div>' local_methods

FROM

dba_types t

WHERE

t.owner NOT IN ( 'CTXSYS'

, 'DBSNMP'

, 'DMSYS'

, 'EXFSYS'

, 'IX'

, 'LBACSYS'

, 'MDSYS'

, 'OLAPSYS'

, 'ORDSYS'

, 'OUTLN'

, 'SYS'

, 'SYSMAN'

, 'SYSTEM'

, 'WKSYS'

, 'WMSYS'

, 'XDB')

ORDER BY

t.owner

, t.type_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TYPE ATTRIBUTES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_type_attributes"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Type Attributes</b></font><hr align="left" width="460">

prompt <b>Excluding all internal system schemas (i.e. CTXSYS, MDSYS, SYS, SYSTEM)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN type_name FORMAT a75 HEADING 'Type Name' ENTMAP off

COLUMN typecode FORMAT a75 HEADING 'Type Code' ENTMAP off

COLUMN attribute_name FORMAT a75 HEADING 'Attribute Name' ENTMAP off

COLUMN attribute_datatype FORMAT a75 HEADING 'Attribute Data Type' ENTMAP off

COLUMN inherited FORMAT a75 HEADING 'Inherited?' ENTMAP off

BREAK ON report ON owner ON type_name ON typecode

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || t.owner || '</b></font></div>' owner

, '<div nowrap>' || t.type_name || '</div>' type_name

, '<div nowrap>' || t.typecode || '</div>' typecode

, '<div nowrap>' || a.attr_name || '</div>' attribute_name

, (CASE

WHEN (a.length IS NOT NULL)

THEN a.attr_type_name || '(' || a.length || ')'

WHEN (a.attr_type_name='NUMBER' AND (a.precision IS NOT NULL AND a.scale IS NOT NULL))

THEN a.attr_type_name || '(' || a.precision || ',' || a.scale || ')'

WHEN (a.attr_type_name='NUMBER' AND (a.precision IS NOT NULL AND a.scale IS NULL))

THEN a.attr_type_name || '(' || a.precision || ')'

ELSE

a.attr_type_name

END) attribute_datatype

, DECODE( a.inherited

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || a.inherited || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || a.inherited || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || a.inherited || '</b></font></div>') inherited

FROM

dba_types t

, dba_type_attrs a

WHERE

t.owner = a.owner

AND t.type_name = a.type_name

AND t.owner NOT IN ( 'CTXSYS'

, 'DBSNMP'

, 'DMSYS'

, 'EXFSYS'

, 'IX'

, 'LBACSYS'

, 'MDSYS'

, 'OLAPSYS'

, 'ORDSYS'

, 'OUTLN'

, 'SYS'

, 'SYSMAN'

, 'SYSTEM'

, 'WKSYS'

, 'WMSYS'

, 'XDB')

ORDER BY

t.owner

, t.type_name

, t.typecode

, a.attr_no;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TYPE METHODS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_type_methods"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Type Methods</b></font><hr align="left" width="460">

prompt <b>Excluding all internal system schemas (i.e. CTXSYS, MDSYS, SYS, SYSTEM)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN type_name FORMAT a75 HEADING 'Type Name' ENTMAP off

COLUMN typecode FORMAT a75 HEADING 'Type Code' ENTMAP off

COLUMN method_name FORMAT a75 HEADING 'Method Name' ENTMAP off

COLUMN method_type FORMAT a75 HEADING 'Method Type' ENTMAP off

COLUMN num_parameters FORMAT a75 HEADING 'Num. Parameters' ENTMAP off

COLUMN results FORMAT a75 HEADING 'Results' ENTMAP off

COLUMN final FORMAT a75 HEADING 'Final?' ENTMAP off

COLUMN instantiable FORMAT a75 HEADING 'Instantiable?' ENTMAP off

COLUMN overriding FORMAT a75 HEADING 'Overriding?' ENTMAP off

COLUMN inherited FORMAT a75 HEADING 'Inherited?' ENTMAP off

BREAK ON report ON owner ON type_name ON typecode

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || t.owner || '</b></font></div>' owner

, '<div nowrap>' || t.type_name || '</div>' type_name

, '<div nowrap>' || t.typecode || '</div>' typecode

, '<div nowrap>' || m.method_name || '</div>' method_name

, '<div nowrap>' || m.method_type || '</div>' method_type

, '<div nowrap align="right">' || TO_CHAR(m.parameters, '999,999') || '</div>' num_parameters

, '<div nowrap align="right">' || TO_CHAR(m.results, '999,999') || '</div>' results

, '<div nowrap align="center">' || m.final || '</div>' final

, '<div nowrap align="center">' || m.instantiable || '</div>' instantiable

, '<div nowrap align="center">' || m.overriding || '</div>' overriding

, DECODE( m.inherited

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || m.inherited || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || m.inherited || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || m.inherited || '</b></font></div>') inherited

FROM

dba_types t

, dba_type_methods m

WHERE

t.owner = m.owner

AND t.type_name = m.type_name

AND t.owner NOT IN ( 'CTXSYS'

, 'DBSNMP'

, 'DMSYS'

, 'EXFSYS'

, 'IX'

, 'LBACSYS'

, 'MDSYS'

, 'OLAPSYS'

, 'ORDSYS'

, 'OUTLN'

, 'SYS'

, 'SYSMAN'

, 'SYSTEM'

, 'WKSYS'

, 'WMSYS'

, 'XDB')

ORDER BY

t.owner

, t.type_name

, t.typecode

, m.method_no;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - COLLECTIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_collections"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Collections</b></font><hr align="left" width="460">

prompt <b>Excluding all internal system schemas (i.e. CTXSYS, MDSYS, SYS, SYSTEM)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN type_name FORMAT a75 HEADING 'Type Name' ENTMAP off

COLUMN coll_type FORMAT a75 HEADING 'Collection Type' ENTMAP off

COLUMN upper_bound FORMAT a75 HEADING 'VARRAY Limit' ENTMAP off

COLUMN elem_type_owner FORMAT a75 HEADING 'Element Type Owner' ENTMAP off

COLUMN elem_datatype FORMAT a75 HEADING 'Element Data Type' ENTMAP off

COLUMN character_set_name FORMAT a75 HEADING 'Character Set' ENTMAP off

COLUMN elem_storage FORMAT a75 HEADING 'Element Storage' ENTMAP off

COLUMN nulls_stored FORMAT a75 HEADING 'Nulls Stored?' ENTMAP off

BREAK ON report ON owner ON type_name

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || c.owner || '</b></font></div>' owner

, '<div nowrap>' || c.type_name || '</div>' type_name

, '<div nowrap>' || c.coll_type || '</div>' coll_type

, '<div nowrap align="right">' || NVL(TO_CHAR(c.upper_bound, '9,999,999,999'), '<br>') || '</div>' upper_bound

, '<div nowrap>' || NVL(c.elem_type_owner, '<br>') || '</div>' elem_type_owner

, (CASE

WHEN (c.length IS NOT NULL)

THEN c.elem_type_name || '(' || c.length || ')'

WHEN (c.elem_type_name='NUMBER' AND (c.precision IS NOT NULL AND c.scale IS NOT NULL))

THEN c.elem_type_name || '(' || c.precision || ',' || c.scale || ')'

WHEN (c.elem_type_name='NUMBER' AND (c.precision IS NOT NULL AND c.scale IS NULL))

THEN c.elem_type_name || '(' || c.precision || ')'

ELSE

c.elem_type_name

END) elem_datatype

, '<div nowrap>' || NVL(c.character_set_name, '<br>') || '</div>' character_set_name

, '<div nowrap>' || NVL(c.elem_storage, '<br>') || '</div>' elem_storage

, DECODE( c.nulls_stored

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || c.nulls_stored || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || c.nulls_stored || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || c.nulls_stored || '</b></font></div>') nulls_stored

FROM

dba_coll_types c

WHERE

c.owner NOT IN ( 'CTXSYS'

, 'DBSNMP'

, 'DMSYS'

, 'EXFSYS'

, 'IX'

, 'LBACSYS'

, 'MDSYS'

, 'OLAPSYS'

, 'ORDSYS'

, 'OUTLN'

, 'SYS'

, 'SYSMAN'

, 'SYSTEM'

, 'WKSYS'

, 'WMSYS'

, 'XDB')

ORDER BY

c.owner

, c.type_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - LOB SEGMENTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_lob_segments"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>LOB Segments</b></font><hr align="left" width="460">

prompt <b>Excluding all internal system schemas (i.e. CTXSYS, MDSYS, SYS, SYSTEM)</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a85 HEADING 'Owner' ENTMAP off

COLUMN table_name FORMAT a75 HEADING 'Table Name' ENTMAP off

COLUMN column_name FORMAT a75 HEADING 'Column Name' ENTMAP off

COLUMN segment_name FORMAT a125 HEADING 'LOB Segment Name' ENTMAP off

COLUMN tablespace_name FORMAT a75 HEADING 'Tablespace Name' ENTMAP off

COLUMN lob_segment_bytes FORMAT a75 HEADING 'Segment Size' ENTMAP off

COLUMN index_name FORMAT a125 HEADING 'LOB Index Name' ENTMAP off

COLUMN in_row FORMAT a75 HEADING 'In Row?' ENTMAP off

BREAK ON report ON owner ON table_name

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || l.owner || '</b></font></div>' owner

, '<div nowrap>' || l.table_name || '</div>' table_name

, '<div nowrap>' || l.column_name || '</div>' column_name

, '<div nowrap>' || l.segment_name || '</div>' segment_name

, '<div nowrap>' || s.tablespace_name || '</div>' tablespace_name

, '<div nowrap align="right">' || TO_CHAR(s.bytes, '999,999,999,999,999') || '</div>' lob_segment_bytes

, '<div nowrap>' || l.index_name || '</div>' index_name

, DECODE( l.in_row

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || l.in_row || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || l.in_row || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || l.in_row || '</b></font></div>') in_row

FROM

dba_lobs l

, dba_segments s

WHERE

l.owner = s.owner

AND l.segment_name = s.segment_name

AND l.owner NOT IN ( 'CTXSYS'

, 'DBSNMP'

, 'DMSYS'

, 'EXFSYS'

, 'IX'

, 'LBACSYS'

, 'MDSYS'

, 'OLAPSYS'

, 'ORDSYS'

, 'OUTLN'

, 'SYS'

, 'SYSMAN'

, 'SYSTEM'

, 'WKSYS'

, 'WMSYS'

, 'XDB')

ORDER BY

l.owner

, l.table_name

, l.column_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OBJECTS UNABLE TO EXTEND - |

-- +----------------------------------------------------------------------------+

prompt <a name="objects_unable_to_extend"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Objects Unable to Extend</b></font><hr align="left" width="460">

prompt <b>Segments that cannot extend because of MAXEXTENTS or not enough space</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN tablespace_name HEADING 'Tablespace Name' ENTMAP off

COLUMN segment_name HEADING 'Segment Name' ENTMAP off

COLUMN segment_type HEADING 'Segment Type' ENTMAP off

COLUMN next_extent FORMAT 999,999,999,999,999 HEADING 'Next Extent' ENTMAP off

COLUMN max FORMAT 999,999,999,999,999 HEADING 'Max. Piece Size' ENTMAP off

COLUMN sum FORMAT 999,999,999,999,999 HEADING 'Sum of Bytes' ENTMAP off

COLUMN extents FORMAT 999,999,999,999,999 HEADING 'Num. of Extents' ENTMAP off

COLUMN max_extents FORMAT 999,999,999,999,999 HEADING 'Max Extents' ENTMAP off

BREAK ON report ON owner

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || ds.owner || '</b></font></div>' owner

, ds.tablespace_name tablespace_name

, ds.segment_name segment_name

, ds.segment_type segment_type

, ds.next_extent next_extent

, NVL(dfs.max, 0) max

, NVL(dfs.sum, 0) sum

, ds.extents extents

, ds.max_extents max_extents

FROM

dba_segments ds

, (select

max(bytes) max

, sum(bytes) sum

, tablespace_name

from

dba_free_space

group by

tablespace_name

) dfs

WHERE

(ds.next_extent > nvl(dfs.max, 0)

OR

ds.extents >= ds.max_extents)

AND ds.tablespace_name = dfs.tablespace_name (+)

AND ds.owner NOT IN ('SYS','SYSTEM')

ORDER BY

ds.owner

, ds.tablespace_name

, ds.segment_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OBJECTS WHICH ARE NEARING MAXEXTENTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="objects_which_are_nearing_maxextents"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Objects Which Are Nearing MAXEXTENTS</b></font><hr align="left" width="460">

prompt <b>Segments where number of EXTENTS is less than 1/2 of MAXEXTENTS</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN tablespace_name FORMAT a30 HEADING 'Tablespace name' ENTMAP off

COLUMN segment_name FORMAT a30 HEADING 'Segment Name' ENTMAP off

COLUMN segment_type FORMAT a20 HEADING 'Segment Type' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Size (in bytes)' ENTMAP off

COLUMN next_extent FORMAT 999,999,999,999,999 HEADING 'Next Extent Size' ENTMAP off

COLUMN pct_increase HEADING '% Increase' ENTMAP off

COLUMN extents FORMAT 999,999,999,999,999 HEADING 'Num. of Extents' ENTMAP off

COLUMN max_extents FORMAT 999,999,999,999,999 HEADING 'Max Extents' ENTMAP off

COLUMN pct_util FORMAT a35 HEADING '% Utilized' ENTMAP off

SELECT

owner

, tablespace_name

, segment_name

, segment_type

, bytes

, next_extent

, pct_increase

, extents

, max_extents

, '<div align="right">' || ROUND((extents/max_extents)*100, 2) || '%</div>' pct_util

FROM

dba_segments

WHERE

extents > max_extents/2

AND max_extents != 0

ORDER BY

(extents/max_extents) DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - INVALID OBJECTS - |

-- +----------------------------------------------------------------------------+

prompt <a name="invalid_objects"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Invalid Objects</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a85 HEADING 'Owner' ENTMAP off

COLUMN object_name FORMAT a30 HEADING 'Object Name' ENTMAP off

COLUMN object_type FORMAT a20 HEADING 'Object Type' ENTMAP off

COLUMN status FORMAT a75 HEADING 'Status' ENTMAP off

BREAK ON report ON owner

COMPUTE count LABEL '<font color="#990000"><b>Grand Total: </b></font>' OF object_name ON report

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, object_name

, object_type

, DECODE( status

, 'VALID'

, '<div align="center"><font color="darkgreen"><b>' || status || '</b></font></div>'

, '<div align="center"><font color="#990000"><b>' || status || '</b></font></div>' ) status

FROM dba_objects

WHERE status <> 'VALID'

ORDER BY

owner

, object_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - PROCEDURAL OBJECT ERRORS - |

-- +----------------------------------------------------------------------------+

prompt <a name="procedural_object_errors"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Procedural Object Errors</b></font><hr align="left" width="460">

prompt <b>All records from DBA_ERRORS</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a85 HEAD 'Schema' ENTMAP off

COLUMN name FORMAT a30 HEAD 'Object Name' ENTMAP off

COLUMN type FORMAT a15 HEAD 'Object Type' ENTMAP off

COLUMN sequence FORMAT 999,999 HEAD 'Sequence' ENTMAP off

COLUMN line FORMAT 999,999 HEAD 'Line' ENTMAP off

COLUMN position FORMAT 999,999 HEAD 'Position' ENTMAP off

COLUMN text HEAD 'Text' ENTMAP off

BREAK ON report ON owner

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, name

, type

, sequence

, line

, position

, text

FROM

dba_errors

ORDER BY

1

, 2

, 3;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OBJECTS WITHOUT STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="objects_without_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Objects Without Statistics</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a95 HEAD 'Owner' ENTMAP off

COLUMN object_type FORMAT a20 HEAD 'Object Type' ENTMAP off

COLUMN count FORMAT 999,999,999,999 HEAD 'Count' ENTMAP off

BREAK ON report ON owner

COMPUTE count LABEL '<font color="#990000"><b>Total: </b></font>' OF object_name ON report

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, 'Table' object_type

, count(*) count

FROM

sys.dba_tables

WHERE

last_analyzed IS NULL

AND owner NOT IN ('SYS','SYSTEM')

AND partitioned = 'NO'

GROUP BY

owner

, 'Table'

UNION

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, 'Index' object_type

, count(*) count

FROM

sys.dba_indexes

WHERE

last_analyzed IS NULL

AND owner NOT IN ('SYS','SYSTEM')

AND partitioned = 'NO'

GROUP BY

owner

, 'Index'

UNION

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || table_owner || '</b></font></div>' owner

, 'Table Partition' object_type

, count(*) count

FROM

sys.dba_tab_partitions

WHERE

last_analyzed IS NULL

AND table_owner NOT IN ('SYS','SYSTEM')

GROUP BY

table_owner

, 'Table Partition'

UNION

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || index_owner || '</b></font></div>' owner

, 'Index Partition' object_type

, count(*) count

FROM

sys.dba_ind_partitions

WHERE

last_analyzed IS NULL

AND index_owner NOT IN ('SYS','SYSTEM')

GROUP BY

index_owner

, 'Index Partition'

ORDER BY

1

, 2

, 3;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - TABLES SUFFERING FROM ROW CHAINING/MIGRATION - |

-- +----------------------------------------------------------------------------+

prompt <a name="tables_suffering_from_row_chaining_migration"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Tables Suffering From Row Chaining/Migration</b></font><hr align="left" width="460">

prompt <b><font color="#990000">NOTE</font>: Tables must have statistics gathered</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner HEADING 'Owner' ENTMAP off

COLUMN table_name HEADING 'Table Name' ENTMAP off

COLUMN partition_name HEADING 'Partition Name' ENTMAP off

COLUMN num_rows FORMAT 999,999,999,999,999 HEADING 'Total Rows' ENTMAP off

COLUMN pct_chained_rows FORMAT a65 HEADING '% Chained Rows' ENTMAP off

COLUMN avg_row_length FORMAT 999,999,999,999,999 HEADING 'Avg Row Length' ENTMAP off

SELECT

owner owner

, table_name table_name

, '' partition_name

, num_rows num_rows

, '<div align="right">' || ROUND((chain_cnt/num_rows)*100, 2) || '%</div>' pct_chained_rows

, avg_row_len avg_row_length

FROM

(select

owner

, table_name

, chain_cnt

, num_rows

, avg_row_len

from

sys.dba_tables

where

chain_cnt is not null

and num_rows is not null

and chain_cnt > 0

and num_rows > 0

and owner != 'SYS')

UNION ALL

SELECT

table_owner owner

, table_name table_name

, partition_name partition_name

, num_rows num_rows

, '<div align="right">' || ROUND((chain_cnt/num_rows)*100, 2) || '%</div>' pct_chained_rows

, avg_row_len avg_row_length

FROM

(select

table_owner

, table_name

, partition_name

, chain_cnt

, num_rows

, avg_row_len

from

sys.dba_tab_partitions

where

chain_cnt is not null

and num_rows is not null

and chain_cnt > 0

and num_rows > 0

and table_owner != 'SYS') b

WHERE

(chain_cnt/num_rows)*100 > 10;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - USERS WITH DEFAULT TABLESPACE - (SYSTEM) - |

-- +----------------------------------------------------------------------------+

prompt <a name="users_with_default_tablespace_defined_as_system"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Users With Default Tablespace - (SYSTEM)</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username FORMAT a75 HEADING 'Username' ENTMAP off

COLUMN default_tablespace FORMAT a125 HEADING 'Default Tablespace' ENTMAP off

COLUMN temporary_tablespace FORMAT a125 HEADING 'Temporary Tablespace' ENTMAP off

COLUMN created FORMAT a75 HEADING 'Created' ENTMAP off

COLUMN account_status FORMAT a75 HEADING 'Account Status' ENTMAP off

SELECT

'<font color="#336699"><b>' || username || '</font></b>' username

, '<div align="left">' || default_tablespace || '</div>' default_tablespace

, '<div align="left">' || temporary_tablespace || '</div>' temporary_tablespace

, '<div align="right">' || TO_CHAR(created, 'mm/dd/yyyy HH24:MI:SS') || '</div>' created

, DECODE( account_status

, 'OPEN'

, '<div align="center"><b><font color="darkgreen">' || account_status || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || account_status || '</font></b></div>') account_status

FROM

dba_users

WHERE

default_tablespace = 'SYSTEM'

ORDER BY

username;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - USERS WITH DEFAULT TEMPORARY TABLESPACE - (SYSTEM) - |

-- +----------------------------------------------------------------------------+

prompt <a name="users_with_default_temporary_tablespace_as_system"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Users With Default Temporary Tablespace - (SYSTEM)</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN username FORMAT a75 HEADING 'Username' ENTMAP off

COLUMN default_tablespace FORMAT a125 HEADING 'Default Tablespace' ENTMAP off

COLUMN temporary_tablespace FORMAT a125 HEADING 'Temporary Tablespace' ENTMAP off

COLUMN created FORMAT a75 HEADING 'Created' ENTMAP off

COLUMN account_status FORMAT a75 HEADING 'Account Status' ENTMAP off

SELECT

'<font color="#336699"><b>' || username || '</font></b>' username

, '<div align="center">' || default_tablespace || '</div>' default_tablespace

, '<div align="center">' || temporary_tablespace || '</div>' temporary_tablespace

, '<div align="right">' || TO_CHAR(created, 'mm/dd/yyyy HH24:MI:SS') || '</div>' created

, DECODE( account_status

, 'OPEN'

, '<div align="center"><b><font color="darkgreen">' || account_status || '</font></b></div>'

, '<div align="center"><b><font color="#663300">' || account_status || '</font></b></div>') account_status

FROM

dba_users

WHERE

temporary_tablespace = 'SYSTEM'

ORDER BY

username;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - OBJECTS IN THE SYSTEM TABLESPACE - |

-- +----------------------------------------------------------------------------+

prompt <a name="objects_in_the_system_tablespace"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Objects in the SYSTEM Tablespace</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN segment_name FORMAT a125 HEADING 'Segment Name' ENTMAP off

COLUMN segment_type FORMAT a75 HEADING 'Type' ENTMAP off

COLUMN tablespace_name FORMAT a125 HEADING 'Tablespace' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Bytes|Alloc' ENTMAP off

COLUMN extents FORMAT 999,999,999,999,999 HEADING 'Extents' ENTMAP off

COLUMN max_extents FORMAT 999,999,999,999,999 HEADING 'Max|Ext' ENTMAP off

COLUMN initial_extent FORMAT 999,999,999,999,999 HEADING 'Initial|Ext' ENTMAP off

COLUMN next_extent FORMAT 999,999,999,999,999 HEADING 'Next|Ext' ENTMAP off

COLUMN pct_increase FORMAT 999,999,999,999,999 HEADING 'Pct|Inc' ENTMAP off

BREAK ON report ON owner

COMPUTE count LABEL '<font color="#990000"><b>Total Count: </b></font>' OF segment_name ON report

COMPUTE sum LABEL '<font color="#990000"><b>Total Bytes: </b></font>' OF bytes ON report

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, segment_name

, segment_type

, tablespace_name

, bytes

, extents

, initial_extent

, next_extent

, pct_increase

FROM

dba_segments

WHERE

owner NOT IN ('SYS','SYSTEM')

AND tablespace_name = 'SYSTEM'

ORDER BY

owner

, segment_name

, extents DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - RECYCLE BIN - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_recycle_bin"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Recycle Bin</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a85 HEADING 'Owner' ENTMAP off

COLUMN original_name HEADING 'Original|Name' ENTMAP off

COLUMN type HEADING 'Object|Type' ENTMAP off

COLUMN object_name HEADING 'Object|Name' ENTMAP off

COLUMN ts_name HEADING 'Tablespace' ENTMAP off

COLUMN operation HEADING 'Operation' ENTMAP off

COLUMN createtime HEADING 'Create|Time' ENTMAP off

COLUMN droptime HEADING 'Drop|Time' ENTMAP off

COLUMN can_undrop HEADING 'Can|Undrop?' ENTMAP off

COLUMN can_purge HEADING 'Can|Purge?' ENTMAP off

COLUMN bytes FORMAT 999,999,999,999,999 HEADING 'Bytes' ENTMAP off

BREAK ON report ON owner

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, original_name

, type

, object_name

, ts_name

, operation

, '<div nowrap align="right">' || NVL(createtime, '<br>') || '</div>' createtime

, '<div nowrap align="right">' || NVL(droptime, '<br>') || '</div>' droptime

, DECODE( can_undrop

, null

, '<BR>'

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || can_undrop || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || can_undrop || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || can_undrop || '</b></font></div>') can_undrop

, DECODE( can_purge

, null

, '<BR>'

, 'YES'

, '<div align="center"><font color="darkgreen"><b>' || can_purge || '</b></font></div>'

, 'NO'

, '<div align="center"><font color="#990000"><b>' || can_purge || '</b></font></div>'

, '<div align="center"><font color="#663300"><b>' || can_purge || '</b></font></div>') can_purge

, (space * p.blocksize) bytes

FROM

dba_recyclebin r

, (SELECT value blocksize FROM v$parameter WHERE name='db_block_size') p

ORDER BY

owner

, object_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< ONLINE ANALYTICAL PROCESSING - (OLAP) >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Online Analytical Processing - (OLAP)</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - DIMENSIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_dimensions"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Dimensions</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN dimension_name FORMAT a75 HEADING 'Dimension Name' ENTMAP off

COLUMN invalid FORMAT a75 HEADING 'Invalid?' ENTMAP off

COLUMN compile_state FORMAT a75 HEADING 'Compile State' ENTMAP off

COLUMN revision HEADING 'Revision' ENTMAP off

BREAK ON report ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || dd.owner || '</b></font></div>' owner

, dd.dimension_name dimension_name

, '<div align="center">' || dd.invalid || '</div>' invalid

, DECODE( dd.compile_state

, 'VALID'

, '<div align="center"><font color="darkgreen"><b>' || dd.compile_state || '</b></font></div>'

, '<div align="center"><font color="#990000"><b>' || dd.compile_state || '</b></font></div>' ) compile_state

, '<div align="center">' || dd.revision || '</div>' revision

FROM

dba_dimensions dd

ORDER BY

dd.owner

, dd.dimension_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DIMENSION LEVELS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_dimension_levels"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Dimension Levels</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN dimension_name FORMAT a75 HEADING 'Dimension Name' ENTMAP off

COLUMN level_name FORMAT a75 HEADING 'Level Name' ENTMAP off

COLUMN level_table_name FORMAT a75 HEADING 'Source Table' ENTMAP off

COLUMN column_name FORMAT a75 HEADING 'Column Name(s)' ENTMAP off

COLUMN key_position FORMAT a75 HEADING 'Column Position' ENTMAP off

BREAK ON owner ON dimension_name ON level_name ON level_table_name

SELECT

'<div align="left"><font color="#336699"><b>' || d.owner || '</b></font></div>' owner

, d.dimension_name dimension_name

, l.level_name level_name

, l.detailobj_owner || '.' || l.detailobj_name level_table_name

, k.column_name column_name

, '<div align="center">' || TO_CHAR(k.key_position, '999,999') || '</div>' key_position

FROM

dba_dimensions d

, dba_dim_levels l

, dba_dim_level_key k

WHERE

d.owner = l.owner

AND d.dimension_name = l.dimension_name

AND d.owner = k.owner

AND d.dimension_name = k.dimension_name

AND l.level_name = k.level_name

ORDER by

l.owner

, l.dimension_name

, l.level_name

, level_table_name

, k.key_position;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DIMENSION ATTRIBUTES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_dimension_attributes"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Dimension Attributes</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN dimension_name FORMAT a75 HEADING 'Dimension Name' ENTMAP off

COLUMN level_name FORMAT a75 HEADING 'Level Name' ENTMAP off

COLUMN level_table_name FORMAT a75 HEADING 'Source Table' ENTMAP off

COLUMN column_name FORMAT a75 HEADING 'Attribute Source Column' ENTMAP off

COLUMN inferred FORMAT a75 HEADING 'Inferred?' ENTMAP off

BREAK ON report ON owner ON dimension_name ON level_name

SELECT

'<div align="left"><font color="#336699"><b>' || d.owner || '</b></font></div>' owner

, d.dimension_name dimension_name

, l.level_name level_name

, l.detailobj_owner || '.' || l.detailobj_name level_table_name

, a.column_name column_name

, '<div align="center">' || a.inferred || '</div>' inferred

FROM

dba_dimensions d

, dba_dim_levels l

, dba_dim_attributes a

WHERE

d.owner = l.owner

AND d.dimension_name = l.dimension_name

AND d.owner = a.owner

AND d.dimension_name = a.dimension_name

AND l.level_name = a.level_name

ORDER by

l.owner

, l.dimension_name

, l.level_name

, level_table_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DIMENSION HIERARCHIES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_dimension_hierarchies"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Dimension Hierarchies</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN dimension_name FORMAT a75 HEADING 'Dimension Name' ENTMAP off

COLUMN hierarchy_name FORMAT a75 HEADING 'Hierarchy Name' ENTMAP off

COLUMN parent_level_name FORMAT a75 HEADING 'Parent Level' ENTMAP off

COLUMN child_level_name FORMAT a75 HEADING 'Child Level' ENTMAP off

COLUMN position FORMAT a75 HEADING 'Position' ENTMAP off

COLUMN join_key_id FORMAT a75 HEADING 'Join Key ID' ENTMAP off

BREAK ON owner ON dimension_name ON hierarchy_name

SELECT

'<div align="left"><font color="#336699"><b>' || d.owner || '</b></font></div>' owner

, d.dimension_name dimension_name

, h.hierarchy_name hierarchy_name

, c.parent_level_name parent_level_name

, c.child_level_name child_level_name

, '<div align="center">' || TO_CHAR(c.position, '999,999') || '</div>' position

, '<div align="center">' || NVL(c.join_key_id,'<br>') || '</div>' join_key_id

FROM

dba_dimensions d

, dba_dim_hierarchies h

, dba_dim_child_of c

WHERE

d.owner = h.owner

AND d.dimension_name = h.dimension_name

AND d.owner = c.owner

AND d.dimension_name = c.dimension_name

AND h.hierarchy_name = c.hierarchy_name

ORDER BY

d.owner

, d.dimension_name

, h.hierarchy_name

, c.position DESC;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - CUBES - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_cubes"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Cubes</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN cube_name FORMAT a75 HEADING 'Cube Name' ENTMAP off

COLUMN invalid FORMAT a75 HEADING 'Valid?' ENTMAP off

COLUMN display_name FORMAT a75 HEADING 'Display Name' ENTMAP off

COLUMN description FORMAT a275 HEADING 'Description' ENTMAP off

BREAK ON report ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || c.owner || '</b></font></div>' owner

, c.cube_name cube_name

, DECODE( c.invalid

, 'O'

, '<div align="center"><font color="darkgreen"><b>Yes</b></font></div>'

, '1'

, '<div align="center"><font color="#990000"><b>No</b></font></div>'

, 'Y'

, '<div align="center"><font color="#990000"><b>No</b></font></div>'

, 'N'

, '<div align="center"><font color="darkgreen"><b>Yes</b></font></div>'

, '<div align="center">' || invalid || '</div>') invalid

, c.display_name display_name

, REPLACE(REPLACE(c.description, '<', '\<'), '>', '\>') description

FROM

dba_olap_cubes c

ORDER BY

c.owner

, c.cube_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - MATERIALIZED VIEWS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_olap_materialized_views"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Materialized Views</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN mview_name FORMAT a75 HEADING 'MView|Name' ENTMAP off

COLUMN master_link FORMAT a75 HEADING 'Master|Link' ENTMAP off

COLUMN updatable FORMAT a75 HEADING 'Updatable?' ENTMAP off

COLUMN update_log FORMAT a75 HEADING 'Update|Log' ENTMAP off

COLUMN rewrite_enabled FORMAT a75 HEADING 'Rewrite|Enabled?' ENTMAP off

COLUMN refresh_mode FORMAT a75 HEADING 'Refresh|Mode' ENTMAP off

COLUMN refresh_method FORMAT a75 HEADING 'Refresh|Method' ENTMAP off

COLUMN build_mode FORMAT a75 HEADING 'Build|Mode' ENTMAP off

COLUMN fast_refreshable FORMAT a75 HEADING 'Fast|Refreshable' ENTMAP off

COLUMN last_refresh_type FORMAT a75 HEADING 'Last Refresh|Type' ENTMAP off

COLUMN last_refresh_date FORMAT a75 HEADING 'Last Refresh|Date' ENTMAP off

COLUMN staleness FORMAT a75 HEADING 'Staleness' ENTMAP off

COLUMN compile_state FORMAT a75 HEADING 'Compile State' ENTMAP off

BREAK ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || m.owner || '</b></font></div>' owner

, m.mview_name mview_name

, m.master_link master_link

, '<div align="center">' || NVL(m.updatable,'<br>') || '</div>' updatable

, update_log update_log

, '<div align="center">' || NVL(m.rewrite_enabled,'<br>') || '</div>' rewrite_enabled

, m.refresh_mode refresh_mode

, m.refresh_method refresh_method

, m.build_mode build_mode

, m.fast_refreshable fast_refreshable

, m.last_refresh_type last_refresh_type

, '<div nowrap align="right">' || TO_CHAR(m.last_refresh_date, 'mm/dd/yyyy HH24:MI:SS') || '</div>' last_refresh_date

, m.staleness staleness

, DECODE( m.compile_state

, 'VALID'

, '<div align="center"><font color="darkgreen"><b>' || m.compile_state || '</b></font></div>'

, '<div align="center"><font color="#990000"><b>' || m.compile_state || '</b></font></div>' ) compile_state

FROM

dba_mviews m

ORDER BY

owner

, mview_name

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - MATERIALIZED VIEW LOGS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_olap_materialized_view_logs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Materialized View Logs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN log_owner FORMAT a75 HEADING 'Log Owner' ENTMAP off

COLUMN log_table FORMAT a75 HEADING 'Log Table' ENTMAP off

COLUMN master FORMAT a75 HEADING 'Master' ENTMAP off

COLUMN log_trigger FORMAT a75 HEADING 'Log Trigger' ENTMAP off

COLUMN rowids FORMAT a75 HEADING 'Rowids?' ENTMAP off

COLUMN primary_key FORMAT a75 HEADING 'Primary Key?' ENTMAP off

COLUMN object_id FORMAT a75 HEADING 'Object ID?' ENTMAP off

COLUMN filter_columns FORMAT a75 HEADING 'Filter Columns?' ENTMAP off

COLUMN sequence FORMAT a75 HEADING 'Sequence?' ENTMAP off

COLUMN include_new_values FORMAT a75 HEADING 'Include New Values?' ENTMAP off

BREAK ON log_owner

SELECT

'<div align="left"><font color="#336699"><b>' || ml.log_owner || '</b></font></div>' log_owner

, ml.log_table log_table

, ml.master master

, ml.log_trigger log_trigger

, '<div align="center">' || NVL(ml.rowids,'<br>') || '</div>' rowids

, '<div align="center">' || NVL(ml.primary_key,'<br>') || '</div>' primary_key

, '<div align="center">' || NVL(ml.object_id,'<br>') || '</div>' object_id

, '<div align="center">' || NVL(ml.filter_columns,'<br>') || '</div>' filter_columns

, '<div align="center">' || NVL(ml.sequence,'<br>') || '</div>' sequence

, '<div align="center">' || NVL(ml.include_new_values,'<br>') || '</div>' include_new_values

FROM

dba_mview_logs ml

ORDER BY

ml.log_owner

, ml.master;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - MATERIALIZED VIEW REFRESH GROUPS - |

-- +----------------------------------------------------------------------------+

prompt <a name="dba_olap_materialized_view_refresh_groups"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Materialized View Refresh Groups</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN name FORMAT a75 HEADING 'Name' ENTMAP off

COLUMN broken FORMAT a75 HEADING 'Broken?' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Next Date' ENTMAP off

COLUMN interval FORMAT a75 HEADING 'Interval' ENTMAP off

BREAK ON report ON owner

SELECT

'<div nowrap align="left"><font color="#336699"><b>' || rowner || '</b></font></div>' owner

, '<div align="left">' || rname || '</div>' name

, '<div align="center">' || broken || '</div>' broken

, '<div nowrap align="right">' || NVL(TO_CHAR(next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, '<div nowrap align="right">' || interval || '</div>' interval

FROM

dba_refresh

ORDER BY

rowner

, rname

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< DATA PUMP >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Data Pump</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - DATA PUMP JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="data_pump_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Data Pump Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner_name FORMAT a75 HEADING 'Owner Name' ENTMAP off

COLUMN job_name FORMAT a75 HEADING 'Job Name' ENTMAP off

COLUMN operation FORMAT a75 HEADING 'Operation' ENTMAP off

COLUMN job_mode FORMAT a75 HEADING 'Job Mode' ENTMAP off

COLUMN state FORMAT a75 HEADING 'State' ENTMAP off

COLUMN degree FORMAT 999,999,999 HEADING 'Degree' ENTMAP off

COLUMN attached_sessions FORMAT 999,999,999 HEADING 'Attached Sessions' ENTMAP off

SELECT

'<div align="left"><font color="#336699"><b>' || dpj.owner_name || '</b></font></div>' owner_name

, dpj.job_name job_name

, dpj.operation operation

, dpj.job_mode job_mode

, dpj.state state

, dpj.degree degree

, dpj.attached_sessions attached_sessions

FROM

dba_datapump_jobs dpj

ORDER BY

dpj.owner_name

, dpj.job_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATA PUMP SESSIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="data_pump_sessions"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Data Pump Sessions</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a75 HEADING 'Instance Name' ENTMAP off

COLUMN owner_name FORMAT a75 HEADING 'Owner Name' ENTMAP off

COLUMN job_name FORMAT a75 HEADING 'Job Name' ENTMAP off

COLUMN session_type FORMAT a75 HEADING 'Session Type' ENTMAP off

COLUMN sid HEADING 'SID' ENTMAP off

COLUMN serial_no HEADING 'Serial#' ENTMAP off

COLUMN oracle_username FORMAT a75 HEADING 'Oracle Username' ENTMAP off

COLUMN os_username FORMAT a75 HEADING 'O/S Username' ENTMAP off

COLUMN os_pid HEADING 'O/S PID' ENTMAP off

BREAK ON report ON instance_name_print ON owner_name ON job_name

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, dj.owner_name owner_name

, dj.job_name job_name

, ds.type session_type

, s.sid sid

, s.serial# serial_no

, s.username oracle_username

, s.osuser os_username

, p.spid os_pid

FROM

gv$datapump_job dj

, gv$datapump_session ds

, gv$session s

, gv$instance i

, gv$process p

WHERE

s.inst_id = i.inst_id

AND s.inst_id = p.inst_id

AND ds.inst_id = i.inst_id

AND dj.inst_id = i.inst_id

AND s.saddr = ds.saddr

AND s.paddr = p.addr (+)

AND dj.job_id = ds.job_id

ORDER BY

i.instance_name

, dj.owner_name

, dj.job_name

, ds.type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DATA PUMP JOB PROGRESS - |

-- +----------------------------------------------------------------------------+

prompt <a name="data_pump_job_progress"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Data Pump Job Progress</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN instance_name_print FORMAT a75 HEADING 'Instance Name' ENTMAP off

COLUMN owner_name FORMAT a75 HEADING 'Owner Name' ENTMAP off

COLUMN job_name FORMAT a75 HEADING 'Job Name' ENTMAP off

COLUMN session_type FORMAT a75 HEADING 'Session Type' ENTMAP off

COLUMN start_time HEADING 'Start Time' ENTMAP off

COLUMN time_remaining FORMAT 9,999,999,999,999 HEADING 'Time Remaining (min.)' ENTMAP off

COLUMN sofar FORMAT 9,999,999,999,999 HEADING 'Bytes Completed So Far' ENTMAP off

COLUMN totalwork FORMAT 9,999,999,999,999 HEADING 'Total Bytes for Job' ENTMAP off

COLUMN pct_completed HEADING '% Completed' ENTMAP off

BREAK ON report ON instance_name_print ON owner_name ON job_name

SELECT

'<div align="center"><font color="#336699"><b>' || i.instance_name || '</b></font></div>' instance_name_print

, dj.owner_name owner_name

, dj.job_name job_name

, ds.type session_type

, '<div align="center" nowrap>' || TO_CHAR(sl.start_time,'mm/dd/yyyy HH24:MI:SS') || '</div>' start_time

, ROUND(sl.time_remaining/60,0) time_remaining

, sl.sofar sofar

, sl.totalwork totalwork

, '<div align="right">' || TRUNC(ROUND((sl.sofar/sl.totalwork) * 100, 1)) || '%</div>' pct_completed

FROM

gv$datapump_job dj

, gv$datapump_session ds

, gv$session s

, gv$instance i

, gv$session_longops sl

WHERE

s.inst_id = i.inst_id

AND ds.inst_id = i.inst_id

AND dj.inst_id = i.inst_id

AND sl.inst_id = i.inst_id

AND s.saddr = ds.saddr

AND dj.job_id = ds.job_id

AND sl.sid = s.sid

AND sl.serial# = s.serial#

AND ds.type = 'MASTER'

ORDER BY

i.instance_name

, dj.owner_name

, dj.job_name

, ds.type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< NETWORKING >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Networking</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - MTS DISPATCHER STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="mts_dispatcher_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>MTS Dispatcher Statistics</b></font><hr align="left" width="460">

prompt <b>Dispatcher rate</b>

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name HEADING 'Name' ENTMAP off

COLUMN avg_loop_rate HEADING 'Avg|Loop|Rate' ENTMAP off

COLUMN avg_event_rate HEADING 'Avg|Event|Rate' ENTMAP off

COLUMN avg_events_per_loop HEADING 'Avg|Events|Per|Loop' ENTMAP off

COLUMN avg_msg_rate HEADING 'Avg|Msg|Rate' ENTMAP off

COLUMN avg_svr_buf_rate HEADING 'Avg|Svr|Buf|Rate' ENTMAP off

COLUMN avg_svr_byte_rate HEADING 'Avg|Svr|Byte|Rate' ENTMAP off

COLUMN avg_svr_byte_per_buf HEADING 'Avg|Svr|Byte|Per|Buf' ENTMAP off

COLUMN avg_clt_buf_rate HEADING 'Avg|Clt|Buf|Rate' ENTMAP off

COLUMN avg_clt_byte_rate HEADING 'Avg|Clt|Byte|Rate' ENTMAP off

COLUMN avg_clt_byte_per_buf HEADING 'Avg|Clt|Byte|Per|Buf' ENTMAP off

COLUMN avg_buf_rate HEADING 'Avg|Buf|Rate' ENTMAP off

COLUMN avg_byte_rate HEADING 'Avg|Byte|Rate' ENTMAP off

COLUMN avg_byte_per_buf HEADING 'Avg|Byte|Per|Buf' ENTMAP off

COLUMN avg_in_connect_rate HEADING 'Avg|In|Connect|Rate' ENTMAP off

COLUMN avg_out_connect_rate HEADING 'Avg|Out|Connect|Rate' ENTMAP off

COLUMN avg_reconnect_rate HEADING 'Avg|Reconnect|Rate' ENTMAP off

SELECT

name

, avg_loop_rate

, avg_event_rate

, avg_events_per_loop

, avg_msg_rate

, avg_svr_buf_rate

, avg_svr_byte_rate

, avg_svr_byte_per_buf

, avg_clt_buf_rate

, avg_clt_byte_rate

, avg_clt_byte_per_buf

, avg_buf_rate

, avg_byte_rate

, avg_byte_per_buf

, avg_in_connect_rate

, avg_out_connect_rate

, avg_reconnect_rate

FROM

v$dispatcher_rate

ORDER BY

name;

COLUMN protocol HEADING 'Protocol' ENTMAP off

COLUMN total_busy_rate HEADING 'Total Busy Rate' ENTMAP off

prompt <b>Dispatcher busy rate</b>

SELECT

a.network protocol

, (SUM(a.BUSY) / (SUM(a.BUSY) + SUM(a.IDLE))) total_busy_rate

FROM

v$dispatcher a

GROUP BY

a.network;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - MTS DISPATCHER RESPONSE QUEUE WAIT STATS - |

-- +----------------------------------------------------------------------------+

prompt <a name="mts_dispatcher_response_queue_wait_stats"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>MTS Dispatcher Response Queue Wait Stats</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN type HEADING 'Type' ENTMAP off

COLUMN avg_wait HEADING 'Avg Wait Time Per Response' ENTMAP off

SELECT

a.type

, DECODE( SUM(a.totalq), 0, 'NO RESPONSES', SUM(a.wait)/SUM(a.totalq) || ' HUNDREDTHS OF SECONDS') avg_wait

FROM

v$queue a

WHERE

a.type='DISPATCHER'

GROUP BY

a.type;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - MTS SHARED SERVER WAIT STATISTICS - |

-- +----------------------------------------------------------------------------+

prompt <a name="mts_shared_server_wait_statistics"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>MTS Shared Server Wait Statistics</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN avg_wait HEADING 'Average Wait Time Per Request' ENTMAP off

SELECT

DECODE(a.totalq, 0, 'No Requests', a.wait/a.totalq || ' HUNDREDTHS OF SECONDS') avg_wait

FROM

v$queue a

WHERE

a.type='COMMON';

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +============================================================================+

-- | |

-- | <<<<< REPLICATION >>>>> |

-- | |

-- +============================================================================+

prompt

prompt <center><font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#663300"><b><u>Replication</u></b></font></center>

-- +----------------------------------------------------------------------------+

-- | - REPLICATION SUMMARY - |

-- +----------------------------------------------------------------------------+

prompt <a name="replication_summary"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Replication Summary</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN gname HEADING 'Current Database Name' ENTMAP off

COLUMN admin_request HEADING '# Admin. Requests' ENTMAP off

COLUMN status HEADING '# Admin. Request Errors' ENTMAP off

COLUMN df_txn HEADING '# Def. Trans' ENTMAP off

COLUMN df_error HEADING '# Def. Tran Errors' ENTMAP off

COLUMN complete HEADING '# Complete Trans in Queue' ENTMAP off

SELECT

g.global_name gname

, d.admin_request admin_request

, e.status status

, dt.tran df_txn

, de.error df_error

, c.complete complete

FROM

(select global_name from global_name) g

, (select count(id) admin_request

from sys.dba_repcatlog) d

, (select count(status) status

from sys.dba_repcatlog

where status = 'ERROR') e

, (select count(*) tran

from deftrandest) dt

, (select count(*) error

from deferror) de

, (select count(a.deferred_tran_id) complete

from deftran a

where a.deferred_tran_id not in

(select b.deferred_tran_id

from deftrandest b)

) c

/

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - DEFERRED TRANSACTIONS - |

-- +----------------------------------------------------------------------------+

prompt <a name="deferred_transactions"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Deferred Transactions</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN source HEADING 'Source' ENTMAP off

COLUMN dest HEADING 'Target' ENTMAP off

COLUMN trans HEADING '# Def. Trans' ENTMAP off

COLUMN errors HEADING '# Def. Tran Errors' ENTMAP off

SELECT

source

, dest

, trans

, errors

FROM

(select

e.origin_tran_db source

, e.destination dest

, 'n/a' trans

, to_char(count(*)) errors

from

deferror e

group by

e.origin_tran_db

, e.destination

union

select

g.global_name source

, d.dblink dest

, to_char(count(*)) trans

, 'n/a' errors

from

(select global_name from global_name) g

, deftran t

, deftrandest d

where

d.deferred_tran_id = t.deferred_tran_id

group by

g.global_name, d.dblink

);

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - ADMINISTRATIVE REQUEST JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="administrative_request_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Administrative Request Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN job HEADING 'Job ID' ENTMAP off

COLUMN priv_user HEADING 'Privilege Schema' ENTMAP off

COLUMN what FORMAT a175 HEADING 'Definition' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Start' ENTMAP off

COLUMN interval HEADING 'Interval' ENTMAP off

SELECT

job job

, priv_user priv_user

, what what

, DECODE(broken, 'Y', 'Broken', 'Normal') status

, '<div nowrap align="right">' || NVL(TO_CHAR(next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, interval

FROM

sys.dba_jobs

WHERE

what LIKE '%dbms_repcat.do_deferred_repcat_admin%'

ORDER BY

1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - INITIALIZATION PARAMETERS - |

-- +----------------------------------------------------------------------------+

prompt <a name="rep_initialization_parameters"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>Initialization Parameters</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN pname FORMAT a55 HEADING 'Parameter Name' ENTMAP off

COLUMN value FORMAT a55 HEADING 'Value' ENTMAP off

COLUMN isdefault FORMAT a55 HEADING 'Is Default?' ENTMAP off

COLUMN issys_modifiable FORMAT a55 HEADING 'Is Dynamic?' ENTMAP off

SELECT

DECODE( isdefault

, 'FALSE'

, '<b><font color="#336699">' || SUBSTR(name,0,512) || '</font></b>'

, '<b><font color="#336699">' || SUBSTR(name,0,512) || '</font></b>' ) pname

, DECODE( isdefault

, 'FALSE'

, '<font color="#663300"><b>' || SUBSTR(value,0,512) || '</b></font>'

, SUBSTR(value,0,512) ) value

, DECODE( isdefault

, 'FALSE'

, '<div align="right"><font color="#663300"><b>' || isdefault || '</b></font></div>'

, '<div align="right">' || isdefault || '</div>') isdefault

, DECODE( isdefault

, 'FALSE'

, '<div align="right"><font color="#663300"><b>' || issys_modifiable || '</b></font></div>'

, '<div align="right">' || issys_modifiable || '</div>') issys_modifiable

FROM

v$parameter

WHERE

name IN ( 'compatible'

, 'commit_point_strength'

, 'dblink_encrypt_login'

, 'distributed_lock_timeout'

, 'distributed_recovery_connection_hold_time'

, 'distributed_transactions'

, 'global_names'

, 'job_queue_interval'

, 'job_queue_processes'

, 'max_transaction_branches'

, 'open_links'

, 'open_links_per_instance'

, 'parallel_automatic_tuning'

, 'parallel_max_servers'

, 'parallel_min_servers'

, 'parallel_server_idle_time'

, 'processes'

, 'remote_dependencies_mode'

, 'replication_dependency_tracking'

, 'shared_pool_size'

, 'utl_file_dir'

)

ORDER BY name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (SCHEDULE) - PURGE JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="schedule_purge_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Schedule) - Purge Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN job HEADING 'Job ID' ENTMAP off

COLUMN priv_user HEADING 'Privilege Schema' ENTMAP off

COLUMN status HEADING 'Status' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Start' ENTMAP off

COLUMN interval HEADING 'Interval' ENTMAP off

SELECT

j.job job

, j.priv_user priv_user

, decode(broken, 'Y', 'Broken', 'Normal') status

, '<div nowrap align="right">' || NVL(TO_CHAR(s.next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, s.interval interval

FROM

sys.defschedule s

, sys.dba_jobs j

WHERE

s.dblink = (select global_name from global_name)

AND s.interval is not null AND s.job = j.job

ORDER BY

1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (SCHEDULE) - PUSH JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="schedule_push_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Schedule) - Push Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN job HEADING 'Job ID' ENTMAP off

COLUMN priv_user HEADING 'Privilege Schema' ENTMAP off

COLUMN dblink HEADING 'Target' ENTMAP off

COLUMN broken HEADING 'Status' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Start' ENTMAP off

COLUMN interval HEADING 'Interval' ENTMAP off

SELECT

j.job job

, j.priv_user priv_user

, s.dblink dblink

, decode(j.broken, 'Y', 'Broken', 'Normal') broken

, '<div nowrap align="right">' || NVL(TO_CHAR(s.next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, s.interval interval

FROM

sys.defschedule s

, sys.dba_jobs j

WHERE

s.dblink != (select global_name from global_name)

AND s.interval is not null

AND s.job = j.job

ORDER BY

1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (SCHEDULE) - REFRESH JOBS - |

-- +----------------------------------------------------------------------------+

prompt <a name="schedule_refresh_jobs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Schedule) - Refresh Jobs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN job HEADING 'Job ID' ENTMAP off

COLUMN priv_user HEADING 'Privilege Schema' ENTMAP off

COLUMN refresh_group HEADING 'Refresh Group' ENTMAP off

COLUMN broken HEADING 'Status' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Start' ENTMAP off

COLUMN interval FORMAT a75 HEADING 'Interval' ENTMAP off

SELECT

j.job job

, j.priv_user priv_user

, r.rowner || '.' || r.rname refresh_group

, decode(j.broken, 'Y', 'Broken', 'Normal') broken

, '<div nowrap align="right">' || NVL(TO_CHAR(j.next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, '<div nowrap align="right">' || j.interval || '</div>' interval

FROM

sys.dba_refresh r

, sys.dba_jobs j

WHERE

r.job = j.job

order by

1;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MULTI-MASTER) - MASTER GROUPS - |

-- +----------------------------------------------------------------------------+

prompt <a name="multimaster_master_groups"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Multi-Master) - Master Groups</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN name HEADING 'Master Group' ENTMAP off

COLUMN num_def_trans HEADING '# Def. Trans' ENTMAP off

COLUMN num_tran_errors HEADING '# Def. Tran Errors' ENTMAP off

COLUMN num_admin_requests HEADING '# Admin. Requests' ENTMAP off

COLUMN num_admin_request_errors HEADING '# Admin. Request Errors' ENTMAP off

SELECT

g.gname name

, NVL(t.cnt1, 0) num_def_trans

, NVL(ie.cnt2, 0) num_tran_errors

, NVL(a.cnt3, 0) num_admin_requests

, NVL(b.cnt4, 0) num_admin_request_errors

FROM

(select distinct gname

from dba_repgroup

where master='Y') g

, (select

rog rog

, count(dt.deferred_tran_id) cnt1

from (select distinct

ro.gname rog

, d.deferred_tran_id dft

from

dba_repobject ro

, defcall d

, deftrANDest td

where

ro.sname = d.schemaname

AND ro.oname = d.packagename

AND ro.type in ('TABLE', 'PACKAGE', 'SNAPSHOT')

AND td.deferred_tran_id = d.deferred_tran_id

) t0, deftrANDest dt

where

dt.deferred_tran_id = dft

group by rog

) t

, (select distinct

ro.gname

, count(distinct e.deferred_tran_id) cnt2

from

dba_repobject ro

, defcall d

, deferror e

where

ro.sname = d.schemaname

AND ro.oname = d.packagename

AND ro.type in ('TABLE', 'PACKAGE', 'SNAPSHOT')

AND e.deferred_tran_id = d.deferred_tran_id

AND e.callno = d.callno

group by ro.gname

) ie

, (select gname, count(*) cnt3

from dba_repcatlog

group by gname

) a

, (select gname, count(*) cnt4

from dba_repcatlog

where status = 'ERROR'

group BY gname

) b

WHERE

g.gname = ie.gname (+)

AND g.gname = t.rog (+)

AND g.gname = a.gname (+)

AND g.gname = b.gname (+)

ORDER BY

g.gname;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MULTI-MASTER) - MASTER GROUPS AND SITES - |

-- +----------------------------------------------------------------------------+

prompt <a name="multimaster_master_groups_and_sites"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Multi-Master) - Master Groups and Sites</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN master_group HEADING 'Master Group' ENTMAP off

COLUMN sites HEADING 'Sites' ENTMAP off

COLUMN master_definition_site HEADING 'Master Definition Site' ENTMAP off

SELECT

gname master_group

, dblink sites

, DECODE(masterdef, 'Y', 'YES', 'N', 'NO') master_definition_site

FROM

sys.dba_repsites

WHERE

master = 'Y'

AND gname NOT IN (

SELECT gname from sys.dba_repsites

WHERE snapmaster = 'Y'

)

ORDER BY

gname;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - MASTER SITE SUMMARY - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_master_site_summary"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Master Site Summary</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN mgroup HEADING '# of Master Groups' ENTMAP off

COLUMN mvgroup HEADING '# of Registered MV Groups' ENTMAP off

COLUMN mv HEADING '# of Registered MVs' ENTMAP off

COLUMN mvlog HEADING '# of MV Logs' ENTMAP off

COLUMN template HEADING '# of Templates' ENTMAP off

SELECT

a.mgroup mgroup

, b.mvgroup mvgroup

, c.mv mv

, d.mvlog mvlog

, e.template template

FROM

(select count(g.gname) mgroup

from sys.dba_repgroup g, sys.dba_repsites s

where g.master = 'Y'

and s.master = 'Y'

and g.gname = s.gname

and s.my_dblink = 'Y') a

, (select count(*) mvGROUP

from sys.dba_registered_snapshot_groups) b

, (select count(*) mv

from sys.dba_registered_snapshots) c

, (select count(*) mvlog

from sys.dba_snapshot_logs) d

, (select count(*) template

from sys.dba_repcat_refresh_templates) e;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN log_owner FORMAT a75 HEADING 'Log Owner' ENTMAP off

COLUMN log_table HEADING 'Log Table' ENTMAP off

COLUMN master HEADING 'Master' ENTMAP off

COLUMN rowids FORMAT a75 HEADING 'Row ID' ENTMAP off

COLUMN primary_key FORMAT a75 HEADING 'Primary Key' ENTMAP off

COLUMN filter_columns FORMAT a75 HEADING 'Filter Columns' ENTMAP off

BREAK ON report ON log_owner

SELECT

'<div align="left"><font color="#336699"><b>' || log_owner || '</b></font></div>' log_owner

, log_table

, master

, '<div align="center">' || rowids || '</div>' rowids

, '<div align="center">' || primary_key || '</div>' primary_key

, '<div align="center">' || filter_columns || '</div>' filter_columns

FROM

sys.dba_snapshot_logs

ORDER BY

log_owner;

CLEAR COLUMNS BREAKS COMPUTES

COLUMN ref_temp_name HEADING 'Refresh Template Name' ENTMAP off

COLUMN owner HEADING 'Owner' ENTMAP off

COLUMN public_template HEADING 'Public' ENTMAP off

COLUMN instantiated HEADING '# of Instantiated Sites' ENTMAP off

COLUMN template_comment HEADING 'Comment' ENTMAP off

SELECT

rt.refresh_template_name ref_temp_name

, owner owner

, decode(public_template, 'Y', 'YES', 'NO') public_template

, rs.instantiated instantiated

, rt.template_comment template_comment

FROM

sys.dba_repcat_refresh_templates rt

, (SELECT y.refresh_template_name, count(x.status) instantiated

FROM sys.dba_repcat_template_sites x, sys.dba_repcat_refresh_templates y

WHERE x.refresh_template_name(+) = y.refresh_template_name

GROUP BY y.refresh_template_name) rs

WHERE

rt.refresh_template_name(+) = rs.refresh_template_name

ORDER BY

rt.refresh_template_name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - MASTER SITE LOGS - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_master_site_logs"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Master Site Logs</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN log_owner FORMAT a75 HEADING 'Log Owner' ENTMAP off

COLUMN log_table HEADING 'Log Table' ENTMAP off

COLUMN master HEADING 'Master' ENTMAP off

COLUMN rowids FORMAT a75 HEADING 'Row ID' ENTMAP off

COLUMN primary_key FORMAT a75 HEADING 'Primary Key' ENTMAP off

COLUMN filter_columns FORMAT a75 HEADING 'Filter Columns' ENTMAP off

BREAK ON report ON log_owner

SELECT

'<div align="left"><font color="#336699"><b>' || log_owner || '</b></font></div>' log_owner

, log_table

, master

, '<div align="center">' || rowids || '</div>' rowids

, '<div align="center">' || primary_key || '</div>' primary_key

, '<div align="center">' || filter_columns || '</div>' filter_columns

FROM

sys.dba_snapshot_logs

ORDER BY

log_owner;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - MASTER SITE TEMPLATES - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_master_site_templates"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Master Site Templates</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner HEADING 'Owner' ENTMAP off

COLUMN refresh_template_name HEADING 'Refresh Template Name' ENTMAP off

COLUMN public_template HEADING 'Public' ENTMAP off

COLUMN instantiated HEADING '# of Instantiated Sites' ENTMAP off

COLUMN template_comment HEADING 'Comment' ENTMAP off

BREAK ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || owner || '</b></font></div>' owner

, rt.refresh_template_name refresh_template_name

, decode(public_template, 'Y', 'YES', 'NO') public_template

, rs.instantiated instantiated

, rt.template_comment template_comment

FROM

sys.dba_repcat_refresh_templates rt

, ( SELECT y.refresh_template_name, count(x.status) instantiated

FROM sys.dba_repcat_template_sites x, sys.dba_repcat_refresh_templates y

WHERE x.refresh_template_name(+) = y.refresh_template_name

GROUP BY y.refresh_template_name

) rs

WHERE

rt.refresh_template_name(+) = rs.refresh_template_name

ORDER BY

owner;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - SITE SUMMARY - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_summary"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Site Summary</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN mvgroup HEADING '# of Materialized View Groups' ENTMAP off

COLUMN mv HEADING '# of Materialized Views' ENTMAP off

COLUMN rgroup HEADING '# of Refresh Groups' ENTMAP off

SELECT

a.mvgroup mvgroup

, b.mv mv

, c.rgroup rgroup

FROM

( select count(s.gname) mvgroup

from sys.dba_repsites s

where s.snapmaster = 'Y') a

, ( select count(*) mv

from sys.dba_snapshots) b

, ( select count(*) rgroup

from sys.dba_refresh) c;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - SITE GROUPS - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_groups"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Site Groups</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN gname HEADING 'Name' ENTMAP off

COLUMN dblink HEADING 'Master' ENTMAP off

COLUMN propagation HEADING 'Propagation' ENTMAP off

COLUMN remark HEADING 'Remark' ENTMAP off

SELECT

s.gname gname

, s.dblink dblink

, decode(s.prop_updates, 0, 'Async', 'Sync') propagation

, g.schema_comment remark

FROM

sys.dba_repsites s

, sys.dba_repgroup g

WHERE

s.gname = g.gname

AND s.snapmaster = 'Y'

ORDER BY

s.gname;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - SITE MATERIALIZED VIEWS - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_materialized_views"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Site Materialized Views</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN name HEADING 'Name' ENTMAP off

COLUMN master_owner HEADING 'Master Owner' ENTMAP off

COLUMN master_table HEADING 'Master Table' ENTMAP off

COLUMN master_link HEADING 'Master Link' ENTMAP off

COLUMN type HEADING 'Type' ENTMAP off

COLUMN updatable FORMAT a75 HEADING 'Updatable?' ENTMAP off

COLUMN can_use_log FORMAT a75 HEADING 'Can Use Log?' ENTMAP off

COLUMN last_refresh FORMAT a75 HEADING 'Last Refresh' ENTMAP off

BREAK ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || s.owner || '</b></font></div>' owner

, s.name name

, s.master_owner master_owner

, s.master master_table

, s.master_link master_link

, nls_initcap(s.type) type

, '<div align="center">' || DECODE(s.updatable, 'YES', 'YES', 'NO') || '</div>' updatable

, '<div align="center">' || DECODE(s.can_use_log,'YES', 'YES', 'NO') || '</div>' can_use_log

, '<div nowrap align="right">' || NVL(TO_CHAR(m.last_refresh_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' last_refresh

FROM

sys.dba_snapshots s

, sys.dba_mviews m

WHERE

s.name = m.mview_name

AND s.owner = m.owner

ORDER BY

s.owner

, s.name;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - (MATERIALIZED VIEW) - SITE REFRESH GROUPS - |

-- +----------------------------------------------------------------------------+

prompt <a name="materialized_view_refresh_groups"></a>

prompt <font size="+2" face="Arial,Helvetica,Geneva,sans-serif" color="#336699"><b>(Materialized View) - Site Refresh Groups</b></font><hr align="left" width="460">

CLEAR COLUMNS BREAKS COMPUTES

COLUMN owner FORMAT a75 HEADING 'Owner' ENTMAP off

COLUMN name FORMAT a75 HEADING 'Name' ENTMAP off

COLUMN broken FORMAT a75 HEADING 'Broken?' ENTMAP off

COLUMN next_date FORMAT a75 HEADING 'Next Date' ENTMAP off

COLUMN interval FORMAT a75 HEADING 'Interval' ENTMAP off

BREAK ON owner

SELECT

'<div align="left"><font color="#336699"><b>' || rowner || '</b></font></div>' owner

, '<div align="left">' || rname || '</div>' name

, '<div align="center">' || broken || '</div>' broken

, '<div nowrap align="right">' || NVL(TO_CHAR(next_date, 'mm/dd/yyyy HH24:MI:SS'), '<br>') || '</div>' next_date

, '<div nowrap align="right">' || interval || '</div>' interval

FROM

sys.dba_refresh

ORDER BY

rowner

, rname;

prompt <center>[<a class="noLink" href="#top">Top</a>]</center><p>

-- +----------------------------------------------------------------------------+

-- | - END OF REPORT - |

-- +----------------------------------------------------------------------------+

SPOOL OFF

SET MARKUP HTML OFF

SET TERMOUT ON

prompt

prompt Output written to: &FileName._&_dbname._&_spool_time..html

EXIT;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: