-- With time (RAC version)
col "Sid Serial#" for a15
col "Logon time" for a20
col spid for a6
select b.sid||','||b.serial# as "Sid Serial#", a.inst_id, b.status,
a.spid, to_char(b.logon_time, 'dd Mon yyyy, hh24:mi') as "Logon time", b.client_info
from gv$process a, gv$session b
where a.addr=b.paddr and a.inst_id = b.inst_id and lower(client_info) like '%rman%';
-- Basic and (Non-RAC)
select b.sid, b.serial#, a.spid, b.client_info
from v$process a, v$session b where a.addr=b.paddr and client_info like '%rman%';
Tuesday, 19 March 2019
RMAN session / rman longops
Wednesday, 13 March 2019
Is database standby
Quick check to see if the instance is standby or primary?
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> select controlfile_type from V$database;
CONTROL
-------
STANDBY
Useful sql
select to_char(max(next_time),'dd Mon yyyy hh24:mi:ss') from v$archived_log where applied = 'YES';
TO_CHAR(MAX(NEXT_TIME),'DDMON
-----------------------------
05 Mar 2019 07:24:02
alter session set nls_date_format='dd Mon yyyy hh24:mi:ss';
select * from (
SELECT FIRST_TIME, NEXT_TIME, SEQUENCE# FROM V$ARCHIVED_LOG ORDER BY SEQUENCE# desc) where rownum < 6 order by SEQUENCE#;
FIRST_TIME NEXT_TIME SEQUENCE#
----------------------------- ----------------------------- ----------
05 Feb 2019 06:39:02 05 Feb 2019 06:54:02 213003
05 Feb 2019 06:54:02 05 Feb 2019 07:09:02 213004
05 Feb 2019 07:09:02 05 Feb 2019 07:24:02 213005
05 Feb 2019 07:24:02 05 Feb 2019 07:39:02 213006
05 Feb 2019 07:39:02 05 Feb 2019 07:54:02 213007
Tuesday, 12 March 2019
Kill session
-- Current session
alter system kill session '213,98643';
alter system kill session '777,56244,@1';
-- Kill session from another instance
alter system kill session '66,64486,@2';
alter system kill session '66,64486' IMMEDIATE;
Wednesday, 16 January 2019
Schema Last analysed | Stale Stats
-- Summary of stale
select stale_stats, count(*) from user_tab_statistics group by stale_stats;
STA COUNT(*)
--- ----------
414
NO 2582
YES 199
select TABLE_NAME, STALE_STATS from user_tab_statistics where stale_stats = 'YES';
Wednesday, 17 October 2018
SQL for RAC db
RAC sql
RAC Instances, DB instances, instance status, List of all instances, with startup time, up till, host load.
Current Transaction for RAC
Session Wait for RAC
Sessions connected for RAC
Locks (Holder/Waiter) for RAC
col host_name for a16
select i.instance_number, i.host_name, i.instance_name,
to_char(startup_time, 'DD Mon YYYY HH24:Mi') startup_time,
floor(sysdate - startup_time) uptill, i.status, round(o.value, 3) value
from gv$instance i, gv$osstat o
where i.instance_number = o.inst_id
and o.stat_name = 'LOAD' order by instance_number;
-- e.g.
INSTANCE_NUMBER HOST_NAME INSTANCE_NAME STARTUP_TIME UPTILL STATUS VALUE
--------------- ---------------- ---------------- -------------------------- ---------- ------------ ----------
1 proddbx00101 dex011 12 Feb 2018 02:52 247 OPEN 15.979
2 proddbx00102 dex012 12 Feb 2018 05:25 247 OPEN 18
3 proddbx00103 dex013 12 Feb 2018 07:23 247 OPEN 21.59
4 proddbx00104 dex014 12 Feb 2018 09:37 247 OPEN 19.079
Current Transaction for RAC
set line 250
col "username_sid_inst" for a35
select s.username||'('||s.sid||', '||s.inst_id||')' username_sid_inst,s.sid,t.start_time,
t.used_ublk as "Block Count", round(t.used_ublk*8192/1024/1024,2) Size_MB
from gv$transaction t,gv$session s where s.saddr=t.ses_Addr and t.inst_id=s.inst_id order by start_time;
Session Wait for RAC
set line 250
col username for a24
col event for a45
col 'FileId# Obj#' for a16
select s.inst_id, s.username, s.row_wait_file# ||', '|| s.ROW_WAIT_OBJ# as "FileId# Obj#",
s.sql_hash_value, sw.event, sw.wait_time, sw.seconds_in_wait, sw.state
from gv$session s, gv$session_wait sw
where s.sid = sw.sid and s.inst_id = sw.inst_id and sw.wait_time != 0
order by s.inst_id, s.username;
Sessions connected for RAC
-- Group by User (Summary)
select s.username, count(*) from gv$session s
group by s.username order by s.username;
-- Group by Instance, User
select s.inst_id, s.username, count(*)
from gv$session s
group by s.inst_id, s.username
order by s.inst_id, s.username;
Locks (Holder/Waiter) for RAC
column sess format A20
select substr(DECODE(request,0,'Holder: ','Waiter: ')||sid||' ('||inst_id||')',1,18) sess,
id1, id2, lmode, request, type, to_char(to_date(ctime,'sssss'),' hh24:mi:ss') time_h_m_s
from gv$lock
where (id1, id2, type) IN
(select id1, id2, type from gv$lock where request>0)
order by id1, request, ctime desc;
Thursday, 4 October 2018
PDB DBA user
create user c##dbareadonly identified by urdbapa55 container=all;
grant create session to c##dbateam container=all;
grant set container to c##dbateam container=all;
grant select_catalog_role to c##dbateam container=all;
alter user c##dbateam set container_data=all container = current;
Above (last line is important, otherwise dba user can't select * from v$pdbs, can't select from pdb views)
Favorite SQL for session waits
Session waits
col "FileId# Obj#" for a18
col event for a42
select s.inst_id, s.username, s.row_wait_file# ||', '|| s.ROW_WAIT_OBJ# as "FileId# Obj#", s.sql_hash_value, sw.event, sw.wait_time, sw.seconds_in_wait, sw.state
from gv$session s, gv$session_wait sw
where s.sid = sw.sid and s.inst_id = sw.inst_id and sw.wait_time != 0 order by s.inst_id, s.username
Other related, or common sql
-- Current Transaction
col "username_sid" for a35
select s.username||'('||s.sid||')' username_sid,s.sid,t.start_time,t.used_ublk as "Block Count",
round(t.used_ublk*8192/1024/1024,2) Size_MB
from v$transaction t,v$session s where s.saddr=t.ses_Addr order by start_time;
-- Long OPS
select sid, serial#, context, sofar, totalwork, target, sql_hash_value,
round(sofar/totalwork*100,2) "%_COMPLETE", opname, to_char(start_time, 'DD Mon YYYY - HH24:MI') start_time,
round(time_remaining/60) tr, to_char(last_update_time, 'DD Mon YYYY - HH24:MI') last_update_time
from v$session_longops
where totalwork != 0 and sofar <> totalwork
order by start_time;
SQL from hash value, SQL hash
set line 200
select * from v$sql where hash_value = 9999999;
select sq.sql_text from v$sqltext_with_newlines sq
where sq.hash_value = 9999999
order by sq.piece
SELECT s.username, sl.sid, sq.executions, sl.last_update_time, sl.sql_id, sl.sql_hash_value,
opname, target, elapsed_seconds, time_remaining, sq.sql_fulltext
FROM v$session_longops sl
INNER JOIN v$sql sq ON sq.sql_id = sl.sql_id
INNER JOIN v$session s ON sl.SID = s.SID AND sl.serial# = s.serial#
WHERE time_remaining > 0
SQL from pid / session from Process Id / Session Id
set line 200
col schemaname for a20
col host_name for a20
col program for a16
col pprogram for a20
col machine for a20
col com for a10
-- PID version
select p.spid, s.schemaname, s.sid, s.serial#, s.status, s.machine, s.program,
p.program pprogram, s.sql_hash_value, s.sql_id, s.prev_sql_id,
decode(command, 2, 'INSERT', 3, 'SELECT', 6, 'UPDATE', 7, 'DELETE', 47,
'PL/SQL EXE', command) com , i.host_name, i.instance_name
from v$session s, v$process p, v$instance i
where s.paddr = p.addr
and p.spid = 22844;
-- SID version
col "Sid_Ser#_SqlHash"for a24
select p.spid, s.schemaname, s.sid||','||s.serial#||' ['||s.sql_hash_value||']' as "Sid_Ser#_SqlHash", s.status,
s.machine, s.program, p.program pprogram, s.sql_id, s.prev_sql_id,
decode(command, 2, 'INSERT', 3, 'SELECT', 6, 'UPDATE', 7, 'DELETE', 47,
'PL/SQL EXE', command) com , i.host_name, i.instance_name
from v$session s, v$process p, v$instance i
where s.paddr = p.addr
and s.sid = 2790;
Subscribe to:
Posts (Atom)