Professional Documents
Culture Documents
Revised: 11-Oct-2003
Purpose: This document gives details for performing daily, weekly, and monthly checks of the status
of one or more Oracle databases. All SQL and PL/SQL code for the listed checks can be
found in the appendix.
The latest version of this paper should always be available on the primary author's home
page, <http://www.geocities.com/tbcox23>.
Acknowledgements:
This paper was inspired by the work of David Cook (see References), and Version 1.0 was largely fleshed out
by Christine Choi of Hewlett-Packard (Components Group), San Jose, California. I am grateful to both for
their contributions to this document. A version of this Checklist was included in the April 2001 book Oracle
DBA Checklists Pocket Reference by O’Reilly and Associates.
Please send your corrections, suggestions, and feedback to me at the address below, with your return address so
I may credit your contribution. Thank you.
This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any
later version.
This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
For a copy of the GNU General Public License write to the Free Software Foundation, Inc., 59 Temple Place -
Suite 330, Boston, MA 02111-1307, USA.
2
Index
I. DAILY PROCEDURES 3
A. VERIFY ALL INSTANCES ARE UP 3
B. LOOK FOR ANY NEW ALERT LOG ENTRIES 3
C. VERIFY DBSNMP IS RUNNING 3
D. VERIFY SUCCESS OF DATABASE BACKUP 3
E. VERIFY SUCCESS OF DATABASE ARCHIVING TO TAPE 3
F. VERIFY ENOUGH RESOURCES FOR ACCEPTABLE PERFORMANCE 3
G. COPY ARCHIVED LOGS TO STANDBY DATABASE AND ROLL FORWARD 5
H. READ DBA MANUALS FOR ONE HOUR 5
II. NIGHTLY PROCEDURES 6
A. COLLECT VOLUMETRIC DATA 6
III. WEEKLY PROCEDURES 7
A. LOOK FOR OBJECTS THAT BREAK RULES 7
B. LOOK FOR SECURITY POLICY VIOLATIONS 7
C. LOOK IN SQL*NET LOGS FOR ERRORS, ISSUES 7
D. ARCHIVE ALL ALERT LOGS TO HISTORY 7
E. VISIT HOME PAGES OF KEY VENDORS 8
IV. MONTHLY PROCEDURES 9
A. LOOK FOR HARMFUL GROWTH RATES 9
B. REVIEW TUNING OPPORTUNITIES 9
C. LOOK FOR I/O CONTENTION 9
D. REVIEW FRAGMENTATION 9
E. PROJECT PERFORMANCE INTO THE FUTURE 9
F. PERFORM TUNING AND MAINTENANCE 9
V. APPENDIX 10
A. DAILY PROCEDURES 10
B. NIGHTLY PROCEDURES 12
C. WEEKLY PROCEDURES 14
VI. REFERENCES 17
I.
3
II. Daily Procedures
4
b) Go to each instance, run space.sql to check percentage free in
tablespaces.
Compare to the minimum percent free for that tablespace. Note any low-space conditions
and correct.
5
a) Run spacebound.sql. If all is well, zero rows will be returned.
The copying of logs, the applying of them, or both, can in some cases be automated. If you
have automated them, then your daily task should be to confirm that this happened
correctly each day.
III.
6
IV. Nightly Procedures
Most production databases (and many development and test databases) will benefit from
having certain nightly batch processes run.
V.
7
VI.Weekly Procedures
1. Every object in a given tablespace should have the exact same size for
NEXT_EXTENT, which should match the tablespace default for
NEXT_EXTENT. As of 12/14/98, default NEXT_EXTENT for DATAHI is 1 gig
(1048576 kbytes), DATALO is 500 mb (524288 kbytes), and INDEXES is 256
mb (262144 kbytes).
8
3. All indexes should use INDEXES tablespace. Run mkrebuild_idx.sql.
1. Oracle Corporation
http://www.oracle.com
http://technet.oracle.com
http://www.oracle.com/support
http://www.oramag.com
2. Quest Software
http://www.quests.com
3. Sun Microsystems
http://www.sun.com
VII.
9
VIII. Monthly Procedures
1. Review common Oracle tuning points such as cache hit ratio, latch
contention, and other points dealing with memory management. Compare with
past reports to identify harmful trends or determine impact of recent tuning
adjustments.
1. Review database file activity. Compare to past output to identify trends that
could lead to possible contention.
D. Review Fragmentation
1. Compare reports on CPU, memory, network, and disk utilization from both
Oracle and the operating system to identify trends that could lead to contention
for any one of these resources in the near future.
IX.
10
X. Appendix
A. Daily Procedures
1. Free.sql
--
-- free.sql
--
-- To verify free space in tablespaces
-- Minimum amount of free space
-- document your thresholds:
-- <tablespace_name> = <amount> m
--
2. Space.sql
--
-- space.sql
--
-- To check free, pct_free, and allocated space within a tablespace
--
-- 11/24/98
3. analyze5pct.sql
--
-- analyze5pct.sql
--
-- To analyze tables and indexes quickly, using a 5% sample size
-- (do not use this script if you are performing the overnight
-- collection of volumetric data)
--
11
-- 11/30/98
BEGIN
dbms_utility.analyze_schema ( '&OWNER', 'ESTIMATE', NULL, 5 ) ;
END ;
/
4. nr_extents.sql
--
-- nr_extents.sql
--
-- To find out any object reaching <threshold>
-- extents, and manually upgrade it to allow unlimited
-- max_extents (thus only objects we *expect* to be big
-- are allowed to become big)
--
-- 11/30/98
5. spacebound.sql
--
-- spacebound.sql
--
-- To identify space-bound objects. If all is well, no rows are returned.
-- If any space-bound objects are found, look at value of NEXT extent
-- size to figure out what happened.
-- Then use coalesce (alter tablespace <foo> coalesce;).
-- Lastly, add another datafile to the tablespace if needed.
--
-- 11/30/98
12
B. Nightly Procedures
1. mk_volfact.sql
--
-- mk_volfact.sql (only run this once to set it up; do not run it nightly!)
--
-- -- Table UTL_VOL_FACTS
-- Public Synonym
2. analyze_comp.sql
--
-- analyze_comp.sql
--
BEGIN
sys.dbms_utility.analyze_schema ( '&OWNER','COMPUTE');
END ;
/
3. pop_vol.sql
--
-- pop_vol.sql
--
insert into utl_vol_facts
select table_name
, NVL ( num_rows, 0) as num_rows
, trunc ( last_analyzed ) as meas_dt
from all_tables -- or just user_tables
13
where owner in ('&OWNER') -- or a comma-separated list of owners
/
commit
/
14
C. Weekly Procedures
1. nextext.sql
--
-- nextext.sql
--
-- To find tables that don't match the tablespace default for NEXT extent.
-- The implicit rule here is that every table in a given tablespace should
-- use the exact same value for NEXT, which should also be the tablespace's
-- default value for NEXT.
--
-- This tells us what the setting for NEXT is for these objects today.
--
-- 11/30/98
2. existext.sql
--
-- existext.sql
--
-- To check existing extents
--
-- This tells us how many of each object's extents differ in size from
-- the tablespace's default size. If this report shows a lot of different
-- sized extents, your free space is likely to become fragmented. If so,
-- this tablespace is a candidate for reorganizing.
--
-- 12/15/98
3. No_pk.sql
--
-- no_pk.sql
--
-- To find tables without PK constraint
15
--
-- 11/2/98
SELECT table_name
FROM all_tables
WHERE owner = '&OWNER'
MINUS
SELECT table_name
FROM all_constraints
WHERE owner = '&&OWNER'
AND constraint_type = 'P'
4. disPK.sql
--
-- disPK.sql
--
-- To find out which primary keys are disabled
--
-- 11/30/98
5. nonuPK.sql
--
-- nonuPK.sql
--
-- To find tables with nonunique PK indexes. Requires that PK names
-- follow a naming convention. An alternative query follows that
-- does not have this requirement, but runs more slowly.
--
-- 11/2/98
6. mkrebuild_idx.sql
--
-- mkrebuild_idx.sql
--
-- Rebuild indexes to have correct storage parameters
--
-- 11/2/98
16
, 'tablespace INDEXES storage '
|| ' ( initial 256 K next 256 K pctincrease 0 ) ; '
FROM all_indexes
WHERE ( tablespace_name != 'INDEXES'
OR next_extent != ( 256 * 1024 )
)
AND owner = '&OWNER'
/
7. datatype.sql
--
-- datatype.sql
--
-- To check datatype consistency between two environments
--
-- 11/30/98
SELECT
table_name,
column_name,
data_type,
data_length,
data_precision,
data_scale,
nullable
FROM all_tab_columns -- first environment
WHERE owner = '&OWNER'
MINUS
SELECT
table_name,
column_name,
data_type,
data_length,
data_precision,
data_scale,
nullable
FROM all_tab_columns@&my_db_link -- second environment
WHERE owner = '&OWNER2'
order by table_name, column_name
8. obj_coord.sql
--
-- obj_coord.sql
--
-- To find out any difference in objects between two instances
--
-- 12/08/98
17
18
XI.References
19