life without tools: monitoring database activity with the power of sql ari kaplan independent...

27
Life Without Life Without Tools: Tools: Monitoring Monitoring Database Database Activity With Activity With The Power Of SQL The Power Of SQL Ari Kaplan Ari Kaplan Independent Consultant Independent Consultant

Upload: giles-toby-murphy

Post on 12-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Life Without Life Without Tools: Monitoring Tools: Monitoring

Database Database Activity With The Activity With The

Power Of SQLPower Of SQLAri KaplanAri Kaplan

Independent ConsultantIndependent Consultant

Page 2: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Topic Overview Which users are logged on to the database?Which users are logged on to the database?

What SQL statement is a particular user accountWhat SQL statement is a particular user account

executing?executing?

Setting up an interactive script for viewing users and SQLSetting up an interactive script for viewing users and SQL

What is my What is my datafile datafile activity like?activity like?

Which rollback segments are being used by which userWhich rollback segments are being used by which user

accounts?accounts?

What has the largest number of concurrent users been?What has the largest number of concurrent users been?

Which locks are being held?Which locks are being held?

Which users have hogged up the most CPU usage?Which users have hogged up the most CPU usage?

What is the archiving status of the database?What is the archiving status of the database?

Page 3: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Quick Overview of Typical Quick Overview of Typical Monitoring ViewsMonitoring Views

DDaattaa DDiiccttiioonnaarryy VViieeww WWhhaatt II tt SShhoowwss

DDBBAA__FFRREEEE__SSPPAACCEE FFrreeee cchhuunnkkss ooff ttaabblleessppaaccee

DDBBAA__DDAATTAA__FFIILLEESS DDaattaa FFiillee llooccaattiioonn aanndd ssiizzeess

VV$$FFIILLEESSTTAATT RReeaaddss//WWrriitteess ttoo ddaattaaffiilleess

VV$$SSGGAASSTTAATT DDeettaaiilleedd sshhaarreedd ppooooll iinnffoorrmmaattiioonn ((ffrreeee mmeemmoorryy,, eettcc))

VV$$RROOLLLLSSTTAATT RRoollllbbaacckk SSeeggmmeenntt IInnffoorrmmaattiioonn ((sshhrriinnkkss,, ooppttiimmaall ssiizzee,, ……))

VV$$SSEESSSSIIOONN IInnffoorrmmaattiioonn oonn ccoonnnneeccttiioonnss

VV$$SSYYSSSSTTAATT 220000 ssyysstteemm--wwiiddee ssttaattiissttiiccss

VV$$PPAARRAAMMEETTEERR IInniittiiaalliizzaattiioonn ppaarraammeetteerr sseettttiinnggss

VV$$LLOOCCKK LLoocckkss wwiitthhiinn tthhee ddaattaabbaassee

DDBBAA__SSEEGGMMEENNTTSS SSeeggmmeennttss aanndd hhooww mmaannyy eexxtteennttss,, nneexxtt eexxtteenntt

Page 4: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Who Is Logged On?Who Is Logged On?

The V$SESSION view contains The V$SESSION view contains information on all active information on all active sessions:sessions:

SELECTSELECT sid, schemaname, osuser sid, schemaname, osuser substr(machine,1,20) Machine substr(machine,1,20) MachineFROMFROM v$session v$sessionORDER BYORDER BY schemaname; schemaname;

Page 5: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

A sample output from the above SQL follows:A sample output from the above SQL follows:

SIDSID SCHEMANAMESCHEMANAME OSUSEROSUSER MACHINEMACHINE

11 SYSSYS

22 SYSSYS

33 SYSSYS

44 SYSSYS

77 SYSTEMSYSTEM platplat headqheadq

1313 SYSTEMSYSTEM oracleoracle headqheadq

66 WWW_DBAWWW_DBA oracleoracleuk_officeuk_office

1414 WWW_DBAWWW_DBA oracleoracleuk_officeuk_office

1212 PRODMANPRODMAN mr_bossmr_boss ny_officeny_office

Who Is Logged On?Who Is Logged On?SELECT sid, schemaname, osuser, substr(machine,1,20) MachineFROM v$sessionORDER BY schemaname;

Page 6: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

What SQL Statement Is A What SQL Statement Is A Particular User Account Particular User Account

Executing?Executing?SELECTSELECT sql_text sql_textFROMFROM v$sqlarea v$sqlareaWHEREWHERE (address, hash_value) (address, hash_value) ININ

((SELECTSELECT sql_address, sql_address, sql_hash_value sql_hash_value FROMFROM v$session v$session WHEREWHERE sid = &sid_number); sid = &sid_number);

Page 7: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

A sample output from the above SQL A sample output from the above SQL

follows:follows:

Enter value for sid_numberEnter value for sid_number: : 1717

old 1: WHERE SID = &sid_numberold 1: WHERE SID = &sid_number

new 1: WHERE USERNAME = 17new 1: WHERE USERNAME = 17

SQL_TEXTSQL_TEXT

Update EMP set first_name = ‘Ari’ where Update EMP set first_name = ‘Ari’ where first_name = ‘Arie’;first_name = ‘Arie’;

What SQL Statement Is A Particular User What SQL Statement Is A Particular User Account Executing?Account Executing?

SELECTSELECT sql_text sql_textFROMFROM v$sqlarea v$sqlareaWHEREWHERE (address, hash_value) (address, hash_value) ININ

((SELECTSELECT sql_address, sql_address, sql_hash_value sql_hash_value FROMFROM v$session v$session WHEREWHERE sid = &sid_number); sid = &sid_number);

Page 8: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

UNIX Script “SQL_RUN”UNIX Script “SQL_RUN”UNIX Script “SQL_RUN”UNIX Script “SQL_RUN”

SELECTSELECT sid, schemaname, osuser, sid, schemaname, osuser, substr(machine,1,20) Machine substr(machine,1,20) Machine FROMFROM v$session v$session ORDER BYORDER BY schemaname; schemaname;

SELECTSELECT sid, schemaname, osuser, sid, schemaname, osuser, substr(machine,1,20) Machine substr(machine,1,20) Machine FROMFROM v$session v$session ORDER BYORDER BY schemaname; schemaname;

Setting Up An Interactive Script For Setting Up An Interactive Script For Viewing Users And SQLViewing Users And SQL

SQL Script “SQL1.SQL”SQL Script “SQL1.SQL”SQL Script “SQL1.SQL”SQL Script “SQL1.SQL”SELECTSELECT sql_text sql_textFROMFROM v$sqlarea v$sqlareaWHEREWHERE (address, hash_value) (address, hash_value) ININ

((SELECTSELECT sql_address, sql_address,sql_hash_valuesql_hash_value

FROMFROM v$session v$sessionWHEREWHERE sid= sid_number; sid= sid_number;

SELECTSELECT sql_text sql_textFROMFROM v$sqlarea v$sqlareaWHEREWHERE (address, hash_value) (address, hash_value) ININ

((SELECTSELECT sql_address, sql_address,sql_hash_valuesql_hash_value

FROMFROM v$session v$sessionWHEREWHERE sid= sid_number; sid= sid_number;

SQL Script “SQL2.SQL”SQL Script “SQL2.SQL”SQL Script “SQL2.SQL”SQL Script “SQL2.SQL”

Who is logged in to the database?

What SQL is used?

echo “Enter the database to connect to:”read DATABASEecho “Enter the password for the SYSTEM user:”stty -echoecho “Password:\c”read PASSWDstty echoecho “”sqlplus system/$PASSWD\@DATABASE << EOF

@sql1.sqlEOF

echo “Enter the database to connect to:”read DATABASEecho “Enter the password for the SYSTEM user:”stty -echoecho “Password:\c”read PASSWDstty echoecho “”sqlplus system/$PASSWD\@DATABASE << EOF

@sql1.sqlEOF

echo “Enter the SID for which SQL you wish to see:”read SID_NUMsqlplus system/$PASSWD@DATABASE << EOF

select sql_text from v$sqlareawhere (address, hash_value) in(select sql_addresss, sql_hash_valuefrom v$sessionWHERE sid = $SID_NUM)/EOF

echo “Enter the SID for which SQL you wish to see:”read SID_NUMsqlplus system/$PASSWD@DATABASE << EOF

select sql_text from v$sqlareawhere (address, hash_value) in(select sql_addresss, sql_hash_valuefrom v$sessionWHERE sid = $SID_NUM)/EOF

Page 9: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SELECTSELECT file_name, phyrds, phywrts, file_name, phyrds, phywrts, decode(phyrds,0,0,phyblkrd/phyrds) “Blocks/Read” decode(phyrds,0,0,phyblkrd/phyrds) “Blocks/Read” decode(phywrts,0,0,phyblkwrt/phywrts) “Blocks/Write” decode(phywrts,0,0,phyblkwrt/phywrts) “Blocks/Write”FROMFROM dba_data_files, v$filestat dba_data_files, v$filestatWHERE WHERE dba_data_files.file_id=v$filestat.file#dba_data_files.file_id=v$filestat.file#;;

FILE_NAME FILE_NAME PHYRDSPHYRDS PHYWRTSPHYWRTS BLOCKS/READBLOCKS/READ BLOCKS/WRITEBLOCKS/WRITE/u01/oradata/PRODDB/system01.dbf 10243 3478 4.928 1/u01/oradata/PRODDB/system01.dbf 10243 3478 4.928 1/u02/oradata/PRODDB/rbs01.dbf 1759 49649 1 1/u02/oradata/PRODDB/rbs01.dbf 1759 49649 1 1/u03/oradata/PRODDB/temp01.dbf 0 0 0 0/u03/oradata/PRODDB/temp01.dbf 0 0 0 0/u04/oradata/PRODDB/tools01.dbf 0 0 0 0/u04/oradata/PRODDB/tools01.dbf 0 0 0 0/u05/oradata/PRODDB/ctxdata01.dbf 187293 15846 1.959 1/u05/oradata/PRODDB/ctxdata01.dbf 187293 15846 1.959 1/u05/oradata/PRODDB/ctxdata02.dbf 455377 397 4 14. 258 1/u05/oradata/PRODDB/ctxdata02.dbf 455377 397 4 14. 258 1/u05/oradata/PRODDB/ctxindex01.dbf 332860 616291 1.248 1/u05/oradata/PRODDB/ctxindex01.dbf 332860 616291 1.248 1/u02/oradata/PRODDB/rbs02.dbf 91528 11593 6.130 1/u02/oradata/PRODDB/rbs02.dbf 91528 11593 6.130 1

What is my datafile activity like?What is my datafile activity like?

Page 10: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Which Rollback Segments Are Which Rollback Segments Are Being Used By Which User Being Used By Which User

Accounts?Accounts? “SET TRANSACTION USE ROLLBACK SEGMENT

rollback_segment_name” specifies a rollback segment to use. This is issued first, or immediately after COMMIT or ROLLBACK.

Use V$ROLLSTAT and V$ROLLNAME to get general rollback segment activity

Link V$ROLLNAME with V$LOCK and V$SESSION to determine which users are using which rollback segments.

More information on the users can be collected by further joining with the V$PROCESS view.

Page 11: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Which Rollback Segments Are Which Rollback Segments Are Being Used By Which User Being Used By Which User

Accounts?Accounts? When a user is doing rollback activity, Oracle creates

a latch (lock of type “TX”) on an extent of a rollback segment.

The USN (Unique Serial Number) of V$ROLLNAME links with V$LOCK’s ID1 column. The ID1 column contains the object id of the object (rollback segment) being locked.

The V$LOCK view contains a SID column which links to the SID column of V$SESSION.

The V$SESSION view links to the V$PROCESS view via the PADDR column.

Page 12: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

NAMENAMEUSNUSNNAMENAMEUSNUSN

Which Rollback Segments Are Which Rollback Segments Are Being Used By Which User Being Used By Which User

Accounts?Accounts?

V$ROLLNAMEV$ROLLNAMEV$ROLLNAMEV$ROLLNAME

ID1ID1SIDSIDTYPETYPELMODELMODE

ID1ID1SIDSIDTYPETYPELMODELMODE

V$LOCKV$LOCKV$LOCKV$LOCK

SIDSIDPADDRPADDRSIDSIDPADDRPADDR

V$SESSIONV$SESSIONV$SESSIONV$SESSIONADDRADDRPIDPIDSPIDSPIDUSERNAMEUSERNAMETERMINALTERMINAL

ADDRADDRPIDPIDSPIDSPIDUSERNAMEUSERNAMETERMINALTERMINAL

V$PROCESSV$PROCESSV$PROCESSV$PROCESS

NOTE: Only relevant columns are listed with tablesNOTE: Only relevant columns are listed with tables

Page 13: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

echo “Enter the password for the SYSTEM user:”echo “Enter the password for the SYSTEM user:”read PASSWDread PASSWDsqlplus system/$PASSWD << EOFsqlplus system/$PASSWD << EOFspool temp.lstspool temp.lstset head offset head offset pagesize 0set pagesize 0connect system\$PASSWD@DBNAMEconnect system\$PASSWD@DBNAME

SELECTSELECT to_char(rownum+3)||’) ‘||rpad(r.name,17)||rpad(to_char(p.pid),11) || to_char(rownum+3)||’) ‘||rpad(r.name,17)||rpad(to_char(p.pid),11) || rpad(s.sid,6)|| rpad(p.spid,11) || rpad(nvl(p.username,’NO TRANSACTION’),17) || rpad(s.sid,6)|| rpad(p.spid,11) || rpad(nvl(p.username,’NO TRANSACTION’),17) || rpad(p.terminal,8) rpad(p.terminal,8)FROMFROM v\$lock l, v\$process p, v\$rollname r, v\$session s v\$lock l, v\$process p, v\$rollname r, v\$session sWHEREWHERE l.sid = s.sid (+) l.sid = s.sid (+) ANDAND p.addr = s.paddr p.addr = s.paddr ANDAND l.type(+)=‘TX’ l.type(+)=‘TX’ ANDAND l.lmode(+)=6 l.lmode(+)=6 ANDAND trunc(l.idl1(+)/65536)=r.usn trunc(l.idl1(+)/65536)=r.usnUNIONUNIONSELECTSELECT ‘2) ROLLBACK SEG;ORACLE PID; SYSTEM PID; SID; TRANSACTION; ‘2) ROLLBACK SEG;ORACLE PID; SYSTEM PID; SID; TRANSACTION; TERMINAL’TERMINAL’FROMFROM dual dualUNIONUNION SELECTSELECT ‘1) ‘ ‘1) ‘ FROMFROM dual dualUNIONUNION SELECTSELECT ‘3) ---------------- ---------- ---------- ----------- --------’ ‘3) ---------------- ---------- ---------- ----------- --------’ FROMFROM dual dualORDERORDER BY 1; BY 1;EOFEOF

Which Rollback Segments Are Which Rollback Segments Are Being Used By Which User Being Used By Which User

Accounts?Accounts?

Page 14: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Below is a sample output from the preceding SQL:Below is a sample output from the preceding SQL:

1)1)2) ROLLBACK SEGMENT; ORACLE PID; SYSTEM PID; SID; TRANSACTION; 2) ROLLBACK SEGMENT; ORACLE PID; SYSTEM PID; SID; TRANSACTION; TERMINALTERMINAL3)------------------------- --------------- --------------- ---- ----------------- ------------3)------------------------- --------------- --------------- ---- ----------------- ------------4) R014) R01 70 1632 14 oracle ? 70 1632 14 oracle ?5) BIG_ROLL 65 1492 21 oracle5) BIG_ROLL 65 1492 21 oracle ? ?

Which Rollback Segments Are Which Rollback Segments Are Being Used By Which User Being Used By Which User

Accounts?Accounts?

Page 15: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

What Has The Largest Number What Has The Largest Number Of Concurrent Users Been?Of Concurrent Users Been?

set pagesize 24set pagesize 24

set linesize 100set linesize 100

SELECTSELECT rpad(c.name||’:’,11)||chr(9)||chr(9)||rpad(c.name||’:’,11)||chr(9)||chr(9)||

rpad(‘ current logons=‘||(to_number(b.sessions_current)-rpad(‘ current logons=‘||(to_number(b.sessions_current)-

1),20)||chr(10)||1),20)||chr(10)||

‘‘cumulative logons=‘||rpad(substr(a.value,1,12),12)||chr(9)||cumulative logons=‘||rpad(substr(a.value,1,12),12)||chr(9)||

‘‘highwater mark=‘||b.sessions_highwater||chr(9)highwater mark=‘||b.sessions_highwater||chr(9)

FROMFROM v$sysstat a, v$license b, v$database cv$sysstat a, v$license b, v$database c

WHEREWHERE a.name = ‘logons cumulative’;a.name = ‘logons cumulative’;

Page 16: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

PINDB: current logons=298 PINDB: current logons=298 cumulative logons=7967 highwater cumulative logons=7967 highwater mark=391mark=391

Output from the preceding SQL:

What Has The Largest Number What Has The Largest Number Of Concurrent Users Been?Of Concurrent Users Been?

Page 17: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

What Has The Largest Number What Has The Largest Number Of Concurrent Users Been?Of Concurrent Users Been?

export LOGDIR=$ORACLE_HOME/udump

echo “Enter the password for the SYSTEM user:”read PASSWDfor SID in PRODDB TESTDB TRAINDB DEVDBdosqlplus system/$PASSWD@$SID << EOF >> $LOGDIR/temp_users.lstset linesize 100SELECT rpad(c.name||’:’,11)||chr(9)||chr(9)||

rpad(‘ current logons=‘||(to_number(b.sessions_current)-1),20)||chr(10)||

‘cumulative logons=‘||rpad(substr(a.value,1,12),12)||chr(9)||

‘highwater mark=‘||b.sessions_highwater||chr(9)

FROM v\$sysstat a, v\$license b, v\$database c

WHERE a.name = ‘logons cumulative’;

EOFdonecat $LOGDIR/temp_users.lst |grep “LOG” > $LOGDIR/archive`date “+%m%d”`.logrm $LOGDIR/temp_users.lst

Loop through four databases

Page 18: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

PRODDB: current logons=298 cumulative logons=7967 highwater PRODDB: current logons=298 cumulative logons=7967 highwater mark=391mark=391TESTDB: current logons=15 cumulative logons=187 highwater mark=15TESTDB: current logons=15 cumulative logons=187 highwater mark=15TRAINDB: current logons=8 cumulative logons=613 highwater mark=25TRAINDB: current logons=8 cumulative logons=613 highwater mark=25DEVDB: current logons=23 cumulative logons=1024 highwater mark=30DEVDB: current logons=23 cumulative logons=1024 highwater mark=30

Output from the preceding SQL for four databases:

What Has The Largest Number What Has The Largest Number Of Concurrent Users Been?Of Concurrent Users Been?

Page 19: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Which Locks Are Being Which Locks Are Being Held?Held?-- V$LOCK -- V$LOCK holds information on internal Oracle locks.holds information on internal Oracle locks.

-- -- Six views show information more clearly:Six views show information more clearly:

DBA_LOCK: DBA_LOCK: locks held and locks requested;is locks held and locks requested;is blocking?blocking?

DBA_LOCK_INTERNAL: DBA_LOCK_INTERNAL: locks held and locks locks held and locks requestedrequested

DBA_DML_LOCKS: DBA_DML_LOCKS: DML locks (subset of DBA_LOCK)DML locks (subset of DBA_LOCK)

DBA_DDL_LOCKS: DBA_DDL_LOCKS: DDL locks (subset of DBA_LOCK)DDL locks (subset of DBA_LOCK)

DBA_WAITERS: DBA_WAITERS: which sessions are holding and which sessions are holding and waiting for locks?waiting for locks?

DBA_BLOCKERS: DBA_BLOCKERS: which sessions are holding locks which sessions are holding locks but are not waiting on another lock themselves?but are not waiting on another lock themselves?

-- -- These are created by the These are created by the $ORACLE_HOME/rdbms/admin/catblock.sql $ORACLE_HOME/rdbms/admin/catblock.sql scriptscript

---- Use Use $ORACLE_HOME/rdbms/admin/utllockt.sql $ORACLE_HOME/rdbms/admin/utllockt.sql to analyze to analyze these views.these views.

Page 20: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SELECT * FROM DBA_LOCK;SELECT * FROM DBA_LOCK;SESSION_ID TYPE MODE_HELD SESSION_ID TYPE MODE_HELD MODE_REQUESTEDMODE_REQUESTED--------------- ------------------- --------------- -------------------------------------- ------------------- --------------- -----------------------LOCK_ID1 LOCK_ID2 LAST_CONVERT LOCK_ID1 LOCK_ID2 LAST_CONVERT BLOCKING_OTHERSBLOCKING_OTHERS------------ ------------ ------------------ ------------ ------------ ------------------ ------------------------------------------------2 Media Recovery Share None2 Media Recovery Share None212 0 113054 Not 212 0 113054 Not BlockingBlocking

4 Redo Thread Exclusive None4 Redo Thread Exclusive None1 0 0 Not 1 0 0 Not BlockingBlocking

310 Transaction Exclusive None310 Transaction Exclusive None196612 399886 123 Not 196612 399886 123 Not BlockingBlocking

310 DML Row-X (SX) None310 DML Row-X (SX) None438580 0 123 Not 438580 0 123 Not BlockingBlocking

Which Locks Are Being Which Locks Are Being Held?Held?

Page 21: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Which Locks Are Being Held?Which Locks Are Being Held?

The previous views can be neatly arranged with the $ORACLE_HOME/rdbms/admin/utllockt.sql script.

The utllockt.sql script creates two temporary tables: LOCK_HOLDERS and DBA_LOCKS_TEMP

DBA_LOCKS_TEMP is created to improve performance over using the slower DBA_LOCKS view.

Output uses the CONNECT BY and START WITH clauses to make a hierarchical tree structure.

The highest level in the tree is where HOLDING_SESSION is null.

Page 22: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SELECTSELECT lpad(‘ ‘,3*level-1)) || waiting_sessions lpad(‘ ‘,3*level-1)) || waiting_sessions “WAITING SESSION”, “WAITING SESSION”, lock_type, mode_requested, mode_held, lock_type, mode_requested, mode_held, lock_id1, lock_id2 lock_id1, lock_id2FROMFROM lock_holders lock_holdersCONNECT BY PRIORCONNECT BY PRIOR waiting_session=holding_sessionwaiting_session=holding_session

START WITH holding_session IS NULL; START WITH holding_session IS NULL;WAITING_ LOCK_ MODE_ MODE_ LOCK_ WAITING_ LOCK_ MODE_ MODE_ LOCK_ LOCK_LOCK_SESSION TYPE REQUESTED HELD ID1 ID2SESSION TYPE REQUESTED HELD ID1 ID2

---------- ------- ------------- ------- -------- ---------------- ------- ------------- ------- -------- ------133 None133 None 319 Transaction Exclusive Exclusive 196613 406415 319 Transaction Exclusive Exclusive 196613 406415

Which Locks Are Being Which Locks Are Being Held?Held?

Page 23: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

NAMENAMESTATISTIC#STATISTIC#CLASSCLASS

NAMENAMESTATISTIC#STATISTIC#CLASSCLASS

Which Users Have Hogged Up Which Users Have Hogged Up The Most CPU Usage?The Most CPU Usage?

V$STATNAMEV$STATNAMEV$STATNAMEV$STATNAME

PROGRAMPROGRAMTYPETYPESQL_ADDRESSSQL_ADDRESSSQL_HASH_VALUESQL_HASH_VALUEMODULEMODULEMODULE_HASHMODULE_HASHACTIONACTIONACTION_HASHACTION_HASHCLIENT_INFOCLIENT_INFOFIXED_TABLE_SEQUENCEFIXED_TABLE_SEQUENCEROW_WAIT_OBJ#ROW_WAIT_OBJ#ROW_WAIT_FILE#ROW_WAIT_FILE#ROW_WAIT_BLOCK#ROW_WAIT_BLOCK#ROW_WAIT_ROW#ROW_WAIT_ROW#LOGON_TIMELOGON_TIMELAST_CALL_ETLAST_CALL_ETPDML_ENABLEDPDML_ENABLEDFAILOVER_TYPEFAILOVER_TYPEFAILOVER_METHODFAILOVER_METHODFAILED_OVERFAILED_OVER

PROGRAMPROGRAMTYPETYPESQL_ADDRESSSQL_ADDRESSSQL_HASH_VALUESQL_HASH_VALUEMODULEMODULEMODULE_HASHMODULE_HASHACTIONACTIONACTION_HASHACTION_HASHCLIENT_INFOCLIENT_INFOFIXED_TABLE_SEQUENCEFIXED_TABLE_SEQUENCEROW_WAIT_OBJ#ROW_WAIT_OBJ#ROW_WAIT_FILE#ROW_WAIT_FILE#ROW_WAIT_BLOCK#ROW_WAIT_BLOCK#ROW_WAIT_ROW#ROW_WAIT_ROW#LOGON_TIMELOGON_TIMELAST_CALL_ETLAST_CALL_ETPDML_ENABLEDPDML_ENABLEDFAILOVER_TYPEFAILOVER_TYPEFAILOVER_METHODFAILOVER_METHODFAILED_OVERFAILED_OVER

V$SESSIONV$SESSIONV$SESSIONV$SESSION

SIDSIDSTATISTIC#STATISTIC#VALUEVALUE

SIDSIDSTATISTIC#STATISTIC#VALUEVALUE

V$SESSTATV$SESSTATV$SESSTATV$SESSTATSADDRSADDR

SIDSIDSERIAL#SERIAL#AUDSIDAUDSIDPADDRPADDRUSER#USER#

USERNAMEUSERNAMECOMMANDCOMMANDOWNERIDOWNERIDTADDRTADDRLOCKWAITLOCKWAITSTATUSSTATUSSERVERSERVERSCHEMA#SCHEMA#SCHEMANAMESCHEMANAMEOSUSEROSUSERPROCESSPROCESSMACHINEMACHINETERMINALTERMINAL

SADDRSADDR

SIDSIDSERIAL#SERIAL#AUDSIDAUDSIDPADDRPADDRUSER#USER#

USERNAMEUSERNAMECOMMANDCOMMANDOWNERIDOWNERIDTADDRTADDRLOCKWAITLOCKWAITSTATUSSTATUSSERVERSERVERSCHEMA#SCHEMA#SCHEMANAMESCHEMANAMEOSUSEROSUSERPROCESSPROCESSMACHINEMACHINETERMINALTERMINAL

like ‘%CPU used by this session%’

Page 24: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SELECTSELECT substr(sn.name,1,30) parameter, substr(sn.name,1,30) parameter, ss.username ||’ (’|| se_sid ||’) ‘ user_process, se.value ss.username ||’ (’|| se_sid ||’) ‘ user_process, se.valueFROMFROM v$session ss, v$sesstat se, v$statname sn v$session ss, v$sesstat se, v$statname snWHERE WHERE se. statistic# = sn.statistic# se. statistic# = sn.statistic# ANDAND

sn.name sn.name LIKELIKE ‘%CPU used by this session%’ ‘%CPU used by this session%’ ANDAND se.sid=ss.sid se.sid=ss.sidORDER BYORDER BY sn.name, se_value sn.name, se_value DESC;DESC;PARAMETER USER_PROCESS VALUEPARAMETER USER_PROCESS VALUE-------------------------------- ------------------------ ----------------------------------------------- ------------------------ ---------------CPU used by this session OLAP_MAN (390) 15230CPU used by this session OLAP_MAN (390) 15230CPU used by this session PIN (35) 4324CPU used by this session PIN (35) 4324CPU used by this session OPERATOR (17) 157CPU used by this session OPERATOR (17) 157CPU used by this session SYS (11) 0CPU used by this session SYS (11) 0

Which Users Have Hogged Up Which Users Have Hogged Up The Most CPU Usage?The Most CPU Usage?

Page 25: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SVRMGRL>SVRMGRL> ARCHIVE LOG LIST; ARCHIVE LOG LIST;Database log modeDatabase log mode No Archive ModeNo Archive ModeAutomatic archivalAutomatic archival DisabledDisabledArchive DestinationArchive Destination ?/dbs/arch?/dbs/archOldest online log sequenceOldest online log sequence 45254525Current log sequenceCurrent log sequence 45284528

What Is The Archiving Status Of What Is The Archiving Status Of The Database?The Database?

Why is archiving important?What happens when the archive volume fills up?How do you find the archiving status?How do you turn on archiving?

Page 26: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

SELECTSELECT ‘NAME=‘|| a.name, ‘LOG_MODE=‘|| a.log_mode, ‘NAME=‘|| a.name, ‘LOG_MODE=‘|| a.log_mode, ‘LOG_ARCHIVE_START=‘|| b.value, ‘LOG_ARCHIVE_START=‘|| b.value, ‘LOG_ARCHIVE_DEST=‘|| c.value, ‘LOG_ARCHIVE_DEST=‘|| c.value, ‘LOG_ARCHIVE_FORMAT=‘|| d.value ‘LOG_ARCHIVE_FORMAT=‘|| d.valueFROMFROM v$database a, v$parameter b, v$parameter c, v$database a, v$parameter b, v$parameter c, v$parameter d v$parameter dWHERE WHERE b.name=‘log_archive_start’ b.name=‘log_archive_start’ ANDAND c.name=‘log_archive_dest’ c.name=‘log_archive_dest’ ANDAND d.name=‘log_archive_format’ d.name=‘log_archive_format’;;NAME=PINDBNAME=PINDBLOG_MODE=NOARCHIVELOGLOG_MODE=NOARCHIVELOGLOG_ARCHIVE_START=TRUELOG_ARCHIVE_START=TRUELOG_ARCHIVE_DEST=/u01/oracle/product/8.0.3/dbs/archLOG_ARCHIVE_DEST=/u01/oracle/product/8.0.3/dbs/archLOG_ARCHIVE_FOMAT=_%s_%t.logLOG_ARCHIVE_FOMAT=_%s_%t.log

What Is The Archiving Status Of What Is The Archiving Status Of The Database?The Database?

Page 27: Life Without Tools: Monitoring Database Activity With The Power Of SQL Ari Kaplan Independent Consultant

Where to Now?Where to Now? There are many discussion Newsgroups on the internet for you to give There are many discussion Newsgroups on the internet for you to give

questions and get answers:questions and get answers:

comp.databases.oracle.servercomp.databases.oracle.server

comp.databases.oracle.toolscomp.databases.oracle.tools

comp.databases.oracle.misccomp.databases.oracle.misc

These can be accessed through a newsgroup program or “These can be accessed through a newsgroup program or “www.deja.comwww.deja.com””

Ari’s free Oracle Tips web page at:Ari’s free Oracle Tips web page at:

There are over 370 tips and answers to questions that have been posed to There are over 370 tips and answers to questions that have been posed to me over the years. This paper will be downloadable from the web page as me over the years. This paper will be downloadable from the web page as well.well.

Other good sites with links: Other good sites with links: www.orafaq.org, www.orafans.com, www.orafaq.org, www.orafans.com, www.ioug.org, www.orasearch.com, www.revealnet.comwww.ioug.org, www.orasearch.com, www.revealnet.com