Monday, May 30, 2011

Monitoring

eoifcfg iflist -p
eth0  192.168.76.128  PRIVATE
LD_LIBRARY_PATH =$ORACLE_HOME/lib
set colsep ,
set linesize 10000000
spool a.csv

####################################
Query
set showplan on
go
set noexec on
go
select count(*) from ACCOUNT

####################################

$ touch -d "2010-01-31 16:42" abc.sql

#####enonemous###########

du -s * |sort -n
stty columns 120
connect  sys/ora3asm@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gvcrlpldb4-vip)(Port=1526))(CONNECT_DATA=(SERVICE_NAME=+ASM1)(INSTANCE_NAME=+ASM1)(UR=A)))" as sysdba
expdp \"/ as sysdba\" DIRECTORY=${DUMP_DIR} DUMPFILE=EXP_FULL_${database}_${d}_%U.dmp LOGFILE=EXP_FULL_${database}_${d}.log FULL=Y PARALLEL=4
mail -s “test file” -c cc_emails to_emails << ++
> this is a test!
> ++

####################

delete  noprompt  expired archivelog all;
delete  noprompt  expired backupset;

#########scping in back ground##########
scp -p ......
^Z
bg
#########################################
resources:

crs_resources.ksh |grep vip
crs_relocate ora.pmccbd04-lmatora4-dr.vip

###########################

dbascapp5:/opt/oracle/GCAGENT/agent10g/bin>>./emctl config agent listtargets
Oracle Enterprise Manager 10g Release 5 Grid Control 10.2.0.5.0.
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
[dbascapp5.is.bear.com:3872, oracle_emd]
[+ASM2_dbascapp5.is.bear.com, osm_instance]
[LISTENER_DBASCAPP5_dbascapp5.is.bear.com, oracle_listener]
[dbascapp5_cluster, cluster]
[dbascapp5.is.bear.com, host]
[PWHRMN20_dbascapp5_cluster_PWHRMN22, oracle_database]
[PWHRMN20_dbascapp5_cluster, rac_database]

#####################################

select 'alter user "'||username||'" identified by values '''||extract(xmltype(dbms_metadata.get_xml('USER',username)),'//USER_T/PASSWORD/text()').getStringVal()||''';'  old_passworold_password from dba_users where username = '&user';

select name,open_mode,database_role,switchover_status from v$database;

#####################FAILED LOGIN ATTEMPTS########################

select count(*),username,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS')  from dba_audit_session where returncode<>0   ANd username='ABC'  group by username,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS');
select OS_USERNAME,USERNAME,TERMINAL,userhost,count(*) from dba_audit_session where RETURNCODE<>0 and timestamp > sysdate - 1 and username='&username' group by OS_USERNAME,USERNAME,TERMINAL,userhost
 select count(*),username,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') TIME from dba_audit_session where returncode<>0   ANd username='TRW_CONTAINER'  group by username,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') order by time;
 select count(*),username,USERHOST,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') TIME from dba_audit_session where returncode<>0   ANd username='BPM_QA_THELIBRARY' and to_char(timestamp,'DD-MON-YYYY HH24:MI:SS') like '16-FEB-2011%' group by username,terminal,to_char(timestamp,'DD-MON-YYYY HH24:MI:SS'),USERHOST order by time asc
select
   os_username,
   username,
   terminal,
   to_char(timestamp,'MM-DD-YYYY HH24:MI:SS')
from
   dba_audit_trail;
  
   -----Invalid logins
Select userhost,to_char(timestamp, 'Dy DD-Mon-YYYY HH24:MI:SS'),action_name,logoff_time from DBA_AUDIT_SESSION where  username ='NEOKRPRD_RT' and timestamp like  '26-JAN-10' order by timestamp  desc ;
select 'alter system kill session ''' || sid || ',' || serial# || ''' immediate;' from v$session where status='INACTIVE';
Kill session procedure.
create or replace procedure kill_session
(pn_sid number
,pn_serial number)
as
lv_user varchar2(30);
begin
select username into lv_user from v$session where sid = pn_sid and serial# = pn_serial;
if lv_user is not null and lv_user not in ('SYS','SYSTEM') then
execute immediate 'alter system kill session '''||pn_sid||','||pn_serial||'''';
else
raise_application_error(-20000,'Attempt to kill protected system session has been blocked.');
end if;
end;
/
exec kill_session(250,135,2);

select sid,serial#,osuser,machine,terminal,BLOCKING_SESSION,SCHEMANAME,USERNAME,command from v$session where
select TIMESTAMP, OS_USERNAME, USERNAME, USERHOST, ACTION_NAME, RETURNCODE from dba_audit_trail
where username='EMMI_MX_TKY_STP' and RETURNCODE ='1017'

set linesize 150
col userhost for a70
SET MARKUP HTML ON SPOOL ON
spool AUDIT_REPORT_QCRBD20.html
select distinct USERID, USERHOST from sys.aud$ where trunc(NTIMESTAMP# ) < trunc(sysdate -21);

SPOOL OFF;
SET MARKUP HTML OFF


#######################################################Standby###################################
deleting standby applied archives from rman

select inst_id,recovery_mode from gv$archive_dest_status;
select 'delete noprompt archivelog sequence between '||min(sequence#)||' and '||max(sequence#)||' thread '||thread#||';' from v$archived_log where applied='YES' and deleted='NO' group by thread#, applied, deleted;
select process, status , thread# , sequence#, block#, blocks from gv$managed_standby ;
select thread#,sequence#,block#,blocks,delay_mins  from v$managed_standby where process like 'MRP%';
Select thread#, max(sequence#), applied from v$archived_log where applied = 'YES' group by thread#, applied;
select thread#,max(sequence#) ,applied from v$archived_log group by thread#,applied order by 1;
select * from v$dataguard_status;
select max(archived.sequence#) primary, max(applied.sequence#) standby, archived.thread# thread from v$archived_log archived, v$archived_log applied where archived.thread#=applied.thread# and archived.archived='YES'
and applied.applied='YES'group by archived.thread#;
alter database register or replace physical logfile '/tmp/archive_2_4073.arc';

THREAD# MAX(SEQUENCE#) APPLIED
---------- -------------- ---------
         1            998 YES
         3            808 YES
         2            898 YES
delete archivelog until sequence 990 thread 1;
delete archivelog until sequence 790 thread 3;
delete archivelog until sequence 890 thread 2

select SPACE_LIMIT/1024/1024 "Limit MB",round(SPACE_USED/1024/1024) "Used MB" from  v$recovery_file_dest;
select * from v$archive_gap;

delete force  noprompt archivelog until time 'trunc(sysdate-1/1440)' backed up 1 times to device type sbt;

SELECT name  FROM v$archived_log WHERE sequence# in (1304);

  ---------to check archivegap:

SELECT high.thread#, "LowGap#", "HighGap#"
FROM
     (
     SELECT thread#, MIN(sequence#)-1 "HighGap#"
     FROM
     (
         SELECT a.thread#, a.sequence#
         FROM
         (
             SELECT *
             FROM v$archived_log
         ) a,
         (
             SELECT thread#, MAX(next_change#)gap1
             FROM v$log_history
             GROUP BY thread#
         ) b
         WHERE a.thread# = b.thread#
         AND a.next_change# > gap1
     )
     GROUP BY thread#
 ) high,
  (
     SELECT thread#, MIN(sequence#) "LowGap#"
     FROM
     (
         SELECT thread#, sequence#
         FROM v$log_history, v$datafile
         WHERE checkpoint_change# <= next_change#
         AND checkpoint_change# >= first_change#
     )
     GROUP BY thread#
 ) low
 WHERE low.thread# = high.thread#;



#################################################################
SELECT name,spare4 FROM SYS.USER$ WHERE password is not null;
select 'alter user ' || name || ' identified by values ''' || password || ''';' from SYS.USER$ where NAME in (' ');

spool setpw.sql
select 'alter user ' || username || ' identified by whatever;' from dba_users;
spool off
spool resetpw.sql
select 'alter user ' || username || ' identified by values ''' || password || ''';'
from dba_users;
spool off


####################################################
Long running quries
-------------------
set linesize 170
col message for a40
col username for a10
select instance_name,host_name,inst_id from gv$instance;
select inst_id,sid,serial#,machine,USERNAME,OSUSER from gv$session where sid=1305;

SELECT username,inst_id,SID, SERIAL#, message,to_char(start_time,'mon-dd-yyyy hh24:mi:ss') start_time,to_char(LAST_UPDATE_TIME,'mon-dd-yyyy hh24:mi:ss') last_update, SOFAR, TOTALWORK,ROUND (SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM gV$SESSION_LONGOPS
WHERE TOTALWORK != 0  AND SOFAR <> tOTALWORK;
SELECT username,SID, SERIAL#, message,start_time,LAST_UPDATE_TIME , SOFAR, TOTALWORK,ROUND (SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM V$SESSION_LONGOPS WHERE TOTALWORK != 0  AND SOFAR <> tOTALWORK;
select s.username as "USER", s.machine as "CLIENT MACHINE", sa.sql_text as "LONG RUNNING SQL", sa.elapsed_time/
1000/1000/60 "EXECUTION TIME IN MINUTES"
from v$session s, v$sqlarea sa
where s.sql_hash_value=sa.hash_value
and sa.elapsed_time>30*60*1000*1000
and s.status='ACTIVE'
/
SELECT inst_id,username,SID, SERIAL#, message,start_time,LAST_UPDATE_TIME , SOFAR, TOTALWORK,ROUND (SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM GV$SESSION_LONGOPS WHERE TOTALWORK != 0 
AND SOFAR <> tOTALWORK and message like '%RMAN%';
SELECT inst_id,username,SID, SERIAL#, message,to_char(start_time,'mon-dd-yyyy hh24:mi:ss'),to_char(LAST_UPDATE_TIME,'mon-dd-yyyy hh24:mi:ss') , SOFAR, TOTALWORK,ROUND (SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM GV$SESSION_LONGOPS WHERE TOTALWORK != 0  AND SOFAR <> tOTALWORK and message like '%RMAN%';

set echo off
set linesize     200
col inst_id       format 9999 head 'INST_ID'
col opname       format a40
col target       format a20
col username     format a12
col start_time   format a14
col last_update   format a14
col sid          format 99999 head 'SID'
col serial#      format 999999
set pages 1000
PROMPT ....
PROMPT ****  Lists the Long Operations that occured today **
PROMPT ****  (you can adjust date to expand scope) ..     **
SELECT inst_id,SID,
 SERIAL#,
 OPNAME,
 TARGET || ' ' || TARGET_DESC target,
 -- round( (sofar/TOTALWORK) * 100,2) Compl ,
 SOFAR ,
 TOTALWORK,
 round( decode(sofar,0,1,sofar)/decode(TOTALWORK,0,1, TOTALWORK)*100,2) compl ,
 --username,
 to_char(start_time, 'MON-DD HH24:MI') start_time,
 to_char(LAST_UPDATE_TIME,'MON-DD HH24:MI') last_update,
TIME_REMAINING/3600
 from gv$session_longops
-- where start_time > sysdate - 1
where opname like 'RMAN%'
and round( decode(sofar,0,1,sofar)/decode(TOTALWORK,0,1, TOTALWORK)*100,2) < 100
--where trunc(start_time) = trunc(sysdate)
order by start_time
/

#################################  ASM ###########################################
col name for a20
set lines 125
PROMPT ***** Disk Group Details under ASM control  ****
select NAME , TYPE, TOTAL_MB, FREE_MB, round(FREE_MB/TOTAL_MB * 100,1) PCT_FREE,
BLOCK_SIZE, SECTOR_SIZe, OFFLINE_DISKS,
STATE from v$asm_diskgroup
/
select name,TOTAL_MB,FREE_MB from  v$asm_diskgroup;
Select thread#, max(sequence#), applied from v$archived_log where applied = 'YES' group by thread#, applied;
 alter diskgroup  DATADGT1 drop disk DATADGT1_0018;

###################################################################################
############################### FLASH RECOVERY AREA ###############################
select SPACE_LIMIT/1024/1024 "Limit MB",round(SPACE_USED/1024/1024) "Used MB" from  v$recovery_file_dest;
select * from v$flash_recovery_area_usage;
select * from v$recovery_file_dest;
##################################################################################
########################################
Dataguard:
----------
alter database recover managed standby database using current logfile disconnect from session;
list archivelog all completed before 'sysdate';
delete archivelog all completed before 'sysdate';
delete archivelog all backed up 1 times to disk;
select 'rm -rf '||name from v$archived_log where first_time + 1/24 < ( SELECT MIN(first_time) FROM (SELECT MAX(first_time) FIRST_TIME FROM v$archived_log WHERE applied='YES' GROUP BY THREAD#)) and first_time + 1/24 + 1> ( SELECT MIN(first_time) FROM
(SELECT MAX(first_time) FIRST_TIME FROM v$archived_log WHERE applied='YES' GROUP BY THREAD#)) and name is not null;

Select thread#, max(sequence#), applied from v$archived_log where applied = 'YES' group by thread#, applied;
select INSTANCE_NAME, HOST_NAME from v$instance;
ex
select max(sequence#), applied from v$archived_log group by applied;
select max(sequence#) from v$log_history;
select process, status , thread# , sequence#, block#, blocks from gv$managed_standby ;
select inst_id,recovery_mode from gv$archive_dest_status;

select recovery_mode from v$archive_dest_status;
select max(sequence#) from v$log_history;
RMAN> run
2> {
3> copy archivelog '+FRADG01/UASP01_M5000/ARCHIVELOG/2009_11_30/thread_2_seq_4073.16069.704296853' to '/tmp/archive_2_seq_4073.arc';
4> }
alter database register or replace physical logfile '/tmp/archive_2_4073.arc';


set linesize 150
col message for a50
select * from v$dataguard_status;

ORA-16826: apply service state is inconsistent with the DelayMins property
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

SQL> select name,open_mode,DATABASE_ROLE,switchover_status from V$database;

alter database recover managed standby database disconnect from session parallel 4;

To open a standby database for read-only access when it is currently performing Redo Apply:
Cancel Redo Apply:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER SYSTEM SET AUDIT_TRAIL=OS SCOPE=SPFILE;
Open the database for read-only access:
SQL> ALTER DATABASE OPEN;

To change the standby database from being open for read-only access to performing Redo Apply:
Terminate all active user sessions on the standby database.
Restart Redo Apply. To start Redo Apply, issue the following statement:
SQL> ALTER SYSTEM SET AUDIT_TRAIL=DB SCOPE=SPFILE;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
To enable real-time apply, include the USING CURRENT LOGFILE clause:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
  2> USING CURRENT LOGFILE;
delete noprompt expired archivelog all device type disk;

SQL> select  PROCESS, SEQUENCE#, STATUS from v$managed_standby;
PROCESS    SEQUENCE# STATUS
--------- ---------- ------------
ARCH           62670 CLOSING
ARCH           62668 CLOSING
ARCH           62669 CLOSING
RFS                0 IDLE
RFS                0 IDLE
RFS                0 IDLE
6 rows selected.

SQL> select max(sequence#) from v$log_history;

SELECT DEST_ID "ID",
STATUS "DB_status",
DESTINATION "Archive_dest",
ERROR "Error"
FROM V$ARCHIVE_DEST WHERE DEST_ID <=5


select name,TOTAL_MB,FREE_MB from  v$asm_diskgroup;
select name,TOTAL_MB/1024,FREE_MB/1024 from  v$asm_diskgroup;

######################## REDOLOG GENERATION#############################
set pagesize 100
PROMPT ** Redo Gen (sysdate-7) Day Wise Size and Number (dest_id = 1) **
PROMPT ( show_redo_generated1.sql does Day wise Logs produced)
PROMPT ( show_redo_generated2.sql does Hourly Logs produced)
PROMPT ================================================================
select to_char(COMPLETION_TIME, 'MM-DD-YYYY') Compl_day,
round( sum(BLOCKS * BLOCK_SIZE/1024/1024),0) Size_in_MB ,
count(*) Logs#
from v$archived_log
where trunc(COMPLETION_TIME) > sysdate - 7
and dest_id = 1
group by to_char(COMPLETION_TIME, 'MM-DD-YYYY')
order by compl_day
/

########################TOP CPU CONSUMING############################

 ps -e -o pcpu -o pid -o user -o args | sort -k 1 | tail -21
 ps -e -o pcpu,pid,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'   |sort -nr|head -10


select a.username , a.program , to_char(a.LOGON_TIME,'dd-mon-yy:hh24:mi'),c.sql_text from v$session a ,
v$process b , v$sql c where
a.paddr=b.addr and a.sql_id=c.sql_id and b.spid='you OS PID' ;
select  ss.username,
 se.SID,
 VALUE/100 cpu_usage_seconds
from  v$session ss,
 v$sesstat se,
 v$statname sn
where   se.STATISTIC# = sn.STATISTIC#
and   NAME like '%CPU used by this session%'
and   se.SID = ss.SID
and ss.status='ACTIVE'
and ss.username is not null
and VALUE/100>0
order   by VALUE desc

======================================
=====================================
column sql_text format a40 word_wrapped heading 'SQL|Text'
column cpu_time       heading 'CPU|Time'
column elapsed_time   heading 'Elapsed|Time'
column disk_reads     heading 'Disk|Reads'
column buffer_gets    heading 'Buffer|Gets'
column rows_processed heading 'Rows|Processed'
set pages 55 lines 132
ttitle 'SQL By CPU Usage'
select * from
         (select sql_text,  
                 cpu_time/1000000000 cpu_time, 
                 elapsed_time/1000000000 elapsed_time,
                 disk_reads,
                 buffer_gets,
                 rows_processed
          from v$sqlarea
          order by cpu_time desc, disk_reads desc
          )
where rownum < 11
/
set pages 22 lines 80
ttitle off


###################################################################
############### IMPORT ################################
select substr(sql_text,instr(sql_text,'INTO "'),30) table_name,
         rows_processed,
         round((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60,1) minutes,
         trunc(rows_processed/((sysdate-to_date(first_load_time,'yyyy-mm-dd hh24:mi:ss'))*24*60)) rows_per_min
  from   sys.v_$sqlarea
  where  sql_text like 'INSERT %INTO "%'
    and  command_type = 2
    and  open_versions > 0;

select NAME,TOTAL_MB,FREE_MB from v$asm_diskgroup;

#######################################################################
sqltext using pid
-----------------
SQL> select sql_text from v$process a, v$session b, v$sqltext c where a.addr = b.paddr and b.sql_hash_value = c.hash_value and  a.spid =<pid> order by piece;
select s.sid from v$process p, v$session s
where s.paddr=p.addr and p.spid = 14763;
select p.spid from v$session s, v$process p where s.sid=16 and s.paddr=p.addr
SELECT SQL_TEXT from V$SQLTEXT_WITH_NEWLINES where HASH_VALUE
= (select sql_hash_value from v$session
where SID = <problem_SID_you_got_from_last_step>) ;

Blocking session
-----------------
select l1.sid, ' IS BLOCKING ', l2.sid from gv$lock l1, gv$lock l2 where l1.block =1 and l2.request > 0 and l1.id1=l2.id1 and l1.id2=l2.id2;
select s.sid from v$process p, v$session s
where s.paddr=p.addr and p.spid =  2  28528;
SELECT SQL_TEXT from V$SQLTEXT_WITH_NEWLINES where HASH_VALUE= (select sql_hash_value from v$session where SID =336);
select sid,serial#,SCHEMANAME,OSUSER,MACHINE  from v$session where sid in (435,336,323);
select sql_text from v$sql where sql_id in (select sql_id from v$session where sid=123);



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 ;

select
   blocking_session,
   sid,
   serial#,
   wait_class,
   seconds_in_wait
from
   gv$session
where
   blocking_session is not NULL
order by
   blocking_session;

column sess format A20
SELECT substr(DECODE(request,0,'Holder: ','Waiter: ')||sid,1,12) sess,
       id1, id2, lmode, request, type, inst_id
 FROM GV$LOCK
WHERE (id1, id2, type) IN
   (SELECT id1, id2, type FROM GV$LOCK WHERE request>0)
     ORDER BY id1, request;
 
 
 
Locks in RAC:

SELECT gvh.SID sessid, gvs.serial# serial,
                    gvh.inst_id instance_id
               FROM gv$lock gvh, gv$lock gvw, gv$session gvs
              WHERE (gvh.id1, gvh.id2) IN (SELECT id1, id2
                                             FROM gv$lock
                                            WHERE request = 0
                                           INTERSECT
                                           SELECT id1, id2
                                             FROM gv$lock
                                            WHERE lmode = 0)
                AND gvh.id1 = gvw.id1
                AND gvh.id2 = gvw.id2
                AND gvh.request = 0
                AND gvw.lmode = 0
                AND gvh.SID = gvs.SID
                AND gvh.inst_id = gvs.inst_id;
   
Locks in RAC:
SET LINESIZE 500
SET PAGESIZE 1000
SET VERIFY OFF
COLUMN owner FORMAT A20
COLUMN username FORMAT A20
COLUMN object_owner FORMAT A20
COLUMN object_name FORMAT A30
COLUMN locked_mode FORMAT A15
SELECT b.inst_id,
       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,
       gv$locked_object b
WHERE  a.object_id = b.object_id
ORDER BY 1, 2, 3, 4;
SET PAGESIZE 14
SET VERIFY ON


#############
SQL> select * from v$lock where REQUEST <> 0;
no rows selected
SQL> select * from dba_blockers;
no rows selected
SQL> select * from dba_waiters;
select oracle_username, os_user_name,locked_mode,object_name,object_type from v$locked_object a, dba_objects b  where a.object_id=b.object_id;

############

Locks
-----
select c.owner,c.object_name,c.object_type, b.sid, b.serial#,b.status,b.osuser,b.machine from   v$locked_object a ,  v$session b,   dba_objects c where   b.sid = a.session_id and    a.object_id = c.object_id;

#########################################################
Current running sql:
-------------------
col OSUSER for a15
col PROGRAM for a20
set linesize 150
col username for a20

select s.sid,
s.serial#,
s.status,
s.process,
s.osuser,
a.sql_text,
p.program
from v$session s,
v$sqlarea a,
v$process p
where s.sql_hash_value=a.hash_value
and s.sql_address=a.address
and s.paddr=p.addr
and s.schemaname='&SCHEMANAME'
and s.status='ACTIVE';
select s.sid,s.username,
s.status,
s.process,
s.osuser,
a.sql_text,
p.program
from gv$session s,
gv$sqlarea a,
gv$process p
where s.sql_hash_value=a.hash_value
and s.sql_address=a.address
and s.paddr=p.addr
and s.status='ACTIVE'
####################CPU USAGE#################################
select
   ss.username,
   se.SID,
   VALUE/100 cpu_usage_seconds
from
   v$session ss,
   v$sesstat se,
   v$statname sn
where
   se.STATISTIC# = sn.STATISTIC#
and
   NAME like '%CPU used by this session%'
and
   se.SID = ss.SID
and
   ss.status='ACTIVE'
and
   ss.username is not null
order by VALUE desc;

##################PHYSICAL READS#############################
break on begin_interval_time skip 2
column phyrds format 999,999,999
column begin_interval_time format a25
select
   begin_interval_time,
   filename,
   phyrds
from
   dba_hist_filestatxs
natural join
   dba_hist_snapshot
where
   phyrds > 10000
;


##########################################################
Tablespace report
-----------------

SELECT F.TABLESPACE_NAME,
       TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED(MB)",
       TO_CHAR (F.FREE_SPACE, '999,999') "FREE(MB)",
       TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL(MB)",
       TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE
FROM   (
        SELECT TABLESPACE_NAME,
         ROUND (SUM (BLOCKS*(SELECT VALUE/1024
         FROM V$PARAMETER
         WHERE NAME = 'db_block_size')/1024)) FREE_SPACE
        FROM DBA_FREE_SPACE
        GROUP BY TABLESPACE_NAME
       ) F,
       (
        SELECT TABLESPACE_NAME,
         ROUND (SUM (BYTES/1048576)) TOTAL_SPACE
         FROM DBA_DATA_FILES
        GROUP BY TABLESPACE_NAME
       ) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
AND   T.TABLESPACE_NAME NOT IN ('UNDO')
AND   (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)) < 10;

set pages 300 lines 125 verify off
col tablespace for a20
break on tablespace
col file for a59
col "Size (MB)" for a12
col "Max Size(MB)" for a12
accept tablespace char prompt 'Enter Tablespace Name:- '
prompt
prompt =========== Tablespace Details ===============
SELECT F.tablespace_name "Tablespace", TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99G999G990') "Size (MB)", TO_CHAR(NVL(NVL(f.bytes, 0),0)/1024/1024, '99G999G990') "Free (MB)",
TO_CHAR(NVL((NVL(f.bytes, 0)) / a.bytes * 100, 0), '990D00') "Free %" FROM (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE F.tablespace_name =upper('&TABLESPACE') AND A.TABLESPACE_NAME=upper('&TABLESPACE');
prompt
Prompt =========== Datafiles Details ================
select TABLESPACE_NAME "Tablespace", FILE_NAME "File", to_char(nvl(bytes/1024/1024,0), '99999990') "Size (MB)", to_char(nvl(MAXBYTES/1024/1024,0), '99999990') "Max Size(MB)", AUTOEXTENSIBLE from dba_data_files where tablespace_name=upper('&TABLESPACE');


################# DBA FREE SPACE####################################################

col TABLESPACE_NAME format a36
col "Free Space PCT" jus right format a17
col "Space Used PCT" jus right format a17
col "Free GB" format 999,999,999.99
col "Total GB" format 999,999,999.99
col "GB Used" format 999,999,999.99
Set Echo Off
Rem
Rem  This script finds the free disk space on each different tablespace;
Rem  Here the DBA_DATA_FILES and DBA_FREE_SPACE out-join to produce the result.
Rem 
select ddf.TABLESPACE_NAME,
       ddf.Total_Bytes/1024/1024/1024 "Total GB",
       decode(ddf.Total_Bytes - dfs.Free_Bytes, null,ddf.Total_Bytes,
              ddf.Total_Bytes - dfs.Free_Bytes)/1024/1024/1024 "GB Used",
       decode (dfs.Free_Bytes, null, 0,dfs.Free_Bytes)/1024/1024/1024  "Free GB",
       LPAD(
         decode(round(dfs.Free_Bytes * 100 /ddf.Total_Bytes,2),
                null, '*No space*',
  round(dfs.Free_Bytes * 100 /ddf.Total_Bytes,2)) ||' %', 16)
         "Free Space PCT",
       LPAD(
         decode(100 - round(dfs.Free_Bytes * 100 /ddf.Total_Bytes,2),
  null, '*Full*',
  100 - round(dfs.Free_Bytes * 100 /ddf.Total_Bytes,2)
               ) ||' %', 16) "Space Used PCT"
 from ( select TABLESPACE_NAME,
               sum(bytes) TOTAL_BYTES,
        sum(blocks) Total_BLOCKS
          from dba_data_files
         group by TABLESPACE_NAME
      ) ddf,
      ( select TABLESPACE_NAME,
               sum(BYTES) Free_Bytes,
               sum(blocks) Free_Blocks
          from dba_free_space
         group by TABLESPACE_NAME
      ) dfs
 where ddf.tablespace_name = dfs.tablespace_name (+)
 order by tablespace_name
/
set echo on

######################################################################################################
####################################### USER TBS MAP ######################################################

set linesize 500
col owner format a32
col "Tot_Size (MB)" format 9,999,999.99
Rem ====================================================================================
Rem
Rem  In the following query, it lists the user object count and size in each tablespace
Rem
Rem ====================================================================================

select owner, tablespace_name, count(*) "Obj_Num",
       sum( bytes/1048576 ) "Tot_Size (MB)"
  from dba_segments
 group by rollup (owner, tablespace_name)
 order by owner, tablespace_name;

set echo off
###################################################################################################
DATABASE GROWTH:
----------------
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY   OFF
COLUMN month        FORMAT a7                   HEADING 'Month'
COLUMN growth       FORMAT 999,999,999,999,999  HEADING 'Growth (GB)'
BREAK ON report
COMPUTE SUM OF growth ON report
SELECT
    TO_CHAR(creation_time, 'RRRR-MM') month
  , SUM(bytes/1024/1024/1024)     growth
FROM     sys.v_$datafile
where creation_time > SYSDATE-365
GROUP BY TO_CHAR(creation_time, 'RRRR-MM')
ORDER BY TO_CHAR(creation_time, 'RRRR-MM');

schema growth.
set feedback off
set pages 80
set linesize 150
spool /tmp/weekly_growth.txt

ttitle "Total Disk Used"

select sum(space_used_delta) / 1024 / 1024 "Space used (M)", sum(c.bytes) / 1024 / 1024 "Total Schema Size (M)",
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) || '%' "Percent of Total Disk Usage"
from
   dba_hist_snapshot sn,
   dba_hist_seg_stat a,
   dba_objects b,
   dba_segments c
where end_interval_time > trunc(sysdate) - &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and c.owner = '&schema_name'
and space_used_delta > 0;
ttitle "Total Disk Used by Object Type"
select c.segment_type, sum(space_used_delta) / 1024 / 1024 "Space used (M)", sum(c.bytes) / 1024 / 1024 "Total Space (M)",
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) || '%' "Percent of Total Disk Usage"
from
   dba_hist_snapshot sn,
   dba_hist_seg_stat a,
   dba_objects b,
   dba_segments c
where end_interval_time > trunc(sysdate) - &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and space_used_delta > 0
and c.owner = '&schema_name'
group by rollup(segment_type);


#############################################################################
Temp space
----------

set pages 300 lines 125
col "tablespace" for a10
col "name" for a55
col "Size (MB)" for a12
col "Max Size(MB)" for a12
col "Free (MB)" for a12
col "Free %" for a12
prompt
prompt =========== Temporary Tablespace Details =====================
SELECT d.tablespace_name "Tablespace", d.contents "Type", d.status "Status",  TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99G999G990') "Size (MB)", TO_CHAR(NVL((a.bytes-t.bytes), a.bytes)/1024/1024,'99G999G990') "Free (MB)", TO_CHAR(NVL((a.bytes-t.bytes) / a.bytes * 100, 100), '990D00') "Free %" FROM sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY';
prompt
Prompt =========== Tempfiles Details ================================
SELECT d.tablespace_name "Tablespace", d.file_name "Name", TO_CHAR(NVL(d.bytes / 1024 / 1024, 0), '99999990') "Size (MB)", to_char(nvl(d.MAXBYTES/1024/1024, 0),'99999990') "Max Size(MB)",TO_CHAR(NVL((d.bytes-t.bytes_cached),d.bytes)/1024/1024,'99999990')  "Free (MB)", TO_CHAR(NVL((d.bytes-t.bytes_cached) / d.bytes * 100, 100), '990D00') "Free %", d.AUTOEXTENSIBLE FROM sys.dba_temp_files d, v$temp_extent_pool t, v$tempfile v WHERE (t.file_id (+)= d.file_id) AND (d.file_id = v.file#);

set pages 3000 lines 123
col osuser for a10
col username for a14
col tablespace for a10
SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,a.username, a.osuser, a.status FROM v$session a,v$sort_usage b WHERE a.saddr = b.session_addr ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks;


select tablespace_name,bytes/1024/1024,USER_BYTES/1024/1024,MAXBYTES/1024/1024 from dba_temp_files;
select TABLESPACE_NAME, BYTES_USED/1024/1024,BYTES_FREE/1024/1024 from V$TEMP_SPACE_HEADER;
select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS from v$sort_segment;
(interested in free blocks)
 
 select file_name ,bytes/1024/1024 from dba_temp_files where tablespace_nAME='TEMP3';

SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#,
a.username,a.osuser, a.status
FROM v$session a,v$sort_usage b
WHERE a.saddr = b.session_addr;

set linesize 200
col sql_text for a70

SELECT a.username, a.sid, a.serial#, a.osuser, b.tablespace, b.blocks, c.sql_text
FROM v$session a, v$tempseg_usage b, v$sqlarea c
WHERE a.saddr = b.session_addr
AND c.address= a.sql_address
AND c.hash_value = a.sql_hash_value
ORDER BY b.tablespace, b.blocks;
set linesize 200
col sql_text for a70

SELECT a.username, a.sid, a.serial#, a.osuser, b.tablespace, b.blocks, c.sql_text
FROM gv$session a, gv$tempseg_usage b, gv$sqlarea c
WHERE a.saddr = b.session_addr
AND c.address= a.sql_address
AND c.hash_value = a.sql_hash_value
ORDER BY b.tablespace, b.blocks;


set linesize 170
SELECT TabSpaceName,
 SUM(TotBytes) "TOTAL MB",
 SUM(BytesUsed) "USED MB",
 SUM(BytesFree) "FREE MB",
 AVG(PCUSED) "% USED",
 AVG(PCFREE) "% FREE"
FROM (
SELECT SUBSTR (df.file_id, 1, 3) "ID#",
df.tablespace_name TabSpaceName,
df.BYTES/1024/1024 TotBytes,
round (NVL(df.BYTES/1024/1024 - SUM (fs.BYTES/1024/1024),df.BYTES/1024/1024)) BytesUsed,
round (NVL(SUM (fs.BYTES/1024/1024),0)) BytesFree, 
round (NVL((100 * ((SUM (fs.BYTES)) / df.BYTES)),0)) PCFREE,
round (NVL((100 * ((df.BYTES - SUM (fs.BYTES)) / df.BYTES)),100)) PCUSED
FROM SYS.DBA_TEMP_FILES df,
SYS.dba_free_space fs
WHERE df.file_id = fs.file_id (+)
GROUP BY df.tablespace_name, df.file_id,
df.tablespace_name,
df.BYTES,
df.blocks)
GROUP BY TabSpaceName
ORDER BY 6  ;

Which user how much space:
--------------------------
col SID_SERIAL for a20
col SIZE for a20

SELECT b.tablespace,
       ROUND(((b.blocks*p.value)/1024/1024),2)||'M' "SIZE",
        a.sid||','||a.serial# SID_SERIAL,
      a.username,
      a.program
  FROM sys.v_$session a,
       sys.v_$sort_usage b,
        sys.v_$parameter p
  WHERE p.name  = 'db_block_size'
    AND a.saddr = b.session_addr
 ORDER BY b.tablespace, b.blocks;

col SID_SERIAL for a20
col SIZE for a20

SELECT b.tablespace,
       ROUND(((b.blocks*p.value)/1024/1024),2)||'M' "SIZE",
        a.sid||','||a.serial# SID_SERIAL,
      a.username,
      a.program
  FROM sys.gv_$session a,
       sys.gv_$sort_usage b,
        sys.gv_$parameter p
  WHERE p.name  = 'db_block_size'
    AND a.saddr = b.session_addr
 ORDER BY b.tablespace, b.blocks;

set pages 300 lines 125
col "tablespace" for a10
col "name" for a55
col "Size (MB)" for a12
col "Max Size(MB)" for a12
col "Free (MB)" for a12
col "Free %" for a12
prompt
prompt =========== Temporary Tablespace Details =====================
SELECT d.tablespace_name "Tablespace", d.contents "Type", d.status "Status",  TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99G999G990') "Size (MB)", TO_CHAR(NVL((a.bytes-t.bytes), a.bytes)/1024/1024,'99G999G990') "Free (MB)", TO_CHAR(NVL((a.bytes-t.bytes) / a.bytes * 100, 100), '990D00') "Free %" FROM sys.dba_tablespaces d, (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY';
prompt
Prompt =========== Tempfiles Details ================================
SELECT d.tablespace_name "Tablespace", d.file_name "Name", TO_CHAR(NVL(d.bytes / 1024 / 1024, 0), '99999990') "Size (MB)", to_char(nvl(d.MAXBYTES/1024/1024, 0),'99999990') "Max Size(MB)",TO_CHAR(NVL((d.bytes-t.bytes_cached),d.bytes)/1024/1024,'99999990')  "Free (MB)", TO_CHAR(NVL((d.bytes-t.bytes_cached) / d.bytes * 100, 100), '990D00') "Free %", d.AUTOEXTENSIBLE FROM sys.dba_temp_files d, v$temp_extent_pool t, v$tempfile v WHERE (t.file_id (+)= d.file_id) AND (d.file_id = v.file#);


set pages 3000 lines 123
col osuser for a10
col username for a20
col tablespace for a10
SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,a.username, a.osuser, a.status FROM v$session a,v$sort_usage b WHERE a.saddr = b.session_addr ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks;

############################################################################
UNDO
-----
1) Let us know the current state of undo extents
SELECT DISTINCT STATUS, SUM(BYTES), COUNT(*)  
   FROM DBA_UNDO_EXTENTS GROUP BY STATUS; 
2) show us who / what is using undo.
 SELECT A.SID, A.USERNAME, B.XIDUSN, B.USED_UREC, B.USED_UBLK  
 FROM V$SESSION A, V$TRANSACTION B  
 WHERE A.SADDR=B.SES_ADDR;
3) Gives us an indication of the size required.
SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"
FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),
(SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS FROM v$undostat),
(select block_size as DBS from dba_tablespaces where tablespace_name=
(select upper(value) from v$parameter where name = 'undo_tablespace'));

total undo usage:
-----------------
select sum(undoblks)/sum((end_time-begin_time)*24*60) undo_usage,sum(ssolderrcnt) OER_old_errors,sum(nospaceerrcnt) OER_space_errors from v$undostat where undoblks>0;

Which user how much space:
--------------------------
 col SID_SERIAL for a10
 col PROGRAM for a40
 col ORAUSER for a20
 col UNDOSEG for a20
 set linesize 150
SELECT TO_CHAR(s.sid)||','||TO_CHAR(s.serial#) sid_serial,
       NVL(s.username, 'None') orauser,
        s.program,
        r.name undoseg,
         t.used_ublk * TO_NUMBER(x.value)/1024||'K' "Undo"
    FROM sys.v_$rollname    r,
         sys.v_$session     s,
        sys.v_$transaction t,
          sys.v_$parameter   x
   WHERE s.taddr = t.addr
     AND r.usn   = t.xidusn(+)
     AND x.name  = 'db_block_size'
UNDO RECOMENDATION:
SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]",
       SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]",
       (TO_NUMBER(e.value) * TO_NUMBER(f.value) *
       g.undo_block_per_sec) / (1024*1024)
      "NEEDED UNDO SIZE [MByte]"
  FROM (
       SELECT SUM(a.bytes) undo_size
         FROM v$datafile a,
              v$tablespace b,
              dba_tablespaces c
        WHERE c.contents = 'UNDO'
          AND c.status = 'ONLINE'
          AND b.name = c.tablespace_name
          AND a.ts# = b.ts#
       ) d,
      v$parameter e,
       v$parameter f,
       (
       SELECT MAX(undoblks/((end_time-begin_time)*3600*24))
         undo_block_per_sec
         FROM v$undostat
       ) g
 WHERE e.name = 'undo_retention'
  AND f.name = 'db_block_size'
/

UNDO USAGE:
col allocated for 999,999.999
col free      for 999,999.999
col used      for 999,999.999
select
    ( select sum(bytes)/1024/1024 from dba_data_files
       where tablespace_name like 'UND%' )  allocated,
    ( select sum(bytes)/1024/1024 from dba_free_space
       where tablespace_name like 'UND%')  free,
    ( select sum(bytes)/1024/1024 from dba_undo_extents
       where tablespace_name like 'UND%') USed
from dual
/

SELECT SQL_TEXT from V$SQLTEXT_WITH_NEWLINES where HASH_VALUE= (select sql_hash_value from v$session where SID =336);
select sid,serial#,SCHEMANAME,OSUSER,MACHINE  from v$session where sid in (435,336,323);


####################################################################

dbms stats
-----------
exec DBMS_STATS.GATHER_table_STATS (ownname=> 'BEAR_ETL',tabname => 'ACT_PRODUCTS', estimate_percent=> 100,degree=>8,cascade=> TRUE);
scheduler jobs
--------------
col job_name for a25
set linesize 150
col job_action for a30
col job_creator for a10
col owner for a10
col SCHEDULE_OWNER for a10
COL scheduler_name for a20
col start_date for a15
col LAST_START_DATE for a15
col LAST_RUN_DURATION for a15
col NEXT_RUN_DATE for a15
col SCHEDULE_LIMIT for a15

select owner,job_name,JOB_CREATOR,JOB_ACTION,SCHEDULE_OWNER,SCHEDULE_NAME,START_DATE from dba_scheduler_jobs;
select OWNER,JOB_NAME,JOB_ACTION,START_DATE,REPEAT_INTERVAL,STATE,COMMENTS from dba_scheduler_jobs;
select JOB_NAME,START_DATE,LAST_START_DATE,LAST_RUN_DURATION,NEXT_RUN_DATE,SCHEDULE_LIMIT from dba_scheduler_jobs;
SELECT owner, job_name, enabled FROM dba_scheduler_jobs;
SELECT o.name object_name, u.name object_owner FROM obj$ o, user$ u WHERE o.obj# =  252381  and o.owner# = u.user#;

begin
DBMS_SCHEDULER.RUN_JOB (
job_name => 'GATHER_STATS_JOB'
);
end;
 /
begin
 DBMS_SCHEDULER.RUN_JOB (
 job_name => 'GATHER_STATS_JOB',
 use_current_session => false);
 end;
/
enablng..disabling
exec dbms_ijob.broken(JOB=>4, NEXT_DATE=>sysdate+(60/1440) , broken=>FALSE);
exec dbms_job.broken(1, TRUE);
Here is a query shows which dbms_scheduler jobs failed and why they failed:
-- What scheduled tasks failed during execution, and why?
COL log_id              FORMAT 9999   HEADING 'Log#'
COL log_date            FORMAT A32    HEADING 'Log Date'
COL owner               FORMAT A06    HEADING 'Owner'
COL job_name            FORMAT A20    HEADING 'Job'
COL status              FORMAT A10    HEADING 'Status'
COL actual_start_date   FORMAT A32    HEADING 'Actual|Start|Date'
COL error#              FORMAT 999999 HEADING 'Error|Nbr'
TTITLE 'Scheduled Tasks That Failed:'
select log_date,job_name,status,
   req_start_date,
   actual_start_date,
   run_duration
from
   dba_scheduler_job_run_details
where
job_name = 'MYJOB' and   status <> 'SUCCEEDED'
order by
   actual_start_date;


###############################################################################

###########################  INDEX & PARTITIONS#################################################
Unusable indexes
----------------
pbeqbatsdb5-h:/opt/oracle/brian/indexes>>cat unusableCnt.sql
set echo on
select count(*) num_indexes from dba_indexes where status = 'UNUSABLE';
select count(*) num_ind_partitions from dba_ind_partitions where status = 'UNUSABLE';
select count(*) num_ind_subpartitions from dba_ind_subpartitions where status = 'UNUSABLE';

select a.TABLE_OWNER,a.TABLE_NAME,a.PARTITION_NAME,b.INDEX_OWNER,b.INDEX_NAME from dba_tab_partitions a,dba_ind_partitions b where a.table_name='MORCLOSOUT' and a.TABLE_OWNER='PROD_MES_DBO' and a.PARTITION_NAME='OCT0110' and a.PARTITION_NAME=b.PARTITION_NAME
select a.TABLE_OWNER,a.TABLE_NAME,a.PARTITION_NAME,b.INDEX_OWNER,b.INDEX_NAME from dba_tab_partitions a,dba_ind_partitions b where a.table_name='MORCLOSOUT' and a.TABLE_OWNER='PROD_MES_DBO' and a.PARTITION_NAME='OCT0110' and a.PARTITION_NAME=b.PARTITION_NAME order by b.INDEX_NAME
quit
select 'alter index '||owner||'.'||INDEX_NAME||' rebuild;' from dba_indexes where  status='UNUSABLE';
select 'alter index CED.'||INDEX_NAME||' rebuild;' from dba_indexes where owner='CED' and status='UNUSABLE';
SELECT * FROM ALL_IND_COLUMNS;
SELECT OWNER, COLUMN_NAME, TABLE_NAME from ALL_IND_COLUMNS;
 ------ Rebuilding partitions

select 'ALTER INDEX ' || index_owner || '.' || index_name || ' REBUILD PARTITION ' || partition_name || ' TABLESPACE PARTITION_2008_INDEX02;'
  from dba_ind_partitions
  where tablespace_name ='&tbs'
 
 ------ PARTITION AND INDEX

Try this query:
SELECT i.table_name,  i.index_name, ip.partition_name,
       i.status AS index_status, ip.status AS partition_status
  FROM user_indexes i
       JOIN user_ind_partitions ip
         ON (i.index_name = ip.index_name )
 ORDER BY i.table_name, i.index_name, ip.partition_name;
If partition_status is "USEABLE" then everything is ok. You don't need to rebuild anything.
If partition_status is "UNUSEABLE" then you can rebuild the unuseable partition by doing:
ALTER INDEX index name
REBUILD PARTITION partition name;
select 'alter index '||owner||'.'||INDEX_NAME||' rebuild;' from dba_indexes where status='UNUSABLE';

 -----show_partitions_schema_level.sql
set pagesize 500
set linesize 140
col Tabl format a26
col Partn format a26
col Subpartn format a26
col PARTI_ROWS format 999,999,999,999
col OBJECT_NAME         format A28
col SUBOBJECT_NAME      format a28
col OBJECT_TYPE         format A20
set verify off
PROMPT Please Enter the Schema Name
ACCEPT Schema_owner CHAR PROMPT    'SCHEMA_Name:'
SELECT
DECODE( GROUPING(TABLE_NAME),        1, '** Sum of all TABLES*', table_name ) as Tabl,
DECODE( GROUPING(PARTITION_NAME),    1, '** Sum of All PARTN**', partition_name ) as Partn,
sum(SUBPARTITION_COUNT) SubPartns,
sum(NUM_ROWS) PARTI_ROWS
from dba_tab_partitions
where table_owner = '&Schema_owner'
GROUP BY ROLLUP (TABLE_NAME , PARTITION_NAME )
/

#####################################################################
CPU usage
----------

* CPU.SQL
rem
rem CPU.SQL
rem Mike Ault
rem
rem SQL by CPU Usage (v$sqlarea)
rem
column sql_text format a40 word_wrapped heading 'SQL|Text'
column cpu_time heading 'CPU|Time'
column elapsed_time heading 'Elapsed|Time'
column disk_reads heading 'Disk|Reads'
column buffer_gets heading 'Buffer|Gets'
column rows_processed heading 'Rows|Processed'
set pages 55 lines 132
ttitle 'SQL By CPU Usage'
spool cpu
select * from
(select sql_text,
cpu_time/1000000 cpu_time,
elapsed_time/1000000 elapsed_time,
disk_reads,
buffer_gets,
rows_processed
from v$sqlarea
order by cpu_time desc, disk_reads desc
)
where rownum < 21
/
spool off
set pages 22 lines 80
ttitle off

###################JOB Scheduling #############################
-- What scheduled tasks failed during execution, and why?
COL log_id              FORMAT 9999   HEADING 'Log#'
COL log_date            FORMAT A32    HEADING 'Log Date'
COL owner               FORMAT A06    HEADING 'Owner'
COL job_name            FORMAT A20    HEADING 'Job'
COL status              FORMAT A10    HEADING 'Status'
COL actual_start_date   FORMAT A32    HEADING 'Actual|Start|Date'
COL error#              FORMAT 999999 HEADING 'Error|Nbr'
TTITLE 'Scheduled Tasks That Failed:'
select
   log_date,
   job_name,
   status,
   req_start_date,
   actual_start_date,
   run_duration
from
   dba_scheduler_job_run_details
where
--   job_name = 'MYJOB'
   status <> 'SUCCEEDED'
order by
   actual_start_date;

SELECT job_name, state FROM dba_scheduler_jobs WHERE job_name = 'TEST1';

#################Agent ###############################
Agent log file:
$AGENT_HOME/<hostname>/sysman/log
/local/pbd-db01/sw/oracle/product/10.2.0/agent10g/sysman/log
/export/home/oracle/GCAGENT/agent10g/pbceora02/sysman

###################MVIEW###################################
select NAME, MASTER, to_char(LAST_REFRESH,'mm-dd-yy hh24:mi:ss') from dba_mview_refresh_times
order by NAME, MASTER
/
select LOG_OWNER,MASTER,LOG_TABLE from dba_mview_logs
/

select master, to_char(oldest_pk,'mm/dd/yyyy hh24:mi:ss') OLDEST_PK,
to_char(oldest,'mm/dd/yyyy hh24:mi:ss') OLDEST,
to_char(youngest,'mm/dd/yyyy hh24:mi:ss') YOUNGEST from sys.mlog$
where master='&table_name'
/

col owner format a10
select l.snapshot_id, owner, name, substr(snapshot_site,1,30) snapshot_site,
to_char(current_snapshots, 'mm/dd/yyyy hh24:mi:ss') current_snapshots
from dba_registered_snapshots r, dba_snapshot_logs l
where r.snapshot_id = l.snapshot_id (+)
and l.master='&table_name'
/

######################MAX SHRINK ##########################################
 ####GOOD####
 set verify off
 set linesize 150
 column file_name format a50 word_wrapped
 column smallest format 999,990 heading "Smallest|Size|Poss."
 column currsize format 999,990 heading "Current|Size"
 column savings  format 999,990 heading "Poss.|Savings"
 break on report
 compute sum of savings on report
 column value new_val blksize
 select value from v$parameter where name = 'db_block_size'
 /
 select file_name,
        ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
        ceil( blocks*&&blksize/1024/1024) currsize,
        ceil( blocks*&&blksize/1024/1024) -
        ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
 from dba_data_files a,
      ( select file_id, max(block_id+blocks-1) hwm
          from dba_extents
         group by file_id ) b
 where a.file_id = b.file_id(+)
 /
 column cmd format a75 word_wrapped
 select 'alter database datafile '''||file_name||''' resize ' ||
        ceil( (nvl(hwm,1)*&&blksize)/1024/1024 )  || 'm;' cmd
 from dba_data_files a,
      ( select file_id, max(block_id+blocks-1) hwm
          from dba_extents
         group by file_id ) b
 where a.file_id = b.file_id(+)
   and ceil( blocks*&&blksize/1024/1024) -
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0


set pagesize 0
set linesize 2000
set verify off
column file_name format a50 word_wrapped
column smallest format 999,990 heading "Smallest|Size|Poss."
column currsize format 999,990 heading "Current|Size"
column savings  format 999,990 heading "Poss.|Savings"
break on report
compute sum of savings on report
column value new_val blksize
select value from v$parameter where name = 'db_block_size'
/
REM select file_name,
REM        ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
REM        ceil( blocks*&&blksize/1024/1024) currsize,
REM        ceil( blocks*&&blksize/1024/1024) -
REM        ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
REM from dba_data_files a,
REM      ( select file_id, max(block_id+blocks-1) hwm
REM          from dba_extents
REM         group by file_id ) b
REM where a.file_id = b.file_id(+)
REM /
column cmd format a132 word_wrapped
select 'alter database datafile '''||file_name||''' resize ' ||
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 )  || 'm;' cmd
from dba_data_files a,
     ( select file_id, max(block_id+blocks-1) hwm
         from dba_extents
        group by file_id ) b
where a.file_id = b.file_id(+)
and   a.tablespace_name in ('DATA', 'INDX')
  and ceil( blocks*&&blksize/1024/1024) -
      ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/

####NAVEENS###################
set verify off
set pages 10000 lines 132 trimspool on
column file_name format a65 word_wrapped
column smallest format 999,990 heading "Smallest|Size|Poss."
column currsize format 999,990 heading "Current|Size"
column savings  format 999,990 heading "Poss.|Savings"
break on report
compute sum of savings on report
spool resize01.txt
column value new_val blksize head "Block Size" for a20
select value from v$parameter where name = 'db_block_size'
/
select file_name,
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
       ceil( blocks*&&blksize/1024/1024) currsize,
       ceil( blocks*&&blksize/1024/1024) -
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
from dba_data_files a,
     ( select file_id, max(block_id+blocks-1) hwm
         from dba_extents
        group by file_id ) b
where a.file_id = b.file_id(+);

###############################SRVCTL COMMANDS################################################
Use the following syntax to add configuration information about an existing ASM instance:
srvctl add asm -n node_name -i asm_instance_name -o oracle_home
Use the following syntax to remove an ASM instance:
srvctl remove asm -n node_name [-i asm_instance_name]
Use the following syntax to enable an ASM instance:
srvctl enable asm -n node_name [-i ] asm_instance_name
Use the following syntax to disable an ASM instance:
srvctl disable asm -n node_name [-i asm_instance_name]
The above statement is generally required when u want to disable the asm so that asm does not start automatically on reboot.
You can also use SRVCTL to start, stop, and obtain the status of an ASM instance as in the following examples.
Use the following syntax to start an ASM instance:
srvctl start asm -n node_name [-i asm_instance_name] [-o start_options] [-c <connect_str> | -q]
Use the following syntax to stop an ASM instance:
srvctl stop asm -n node_name [-i asm_instance_name] [-o stop_options] [-c <connect_str> | -q]
Use the following syntax to show the configuration of an ASM instance:
srvctl config asm -n node_name
Use the following syntax to obtain the status of an ASM instance:
srvctl status asm -n node_name
Use the following syntax to stop the database on anyone of the nodes in an RAC environment:
srvctl stop listener -n node_name
srvctl stop instance -d <db_name> -i <instance_name> -o immediate
Use the following syntax to start the database on anyone of the nodes in an RAC environment:
srvctl start listener -n node_name
srvctl start instance -d <db_name> -i <instance_name> -o immediate
Use the following command to stop the database using single command:
srvctl stop database -d <db_name> -o immediate
In order to stop the node applications like oracle vip,gsd, ons services ,use following commands
srvctl stop nodeapps -n <node_name>
Similarly to start
srvctl start nodeapps -n <node_name>
If u wish to trun srvm trace on which can be useful for diagnosisi during instance startup or shut dowm use following command:
SRVM_TRACE=TRUE; export SRVM_TRACE
srvctl stop asm -n <node_name> -i +ASM1 -o immediate>srvctl_stop_asm.log
###################################################################################################
###########################TABLE ANALYZED ##################################
col table_name for a15
select table_name, LAST_ANALYZED, SAMPLE_SIZE, NUM_ROWS, SAMPLE_SIZE/NUM_ROWS*100 from dba_tables
where table_name=upper('&TableName') and owner=upper('&Owner');

#######################################################################################################

#################################################PASSWORD CHANGE#######################
11G
MAKE PASSWORD_REUSE_TIME   AS UNLIMITED IN PROFILE.
Select 'Alter user '||name||' identified by values '''||password||''';' from user$  where name in ('GNVFW');

#######################DATAFILE IO############################################
select  NAME,
 PHYRDS "Physical Reads",
 round((PHYRDS / PD.PHYS_READS)*100,2) "Read %",
 PHYWRTS "Physical Writes",
 round(PHYWRTS * 100 / PD.PHYS_WRTS,2) "Write %",
 fs.PHYBLKRD+FS.PHYBLKWRT "Total Block I/O's"
from (
 select  sum(PHYRDS) PHYS_READS,
  sum(PHYWRTS) PHYS_WRTS
 from   v$filestat
 ) pd,
 v$datafile df,
 v$filestat fs
where  df.FILE# = fs.FILE#
order  by fs.PHYBLKRD+fs.PHYBLKWRT desc
#############################QUEUE#######################################
Select QUEUE_TABLE from dba_queue_tables where owner = ‘DECIPHER’
Select QUEUE_TABLE from user_queue_tables
execute DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => ‘DECIPHER_AQ_DEMO’, force => true);
##############################CURSOR####################################

--total cursors open, by session
select a.value, s.username, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current';
--total cursors open, by username & machine
select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur,
s.username, s.machine
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
group by s.username, s.machine
order by 1 desc;

#######################Monitor Per Session UGA, PGA and Cursor Usage ###########################
set pages500 lines110 trims on
clear col
col name format a30
col username format a20
break on username nodup skip 1
select vses.username||':'||vsst.sid||','||vses.serial# username, vstt.name, max(vsst.value) value
from v$sesstat vsst, v$statname vstt, v$session vses
where vstt.statistic# = vsst.statistic# and vsst.sid = vses.sid and vstt.name in
('session pga memory','session pga memory max','session uga memory','session uga memory max',
'session cursor cache count','session cursor cache hits','session stored procedure space',
'opened cursors current','opened cursors cumulative') and vses.username is not null
group by vses.username, vsst.sid, vses.serial#, vstt.name
order by vses.username, vsst.sid, vses.serial#, vstt.name;

select name, sum(value/1024) "Value - KB"
 from v$statname n,
 v$session s,
 v$sesstat t
 where s.sid=t.sid
 and n.statistic# = t.statistic#
 and s.type = 'USER'
 and s.username is not NULL
 and n.name in ('session pga memory', 'session pga memory max'
 'session uga memory', 'session uga memory max')
 group by name
 /

select * from v$pgastat;
Determine a good setting for pga_aggregate_target:
select * from v$pga_target_advice order by pga_target_for_estimate;
Show the maximum PGA usage per process:
select max(pga_used_mem), max(pga_alloc_mem), max(pga_max_mem) from v$process;




###############################################SID################################

EM PURPOSE:    LOOKUP DATABASE DETAILS FOR A GIVEN UNIX PROCESS ID
REM
-----------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE 50000
SET ECHO OFF FEED OFF VERI OFF
ACCEPT 1 PROMPT 'Enter SID: '
DECLARE
  v_sid number;
  s sys.v_$session%ROWTYPE;
  p sys.v_$process%ROWTYPE;
BEGIN
  BEGIN
    SELECT sid INTO v_sid FROM  sys.v_$process p, sys.v_$session s
    WHERE  p.addr = s.paddr
        AND  (s.sid    = '&1'  or s.process = '&1');
  EXCEPTION
    WHEN no_data_found THEN
      DBMS_OUTPUT.PUT_LINE('Unable to find sid &&1!!!');
    RETURN;
    WHEN others THEN
      DBMS_OUTPUT.PUT_LINE(sqlerrm);
      RETURN;
  END;
  SELECT * INTO s FROM sys.v_$session WHERE sid  = v_sid;
  SELECT * INTO p FROM sys.v_$process WHERE addr = s.paddr;
DBMS_OUTPUT.PUT_LINE('=====================================================================');
DBMS_OUTPUT.PUT_LINE('SID/Serial  : '|| s.sid||','||s.serial#);
DBMS_OUTPUT.PUT_LINE('Foreground  : '|| 'PID: '||s.process||' '||s.program);
DBMS_OUTPUT.PUT_LINE('Shadow      : '|| 'PID: '||p.spid||' - '||p.program);
DBMS_OUTPUT.PUT_LINE('Terminal    : '|| s.terminal || '/ ' || p.terminal);
DBMS_OUTPUT.PUT_LINE('OS User     : '|| s.osuser||' on '||s.machine);
DBMS_OUTPUT.PUT_LINE('Ora User    : '|| s.username);
DBMS_OUTPUT.PUT_LINE('Status Flags: '|| s.status||' - '||s.server||' '||s.type);
DBMS_OUTPUT.PUT_LINE('Tran Active : '|| nvl(s.taddr, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Login Time  : '|| to_char(s.logon_time, 'Dy HH24:MI:SS'));
DBMS_OUTPUT.PUT_LINE('Last Call   : '|| to_char(sysdate-(s.last_call_et/60/60/24), 'Dy HH24:MI:SS') || ' - ' || to_char(s.last_call_et/60,'990.0') || ' min');
DBMS_OUTPUT.PUT_LINE('Lock/ Latch : '|| nvl(s.lockwait, 'NONE')||'/ '||nvl(p.latchwait, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Latch Spin  : '|| nvl(p.latchspin, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Current SQL statement:');
FOR c1 IN ( SELECT * FROM sys.v_$sqltext WHERE HASH_VALUE = s.sql_hash_value ORDER BY piece)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.sql_text);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Previous SQL statement:');
FOR c1 IN ( SELECT * FROM sys.v_$sqltext WHERE HASH_VALUE = s.prev_hash_value ORDER BY piece)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.sql_text);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Session Waits:');
FOR c1 IN ( SELECT * FROM sys.v_$session_wait WHERE sid = s.sid)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.state||': '||c1.event);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Session Longops:');
FOR c1 IN ( SELECT opname, sofar, totalwork
from sys.v_$session_longops WHERE sid = s.sid and totalwork !=0
and sofar <> totalwork)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.opname||': '||c1.sofar||';'||c1.totalwork||';'||c1.sofar/c1.totalwork*100);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Locks:');
FOR c1 IN ( SELECT DISTINCT DECODE(l.type,
                      'TM', 'DML/DATA ENQ', 'TX', 'TRANSAC ENQ',
                      'UL', 'PLS USR LOCK','BL', 'BUF HASH TBL',  'CF', 'CONTROL FILE',
                      'CI', 'CROSS INST F',  'DF', 'DATA FILE   ',
                      'CU', 'CURSOR BIND ',
                      'DL', 'DIRECT LOAD ',  'DM', 'MOUNT/STRTUP',
                      'DR', 'RECO LOCK   ',  'DX', 'DISTRIB TRAN',
                      'FS', 'FILE SET    ',  'IN', 'INSTANCE NUM',
                      'FI', 'SGA OPN FILE',
                      'IR', 'INSTCE RECVR',  'IS', 'GET STATE   ',
                      'IV', 'LIBCACHE INV',  'KK', 'LOG SW KICK ',
                      'LS', 'LOG SWITCH  ',
                      'MM', 'MOUNT DEF   ',  'MR', 'MEDIA RECVRY',
                      'PF', 'PWFILE ENQ  ',  'PR', 'PROCESS STRT',
                      'RT', 'REDO THREAD ',  'SC', 'SCN ENQ     ',
                      'RW', 'ROW WAIT    ',
                      'SM', 'SMON LOCK   ',  'SN', 'SEQNO INSTCE',
                      'SQ', 'SEQNO ENQ   ',  'ST', 'SPACE TRANSC',
                      'SV', 'SEQNO VALUE ',  'TA', 'GENERIC ENQ ',
                      'TD', 'DLL ENQ     ',  'TE', 'EXTEND SEG  ',
                      'TS', 'TEMP SEGMENT',  'TT', 'TEMP TABLE  ',
                      'UN', 'USER NAME   ',  'WL', 'WRITE REDO  ',
                      'TYPE='||l.type) type,
                   DECODE(l.lmode, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S',5, 'RSX', 6, 'X', to_char(l.lmode) ) lmode,
                   DECODE(l.request, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S', 5, 'RSX', 6, 'X', to_char(l.request) ) lrequest,
                   DECODE(l.type, 'MR', o.name,
                      'TD', o.name,
                      'TM', o.name,
                      'RW', 'FILE#='||substr(l.id1,1,3)||
                            ' BLOCK#='||substr(l.id1,4,5)||' ROW='||l.id2,
                      'TX', 'RS+SLOT#'||l.id1||' WRP#'||l.id2,
                      'WL', 'REDO LOG FILE#='||l.id1,
                      'RT', 'THREAD='||l.id1,
                      'TS', DECODE(l.id2, 0, 'ENQUEUE', 'NEW BLOCK ALLOCATION'),
                      'ID1='||l.id1||' ID2='||l.id2) objname
            FROM  sys.gv_$lock l, sys.obj$ o
            WHERE sid   = s.sid and l.id1 = o.obj#(+) )
LOOP
DBMS_OUTPUT.PUT_LINE(chr(9)||c1.type||' H: '||c1.lmode||' R: '||c1.lrequest||' - '||c1.objname);
END LOOP;
DBMS_OUTPUT.PUT_LINE('=====================================================================');
END;
/

#############################################PID#############################################################


###############################INVALID OBJECTS##############################################
set echo off
set feedback off
set heading off

select 'alter '||object_type||' '||owner||'.'||object_name||' compile;'
from dba_objects
where status = 'INVALID'
  and object_type <> 'SYNONYM'
  and object_type <> 'PACKAGE BODY'
/
select 'alter package '||owner||'.'||object_name||' compile body;'
from dba_objects
where status = 'INVALID'
  and object_type = 'PACKAGE BODY'
/
set echo on
set feedback on
set heading on

#################DEPENDENT OBJECTS##########################3
SELECT owner, object_type, object_name, object_id, status
FROM SYS.dba_objects
where object_name = 'DBMS_INTERNAL_LOGSTDBY';
SELECT B.*
FROM PUBLIC_DEPENDENCY A, SYS.DBA_OBJECTS B
WHERE A.OBJECT_ID = 7331 AND A.REFERENCED_OBJECT_ID = B.OBJECT_ID AND OBJECT_TYPE = 'TABLE'
ORDER BY OWNER, OBJECT_NAME;
##############################REGISTRY ###################################
col comp_id format a20
col schema format a20
col comp_name format a40

select schema, comp_id, substr( comp_name, 1, 40) comp_name, version, modified,
       status, procedure, startup
  from dba_registry
 order by schema, comp_id
;

##################Agent#########################
EMD upload error: uploadXMLFiles skipped :: OMS version not checked yet..
Then go to the agent and do the following:
- emctl stop agent
- delete all files in $AGENT_HOME/sysman/emd/upload and $AGENT_HOME/sysman/emd/state
- emctl clearstate agent (this should delete all state files but sometimes it is not enough, but I experienced that it is better to use this command after deletion of the files)
- emctl secure agent (and specify the password on demand)   -- NOT REQUIRED
- emctl start agent
rm -r $AGENT_HOME/sysman/emd/state/*
rm -r $AGENT_HOME/sysman/emd/collection/*
rm -r $AGENT_HOME/sysman/emd/upload/*
rm $AGENT_HOME/sysman/emd/lastupld.xml
rm $AGENT_HOME/sysman/emd/agntstmp.txt
rm $AGENT_HOME/sysman/emd/blackouts.xml
rm $AGENT_HOME/sysman/emd/protocol.ini
############################LOB####################################
select 'alter table ' || t.owner || '.' || t.table_name || ' move lob ('||column_name||') store as lobsegment (tablespace PGPS_PROD);'
from all_lobs l, dba_tables t
where l.owner=t.owner
and l.table_name = t.table_name
and l.SEGMENT_NAME in (
select segment_name
from dba_segments
where segment_type like 'LOBSEGMENT'
and tablespace_name = 'USERS')
order by t.owner, t.table_name;

select 'alter table ' || t.owner || '.' || t.table_name || ' move lob ('||column_name||') store as (tablespace PORTDATA);'
from all_lobs l, dba_tables t
where l.owner=t.owner
and l.table_name = t.table_name
and l.SEGMENT_NAME in (
select segment_name
from dba_segments
where segment_type like 'LOBSEGMENT'
and tablespace_name = 'USERS')
order by t.owner, t.table_name;
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN MOVE LOB(OTHER_XML) STORE AS (TABLESPACE PORTDATA);
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN MOVE TABLESPACE  PORTDATA LOB(OTHER_XML) STORE AS (TABLESPACE PORTDATA);
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN move tablespace PORTDATA;
 -------moving objects from one tablespace to other


 all in one move.

 select
--dba_segments.bytes, dba_lobs.*,
'alter table ' || dba_lobs.owner||'.'||dba_lobs.table_name ||' move lob('||column_name||') store as '||
dba_lobs.segment_name ||' (tablespace tbs_compress);' move_script
, dba_tables.tablespace_name table_tablespace
, (select sum(bytes)/1024/1024 from dba_segments
   where segment_name=dba_tables.table_name and owner=dba_tables.owner) table_size_MB
from dba_segments, dba_lobs, dba_indexes, dba_tables
where  dba_lobs.owner in ('RAD_DATA_WAREHOUSE')
and dba_indexes.tablespace_name = 'USERS'
and dba_lobs.segment_name = dba_segments.segment_name


select sum(bytes/1024/1024/1024) from dba_segments where tablespace_name in ('TS_BPM_QA_2_BDIAS','TS_BPM_QA_1_BDIAS') and owner like ('BPM_%BDIAS') and segment_type like 'LOB%';
          ------- move LOBS with tabels
SELECT 'ALTER TABLE '||owner||'.'||table_name ||' MOVE TABLESPACE TS_BPM_QA_1_BDIAS ;'  FROM DBA_tables WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and owner='BPM_PREPROD_2_BDIAS';
SELECT 'ALTER INDEX '||owner||'.'|| index_name ||' REBUILD online TABLESPACE TS_BPM_QA_1_BDIAS;' FROM DBA_indexes WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and owner='BPM_PREPROD_2_BDIAS';
SELECT 'ALTER TABLE '||owner||'.'|| table_name ||' MOVE tablespace  TS_BPM_QA_1_BDIAS  LOB ('|| column_name ||') STORE AS (TABLESPACE TS_BPM_QA_1_BDIAS index TS_BPM_QA_1_BDIAS);' FROM DBA_lobs WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and owner='BPM_PREPROD_2_BDIAS';
            (or)
         
          ------  move only lobs
SELECT 'ALTER TABLE '||owner||'.'|| table_name ||' MOVE LOB ('|| column_name ||') STORE AS (TABLESPACE TS_BPM_QA_1_BDIAS);' FROM DBA_lobs WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and owner='BPM_QA_2_BDIAS';
SELECT 'ALTER TABLE '||table_owner||'.'||table_name ||' MOVE partition '||partition_name||' TABLESPACE TS_BPM_QA_1_BDIAS ;'  FROM dba_tab_partitions WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and table_owner='BPM_PREPROD_2_BDIAS';
SELECT 'ALTER index '||INDEX_OWNER||'.'||INDEX_NAME ||' rebuild partition '||partition_name||' TABLESPACE TS_BPM_QA_1_BDIAS ;'  FROM dba_ind_partitions WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and index_owner='BPM_PREPROD_2_BDIAS';

 select 'ALTER TABLE '||TABLE_OWNER||'.'|| TABLE_NAME||' MOVE PARTITION ('||PARTITION_NAME||') TABLESPACE TS_BPM_LOB_QA_1_BDIAS
  LOB ('||column_name||') STORE AS (TABLESPACE '||TABLESPACE_NAME||');' from dba_lob_partitions where  TABLESPACE_NAME='TS_BPM_QA_1_BDIAS' and TABLE_OWNER='BPM_QA_2_BDIAS';
 
ALTER TABLE current_table MOVE PARTITION partition_name
   TABLESPACE destination_table_space
   LOB (column_name) STORE AS (TABLESPACE current_tablespace);

alter table <tname> move partition <pname> lob (<cname>) store as ( tablespace <tablespace_name> )
select count(*) num_indexes from dba_indexes where status = 'UNUSABLE';
select count(*) num_ind_partitions from dba_ind_partitions where status = 'UNUSABLE';
select count(*) num_ind_subpartitions from dba_ind_subpartitions where status = 'UNUSABLE';
select 'ALTER INDEX ' || owner || '.' ||index_name || ' REBUILD online' ||';'  from dba_indexes  where status = 'UNUSABLE';
select 'ALTER INDEX ' || index_owner || '.' || index_name || ' REBUILD PARTITION ' || partition_name || ' TABLESPACE TS_BPM_QA_1_BDIAS;'  from dba_ind_partitions  where status = 'UNUSABLE';
select 'ALTER INDEX ' ||owner || '.' || index_name || ' REBUILD online;' from dba_indexes where status = 'UNUSABLE' and owner in ('BPM_QA_2_BDIAS','BPM_PREPROD_2_BDIAS');
 SELECT 'ALTER TABLE '||table_owner||'.'||table_name ||' MOVE partition '||partition_name||' TABLESPACE TS_BPM_QA_1_BDIAS ;'  FROM dba_tab_subpartitions WHERE tablespace_name='BPM_QA_1_BDIAS_TS' and table_owner='BPM_QA_2_BDIAS';
-------------
SELECT 'ALTER TABLE '||owner||'.'||table_name ||' MOVE TABLESPACE TS_BPM_QA_1_BDIAS ;'  FROM DBA_tables WHERE tablespace_name='BPM_QA_1_BDIAS_TS';
SELECT 'ALTER INDEX '||owner||'.'|| index_name ||' REBUILD TABLESPACE <NEW TABLESPACE>;' FROM DBA_indexes WHERE tablespace_name='<OLD TABLESPACE>';
SELECT 'ALTER TABLE '||owner||'.'|| table_name ||' MOVE LOB ('|| column_name ||') STORE AS (TABLESPACE <NEW TABLESPACE>);' FROM DBA_lobs WHERE tablespace_name='<OLD TABLESPACE>';
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN MOVE LOB(OTHER_XML) STORE AS (TABLESPACE PORTDATA);
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN MOVE TABLESPACE  PORTDATA LOB(OTHER_XML) STORE AS (TABLESPACE PORTDATA);
alter table PGPS_PROD.EMBARCADERO_EXPLAIN_PLAN move tablespace PORTDATA;
alter table lob_test move tablespace RMAN lob (data) store as ( tablespace lob_indexesindex (tablespace lobs));
ALTER INDEX <index_name> REBUILD ONLINE;
ALTER TABLE <table_name> COALESCE;
ALTER TABLE <table_name> MOVE ONLINE TABLESPACE data1 OVERFLOW TABLESPACE data2;
###############################################################################
            
 #############################session waits#############################################

 SET LINESIZE 200
SET PAGESIZE 1000
COLUMN username FORMAT A20
COLUMN event FORMAT A30
COLUMN wait_class FORMAT A15
SELECT NVL(s.username, '(sys)') AS username,
       s.sid,
       s.serial#,
       sw.event,
       sw.wait_class,
       sw.wait_time,
       sw.seconds_in_wait,
       sw.state
FROM   v$session_wait sw,
       v$session s
WHERE  s.sid = sw.sid
and s.username like 'SYS%'
and s.status='ACTIVE'
ORDER BY sw.seconds_in_wait DESC;



column pu   format a9       heading 'O/S|Login|ID'
column su   format a9       heading 'Oracle|User ID'
column stat format a8       heading 'Session|Status'
column ssid format 999999   heading 'Oracle|Session|ID'
column sser format 999999   heading 'Oracle|Serial|No'
column spid format a20 heading 'O/S|Process|ID'
column txt  format a100    heading 'Current Statement' wrapped
set linesize  1000
set pagesize  32000
set trimspool on
select   p.username                 pu
,        s.username                 su
,        s.status                   stat
,        s.sid                      ssid
,        s.serial#                  sser
,        substr(p.spid,1,8)         spid
,        substr(sa.sql_text,1,200) txt
,  s.INST_ID Node
from     gv$process p
,        gv$session s
,        gv$sqlarea sa
where    p.addr           = s.paddr
and      s.username         is not null
and      s.sql_address    = sa.address(+)
and      s.sql_hash_value = sa.hash_value(+)
and      s.status         = 'ACTIVE'
and      s.username  in ('SYS','DBSNMP')
--and      s.sid=&SID
order by 1,2,7
/

###########################################################################
####################  sid details #######################################
REM sidsql.sql
-----------------------------------------------------------------------
REM PURPOSE:    LOOKUP DATABASE DETAILS FOR A GIVEN UNIX PROCESS ID
REM
-----------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE 50000
SET ECHO OFF FEED OFF VERI OFF
ACCEPT 1 PROMPT 'Enter SID: '
DECLARE
  v_sid number;
  s sys.v_$session%ROWTYPE;
  p sys.v_$process%ROWTYPE;
BEGIN
  BEGIN
    SELECT sid INTO v_sid FROM  sys.v_$process p, sys.v_$session s
    WHERE  p.addr = s.paddr
        AND  (s.sid    = '&1'  or s.process = '&1');
  EXCEPTION
    WHEN no_data_found THEN
      DBMS_OUTPUT.PUT_LINE('Unable to find sid &&1!!!');
    RETURN;
    WHEN others THEN
      DBMS_OUTPUT.PUT_LINE(sqlerrm);
      RETURN;
  END;
  SELECT * INTO s FROM sys.v_$session WHERE sid  = v_sid;
  SELECT * INTO p FROM sys.v_$process WHERE addr = s.paddr;
DBMS_OUTPUT.PUT_LINE('=====================================================================');
DBMS_OUTPUT.PUT_LINE('SID/Serial  : '|| s.sid||','||s.serial#);
DBMS_OUTPUT.PUT_LINE('Foreground  : '|| 'PID: '||s.process||' '||s.program);
DBMS_OUTPUT.PUT_LINE('Shadow      : '|| 'PID: '||p.spid||' - '||p.program);
DBMS_OUTPUT.PUT_LINE('Terminal    : '|| s.terminal || '/ ' || p.terminal);
DBMS_OUTPUT.PUT_LINE('OS User     : '|| s.osuser||' on '||s.machine);
DBMS_OUTPUT.PUT_LINE('Ora User    : '|| s.username);
DBMS_OUTPUT.PUT_LINE('Status Flags: '|| s.status||' - '||s.server||' '||s.type);
DBMS_OUTPUT.PUT_LINE('Tran Active : '|| nvl(s.taddr, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Login Time  : '|| to_char(s.logon_time, 'Dy HH24:MI:SS'));
DBMS_OUTPUT.PUT_LINE('Last Call   : '|| to_char(sysdate-(s.last_call_et/60/60/24), 'Dy HH24:MI:SS') || ' - ' || to_char(s.last_call_et/60,'990.0') || ' min');
DBMS_OUTPUT.PUT_LINE('Lock/ Latch : '|| nvl(s.lockwait, 'NONE')||'/ '||nvl(p.latchwait, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Latch Spin  : '|| nvl(p.latchspin, 'NONE'));
DBMS_OUTPUT.PUT_LINE('Current SQL statement:');
FOR c1 IN ( SELECT * FROM sys.v_$sqltext WHERE HASH_VALUE = s.sql_hash_value ORDER BY piece)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.sql_text);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Previous SQL statement:');
FOR c1 IN ( SELECT * FROM sys.v_$sqltext WHERE HASH_VALUE = s.prev_hash_value ORDER BY piece)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.sql_text);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Session Waits:');
FOR c1 IN ( SELECT * FROM sys.v_$session_wait WHERE sid = s.sid)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.state||': '||c1.event);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Session Longops:');
FOR c1 IN ( SELECT opname, sofar, totalwork
from sys.v_$session_longops WHERE sid = s.sid and totalwork !=0
and sofar <> totalwork)
LOOP
    DBMS_OUTPUT.PUT_LINE(chr(9)||c1.opname||': '||round(c1.sofar/c1.totalwork*100,2));
END LOOP;
DBMS_OUTPUT.PUT_LINE('Locks:');
FOR c1 IN ( SELECT DISTINCT DECODE(l.type,
                      'TM', 'DML/DATA ENQ', 'TX', 'TRANSAC ENQ',
                      'UL', 'PLS USR LOCK','BL', 'BUF HASH TBL',  'CF', 'CONTROL FILE',
                      'CI', 'CROSS INST F',  'DF', 'DATA FILE   ',
                      'CU', 'CURSOR BIND ',
                      'DL', 'DIRECT LOAD ',  'DM', 'MOUNT/STRTUP',
                      'DR', 'RECO LOCK   ',  'DX', 'DISTRIB TRAN',
                      'FS', 'FILE SET    ',  'IN', 'INSTANCE NUM',
                      'FI', 'SGA OPN FILE',
                      'IR', 'INSTCE RECVR',  'IS', 'GET STATE   ',
                      'IV', 'LIBCACHE INV',  'KK', 'LOG SW KICK ',
                      'LS', 'LOG SWITCH  ',
                      'MM', 'MOUNT DEF   ',  'MR', 'MEDIA RECVRY',
                      'PF', 'PWFILE ENQ  ',  'PR', 'PROCESS STRT',
                      'RT', 'REDO THREAD ',  'SC', 'SCN ENQ     ',
                      'RW', 'ROW WAIT    ',
                      'SM', 'SMON LOCK   ',  'SN', 'SEQNO INSTCE',
                      'SQ', 'SEQNO ENQ   ',  'ST', 'SPACE TRANSC',
                      'SV', 'SEQNO VALUE ',  'TA', 'GENERIC ENQ ',
                      'TD', 'DLL ENQ     ',  'TE', 'EXTEND SEG  ',
                      'TS', 'TEMP SEGMENT',  'TT', 'TEMP TABLE  ',
                      'UN', 'USER NAME   ',  'WL', 'WRITE REDO  ',
                      'TYPE='||l.type) type,
                   DECODE(l.lmode, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S',5, 'RSX', 6, 'X', to_char(l.lmode) ) lmode,
                   DECODE(l.request, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S', 5, 'RSX', 6, 'X', to_char(l.request) ) lrequest,
                   DECODE(l.type, 'MR', o.name,
                      'TD', o.name,
                      'TM', o.name,
                      'RW', 'FILE#='||substr(l.id1,1,3)||
                            ' BLOCK#='||substr(l.id1,4,5)||' ROW='||l.id2,
                      'TX', 'RS+SLOT#'||l.id1||' WRP#'||l.id2,
                      'WL', 'REDO LOG FILE#='||l.id1,
                      'RT', 'THREAD='||l.id1,
                      'TS', DECODE(l.id2, 0, 'ENQUEUE', 'NEW BLOCK ALLOCATION'),
                      'ID1='||l.id1||' ID2='||l.id2) objname
            FROM  sys.gv_$lock l, sys.obj$ o
            WHERE sid   = s.sid and l.id1 = o.obj#(+) )
LOOP
DBMS_OUTPUT.PUT_LINE(chr(9)||c1.type||' H: '||c1.lmode||' R: '||c1.lrequest||' - '||c1.objname);
END LOOP;
DBMS_OUTPUT.PUT_LINE('=====================================================================');
END;
/
#############################################################################
################################ shrink datafiles list ##########################################################
column tablespace_name format a20
column "Name" format a45
break on file_id skip 1
ttitle &1
select file_id, block_id, blocks,
       owner||'.'||segment_name "Name"
from   sys.dba_extents
where  tablespace_name = upper('&1')
UNION
select file_id, block_id, blocks,
       'Free'
from   sys.dba_free_space
where  tablespace_name = upper('&1')
order by 1,2,3
/
#######################  Flushing particular sqlid from library cache##############################################
SQL> select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';
ADDRESS HASH_VALUE
--------------------------------------------------------------------------------
----------
000000085FD77CF0 808321886
SQL> exec DBMS_SHARED_POOL.PURGE ('000000085FD77CF0, 808321886', 'C');
PL/SQL procedure successfully completed.
SQL> select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';
no rows selected
Oracle Support Document ID 457309.1 "How To Flush an Object out the Library Cache [SGA]"



 ################################################################################################################

No comments:

Post a Comment