0% found this document useful (0 votes)
12 views15 pages

Tuning BST

The document contains various SQL queries for monitoring and managing an Oracle database. It includes commands for checking active sessions, tablespace usage, block locks, deadlocks, and CPU usage, among others. The queries are structured to provide insights into database performance and resource utilization.

Uploaded by

Shiv An
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views15 pages

Tuning BST

The document contains various SQL queries for monitoring and managing an Oracle database. It includes commands for checking active sessions, tablespace usage, block locks, deadlocks, and CPU usage, among others. The queries are structured to provide insights into database performance and resource utilization.

Uploaded by

Shiv An
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 15

Active :

break on sid skip 1 on serial# on username on executions on status


column sid format 9999
column username format a12
column sql_text form a64

select a.sid,a.serial#,a.username,c.executions,status, b.sql_text


from v$session a
,v$sqltext b
,v$sqlarea c
where a.username is not null
and status='ACTIVE'
--and sid in (174)
and a.sql_address = b.address(+)
and a.sql_address = c.address(+)
order by status,1,2,b.piece;

All TBS :

set pages 999


col tablespace_name format a40
col "size MB" format 999,999,999
col "free MB" format 99,999,999
col "% Used" format 999
select tsu.tablespace_name, ceil(tsu.used_mb) "size MB"
, decode(ceil(tsf.free_mb), NULL,0,ceil(tsf.free_mb)) "free MB"
, decode(100 - ceil(tsf.free_mb/tsu.used_mb*100), NULL, 100,
100 - ceil(tsf.free_mb/tsu.used_mb*100)) "% used"
from (select tablespace_name, sum(bytes)/1024/1024 used_mb
from dba_data_files group by tablespace_name union all
select tablespace_name || ' **TEMP**'
, sum(bytes)/1024/1024 used_mb
from dba_temp_files group by tablespace_name) tsu
, (select tablespace_name, sum(bytes)/1024/1024 free_mb
from dba_free_space group by tablespace_name) tsf
where tsu.tablespace_name = tsf.tablespace_name (+)
order by 4
/

Last Analyzed :

set pagesize 999 linesize 120


select OWNER,TABLE_NAME,TABLESPACE_NAME,LAST_ANALYZED,NUM_ROWS from dba_tables
where OWNER=('&OWNER') order by LAST_ANALYZED asc;

Block Lock :

select a.serial#, a.sid, a.username, b.id1, c.sql_text


from v$session a, v$lock b, v$sqltext c
where b.id1 in
(select distinct e.id1
from v$session d, v$lock e
where d.lockwait = e.kaddr)
and a.sid = b.sid
and c.hash_value = a.sql_hash_value
and b.request = 0;

Block Wait Session :

set echo on
select /*+ ordered */ w1.sid waiting_session,
h1.sid holding_session,
w.kgllktype lock_or_pin,
w.kgllkhdl address,
decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
'Unknown') mode_held,
decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
'Unknown') mode_requested
from dba_kgllock w, dba_kgllock h, v$session w1, v$session h1
where
(((h.kgllkmod != 0) and (h.kgllkmod != 1)
and ((h.kgllkreq = 0) or (h.kgllkreq = 1)))
and
(((w.kgllkmod = 0) or (w.kgllkmod= 1))
and ((w.kgllkreq != 0) and (w.kgllkreq != 1))))
and w.kgllktype = h.kgllktype
and w.kgllkhdl = h.kgllkhdl
and w.kgllkuse = w1.saddr
and h.kgllkuse = h1.saddr
/

====Blocking session=========
select s1.username || '@' || s1.machine
|| ' ( SID=' || s1.sid || ' ) is blocking '
|| s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS
blocking_status
from v$lock l1, v$session s1, v$lock l2, v$session s2
where s1.sid=l1.sid and s2.sid=l2.sid
and l1.BLOCK=1 and l2.request > 0
and l1.id1 = l2.id1
and l2.id2 = l2.id2 ;

-- cache fusion query 1


col "AVG RECEIVE TIME (ms)" FORMAT 9999999.9
col inst_id format 9999

SELECT b1.inst_id, b2.value "RECEIVED", b1.value "RECEIVE TIME", ((b1.value /


b2.value) * 10) "AVG RECEIVE TIME (ms)"
FROM gv$sysstat b1, gv$sysstat b2
WHERE b1.name = 'gc cr block receive time'
AND b2.name = 'gc cr blocks received'
AND b1.inst_id = b2.inst_id;

-- cache fusion query 2


col "AVG RECEIVE TIME (ms)" format 9999999.9
col inst_id FORMAT 9999

SELECT b1.inst_id, b2.value "RECEIVED", b1.value "RECEIVE TIME", ((b1.value /


b2.value) * 10) "AVG RECEIVE TIME (ms)"
FROM gv$sysstat b1, gv$sysstat b2
WHERE b1.name = 'gc current block receive time'
AND b2.name = 'gc current blocks received'
AND b1.inst_id = b2.inst_id;

Check OS : SELECT dbms_utility.port_string from dual;

CHKDG :

set lines 150;


set pages 100;

@$HOME/dbname.sql

SELECT DATABASE_ROLE, DB_UNIQUE_NAME INSTANCE, OPEN_MODE, PROTECTION_MODE,


PROTECTION_LEVEL, SWITCHOVER_STATUS FROM V$DATABASE;

select max(sequence#),thread# from v$log_history group by thread# order by 2;

col status for a40;


SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

CHKPATCH :

SELECT comments, action_time,id "PATCH_NUMBER", version FROM sys.registry$history


WHERE action = 'APPLY';

CPU :

break on sid skip 1 on serial# on username on executions on status


column sid format 9999
column username format a12
column sql_text form a64
select a.sid,a.serial#,a.username,c.executions,status, b.sql_text
from v$session a
,v$sqltext b
,v$sqlarea c
where a.username is not null
and status='ACTIVE'
--and username in ('PAMPERS')
--and sid in (11, 20, 46, 110, 127, 134, 136, 170, 243)
--and sid in (174)
and a.sql_address = b.address(+)
and a.sql_address = c.address(+)
order by status,1,2,b.piece;

dbf:

set pages 500;


col file_name for a60;
select file_name,bytes/1024/1024 "Size in MB" from dba_data_files where
tablespace_name='&tablespace_name';
select sum(bytes)/1024/1024*5/100 "Need to add in MB" from dba_data_files where
tablespace_name='&tablespace_name';

dbm.sql

select 'REPORT TAKEN AT : '||to_char(sysdate,'MON-DD-YYYY HH24:MI') from dual;


Prompt ===========================
Prompt CONNECTED TO DATABASE
Prompt ===========================
Prompt

set linesize 130;


col LOGINS format a7
col HOST_NAME format a10
col VERSION format a10
col STARTUP_TIME format a20
col STATUS format a8
col DATABASE_STATUS format a16
col INSTANCE_NAME format a14
SELECT INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS,DATABASE_STATUS,LOGINS
FROM V$INSTANCE;

Prompt ====================
Prompt LOCK INFORMATION
Prompt ====================
Prompt

set head off;


select '--OBJECT LOCK DETAILS' from dual;
set head on;

SET PAGESIZE 1000


SET VERIFY OFF
set lines 120
col OBJECT_OWNER for a10
col OS_USER_NAME for a10
col USERNAME for a10
set pages 1000
col owner for a10
COLUMN object_name FORMAT A30
COLUMN locked_mode FORMAT A15

SELECT b.session_id AS sid,


NVL(b.oracle_username, '(oracle)') AS username,
a.owner AS object_owner,
a.object_name,
Decode(b.locked_mode, 0, 'None',
1, 'Null (NULL)',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share (S)',
5, 'S/Row-X (SSX)',
6, 'Exclusive (X)',
b.locked_mode) locked_mode,
b.os_user_name
FROM dba_objects a,
v$locked_object b
WHERE a.object_id = b.object_id
ORDER BY 1, 2, 3, 4;

set head off;


select '--CURRENT DEADLOCK INFORMATION' from dual;
set head on;
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid sess,
id1, id2, lmode, request, type
FROM V$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request ;

set head off;


select '--BLOCKING LOCK' from dual;
set head on;

select a.serial#, a.sid, a.username, b.id1, c.sql_text


from v$session a, v$lock b, v$sqltext c
where b.id1 in
(select distinct e.id1
from v$session d, v$lock e
where d.lockwait = e.kaddr)
and a.sid = b.sid
and c.hash_value = a.sql_hash_value
and b.request = 0;

set head off;


select '--BLOCKING SESSION DETAILS' from dual;
set head on;

select l1.sid, ' IS BLOCKING ', l2.sid


from v$lock l1, v$lock l2
where l1.block =1 and l2.request > 0
and l1.id1=l2.id1
and l1.id2=l2.id2;

Prompt ====================
Prompt SESSION INFORMATION
Prompt ====================
Prompt

set head off;


select '--ACTIVE SESSION COUNT' from dual;
set head on;

col "LogonTime" for a20


col machine for a15
col program for a35
set pages 10000
set lines 120

select username,count(*) from v$session where username not in ('SYS','SYSTEM') and


status='ACTIVE' group by username;

set head off;


select '-- INACTIVE SESSION COUNT' from dual;
set head on;

select username,count(*) from v$session where username not in ('SYS','SYSTEM') and


status='INACTIVE' group by username;
set head off;
select '-- DETAILED SESSION INFORMATION' from dual;
set head on;

set pagesize 999


set echo on
set linesize 150
column osuser format a10
column username format a10
column machine format a25
column status format a8
set define off
set verify off
set echo off
set heading off
select 'REPORT TIME: '||to_char(sysdate,'MON-DD-YYYY HH24:MI') from dual;
set heading on
select count(*) as Session_Count from v$session;
select username,status,count(*) from v$session group by username,status;
select osuser, username, machine, program, status, count(status)
from v$session
where service_name != 'SYS$BACKGROUND'
group by osuser, username, machine, program, status
order by osuser, username, machine, program, status;

set head off;


select '---LONG RUNNING QUERIES DETAILS' from dual;
set head on;

set linesize 120


col opname format a29
col target format a15
col units format a10
col time_remaining format 99990 heading Remaining[s]
col bps format 99999.99 heading [Units/s]
col fertig format 90.99 heading "complete[%]"
select sid,
opname,
target,
sofar,
totalwork,
(totalwork-sofar)/time_remaining bps,
time_remaining,
sofar/totalwork*100 fertig
from v$session_longops
where time_remaining > 0;

SELECT sess.inst_id, sess.SID, sess.serial#, sess.username, sess.program,


sess.logon_time, sq.elapsed_time/60000000 elapsed_time_mins
FROM gv$session sess, gv$sql sq
WHERE status = 'ACTIVE'
AND TYPE <> 'BACKGROUND'
and username not in ('SYS','DBMAINT')
AND (TO_CHAR (SYSDATE, 'HH24') - TO_CHAR (sess.logon_time, 'HH24')) >= 2
AND sess.sql_id = sq.sql_id
and sess.inst_id = sq.inst_id
AND (TO_CHAR (SYSDATE, 'HH24') - TO_CHAR (sq.last_active_time, 'HH24')) <= 2
AND sq.elapsed_time/60000000 > 120;

set head off;


select '---ACTIVITY BY DBMAINT' from dual;
set head on;

select a.sid, a.serial#, b.sql_text from v$session a,v$sqlarea b where


a.sql_address=b.address and a.username='DBMAINT';

set head off;


select '---ACTIVE SQL' from dual;
set head on;

break on sid skip 1 on serial# on username on executions on status


column sid format 9999
column username format a12
column sql_text form a64

select a.sid,a.serial#,a.username,c.executions,status, b.sql_text


from v$session a
,v$sqltext b
,v$sqlarea c
where a.username is not null
and status='ACTIVE'
and a.sql_address = b.address(+)
and a.sql_address = c.address(+)
order by status,1,2,b.piece;

Prompt =========================
Prompt TABLESPACE INFORMATION
Prompt =========================
Prompt

set head off;


select '-- TABLESPACES > 80% (CRITICAL)' from dual;
set head on;

set pages 999 lines 100


col "Tablespace" for a50
col "Size MB" for 999999999
col "%Used" for 999
col "Add (80%)" for 999999
select tsu.tablespace_name "Tablespace"
, ceil(tsu.used_mb) "Size MB"
, 100 - floor(tsf.free_mb/tsu.used_mb*100) "%Used"
, ceil((tsu.used_mb - tsf.free_mb) / .8) - tsu.used_mb "Add (80%)"
from (select tablespace_name, sum(bytes)/1024/1024 used_mb
from dba_data_files group by tablespace_name) tsu
, (select ts.tablespace_name
, nvl(sum(bytes)/1024/1024, 0) free_mb
from dba_tablespaces ts, dba_free_space fs
where ts.tablespace_name = fs.tablespace_name (+)
group by ts.tablespace_name) tsf
where tsu.tablespace_name = tsf.tablespace_name (+)
and 100 - floor(tsf.free_mb/tsu.used_mb*100) >= 80
order by 3,4
/

set head off;


select '-- TEMP TABLESPACE UTILIZATION' from dual;
set head on;

SELECT A.tablespace_name tablespace, D.mb_total,


SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;

select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS from v$sort_segment;

set head off;


select '-- UNDO TABLESPACE UTILIZATION' from dual;
set head on;

set pages 200


set lines 120
select t.tablespace_name,total_GB,(total_Gb-free_GB) used_GB,free_GB,
round(((total_GB-free_GB)/total_GB)*100,2) per_used,round((free_GB/total_GB)*100,2)
per_free from
(select tablespace_name,sum(bytes/1024/1024/1024) free_GB from dba_free_space group
by tablespace_name) f,
(select tablespace_name,sum(bytes/1024/1024/1024) total_GB from dba_data_files
group by tablespace_name) t
where f.tablespace_name(+)=t.tablespace_name and f.tablespace_name like '%UNDO%';

dbname :

set linesize 130;


col LOGINS format a7
col HOST_NAME format a10
col VERSION format a10
col STARTUP_TIME format a20
col STATUS format a8
col DATABASE_STATUS format a16
col INSTANCE_NAME format a14
SELECT INSTANCE_NAME,HOST_NAME,VERSION,STARTUP_TIME,STATUS,DATABASE_STATUS,LOGINS
FROM V$INSTANCE;
!date

dbversion :

set lines 125;


set pages 50;
col comp_name for a60;
SELECT comp_name, version, status FROM dba_registry;

deadlock :
SELECT DECODE(request,0,'Holder: ','Waiter: ')||sid sess,
id1, id2, lmode, request, type
FROM V$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request ;

glo.sql

column GLOBAL_NAME new_value _DB_NAME;


select substr(GLOBAL_NAME, 1, 20) CONNECTED_TO from global_name;

Inactive :

break on sid skip 1 on serial# on username on executions on status


column sid format 9999
column username format a12
column sql_text form a64

select a.sid,a.serial#,a.username,c.executions,status, b.sql_text


from v$session a
,v$sqltext b
,v$sqlarea c
where a.username is not null
and status='INACTIVE'
and sid=&SID
and a.sql_address = b.address(+)
and a.sql_address = c.address(+)
order by status,1,2,b.piece;

Inst :

set linesize 180


col HOST format a10
SELECT inst_id,
instance_number,
instance_name,
parallel,
status,
database_status,
active_state,
host_name host
FROM gv$instance
ORDER BY inst_id;

INVALID :

col owner for a20;


col object_name for a50;
col object_type for a30;
set lines 125;
set pages 500;
select count(*) from dba_objects where status='INVALID';
-- Details of Invalid objects :
select owner,object_name,object_type,status from dba_objects where
status='INVALID';

LC :

col blocker for a15


col blockee for a15
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
/

lg :

select sid,serial#,sql_address,to_char(logon_time,'DD-MON-YYYY HH24:MI:SS') "LOGGED


IN", osuser,status from V$session where sid=&SID;

log_gap :

SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received",


APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#)
"Current_Gap"
FROM (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;

log_ship:

SET PAGESIZE 124


SET HEAD OFF
COL DB_NAME FORMAT A8
COL HOSTNAME FORMAT A12
COL LOG_ARCHIVED FORMAT 999999
COL LOG_APPLIED FORMAT 999999
COL LOG_GAP FORMAT 9999
COL APPLIED_TIME FORMAT A12

SELECT DB_NAME, HOSTNAME, LOG_ARCHIVED, LOG_APPLIED,APPLIED_TIME,LOG_ARCHIVED-


LOG_APPLIED LOG_GAP
FROM (SELECT NAME DB_NAME FROM V$DATABASE),
(SELECT UPPER(SUBSTR(HOST_NAME,1,(DECODE(INSTR(HOST_NAME,'.'),0,LENGTH(HOST_NAME),
(INSTR(HOST_NAME,'.')-1))))) HOSTNAME FROM V$INSTANCE),
(SELECT MAX(SEQUENCE#) LOG_ARCHIVED FROM V$ARCHIVED_LOG WHERE DEST_ID=1 AND
ARCHIVED='YES'),
(SELECT MAX(SEQUENCE#) LOG_APPLIED FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND
APPLIED='YES'),
(SELECT TO_CHAR(MAX(COMPLETION_TIME),'DD-MON/HH24:MI') APPLIED_TIME
FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND APPLIED='YES');

Long :

set head off;


select '---long running queries details' from dual;
set head on;

set linesize 120


set pages 1000
col opname format a29
col target format a15
col units format a10
col time_remaining format 99990 heading Remaining[s]
col bps format 99999.99 heading [Units/s]
col fertig format 90.99 heading "complete[%]"
select sid,
opname,
target,
sofar,
totalwork,
(totalwork-sofar)/time_remaining bps,
time_remaining,
sofar/totalwork*100 fertig
from v$session_longops
where time_remaining > 0;

object :

set pagesize 999 linesize 120


col owner format a15
col object_type format a20
col object_name format a40
select owner, object_name, object_type, last_ddl_time, status from dba_objects
where object_name like UPPER('&OBJECT_NAME');

oms.sql:
set pages 100
Select to_char(sysdate, 'DD-MM-YYYY HH24:MI') "Executed at" FROM dual;
select username, count(*) from v$session group by username union select 'Total
sessions: ' username, count(*) from v$session order by 2;

patch_info:

col action_time for a28


col namespace for a9
col version for a10
col id for 99999999
col comments for a50
col BUNDLE_SERIES for a10;
col action for a10;
set pages 500;
set lines 175;
SELECT comments, action_time,id "PATCH_NUMBER", version FROM sys.registry$history
WHERE action = 'APPLY';
SELECT comments, action_time,id "PATCH_NUMBER" FROM sys.registry$history WHERE
action = 'CPU' order by 2;
select ACTION,NAMESPACE,COMMENTS,BUNDLE_SERIES,ACTION_TIME from
sys.registry$history order by 5;

pid.sql
------Bala's------
col osuser for a8;
col status for a18;
col username for a10;
col osuser for a10;
col machine for a10;
col status for a10;
col lockwait for a8;
col serial# for 99999;
set lines 150;
select S.SID
,S.serial#
,S.username
,S.OSuser
,S.machine
,P.SPID "UnixID"
,initcap(S.status) Status
,decode(S.lockwait,NULL,'No','Yes') Lockwait
,initcap(A.Name) Command
,S.process
from v$SESSION S
,v$PROCESS P
,sys.AUDIT_ACTIONS A
where S.username is not null
and A.action = S.command
and P.ADDR = S.PADDR
and s.sid='&1';

process_details:

select distinct
S.username
,S.machine
, count(S.username)
from v$SESSION S
,v$PROCESS P
,sys.AUDIT_ACTIONS A
where S.username is not null
and A.action = S.command
and P.ADDR = S.PADDR
and s.process = '&process_id'
group by s.username, s.machine
/

pfile or spfile:
SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type" FROM
sys.v_$parameter WHERE name = 'spfile';

SESSMON:

set pagesize 999


set echo on
set linesize 150
column osuser format a10
column username format a10
column machine format a25
column status format a8
set define off
set verify off
set echo off
set heading off
select 'REPORT TIME: '||to_char(sysdate,'MON-DD-YYYY HH24:MI') from dual;
set heading on
select count(*) as Session_Count from v$session;
select * from v$resource_limit;
select username,status,count(*) from v$session group by username,status;
select osuser, username, machine, program, status, count(status)
from v$session
where service_name != 'SYS$BACKGROUND'
group by osuser, username, machine, program, status
order by osuser, username, machine, program, status;

sid.sql

break on sid skip 1 on serial# on username on executions on status


column sid format 9999
column username format a12
column sql_text form a64

select a.sid,a.serial#,a.username,c.executions,status, b.sql_text


from v$session a
,v$sqltext b
,v$sqlarea c
where a.username is not null
and status='ACTIVE'
and sid=&SID
and a.sql_address = b.address(+)
and a.sql_address = c.address(+)
order by status,1,2,b.piece;

RAC SORT :

select tablespace_name,SUM(total_blocks*8192/1024/1024)
Total,sum(used_blocks*8192/1024/1024) used,
sum(free_blocks*8192/1024/1024) free from gv$sort_segment where TABLESPACE_NAME
like 'TEMP'
group by tablespace_name;

tbs.sql

set pages 200


set lines 120
select t.tablespace_name,total_GB,(total_Gb-free_GB) used_GB,free_GB,
round(((total_GB-free_GB)/total_GB)*100,2) per_used,round((free_GB/total_GB)*100,2)
per_free from
(select tablespace_name,sum(bytes/1024/1024/1024) free_GB from dba_free_space group
by tablespace_name) f,
(select tablespace_name,sum(bytes/1024/1024/1024) total_GB from dba_data_files
group by tablespace_name) t
where f.tablespace_name(+)=t.tablespace_name and f.tablespace_name='&tbs';

temp.sql
SELECT A.tablespace_name tablespace, D.mb_total,
SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;

select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS from v$sort_segment;

Database uptime:

col host_name form a10 heading "Host"


col instance_name form a8 heading "Instance" newline
col stime form a40 Heading "Database Started At" newline
col uptime form a60 heading "Uptime" newline
set heading off

select
'Hostname : ' || host_name
,'Instance Name : ' || instance_name
,'Started At : ' || to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') stime
,'Uptime : ' || floor(sysdate - startup_time) || ' days(s) ' ||
trunc( 24*((sysdate-startup_time) -
trunc(sysdate-startup_time))) || ' hour(s) ' ||
mod(trunc(1440*((sysdate-startup_time) -
trunc(sysdate-startup_time))), 60) ||' minute(s) ' ||
mod(trunc(86400*((sysdate-startup_time) -
trunc(sysdate-startup_time))), 60) ||' seconds' uptime
from
sys.gv_$instance;
set heading on

user
select sys_context('USERENV','SESSION_USER') from dual;
select sys_context('USERENV','SESSION_SCHEMA') from dual;

#!/usr/bin/ksh
sqlplus /nolog <<EOF
connect id/pwd
spool /tmp/XXXX.log
set echo on time on timing on serveroutput on
select to_char(sysdate,'DD-MON-YYYY HH:MI:SS') " Start Time " from dual;
select name from v\$database;
exec dbms_stats.gather_table_stats('odr_stage','tax_detail',estimate_percent
=>12,degree=>'6',cascade=>TRUE,granularity=>'ALL');
select to_char(sysdate,'DD-MON-YYYY HH:MI:SS') " Completion Time " from dual;
spool off;
exit
EOF

You might also like