Monday, May 30, 2011

ofr_rman_backup.ksh.txt

00 20 * * 6 /opt/oracle/DBATOOLS/rman/ofr_rman_backup.ksh -t L0 -i PMCRCS20 -d SBT
00 8,20,23 * * 1-5 /opt/oracle/DBATOOLS/rman/ofr_rman_backup.ksh -t AO -i PMCRCS20 -d SBT
00 8,12,16 * * 6 /opt/oracle/DBATOOLS/rman/ofr_rman_backup.ksh -t L1 -i PMCRCS20 -d SBT

pbpmccracora5:/opt/oracle/DBATOOLS/sql/general>>cat /opt/oracle/DBATOOLS/rman/ofr_rman_backup.ksh
#!/bin/ksh
# Modified on 1-23-2007 MT/TT de-linked catalog for main backup job
# Modified on 2-6-2008 MT/TT added ASM size differences, NLS date format
# MOfified on 2-9-2008 SS added SBT portion
# MOfified on 9-30-2010 AA added resync after backup
# RMAN plus backup for Oracle Database
# ---------------------------------------------------------------
Usage="\nUsage: rman_backup.ksh -t BACKUP_TYPE -i ORA_DBNAME {-d device_type} \n \
\n \
parameters :- \n \
\n \
\t -t backup_type\t\t--- Backup Type L0 (lev 0) or L1 (lev 1)or AO (Archive Only) \n \
\t -i ora_dbname\t\t--- DB_NAME \n\
\t -d device_type\t\t--- SBT"
# Process the options passed on the command line
backup_type=""
ora_dbname=""
while getopts ":t:i:d:" opt; do
        case ${opt} in
             t )     backup_type=${OPTARG};;
             i )     ora_dbname=${OPTARG};;
             d )     backup_device=${OPTARG};;
             \? )    echo "`date '+%Y/%m/%d %H:%M:%S'` rmanbackup: illegal option \n"
                     echo "${Usage} \n"
                     return 1;;
             * )     echo "${Usage} \n"
                     return 1;;
        esac
done
valid_sw=0
# ----------------------------------------------
# echo "SID= ${ora_dbname}"
if [ "${ora_dbname}" = "" ]; then
   echo "${Usage} \n"
   exit 1
else
   echo "** ORACLE_DBNAME is set to ${ora_dbname} "
fi
# ----------------------------------------------
# ----Used profile setup only in $HOME/.setup_${ora_dbname}.ksh
# ----------------------------------------------
if [ -f $HOME/.setup_${ora_dbname}.ksh ]; then
    echo "** .setup_${ora_dbname}.ksh file is found at $HOME dir .."
    . $HOME/.setup_${ora_dbname}.ksh
else
    echo "Error: .setup_${ora_dbname}.ksh file is not at $HOME .. exiting .. \n"
    exit 1
fi
# ----------------------------------------------
if [ "${backup_type}" = "L0" -o "${backup_type}" = "L1" -o "${backup_type}" = "AO" ]; then
   echo "** Backup Type is set to $backup_type"
else
  if [ "$NB_ORA_FULL" = "1" ]; then
     backup_type="L0"
     echo "** Backup Type is set to $backup_type through NB_ORA_FULL"
  else
    if [ "$NB_ORA_INCR" = "1"  -o "$NB_ORA_CINC" = "1" ]; then
      backup_type="L1"
      echo "** Backup Type is set to $backup_type through NB_ORA_INCR"
    else
     echo "** Backup Type must be L0 or L1 or AO .. exiting .. \n"
     exit 1
    fi
  fi
fi
# ----------------------------------------------
# Now set the varibles ..
O_SID=$ORACLE_SID
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
# ====================================================================
# ** 1. Now Set up the RMAN RCV file (config and command file)
# ====================================================================
if [ "${backup_type}" = "L0" ]; then
  if  [ "${backup_device}" = "SBT" ]; then
   RCV_FILE="${ORA_LOCAL}/${ora_dbname}_lev0_sbt.rcv"
   BKP_TYPE="Level 0 SBT backup"
   RMANLOG=${TD}_${ORACLE_SID}_rman_lev0_sbt.log
  else
   RCV_FILE="${ORA_LOCAL}/${ora_dbname}_lev0.rcv"
   BKP_TYPE="Level 0 backup"
   RMANLOG=${TD}_${ORACLE_SID}_rman_lev0.log
  fi
else
 if [ "${backup_type}" = "L1" ]; then
  if  [ "${backup_device}" = "SBT" ]; then
    RCV_FILE="${ORA_LOCAL}/${ora_dbname}_lev1_sbt.rcv"
    BKP_TYPE="Level 1 SBT backup"
    RMANLOG=${TD}_${ORACLE_SID}_rman_lev1_sbt.log
  else
    RCV_FILE="${ORA_LOCAL}/${ora_dbname}_lev1.rcv"
    BKP_TYPE="Level 1 backup"
    RMANLOG=${TD}_${ORACLE_SID}_rman_lev1.log
  fi
else
  if [ "${backup_type}" = "AO" ]; then
  if  [ "${backup_device}" = "SBT" ]; then
    RCV_FILE="${ORA_LOCAL}/${ora_dbname}_arch_sbt.rcv"
    BKP_TYPE="Archive Only SBT backup"
    RMANLOG=${TD}_${ORACLE_SID}_rman_arch_sbt.log
  else
    RCV_FILE="${ORA_LOCAL}/${ora_dbname}_arch.rcv"
    BKP_TYPE="Archive Only backup"
    RMANLOG=${TD}_${ORACLE_SID}_rman_arch.log
  fi
   else
    msg1="Error: BackupType must be L0 or L1 or AO \n"
    valid_sw=1
  fi
 fi
fi
# --------- Check for the availability of the RCV file .. -----------------
if [ -f $RCV_FILE ]; then
 echo "**RMAN config. ${RCV_FILE} file is found at local dir .."
else
 msg1="Error: RMAN Config RCV File ${RCV_FILE} is missing at local .. exiting .. \n"
 valid_sw=1
fi
# --------- Check for get_asm_info.sql  .. -----------------
if [ -f ${ORA_RMAN}/get_asm_info.sql ]; then
 echo "${ORA_RMAN}/get_asm_info.sql file is found .."
else
 msg1="Error: ${ORA_RMAN}/get_asm_info.sql file is missing .. exiting .. \n"
 valid_sw=1
fi
# --------- Check for get_asm_info.sql  .. -----------------
if [ -f ${ORA_RMAN}/get_dbinfo.sql ]; then
 echo "${ORA_RMAN}/get_dbinfo.sql file is found .."
else
 msg1="Error: ${ORA_RMAN}/get_dbinfo.sql file is missing .. exiting .. \n"
 valid_sw=1
fi
# --------------------------------------------------------------------------
echo "Valid Switch value = $valid_sw ; Non-Zero is error .."
# -------------------------------------------------------------------------
rmanrun=`ps -ef | grep "rman target" |grep -v grep | grep ${ora_dbname} |wc -l`
rmanstr=`ps -ef | grep "rman target" |grep -v grep | grep ${ora_dbname}`
echo $rmanrun
if [ $rmanrun -gt 0 ]; then
   echo "--------------------------------------------- " >> ${ORA_LOG}/${RMANLOG}
   echo "Another session of Rman is already running"     >> ${ORA_LOG}/${RMANLOG}
   echo "Unable to continue backup, at `date` "          >> ${ORA_LOG}/${RMANLOG}
   echo "Exitng the job ...."                            >> ${ORA_LOG}/${RMANLOG}
   echo "--------------------------------------------- " >> ${ORA_LOG}/${RMANLOG}
   echo "Currently Running RMAN Job : "                  >> ${ORA_LOG}/${RMANLOG}
   echo "$rmanstr"                                       >> ${ORA_LOG}/${RMANLOG}
   # below is withdrawn on 10/16/2007 by  MT/TT
   #mail -s "RMAN+ Backup is already running on : `uname -n` for $O_SID" $MAILLIST < /dev/null
exit 1
   else
   echo "Run RMAN backup on server \n"
fi
#===============================================================
# ** 3. Now run the RMAN backup  ..
# ====================================================================
export NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'
if [ "$CUSER" = "root" ]
then
    if [ -f /opt/CA/eac/bin/sesu ]
    then
       /opt/CA/eac/bin/sesu - oracle -c "$ORACLE_HOME/bin/rman target / log ${ORA_LOG}/${RMANLOG} cmdfile=$RCV_FILE"
    else
       /bin/su - oracle -c "$ORACLE_HOME/bin/rman target / log ${ORA_LOG}/${RMANLOG} cmdfile=$RCV_FILE"
    fi
    exit_code=$?
else
    $ORACLE_HOME/bin/rman target / log ${ORA_LOG}/${RMANLOG} cmdfile=$RCV_FILE
    exit_code=$?
fi
echo "----------------------------------------------------------------\n" >> ${ORA_LOG}/${RMANLOG}
export TN=`date '+%b-%d %H:%M'`
if [ $exit_code -eq 0 ]; then
 $ORACLE_HOME/bin/rman target / catalog $RMANCAT log /opt/oracle/DBATOOLS/rman/resync.log cmdfile=/opt/oracle/DBATOOLS/rman/resync.rcv
  Message4="RMAN Backup $BKP_TYPE at $TN Done.. Success "
else
  Message4="RMAN Backup $BKP_TYPE at $TN Error Failed* "
fi
exit 0


pbpmccracora5:/opt/oracle/DBATOOLS/sql/general>>cd $ORA_LOCAL
pbpmccracora5:/opt/oracle/DBATOOLS/local>>ls -lrt *.rcv
-rw-r--r-- 1 oracle oinstall  870 Sep 16  2010 PMCRCS20_lev1.rcv
-rw-r--r-- 1 oracle oinstall  868 Sep 16  2010 PMCRCS20_lev0.rcv
-rw-r----- 1 oracle oinstall 2106 Sep 17  2010 PMCRCS20_lev1_sbt.rcv
-rwxrwxrwx 1 oracle oinstall  806 Sep 24  2010 r.rcv
-rw-r--r-- 1 oracle oinstall 2767 Sep 26  2010 PMCRCS20_lev0_sbt.rcv
-rw-r----- 1 oracle oinstall 1021 Oct 29  2010 PMCRCS20_arch_sbt.rcv

pbpmccracora5:/opt/oracle/DBATOOLS/local>>cat PMCRCS20_lev0.rcv
run
{
CONFIGURE RETENTION POLICY TO REDUNDANCY 1 ;
CONFIGURE BACKUP OPTIMIZATION ON ;
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 8G ;
CONFIGURE CONTROLFILE AUTOBACKUP ON ;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$RMANOUT/%d_AUTOCF_%F';
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 2;
CONFIGURE  DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET ;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 ;
SHOW ALL;
REPORT SCHEMA  ;
allocate channel c1 device type disk  ;
allocate channel c2 device type disk  ;
backup incremental level 0
 database format '$RMANOUT/%d_%s_%t_%c_DB0'  tag="DB_LEV0"
 plus
 archivelog format '$RMANOUT/%d_%s_%t_%c_ARCH0' tag "ARCH_LEV0" ;
backup current controlfile format '$RMANOUT/%d_%s_%t_CONTROL' tag "CNTRLFL" ;
backup spfile format '$RMANOUT/%d_%s_%t_SPFILE' tag "SPFILE" ;
}
pbpmccracora5:/opt/oracle/DBATOOLS/local>>
pbpmccracora5:/opt/oracle/DBATOOLS/local>>
pbpmccracora5:/opt/oracle/DBATOOLS/local>>cat PMCRCS20_lev0_sbt.rcv
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch02 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch03 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch04 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch05 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch06 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
ALLOCATE CHANNEL ch07 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
CONFIGURE RETENTION POLICY TO REDUNDANCY 1 ;
CONFIGURE BACKUP OPTIMIZATION ON ;
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE'  MAXPIECESIZE 75G ;
CONFIGURE CONTROLFILE AUTOBACKUP ON ;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO '%F';
sql 'alter system archive log current';
backup incremental level 0
    DATABASE
      FORMAT '%d_%s_%T_%c_DB0'
      TAG "DB_LEV0"
    PLUS ARCHIVELOG DELETE INPUT
      FILESPERSET 20
      FORMAT '%d_%s_%T_%c_ARCH0'
      TAG "ARCH_LEV0"
    ;
sql 'alter system archive log current';
sql 'alter system archive log current';
BACKUP
      ARCHIVELOG ALL DELETE INPUT
      FILESPERSET 20
      FORMAT '%d_%s_%T_%c_ARCH0'
      TAG "ARCH_LEV0"
    ;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
RELEASE CHANNEL ch05;
RELEASE CHANNEL ch06;
RELEASE CHANNEL ch07;
#
# Note: During the process of backing up the database, RMAN also backs up the
# control file.  This version of the control file does not contain the
# information about the current backup because "nocatalog" has been specified.
# To include the information about the current backup, the control file should
# be backed up as the last step of the RMAN section.  This step would not be
# necessary if we were using a recovery catalog.
#
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_POLICY=PRD04_PBPMCCRACORA_9999SC0,NB_ORA_CLIENT=pbpmccracora5,NB_ORA_SCHED=APPL_365_3)';
BACKUP
    # recommended format
    FORMAT '%d_%s_%t_CONTROL'
    TAG "CNTRLFL"
    CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}


pbccrlracora1:/home/oracle/DBATOOLS/local>>cd $ORA_RMAN
pbccrlracora1:/home/oracle/DBATOOLS/rman>>ls -lrt get_asm_info.sql
-rw-r--r-- 1 oracle oinstall 2921 May 21  2006 get_asm_info.sql
pbccrlracora1:/home/oracle/DBATOOLS/rman>>cat get_asm_info.sql
spool /tmp/ASM_metadata.info
rem create pfile='tmp/ASM_pfile.ora' from spfile ;
set linesize 120
col host_name for a16
col instance_name for a10 head 'Instance|Name'
PROMPT "**** ASM Insatance Details  ****"
select * from v$active_instances
/
select INSTANCE_NAME, HOST_NAME, VERSION,
to_char(STARTUP_TIME, 'YY-MON-DD HH24:MI') Start_Time
from  v$instance
/
SET PAGESIZE 100
SET LINESIZE 140
COL full_path FORMAT a80
COL dir       FORMAT a3
COL sys       FORMAT a3
col bytes for 99,999,999 head 'Size_KBs'
col type for a14
col filenum for 99999
PROMPT "**** Files in the ASM control at this time ****"
SELECT fiLenum, full_path, dir, sys, round(BYTES/1024,0) Bytes, TYPE from v$asm_file a,
( SELECT FILE_INCARNATION, fiLenum, full_path, dir, sys FROM
( SELECT FILE_INCARNATION, filenum, CONCAT('+'||gname, SYS_CONNECT_BY_PATH(aname,'/')) full_path,
 dir, sys FROM
(SELECT a.FILE_INCARNATION,  a.file_number filenum , g.name gname, a.parent_index pindex,
 a.name aname,
 a.reference_index rindex, a.ALIAS_DIRECTORY dir,
 a.SYSTEM_CREATED sys
 FROM v$asm_alias a, v$asm_diskgroup g
 WHERE a.group_number = g.group_number)
 START WITH (MOD(pindex, POWER(2, 24))) = 0
 CONNECT BY PRIOR rindex = pindex
 ORDER BY dir desc, full_path asc)
 WHERE full_path LIKE UPPER('%')
) b
where filenum = file_number and FILE_INCARNATION = incarnation
order by type , full_path
/
col name for a20 head 'ASM_DISK|Name'
col g_name for a12 head 'ASM_Group|Name'
col path for a20 head 'Disk|Path'
col DISK_NUMBER head 'DISK|NUM#'   for 99999
col GROUP_NUMBER head 'Grp|NUM' for 999
col HEADER_STATUS head 'HEADER|STATUS'
col MOUNT_STATUS head 'MOUNT|STATUS' for a8
col total_mb for 999,999
col free_mb for 999,999
col ALLOC for 99999 head 'Alloc|Unit_KB'
col SECTOR_SIZE head 'Sector|Size'
col Block_Size head 'Block|Size'
col offline_disks head 'Offline|Disks'
set linesize 140
PROMPT ***** LIST DISKS Under the control of ASM ****
select DISK_NUMBER, MOUNT_STATUS, HEADER_STATUS, STATE, PATH, NAME,
REDUNDANCY, TOTAL_MB, FREE_MB
from v$asm_disk order by Path
/
PROMPT ***** LIST DISKS with Disk Groups under ASM control  ****
select A.NAME G_NAME, A.GROUP_NUMBER, b.DISK_NUMBER,
b.MOUNT_STATUS, b.HEADER_STATUS,
b.PATH, b.NAME, b.TOTAL_MB, b.FREE_MB,
round(b.FREE_MB/b.TOTAL_MB * 100,1) PCT_FREE
from v$asm_disk B, v$asm_diskgroup A
where A.GROUP_NUMBER = B.GROUP_NUMBER order by A.NAME
/
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, ALLOCATION_UNIT_SIZE/1024 Alloc,
STATE from v$asm_diskgroup order by name
/
set linesize 132
set pagesize 120
col name for a40 head 'Parameter|Name'
col DISPLAY_VALUE for a60
PROMPT "**** ASM Instance Parameter List ****"
select name,
 DISPLAY_VALUE ,
 ISDEFAULT     ,
 ISSES_MODIFIABLE
from v$parameter
where DISPLAY_VALUE is not null order by name
/
spool off
exit


pbccrlracora1:/home/oracle/DBATOOLS/rman>>cd $ORA_RMAN
pbccrlracora1:/home/oracle/DBATOOLS/rman>>cat get_dbinfo.sql
spool /tmp/db_info.txt
set echo on
SELECT 'Now Time : ' || to_char(sysdate, 'YYYY-MON-DD HH24:MI') Now_Time from dual;
col FIRST_TIME for a16 head 'First|Time'
col COMPL_TIME for a16 head 'Completed|Time'
col FIRST_CHANGE# head 'FIRST|CHANGE#'
col NEXT_CHANGE#  head 'NEXT|CHANGE#'
col THREAD# for 9999 head 'THRD|No.'
set linesize 100
PROMPT ****** List Last Archived Log Details ******
SELECT a.recid, a.THREAD#, a.SEQUENCE#,
   to_char(a.FIRST_TIME, 'YY-MON-DD HH24:MI') First_Time,
   to_char(a.COMPLETION_TIME, 'YY-MON-DD HH24:MI') COMPL_Time,
   a.ARCHIVED, a.STATUS , FIRST_CHANGE# , NEXT_CHANGE#
   from  v$archived_log a,
   (select thread#, max(SEQUENCE#) SEQ from  v$archived_log group by thread# ) b
    where a.SEQUENCE# = b.SEQ and a.thread# = b.thread# ;
col instance for a12
col CURRENT_GROUP# head 'Current|Group'
col CKPT_TIME for a16 head 'CHECKPOINT|Time'
col groups for 9999
col CHECKPOINT_CHANGE# head 'CHECKPOINT|CHANGE#'
PROMPT ****** List Thread Details ******
SELECT THREAD#, STATUS, INSTANCE, GROUPS, CURRENT_GROUP#,
   SEQUENCE#, CHECKPOINT_CHANGE# ,
   to_char(CHECKPOINT_TIME, 'YY-MON-DD HH24:MI') CKPT_TIME
   from v$thread ;
prompt "****** Controlfile backup completed.... "
alter database backup controlfile to trace as '/tmp/CF_TRACE.trc' ;
prompt "****** PFILE creation as pfile_from_spfile.ora  .... "
create pfile='/tmp/pfile_from_spfile.ora' from spfile ;
spool off
exit


export job auto

00 22 * * * /home/oracle/DBATOOLS/exp/exp.ksh > /home/oracle/DBATOOLS/exp.log
iqcbdbpmdashora1:/home/oracle>>cat /home/oracle/DBATOOLS/exp/exp.ksh
#!/bin/sh
. /home/oracle/.setup_QCRBD20.ksh
cd
cd /backup/oracle/BKP
rm CED_SCHEMA_*.dmp* CED_SCHEMA*.log
cd /backup/oracle/BKP
find  -mtime +2 -type f -exec rm -rf {} \;
expdate=`date '+%d%m%h%Y'`
dat=`date '+%m%d%y_%H%M%S'`
echo "Backup started..." $dat;
expdp  \"/ as sysdba\"  DIRECTORY=BKPCED DUMPFILE=CED_SCHEMA_%U.dmp LOGFILE=CED_SCHEMA_exp.log schemas=CED,GLOBALSEARCH parallel=10
echo "Backup Completed." $dat;
echo "Zipping files Started." $dat;
gzip /backup/oracle/BKP/CED_SCHEMA_*.dmp
echo "Zipping files completed." $dat;

export import auto

00 22 * * * /local/app/oracle/dba/scripts/daily_refresh_EMLDSIT.sh > /tmp/daily_refresh_EMLDSIT.sh.log 2>&1
DEV:noc5-grsmkt-ddb1:EMLDDEV:/local/app/oracle
> more /local/app/oracle/dba/scripts/daily_refresh_EMLDSIT.sh
#!/bin/ksh
# IB Core SVCS Oracle
# Created by: Cao Huu Vinh (Vincent).
# Create date: 10 April 2011
PATH=.:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin
. /local/app/oracle/EMLDSIT_env
DUMP_DIR=/oradumps/PROD_DUMP/
DT=`date '+%Y_%m_%d' `
MAIL_LIST='IB_CORE_SVCS_Oracle@jpmchase.com,Emerald_Dev@jpmchase.com'
LOGFILE=/local/app/oracle/dba/logs/daily_refresh_EMLDSIT.$DT.log
>$LOGFILE
export DUMP_DIR DT LOGFILE
Mail_Alert_Fail()
{
ERRMSG="$1"
/bin/mail -s "`hostname`: ${ORACLE_SID} Nightly Refresh EMLDSIT Failed: `date`" $MAIL_LIST << EOT
$ERRMSG
`cat $LOGFILE`
EOT
exit 1
}

Mail_Alert_Success()
{
ERRMSG="$1"
/bin/mail -s "`hostname`: ${ORACLE_SID} Nightly Refresh EMLDSIT Sucessfully: `date`" $MAIL_LIST << EOT
$ERRMSG
`cat $LOGFILE`
EOT
}
#rsync dumpfile
TODAY=`date '+%d'`
rsync -avz oracle@weh-grstm-pdb01.ny.jpmorgan.com::backup2/MDSPROD/DPDUMP/MDSPROD*${TODAY}*.dmp /oradumps/PROD_DUMP/
echo "`date` : resync completed" >> $LOGFILE
#Tar dumpfile.
FN_CHK=0
for fn in `ls -r ${DUMP_DIR}/MDSPROD*dmp`
do
   echo "++ Trace: File $fn found."
   if [ $FN_CHK -eq 0 ]; then
      FILE_EXP=`echo $fn | cut -f5 -d/`
      FN_CHK=1
   fi
done
if [ $FN_CHK -eq 0 ]; then
   echo "`date`: Export datapump file not Found" >> $LOGFILE
   ERRMSG="Export datapump file  not Found, Refresh $ORACLE_SID failed. Please investigate on logfile below."
   Mail_Alert_Fail "$ERRMSG"
   exit 1
else
   echo "`date`: Export datapump file $FILE_EXP found." >> $LOGFILE
fi
#Step2: recreate schema
sqlplus /nolog <<eof >> $LOGFILE
connect / as sysdba
set timing on
shut immediate;
startup;
drop user mktdata cascade;
CREATE USER mktdata
IDENTIFIED BY sybase99
DEFAULT TABLESPACE GRS_MD_DATA
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT;
grant RESOURCE to MKTDATA;
grant SCHEMA_OWNER to MKTDATA;
-- Grant system privileges to users
grant CREATE SESSION to MKTDATA;
grant UNLIMITED TABLESPACE to MKTDATA;
-- Recreate type
-- @/local/app/oracle/dba/scripts/re_create_type_EMLDSIT.sql
create or replace directory DUMP_DIR_TMP as '$DUMP_DIR';
exit;
eof
#Step3: Import pump
echo "-------------------------------------------" >> $LOGFILE
echo "`date`: Starting impdp " >> $LOGFILE
echo "-------------------------------------------" >> $LOGFILE
IMP_LOG=refresh_EMLDSIT_$DT.log
impdp userid=\"/ as sysdba\" DIRECTORY=DUMP_DIR_TMP DUMPFILE=$FILE_EXP LOGFILE=$IMP_LOG SCHEMAS=mktdata TRANSFORM=oid:n
cat  $DUMP_DIR/$IMP_LOG >> $LOGFILE
echo "-------------------------------------------" >> $LOGFILE
echo "`date`: Impdp on EMLDSIT completed." >> $LOGFILE
echo "-------------------------------------------" >> $LOGFILE
# housekeep old dump file.
/usr/bin/find ${DUMP_DIR} -name 'MDSPROD*dmp' -mtime +2 -exec /bin/rm {} \;
/usr/bin/find /local/app/oracle/dba/logs  -name '*refresh*.log' -mtime +10 -exec /bin/rm {} \;
if [ `/bin/grep -i -c "ORA-" ${LOGFILE}` -gt 12 ]; then
   ERRMSG="Error: Refresh tables on CFLD failed. Please investigate on logfile below: "
   Mail_Alert_Fail "${ERRMSG}"
else
   ERRMSG="REFRESH job successfully."
   Mail_Alert_Success "${ERRMSG}"
fi

DB connection report

# APAC Instance Connection Script
06,21,36,51 * * * * /opt/oracle/DBAENGG/scripts/ofr_dbalert_apac.ksh

pbpmccdbaora2:/opt/oracle/DBATOOLS/sql/general>>more /opt/oracle/DBAENGG/scripts/ofr_dbalert_apac.ksh
#!/usr/bin/ksh
. $HOME/.setup_PMCGRD20.ksh
export MAILLIST="Equities_APAC_Oracle_Support@jpmchase.com"
export MAILLIST1="ib.core.svcs.oracle.mbox@jpmorgan.com"
ORALOGIN=dbsnmp
ORAPASSWD=umagellan1#
GRIDLOGIN=/
SCRIPTDIR=`dirname "$0"`
FILENAME=`basename "$0"`
ValidDB=0
InValidDB=0
BlackOut=0
ExcptDB=0
LOG_FILE=/opt/oracle/DBAENGG/log/ofr_dbalert_apac.txt
rm $LOG_FILE /opt/oracle/DBAENGG/scripts/sqlnet.log
echo " -----------------------------------------------------------------------------------------------------------------"> $LOG_FILE
echo "| Connection Status For APAC Oracle Databases   `date '+%Y/%m/%d %H:%M:%S'` EST  |">> $LOG_FILE
echo " -----------------------------------------------------------------------------------------------------------------">> $LOG_FILE
for ORATABLN in `cat /opt/oracle/DBAENGG/dbmap/oratab.apac`
do
  case $ORATABLN in
        \#*)            ;;      #comment-line
          *)
        unset DB_NAME ORACLE_HOST
     if [ "`echo $ORATABLN | awk -F: '{print $NF}' -`" = "Y" ] ; then
            DB_NAME=`echo $ORATABLN | awk -F: '{print $1}' -`
            ORACLE_HOST=`echo $ORATABLN | awk -F: '{print $2}' -`
V_DB_NAME=$(sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_NAME <<EOF01A
set heading off feedback off;
set newpage none;
set pages 0;
set echo off;
set term off;
set verify off;
select upper(instance_name)  from gv\$instance where upper(instance_name)=upper('$DB_NAME');
exit;
EOF01A)
V_DB_NAME=`echo -e $V_DB_NAME`
echo $V_DB_NAME $DB_NAME
if [ "${V_DB_NAME}" = "${DB_NAME}" ]; then
  ValidDB=`expr $ValidDB + 1`
else
#echo entering blackout check
BNPROD_DB_NAME=$(sqlplus -s -L $GRIDLOGIN as sysdba<<EOF03A
set heading off feedback off;
set newpage none;
set pages 0;
set echo off;
set term off;
set verify off;
select distinct('$DB_NAME') from
sysman.MGMT_TARGETS a ,
sysman.MGMT_BLACKOUT_WINDOWS b
where lower(TARGET_TYPE)='oracle_database' and
START_TIME <= b.end_time
and a.TARGET_GUID=b.TARGET_GUID
and target_name like '%$DB_NAME%'
and b.status=4;
exit;
EOF03A)
BNPROD_DB_NAME=`echo -e $BNPROD_DB_NAME`
if [ "${BNPROD_DB_NAME}" = "${DB_NAME}" ]; then
   BlackOut=`expr $BlackOut + 1`
else
  echo '| '$DB_NAME':' 'Connection Failure *** |'  >>  $LOG_FILE
  echo $V_DB_NAME  >>  $LOG_FILE
  InValidDB=`expr $InValidDB + 1`
fi
fi
     fi;;
  esac
done
echo " -------------------------------------------------------------------------">> $LOG_FILE
echo "| Total Success:" $ValidDB '                                             |' >>  $LOG_FILE
echo "| Total Failure:" $InValidDB '                                                  |' >>  $LOG_FILE
echo "| Total BlackOut:" $BlackOut '                                              |' >>  $LOG_FILE
echo "| Total Excluded:" $ExcptDB '                                             |' >>  $LOG_FILE
echo " -------------------------------------------------------------------------">> $LOG_FILE
echo "Script: /opt/oracle/DBAENGG/scripts/ofr_dbalert_apac.ksh" >> $LOG_FILE
InValidDB=`echo -e $InValidDB`
if [ $InValidDB -gt 0 ]; then
 echo
mail -s "APAC: Oracle INSTANCE Connection Report" $MAILLIST1 -c $MAILLIST < $LOG_FILE
fi
exit 0

pbpmccdbaora2:/opt/oracle/DBATOOLS/sql/general>>cat /opt/oracle/DBAENGG/dbmap/oratab.apac
CVPROD:Y
NEOTKP:N
NEOKRP:N
NEOKRP-KRLNEOP2:N
KRNEOP:Y
HKNEO:Y
CERDCORP:Y
NEOHKP:Y
SGNEOP:Y
INNEOP:Y
NEOTWP:Y
TWNEOP:Y


 

dataguard check report

# Below are Data Guard Reports --------------
0 */2 * * * /opt/oracle/DBAENGG/scripts/ofr_dg_check_nw.ksh 2>&1


pbpmccdbaora1:/home/oracle>>cat /opt/oracle/DBAENGG/scripts/ofr_dg_check_nw.ksh
#!/usr/bin/ksh
. $HOME/.setup_PMCGRD20.ksh
#export ORACLE_HOME=/opt/oracle/PWHRMN20/product/dbms/10.2.0
export PATH=$ORACLE_HOME/bin:$PATH
#export TNS_ADMIN=/opt/oracle/TNS
SCRIPTDIR=`dirname "$0"`
FILENAME=`basename "$0"`
ORALOGIN=sys
ORAPASSWD=ic0lumbus#
EORAPASSWD=pd0jpm412
InValidDB=0
#MAILLIST="na_pb_bd_eq_fo_oracle_team@jpmorgan.com,ib.core.svcs.oracle.mbox@jpmorgan.com"
MAILLIST1="ib.core.svcs.oracle.mbox@jpmorgan.com"
MAILLIST="ib_global_dba@jpmchase.com"
LOG_FILE=/tmp/ofr_dbstdby.txt
LOG_FILE2=/tmp/ofr_dbstdby2.txt
LOG_TMP=/tmp/stdby_nw.999
LOG_TMP1=/tmp/stdby_nw.8888
>$LOG_TMP
>$LOG_TMP1
>$LOG_FILE
>$LOG_FILE2
for ORATABLN in `cat /opt/oracle/DBAENGG/dbmap/oratab.stdby`
do
  case $ORATABLN in
        \#*)            ;;      #comment-line
          *)
     unset DB_NAME DB_STDBY ORAPASSWD APP
     if [ "`echo $ORATABLN | awk -F: '{print $5}' -`" = "Y" ] ; then
            DB_NAME=`echo $ORATABLN | awk -F: '{print $1}' -`
            DB_STDBY=`echo $ORATABLN | awk -F: '{print $2}' -`
            LOB=`echo $ORATABLN | awk -F: '{print $3}' -`
            ORAPASSWD=`echo $ORATABLN | awk -F: '{print $4}' -`
            APP=`echo $ORATABLN | awk -F: '{print $6}' -`
if [ "${DB_NAME}" = "PWHGRD20" ] ; then
ORALOGIN=dba_bear
ORAPASSWD=ydarw1n#
else
ORALOGIN=sys
#if [ "${LOB}" = "PB" ]; then
#ORAPASSWD=ic0lumbus#
#else
#ORAPASSWD=pd0jpm412
#fi
fi
if [ "${DB_NAME}" = "PCRDAR20" ] ; then
ORALOGIN=sys
ORAPASSWD=ic0lumbus#
fi
if [ "${LOB}" = "APACEQ" ]; then
ORALOGIN=dbsnmp
sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_NAME <<EOF01A
set heading off feedback off
set newpage none
set line  132
spool $LOG_TMP
select rtrim(ltrim(thread#))||':'||ltrim(rtrim(max(sequence#)))||':'
from v\$log where ARCHIVED='YES' group by  thread#;
spool off
exit;
EOF01A
elif [ "${DB_NAME}" = "IFXP01" ] ; then
ORALOGIN=dbsnmp
sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_NAME <<EOF01A
set heading off feedback off
set newpage none
set line  132
spool $LOG_TMP
select rtrim(ltrim(thread#))||':'||ltrim(rtrim(max(sequence#)))||':'
from v\$log where ARCHIVED='YES' group by  thread#;
spool off
exit;
EOF01A
elif [ "${DB_NAME}" = "PGPSP01" ] ; then
ORALOGIN=dbsnmp
sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_NAME <<EOF01A
set heading off feedback off
set newpage none
set line  132
spool $LOG_TMP
select rtrim(ltrim(thread#))||':'||ltrim(rtrim(max(sequence#)))||':'
from v\$log where ARCHIVED='YES' group by  thread#;
spool off
exit;
EOF01A
else
sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_NAME as sysdba <<EOF01A
set heading off feedback off
set newpage none
set line  132
spool $LOG_TMP
select rtrim(ltrim(thread#))||':'||ltrim(rtrim(max(sequence#)))||':'
from v\$log where ARCHIVED='YES' group by  thread#;
spool off
exit;
EOF01A
fi
if [ $? -ne 0 ] ; then
 echo $DB_NAME ':' $DB_STDBY ':' 'Error Primary' >> $LOG_TMP1
else
for standbyln in `cat $LOG_TMP`
do
   prim_thread=`echo $standbyln | awk -F: '{print $1}' -`
   prim_sequence=`echo $standbyln | awk -F: '{print $2}' -`
sqlplus -s -L $ORALOGIN/$ORAPASSWD@$DB_STDBY as sysdba <<EOF01B
set heading off feedback off
set linesize 150
set pagesize 200
column LOB format a8 head 'LOB#'
column APP format a35 head 'APP#'
column pthread format a10 head 'Thread#'
column dname format a20 head 'Primary'
column sname format a20 head 'Standby'
column pseq format a10 head 'Prim_Seq#'
column dseq format 999999999 head 'Stdby_Seq#'
column diff format 999999999 head 'Diff'
spool $LOG_TMP1 append
select '$LOB' LOB,'$APP' APP,'$DB_NAME' dname,'$DB_STDBY' sname,'$prim_thread' pthread,rtrim('$prim_sequence') pseq,max(sequence#) dseq ,
'$prim_sequence' -  max(sequence#) diff from v\$archived_log stdby where applied='YES' and  stdby.thread#='$prim_thread'
group by '$LOB',':','$APP',':','$DB_NAME',':','$DB_STDBY',':','$prim_thread',':','$prim_sequence';
spool off
exit;
EOF01B
if [ $? -ne 0 ] ; then
 echo $DB_NAME ':' $DB_STDBY ':' 'Error Connecting Standby' >> $LOG_TMP1
fi
done
fi
     fi;;
  esac
done
echo " ------------------------------------------------------------------------------------------------"> $LOG_FILE
echo -e "| Oracle Standby Check Report \t \t  `date '+%Y/%m/%d %H:%M:%S'`           |">> $LOG_FILE
echo " ------------------------------------------------------------------------------------------------">> $LOG_FILE
echo -e "LOB  \tAPP                   \t   Primary       \t Standby     \t  Thread# \t Prim.Seq# \t Stdby.Seq# \t Diff* \n">> $LOG_FILE
cat $LOG_TMP1 >> $LOG_FILE
echo " =================================================================================================">> $LOG_FILE
echo Script Name :  $SCRIPTDIR/$FILENAME >> $LOG_FILE
if [ $InValidDB -gt 0 ]; then
   echo 'Use Following Sql Scripts For More Details : ' >> $LOG_FILE
   echo '   1) /opt/oracle/DBATOOLS/sql/dataguard/show_phy_apply.sql' >> $LOG_FILE
   mail -s "Oracle:Report Standby Database Check" $MAILLIST < $LOG_FILE
 else
   mail -s "ORA Exception REPORT: Standby Database Check" $MAILLIST1 -c $MAILLIST < $LOG_FILE
fi
exit 0


pbpmccdbaora1:/home/oracle>>cat /opt/oracle/DBAENGG/dbmap/oratab.stdby
PMCRCS20:BCRRCS20:PB:0R4JpmPB:Y:RACS2
BCRGDW20:PMCGDW20:PB:0R4JpmPB:Y:GCRS
PMCBVD20:BCRBVD20:PB:0R4JpmPB:Y:GENEVA
PMCPRV20:BCRPRV20:PB:0R4JpmPB:Y:CSR_DASHBOARD
PMCPRV30:BCRPRV30:PB:0R4JpmPB:Y:CSR_DASHBOARD
PMCMRG20:BCRMRG20:PB:0R4JpmPB:Y:GPB_MARGIN
PMCPBS20:BCRPBS20:PB:0R4JpmPB:Y:GENEVA_PBSD
PCRODS20:PMCODS20:PB:0R4JpmPB:Y:GENEVA
PCRSBL20:BMCSBL20:PB:0R4JpmPB:Y:SBL
PCRSBL30:BMCSBL30:PB:0R4JpmPB:Y:SBL
PMCSBL20:BCRSBL20:PB:0R4JpmPB:Y:SBL
<primary>:<standby>:<LOB>:<sys/dbsnmp password>:<Applicationname>




cpu session

column program format a30
column username format a18
--set pagesize 0
Prompt ===========================================================
Prompt ** Sessions with CPU utlzn, Disk io details
Prompt ** file: sess_cpu.sql tms 10/jun/99
Prompt ===========================================================
set heading on
select
 p.spid thread,
 s.sid,
 substr(s.terminal,1,15) terminal ,
 substr(s.username,1,18) UserName ,
 decode(nvl(p.background,0),1,bg.description, s.program ) program,
 ss.value * 100   CPU_secs,
 physical_reads disk_io
 from v$process p,
        v$session s,
        v$sesstat ss,
        v$sess_io si,
        v$bgprocess bg
 where s.paddr=p.addr
   and ss.sid=s.sid
   and ss.statistic#=12
   and si.sid=s.sid
   and bg.paddr(+)=p.addr
   order by ss.value desc
/

asmsize


pbpmccracora1:/home/oracle>>cat .profile
# Purpose : Generic environment variable setup
# Created : 04-15-2007
########################################################
# Set up the Unix variables:
export EDITOR=vi
umask 022
set -o vi
alias ls='/bin/ls'
alias pso='ps -fu oracle'
alias asmsize='/opt/oracle/DBATOOLS/sql/asm/get_asmgroup_info.ksh'
# Setup Prompt
PS1=`uname -n`:'$PWD>>'

# . $HOME/.setup_ASM.ksh
. $HOME/.setup_PMCRCS20.ksh
# Setup all local environment here
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ENGG=/opt/oracle/DBAENGG/scripts
cd /opt/oracle/DBATOOLS/sql/general/
export TZ=EST5EDT
export COLUMNS=200
export SNACS=/opt/oracle/DBAENGG/scripts/CHECK_SNACID/
export AUDIT=/opt/oracle/DBAENGG/scripts/DBAUDIT/
export STANDBY=/opt/oracle/DBAENGG/scripts/STANDBY/
export TBS=/opt/oracle/DBAENGG/scripts/TBSCOLLECT/
export LOAD=/opt/oracle/DBAENGG/loadtest3/
export LOAD2=/opt/oracle/DBAENGG/LOADTEST2/
export LOAD4=/opt/oracle/DBAENGG/dboBENCH/
export ASH=/opt/oracle/DBAENGG/ASHWORK/
export SWING=/opt/oracle/SWINGB/swingbench/bin
if [ -t 0 ]; then
   stty intr ^C
fi
pbpmccracora1:/home/oracle>>ls -l /opt/oracle/DBATOOLS/sql/asm/get_asmgroup_info.ksh
-rwxr-xr-x 1 oracle oinstall 567 Mar 13  2007 /opt/oracle/DBATOOLS/sql/asm/get_asmgroup_info.ksh


pbpmccracora1:/home/oracle>>cat /opt/oracle/DBATOOLS/sql/asm/get_asmgroup_info.ksh
#!/bin/ksh
# It requires the .setup_<<DBANEM>>.ksh file
# so that ASM_SID and ORACLE_HOME of ASM exectable is set up properly ..
# ir read ASM_SID and ASM_HOME variables to make use ..
. ~/.profile
export ORACLE_SID=$ASM_SID
export ORACLE_HOME=$ASM_HOME
echo "======== On HostName: `uname -n` ========\n"
$ORACLE_HOME/bin/sqlplus -s /nolog  << EOF1
connect / as sysdba
 spool /tmp/asm_disks.log
 @/opt/oracle/DBATOOLS/sql/asm/show_asm_diskgroups.sql
 spool off
EOF1
# mail -s "Oracle:MIS ASM-DiskGroup for RMAN Registered db(s) " $MAILLIST < /tmp/asm_disks.log


pbpmccracora1:/home/oracle>>cat /opt/oracle/DBATOOLS/sql/asm/show_asm_diskgroups.sql
col name for a20 head 'ASM_DISK|Name'
col g_name for a12 head 'ASM_Group|Name'
col path for a20 head 'Disk|Path'
col DISK_NUMBER head 'DISK|NUM#'   for 99999
col GROUP_NUMBER head 'Grp|NUM' for 999
col HEADER_STATUS head 'HEADER|STATUS'
col MOUNT_STATUS head 'MOUNT|STATUS' for a8
col TOTAL_MB for 999,999,999
col FREE_MB for 999,999,999
col ALLOC for 99999 head 'Alloc|Unit_KB'
col SECTOR_SIZE head 'Sector|Size'
col Block_Size head 'Block|Size'
col offline_disks head 'Offline|Disks'
set linesize 140
set pagesize 140
PROMPT ***** LIST DISKS with Disk Groups under ASM control  ****
select A.NAME G_NAME, A.GROUP_NUMBER, b.DISK_NUMBER,
b.MOUNT_STATUS, b.HEADER_STATUS,
b.STATE, b.PATH, b.NAME, b.TOTAL_MB, b.FREE_MB, round(b.FREE_MB/b.TOTAL_MB * 100,1) PCT_FREE
from v$asm_disk B, v$asm_diskgroup A
where A.GROUP_NUMBER = B.GROUP_NUMBER
order by A.NAME
/
PROMPT ***** Disk Group Details under ASM control  ****
select NAME g_name, TYPE, TOTAL_MB, FREE_MB, round(FREE_MB/TOTAL_MB * 100,1) PCT_FREE,
BLOCK_SIZE, SECTOR_SIZe, OFFLINE_DISKS, ALLOCATION_UNIT_SIZE/1024 Alloc,
STATE from v$asm_diskgroup
/




ASM COPY TO ANOTHER DISK

There are multiple examples: discussed here
a) Database level copy
b) TBS level copy
c) Data File level copy
d) COnvert command option
===========================================================

****** All Data Files in a DATABASE copy *****
a) First place the database in mount mode
SQL>startup mount ;
Then switch to RMAN ...
Use following rman option to move all datafiles under ASM to new diskgroup.
RMAN> backup as copy database format '+DATADG2' ;
RMAN> switch database to copy ;
*** Next  SQL*plus session:
SQL>startup mount ;
SQL>recover database ;
SQL>alter database open ;

****** Tablespace level copy *****
Go to SQL*Plus Session:
.....................
create tablespace TEST_TBS1 datafile '/opt/oracle/work/TEST_TBS1.dbf' size 50M ;
create user test1 identified by test1 default tablespace test_tbs1 ;
STEP(1)
SQL> select file#, name from v$datafile ;
 FILE# NAME
------ --------------------------------------------------
     1 +DATADG1/dwhwfl20/datafile/system.256.587509305
     2 +DATADG1/dwhwfl20/datafile/undotbs1.258.587509305
     3 +DATADG1/dwhwfl20/datafile/sysaux.257.587509305
     4 +DATADG1/dwhwfl20/datafile/users.259.587509305
     5 +DATADG1/dwhwfl20/datafile/undotbs2.264.587509403
     6 +DATADG1/dwhwfl20/datafile/bearmon.277.587648019
     7 +DATADG1/dwhwfl20/datafile/tsproc.278.587649873
     8 +DATADG1/dwhwfl20/datafile/tsperf.279.587650003
     9 /opt/oracle/work/TEST_TBS1.dbf
9 rows selected.
col ts# for 9999
col file# for 99999
col TBS_NAME for a20
col FILE_NAME for a70
select  a.ts#, a.name TBS_NAME, b.FILE#, b.name FILE_NAME from v$tablespace a,  v$datafile b
where b.ts# = a.ts#
/
******************** Go to RMAN to copy the file ******** (without control file) *********
********** Below example is basically copy at TBS level .........................) *********
whibmdev51-h:/opt/oracle>>rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Apr 16 21:57:06 2006
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: DWHWFL20 (DBID=2046196098)
RMAN> sql "alter tablespace TEST_TBS1 offline" ;
using target database control file instead of recovery catalog
sql statement: alter tablespace TEST_TBS1 offline
RMAN> backup as copy tablespace TEST_TBS1 format '+DATADG1' ;
Starting backup at 16-APR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=117 instance=DWHWFL21 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00009 name=/opt/oracle/work/TEST_TBS1.dbf
output filename=+DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749 tag=TAG20060416T215908 recid=1 stamp=587944749
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 16-APR-06
RMAN> switch datafile 9 to copy ;
using target database control file instead of recovery catalog
datafile 9 switched to datafile copy "+DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749"

RMAN> report schema ;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    490      SYSTEM               ***     +DATADG1/dwhwfl20/datafile/system.256.587509305
2    35       UNDOTBS1             ***     +DATADG1/dwhwfl20/datafile/undotbs1.258.587509305
3    380      SYSAUX               ***     +DATADG1/dwhwfl20/datafile/sysaux.257.587509305
4    5        USERS                ***     +DATADG1/dwhwfl20/datafile/users.259.587509305
5    25       UNDOTBS2             ***     +DATADG1/dwhwfl20/datafile/undotbs2.264.587509403
6    500      BEARMON              ***     +DATADG1/dwhwfl20/datafile/bearmon.277.587648019
7    5120     TSPROC               ***     +DATADG1/dwhwfl20/datafile/tsproc.278.587649873
8    5120     TSPERF               ***     +DATADG1/dwhwfl20/datafile/tsperf.279.587650003
9    0        TEST_TBS1            ***     +DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749
List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    22       TEMP                 32767       +DATADG1/dwhwfl20/tempfile/temp.263.587509383
RMAN>
***** Now come out of
SQL> connect / as sysdba
Connected.
SQL>  alter tablespace TEST_TBS1 online ;
Tablespace altered.
SQL> select * from test1.ny1 ;

************************ NEXT EXAMPLE (Sepcific Data File) *********************
2nd  EXAMPLE ..SPECIFIC DATAFILE you want to move to another disk group .. *****
a) OFFLINE the tablespace
SQL>  alter tablespace TEST_TBS1 offline ;
Tablespace altered.

b) In RMAN do the following .. !!
RMAN> COPY DATAFILE '+DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749' TO '+DATADG2';
Starting backup at 16-APR-06
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=127 instance=DWHWFL21 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00009 name=+DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749
output filename=+DATADG2/dwhwfl20/datafile/test_tbs1.256.587946275 tag=TAG20060416T222434 recid=3 stamp=587946275
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 16-APR-06
RMAN>
c) Switch to SQLPLUS and Rename the file to point to new location.
SQL>  ALTER DATABASE RENAME FILE '+DATADG1/dwhwfl20/datafile/test_tbs1.280.587944749' TO
  2  '+DATADG2/dwhwfl20/datafile/test_tbs1.256.587946275' ;
Database altered.
SQL> RECOVER DATAFILE '+DATADG2/dwhwfl20/datafile/test_tbs1.256.587946275' ;
Media recovery complete.
SQL>
SQL> alter tablespace test_tbs1 online ;
Tablespace altered.
SQL>  select * from test1.ny1 ;

SQL> select file#, name from v$datafile ;
     FILE# NAME
---------- --------------------------------------------------
         1 +DATADG1/dwhwfl20/datafile/system.256.587509305
         2 +DATADG1/dwhwfl20/datafile/undotbs1.258.587509305
         3 +DATADG1/dwhwfl20/datafile/sysaux.257.587509305
         4 +DATADG1/dwhwfl20/datafile/users.259.587509305
         5 +DATADG1/dwhwfl20/datafile/undotbs2.264.587509403
         6 +DATADG1/dwhwfl20/datafile/bearmon.277.587648019
         7 +DATADG1/dwhwfl20/datafile/tsproc.278.587649873
         8 +DATADG1/dwhwfl20/datafile/tsperf.279.587650003
         9 +DATADG2/dwhwfl20/datafile/test_tbs1.256.587946275
9 rows selected.

*******************************  NOW to ASMCMD *************************
NOW switch to ASM instance
whibmdev51-h:/opt/oracle>>asmcmd
ASMCMD> cd +DATADG1/DWHWFL20/DATAFILE
ASMCMD> ls -ltr
Type      Redund  Striped  Time             Sys  Name
DATAFILE  UNPROT  COARSE   APR 12 14:00:00  Y    UNDOTBS1.258.587509305
DATAFILE  UNPROT  COARSE   APR 12 14:00:00  Y    UNDOTBS2.264.587509403
DATAFILE  UNPROT  COARSE   APR 12 14:00:00  Y    USERS.259.587509305
DATAFILE  UNPROT  COARSE   APR 13 11:00:00  Y    BEARMON.277.587648019
DATAFILE  UNPROT  COARSE   APR 13 12:00:00  Y    TSPERF.279.587650003
DATAFILE  UNPROT  COARSE   APR 13 12:00:00  Y    TSPROC.278.587649873
DATAFILE  UNPROT  COARSE   APR 15 22:00:00  Y    SYSTEM.256.587509305
DATAFILE  UNPROT  COARSE   APR 16 20:00:00  Y    SYSAUX.257.587509305
ASMCMD>


==========================================================================
Copying Tablespaces From ASM With CONVERT TABLESPACE: Example
==========================================================================
In this example, the datafiles of tablespace tbs_2 (stored in ASM) are
copied from an ASM storage location to non-ASM storage using the CONVERT TABLESPACE command:
RMAN> convert tablespace tbs_2 format '/tmp/tbs_2_%U.df';
Starting backup at 03-JUN-05
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=20 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00006 name=+DATAFILE/tbs_21.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-6_11gm2fq9.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00007 name=+DATAFILE/tbs_22.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-7_12gm2fqa.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00019 name=+DATAFILE/tbs_25.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-19_13gm2fqb.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00009 name=+DATAFILE/tbs_23.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-9_14gm2fqc.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00010 name=+DATAFILE/tbs_24.f
converted datafile=/tmp/tbs_2_data_D-L2_I-2786301554_TS-TBS_2_FNO-10_15gm2fqd.df
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished backup at 03-JUN-05

ANOTHER example:
Copying Datafiles From ASM Using CONVERT DATAFILE: Example
This example illustrates copying a single datafile out of ASM storage using CONVERT DATAFILE:
RMAN> convert datafile "+DATAFILE/tbs_21.f" format "/tmp/conv_df_%U";
Starting backup at 03-JUN-05
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input filename=+DATAFILE/tbs_21.f
converted datafile=/tmp/conv_df_data_D-L2_I-2786301554_TS-TBS_2_FNO-6_18gm2hft
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:02
Finished backup at 03-JUN-05

About Stats


You might encounter scenarios where your queries execution plan changed. Eg : On Monday your query was running in less than a minute and on Wednesday your query started running for an hour (The query was exactly the same, query criteria (Including bind variables) were the same and the table data has not changed too much). One of the reasons for the query performing badly now, could be that the execution plan has changed.
One of the reasons that the execution plan has changed, could be that the statistics on the table has changed (Between monday and wednesday, gather stats could have run on the table). Wont it be nice if you were able to restore the old stats on the table, which was helping the query run faster ?
There might be a way in Oracle 10g and Higher.
Whenever oracle collects stats on a table using gather_table_stats, oracle stores away the existing stats on the table before updating the table with the newly collected stats. So there is also a mechanism to restore this stats that oracle backed up.
We can use the following steps to restore this stats (Which was good)
    * Let us say that SCOTT.DEPT is the table in question
    * First of all, find out, when the table stats were modified
      select stats_update_time from user_tab_stats_history where table_name = ‘DEPT’;
    * Create a stats table in the schema of the table owner (This will serve as the temporary holder of the current statistics, if you ever have to restore this)
      exec dbms_stats.create_stat_table ( -
      ‘SCOTT’, -
      ’stattab_new’);
    * Export the existing table statistics to this temporary table (stattab_new)
      exec dbms_stats.export_table_stats ( -
      ‘SCOTT’, -
      ‘DEPT’, -
      null, -
      ’stattab_new’, -
      null, -
      true, -
      ‘SCOTT’);
    * Restore the old stats, which used to give you a better execution plan
      exec dbms_stats.restore_table_stats ( -
      ‘SCOTT’, -
      ‘DEPT’, -
      ‘21-JAN-09 11.00.00.000000 AM -05:00');
The third argument you give is the time upto which you want to restore the stats. Once you query the table user_tab_stats_history, determine a time when the stats would have been the good statistics (So pick a time in between the analyze which had the good stats and the analyze that had the bad stats). Use that time as the third argument.
Now if you get the query to reparse it should pick up the updated good statistics, use the good execution plan and execute with good performance.
Note : Try and perfect this technique on test databases before running this on production.

===========
Statistics History
One of the complications that can occur during optimizer statistics collection is changed execution plans—that is, the old optimization works fine until the statistics are collected, but thereafter, the queries suddenly go awry due to bad plans generated by the newly collected statistics. This is a not infrequent problem.
To protect against such mishaps, the statistics collection saves the present statistics before gathering the new ones. In the event of a problem, you can always go back to the old statistics, or at least examine the differences between them to get a handle on the problem.
For example, let's imagine that at 10:00PM on May 31 the statistics collection job on the table REVENUE is run, and that subsequently the queries perform badly. The old statistics are saved by Oracle, which you can retrieve by issuing:
begin
   dbms_stats.restore_table_stats (
      'ARUP',
      'REVENUE',
      '31-MAY-04 10.00.00.000000000 PM -04:00');
end;
This command restores the statistics as of 10:00PM of May 31, given in the TIMESTAMP datatype. You just immediately undid the changes made by the new statistics gathering program.
The length of the period that you can restore is determined by the retention parameter. To check the current retention, use the query:
SQL> select DBMS_STATS.GET_STATS_HISTORY_RETENTION from dual;
GET_STATS_HISTORY_RETENTION
---------------------------
                         31
which in this case shows that 31 days worth of statistics can be saved but not guaranteed. To discover the exact time and date to which the statistics extend, simply use the query:
SQL> select DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY from dual;
GET_STATS_HISTORY_AVAILABILITY
---------------------------------------------------------------------
17-MAY-04 03.21.33.594053000 PM -04:00
which reveals that the oldest available statistics date to 3:21AM on May 17.
You can set the retention period to a different value by executing a built-in function. For example, to set it to 45 days, issue:
execute DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (45)

AO_backupevery hour

##00 * * * * /backup/oracle/PMCRCS20/rman/rman_AO_bkp_EveryHr.sh /tmp/rman_AO_bkp_EveryHr.log 2>&1

pbpmccracora1:/home/oracle>>cat /backup/oracle/PMCRCS20/rman/rman_AO_bkp_EveryHr.sh
export ORACLE_SID=PMCRCS21; export ORACLE_HOME=/home/oracle/PMCRCS20/product/dbms/10G; export PATH=$ORACLE_HOME/bin:$PATH
NOW=$(date +"%m-%d-%T")
rman target / cmdfile /backup/oracle/PMCRCS20/rman/rman_AO_bkp_EveryHr.rcv log /backup/oracle/PMCRCS20/rman/log/rman_AO_bkp_$NOW.log
pbpmccracora1:/home/oracle>>cat /backup/oracle/PMCRCS20/rman/rman_AO_bkp_EveryHr.rcv
run
{
CONFIGURE RETENTION POLICY TO REDUNDANCY 1 ;
CONFIGURE BACKUP OPTIMIZATION ON ;
CONFIGURE CONTROLFILE AUTOBACKUP OFF ;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 ;
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 8G ;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
SHOW ALL;
crosscheck archivelog from time 'sysdate - 4' ;
BACKUP ARCHIVELOG ALL DELETE INPUT
format '/backup/oracle/PMCRCS20/rman/%d_%s_%T_%c_ARCH' tag "ARCH_ONLY" ;
}

tablespace_report_databases

00 01,06,18,23 * * * /home/oracle/DBAENGG/scripts/ofr_tbs.ksh >/tmp/tbs_space_check.log

pbpmccdbaora2:/opt/oracle/DBATOOLS/sql/general>>cat /home/oracle/DBAENGG/scripts/ofr_tbs.ksh
#!/bin/ksh
# set -vx
# Placed this script to collect critical TBS SPACE USAGE information
. $HOME/.setup_PMCGRD20.ksh
# export TNS_ADMIN=/opt/oracle/PWHGRD20/product/dbms/10.2.0/network/admin
# MAILLIST="nitesh.x.sharma@jpmchase.com"
# MAILLIST="sathish.panjala@jpmchase.com"
MAILLIST1="ib.core.svcs.oracle.mbox@jpmorgan.com"
MAILLIST="ib_global_dba@jpmchase.com"

DIR=/opt/oracle/DBAENGG/scripts
OUTTBS=$DIR/tbs_space.dat
log1=$DIR/tbs_spacemon_run_all.log
>$OUTTBS
echo "=== Oracle Tablespace space usage information  ====" > $log1
echo '**  Run Date: ' `date` >> $log1
echo " -----------------------------------------------------------------------------------------------------------------">> $log1
echo " Database         Tablespace                      Size (MB)    Free (MB)   Free %" >> $log1
echo " -----------------------------------------------------------------------------------------------------------------">> $log1
v_gdb=0
v_bdb=0
for ORATABLN in `cat /opt/oracle/DBAENGG/dbmap/oratab.database.tbs`
do
dbname=`echo $ORATABLN | awk -F: '{print $1}' -`
abc=$(sqlplus -s -L dbsnmp/umagellan1#@$dbname <<EOF
spool $DIR/tbs_spacemon.out
@$DIR/tbs_mon.sql
spool off
exit;
EOF)
if [ $? -ne 0 ] ; then
 NOW=`date '+%H:%M:%S'`
 echo 'Check At ' $NOW ':' 'Error Connect to ' $dbname' Database ..' >> $log1
 echo '** Error info : '$abc '..' >> $log1
 v_bdb=`expr $v_bdb + 1`
 else
# cat $DIR/tbs_spacemon.out >> $OUTTBS
 cat $DIR/tbs_spacemon.out >> $log1
 v_gdb=`expr $v_gdb + 1`
fi
done
echo " -------------------------------------------------------------------------">> $log1
echo "| Total Database Scanned:" $v_gdb '                                             |' >>  $log1
echo "| Total Database Not Scanned:" $v_bdb '                                                  |' >>  $log1
echo " -------------------------------------------------------------------------">> $log1
# send MAIL
mail -s "ORA Exception REPORT: Tablespace Space Check" $MAILLIST1 -c $MAILLIST < $log1


pbpmccdbaora2:/opt/oracle/DBATOOLS/sql/general>>cat /opt/oracle/DBAENGG/dbmap/oratab.database.tbs
CVPROD
NEOTKP
NEOKRP
NEOKRP-krlneop2
krneop
HKNEO
CERDCORP
NEOHKP
SGNEOP
INNEOP
NEOTWP
TWNEOU

pbpmccdbaora2:/opt/oracle/DBATOOLS/sql/general>>cat /opt/oracle/DBAENGG/scripts/tbs_mon.sql
set feedback off
set heading off
set verify off
set trimspool on
set linesize 150
set pagesize 500
col tablespace_name FORMAT A25
col "Size (MB)" for a12
col "Max Size(MB)" for a12
column LOB format a8 head 'LOB#'
column APP format a35 head 'APP#'
column pthread format a10 head 'Thread#'
column dname format a20 head 'Primary'
column sname format a20 head 'Standby'
break on name
SELECT d.name, 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, v$database d WHERE f.tablespace_name=a.tablespace_name and F.tablespace_name  in (select b.tablespace_name
 from (select tablespace_name, sum(bytes)/1024/1024 free
        from dba_free_space
       group by tablespace_name) a,
     (select tablespace_name, sum(bytes)/1024/1024 total,
             sum(decode(autoextensible,'YES',maxbytes,bytes))/1024/1024 maxgrowth
        from dba_data_files
       group by tablespace_name) b
 where a.tablespace_name(+) = b.tablespace_name and (((total-nvl(free,0))/maxgrowth)*100) >85
and a.tablespace_name not like 'UNDO%' and a.tablespace_name not like 'TEMP%'
and (((total-nvl(free,0))/total)*100) >85);


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]"



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