Siebel SQLs/Error Messages > Overall Siebel Performance check SQLs
Overall Siebel Performance check SQLs
Here are some Siebel SQLS to check overall Siebel Performance
You might need DBA privileges or might need to log in as Siebel in database for some SQLS.
1.Long running SQLs:
SET DEFINE OFF; alter session set NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi:ss';
select s.LAST_CALL_ET,s.SQL_HASH_VALUE, s.SQL_ID, s.sid, s.serial#, p.spid, s.username, s.schemaname, s.blocking_session,s.seconds_in_wait, s.program, s.terminal, s.osuser from v$session s join v$process p on s.paddr = p.addr where s.type != 'BACKGROUND' and s.LAST_CALL_ET > 4000; Take the hash value and run this SQL next.
select * from v$session where sql_hash_value = 'HASHVALNUMMER'; select t.SQL_TEXT from v$sqltext t where t.HASH_VALUE = 'HASHVALNUMMER' order by t.PIECE;
2. Blocking sessions:
select blocking_session, sid, serial#, wait_class, seconds_in_wait from v$session where blocking_session is not NULL order by blocking_session; --or select * from v$lock where block=1;select count(*) from gv$lock where block=1;select sid from v$lock where block=1;
Which session is blocked?
select (select username from v$session where sid=a.sid) blocker, a.sid,' is blocking ',(select username from v$session where sid=b.sid) blockee,b .sid from v$lock a, v$lock b where a.block = 1 and b.request > 0 and a.id1 = b.id1 and a.id2 = b.id2; SQL from this session: SELECT a.sql_text, b.sql_hash_value FROM v$sqltext a, v$session b WHERE a.address = b.sql_address AND a.hash_value = b.sql_hash_value AND b.sid = 'von letztes SQL' ORDER BY a.piece;
More Details
select distinct a.sid "waiting sid" , d.sql_text "Warten SQL" , a.ROW_WAIT_OBJ# "Locked Objekt" , a.BLOCKING_SESSION "Blocking sid" , c.sql_text "SQL von blocking session" from v$session a, v$active_session_history b, v$sql c, v$sql d where a.event='enq: TX - row lock contention' and a.sql_id=d.sql_id and a.blocking_session=b.session_id and c.sql_id=b.sql_id and b.CURRENT_OBJ#=a.ROW_WAIT_OBJ# and b.CURRENT_FILE#= a.ROW_WAIT_FILE# and b.CURRENT_BLOCK#= a.ROW_WAIT_BLOCK#; und
select spid from v$process where background is null and addr in (select paddr from v$session where sid='session_id'); select s.username, s.status, s.sid, s.serial#, p.spid, s.machine, s.process, s.lockwait from v$session s, v$process p where s.process = 'Process ID' and s.paddr = p.addr;
3. Check with this SQL if there was any Siebel crash.
select SRVR_host_name, srvr_error_msg,srvr_user_name,srvr_comp_name, srvr_task_id_val, srvr_proc_id_val,created from siebel.s_srm_task_hist where srvr_status = 'ERROR' and created > sysdate -1 ; 4. Errors in Siebel with Objects (Account, Sub Account, Opportunities, Orders)?
The logs are in 3 Tables : S_SRM_REQUEST, S_SRM_DATA und S_AUDIT_ITEM
SELECT sr.action_id, sr.COMPLETION_TEXT, sd.data_val , sr.resp_text FROM SIEBEL.S_SRM_REQUEST sr, SIEBEL.S_SRM_DATA sd WHERE sr.ROW_ID = sd.PAR_ID and (sd.data_val like '%Row_id from Object%' or sr.resp_text like '%Row_id from Object%') AND sr.STATUS = 'ERROR' --AND sr.EXEC_SRVR_NAME = 'Servername'; 5. Laufende SQLs in Siebel (sofort):
select a.event, a.WAIT_TIME, b.username,b.SQL_HASH_VALUE,c.SQL_TEXT from v$session_wait a, v$session b, v$sqltext c where a.sid=b.SID and a.event <> 'SQL*Net message from client' and a.event <> 'SQL*Net message to client' and a.event <> 'rdbms ipc message' and a.event not like '%idle wait' and b.username is not null and c.hash_value = b.sql_hash_value;
Which SQLs ran in the last 2 hours?
select a.parsing_schema_name, round(a.CPU_TIME_DELTA/86400) as Zeit_Sekunde , a.module, round(a.elapsed_time_total/(disk_reads_total*86400)) as Durchschnitt_Seit, b.SQL_FULLTEXT from DBA_HIST_SQLSTAT a, v$sql b , dba_hist_snapshot c where a.disk_reads_total > 0 and c.begin_interval_time >= (sysdate-2/24) and a.sql_id = b.SQL_ID and a.snap_id = c.SNAP_ID and a.PARSING_SCHEMA_NAME not in ('SYS','NEGMON');
6. Workflow errors in the last 2 hours:
SELECT b.NAME,a.ROW_ID,a.CREATED,a.LAST_UPD,a.START_TS,a.CURR_STEP_NAME,a.DB_LAST_UPD_SRC,a.ROOT_INST_ID_VAL,a.SRM_REQ_ID,a.STATUS_CD,a.WORKITEM_ID FROM SIEBEL.S_WFA_instance a, SIEBEL.S_WFA_DPLOY_def b WHERE a.DEFINITION_ID = b.ROW_ID AND a.STATUS_CD = 'ERROR' AND a.CREATED >= (SYSDATE - 2/24); 7. Which Worklows executed and executed successfully :
select count(*),a.name from siebel.S_WFA_DEFN_LOG a,siebel.S_WFA_INST_LOG b where b.definition_id = a.row_id and a.deploy_status_cd = 'ACTIVE'and b.status_cd='COMPLETED' AND b.created >= SYSDATE -1 group by a.name;
8. Active Webservices and URL
select name, NAMESPACE, CASE INBOUND_FLG when 'Y' then 'Eingehende' when 'N' then 'Ausgehende' END from siebel.S_WS_WEBSERVICE where status_cd = 'ACTIVE';
9. Errors in Siebel Components in the last 6 hours
SELECT Count(*),srvr_comp_name FROM SIEBEL.S_SRM_TASK_HIST WHERE srvr_status <> 'SUCCESS' AND created >= (SYSDATE - 1/4) group by srvr_comp_name ;
10. Tasks per Component in the last 6 hours
SELECT Count(*),srvr_comp_name FROM SIEBEL.S_SRM_TASK_HIST WHERE created >= (SYSDATE - 1/4) GROUP BY srvr_comp_name;
11. Workflow in Repository in Status 'Completed' but not active
SELECT count(*), PROC_NAME FROM (
SELECT wp.PROC_NAME from siebel.S_WFR_PROC wp where 1=1 and wp.STATUS_CD='COMPLETED' and wp.repository_id=(select r.row_id from siebel.s_repository r where r.name='Siebel Repository')
minus select wdd.name from siebel.S_WFA_DPLOY_DEF wdd where 1=1 ) GROUP BY proc_name;
|