Thursday, April 18, 2013

Oracle Database Management - Part 2

This is the second in a series of articles on Oracle Database Management that will cover some of the things a DBA should be looking at on a regular basis.

Object Management - Excessive Chaining / Migration


Chained / Migrated rows may cause I/O performance issues since extra I/O is required to get a row.  The Analyze command can be used to determine a list of Chained / Migrated rows. This should not be performed during regular business hours, but should be scheduled to occur during a maintenance window.

A second methodology to determine if these types of rows are causing problems is by reviewing the v$sysstat statistics for 'table fetch continued row' and comparing it to 'table fetch by rowid'. The v$sysstat is a snapshot at a single point in time. If the percentage of rows that are continued is small (less than 1%) then they most likely are not causing a significant performance degradation. If the comparison percentage is significant or increases over time it may be necessary to review each table for chained rows using the Analyze command. 

select a.value as "Continued", b.value as "Regular", ROUND((a.value/b.value) * 100,2) as Pctage
from v$sysstat a
, v$sysstat b
where a.name = 'table fetch continued row'
and b.name = 'table fetch by rowid';

The following documents from Oracle Support discuss chained / migrated rows and how to deal with them.
  1. Row Chaining and Row Migration [ID 122020.1]
  2. How to Identify, Avoid and Eliminate Chained and Migrated Rows ? [ID 746778.1]
  3. Monitoring Chained Rows on IOTs [ID 102932.1]
  4. Does Gather_table_stats Detect Chained Rows [ID 373091.1]
  5. Intra Block Chaining on Tables With > 255 Columns [ID 1062906.6]
  6. Updating a Row with More Than 255 Columns Causes Row Chaining [ID 238519.1]
  7. Analyze Table List chained rows Into chained_rows Gives ORA-947 [ID 265707.1]

Wednesday, April 17, 2013

Oracle Database Management - Part 1 - Object Management

This is the first in a series of articles on Oracle Database Management that will cover some of the things a DBA should be looking at on a regular basis.

Object Management - Invalid Objects

-->
A well run Database should not have any invalid objects. It is important that no invalid objects exist in the database so that when either a database or application patch / deployment occurs, it is easier to determine whether there are any problems with a deployment leaving objects (views, synonyms, stored procedures / triggers) in an invalid state, when there are no invalid objects to begin with.

The list of invalid objects by schema should be reviewed. If the schema is an Oracle provided schema like SYS, SYSTEM, etc., the reason for the invalid object should be determined and resolved. The best way to do this is by searching Oracle Support (formerly Metalink) for a solution and then carrying it out. If the schema is an application schema, the list of invalid objects should be passed to the development / deployment team to be resolved. 

OEM generates an alert (evaluated every 24 hours) for invalid objects that is available on the Database Target Home page:


OEM - Invalid Objects
Oracle Enterprise Manager - Invalid Object Alerts