#!/usr/bin/ksh SBINS=$SBIN/scripts TMP=$SBIN/tmp # ....................................................................................... do_it_by_sed() { #------------------------------------------------------------------------------- # Alternated method if sys is not available #------------------------------------------------------------------------------- #-- Script: instance_variables.sql #-- Purpose: to list the values of the instance variables #-- #-- Copyright: (c) 1998 Ixora Pty Ltd #-- Author: Steve Adams #__ apapted to smenu by By. Polarski #------------------------------------------------------------------------------- TMP_FIL=$SBIN/tmp/get_var$$.txt sqlplus -s "$CONNECT_STRING" </dev/null 2>&1 spool $TMP_FIL select 'X\$KVII' struct, kviitag variable, kviival value, kviidsc description from sys.x\$kvii union all select 'X\$KVIT', kvittag, kvitval, kvitdsc from sys.x\$kvit union all select 'X\$KVIS', kvistag, kvisval, kvisdsc from sys.x\$kvis / spool off ; EOF echo OLD=TOTO cat << EOF MACHINE $HOST - ORACLE_SID : $ORACLE_SID Page: 1 Date - `date +%A' '%d' '%B' '%H:%M:%S` Username - SYS - Show instance variables STRUCT VARIABLE VALUE DESCRIPTION ------ -------- ---------- ----------------------------------------------------- EOF sed -e '/selected\.$/d' -e '/^---.*--$/d' -e '/^STRUCT/d' $TMP_FIL | while read a b c d do a=`echo $a | awk '{ printf ("%-7.7s",$1) }'` b=`echo $b | awk '{ printf ("%7.7s", $1) }'` c=`echo $c | awk '{ printf ("%10.10s",$1) }'` if [ $a = $OLD ];then echo " ${b}${c} ${d}" else echo "${a}${b}${c} ${d}" fi OLD=$a done echo if [ -f $TMP_FIL ];then rm $TMP_FIL fi } # ....................................................................................... function help { cat <] : Background process event sts -def : Show default database properties sts -dif : Show parameter differences sts -pch : Show parameter change history sts -fl : List flash logs sts -hex : Convert Hexadecimal string to Decimal sts -l : show system log mode sts -log : show system supplemental logging. User 'tbl -log' for table supplemental logging sts -lim : List resource limit sts -opt : List most of relevants parameters about the optimizer sts -rac : Rac : list instances status sts -s : List system statistics sts -sar : Oracle AWR version of sar like stats sts -si : show When system statistics were taken sts -sl : List gather_database_stats run history sts -t : Convert SCN to timestamp sts -td : Convert timestamp to SCN : format is 'YYYY-MM-DD HH24:MI:SS' sts -use : Show options with licences used sts -urc : List no logging operations sts -var : Show instance variables sts -pwd : Generate a script to preserve all users password sts -bq : Show session blocking Quiesce database sts -h : this help sts -v : Verbose Note: -rn : Limit display to first rows, default is 30 sts -sar -val : Show Os stats taken from AWR repository for the last periods. Default is 1 -val : gives results in absolute values rather than percentages EOF exit } # ....................................................................................... # Main # ....................................................................................... if [ -z "$1" ];then help fi NSNAP=1 ROWNUM=30 while [ -n "$1" ] do case "$1" in -sar ) CHOICE=SAR; if [ -n "$2" ];then NSNAP=$2 shift fi;; -bw ) CHOICE=BW ;; -bq ) CHOICE=BQ ;; -dif ) CHOICE=DIFF ;; -def ) CHOICE=DEFAULT ;; -fl ) CHOICE=FLASH_LOG;; -l ) CHOICE=STS ;; -lim ) CHOICE=RESOURCE_LIMIT ;; -log ) CHOICE=SUP_LOG;; -opt ) CHOICE=OPT_LIST ;; -pch ) CHOICE=PAR_HIST ;; -pwd ) CHOICE=PSWD ;; -s ) CHOICE=SYSSTAT ;; -si ) CHOICE=SYSSTAT_INFO ;; -sl ) CHOICE=GDS ;; -rac ) CHOICE=RAC_LIST ;; -t ) CHOICE=CVT_SCN; SCN=$2;shift;; -td ) CHOICE=CVT_TO_SCN; shift ; FDATE=$@; break ;; -val ) VAL=TRUE;; -urc ) CHOICE=URC;; -hex ) CHOICE=HEX; String=$2; shift;; -var ) CHOICE=VAR;; -v ) VERBOSE=YES; set -xv ;; -use ) CHOICE=USE ;; -rn ) ROWNUM=$2 ; shift ;; * ) echo "invalid value : $1"; help ;; esac shift done . $SBIN/scripts/passwd.env . ${GET_PASSWD} $S_USER $ORACLE_SID if [ "x-$CONNECT_STRING" = "x-" ];then echo "could no get the password of $S_USER" if [ "$CHOICE" = "VAR" ];then do_it_by_sed fi exit 0 fi # .................................................................. if [ "$CHOICE" = "PAR_HIST" ];then #-- parm_mods.sql : http://kerryosborne.oracle-guy.com/scripts/parm_mods.sql #-- #-- Shows all parameters (including hidden) that have been modified. #-- Uses the lag function so that a single record is returned for each change. #-- It uses AWR data - so only snapshots still in the database will be included. #-- #-- The script prompts for a parameter name (which can be wild carded). #-- Leaving the parameter name blank matches any parameter (i.e. it will show all changes). #-- Calculated hidden parameters (those that start with two underscores like "__shared_pool_size") #-- will not be displayed unless requested with a Y. #-- #-- Kerry Osborne #-- #-- Note: I got this idea from Jeff White. #-- Adapted to Smenu by Bpa if [ -n "$PAR_NAME" ];then AND_PARNAME=" and parameter_name like '%${PAR_NAME}%' " fi SQL="set linesize 190 pages 30 verify off col instance for 9999 head 'Inst' col PARAMETER_NAME head 'parameter name' for a20 col time for a15 col parameter_name format a30 col old_value format a49 col new_value format a49 col calc_flag for a4 head 'Auto|Calc|Par.' justify c break on instance skip 3 select instance_number instance, time, parameter_name, calc_flag, old_value, new_value from ( select a.snap_id,to_char(end_interval_time,'DD-MON-YY HH24:MI') TIME, a.instance_number, parameter_name, value new_value, lag(parameter_name,1) over (partition by parameter_name, a.instance_number order by a.snap_id) old_pname, lag(value,1) over (partition by parameter_name, a.instance_number order by a.snap_id) old_value , decode(substr(parameter_name,1,2),'__','Y','N') calc_flag from dba_hist_parameter a, dba_Hist_snapshot b , v\$instance v where a.snap_id=b.snap_id and a.instance_number=b.instance_number $AND_PARNAME ) where new_value != old_value order by 1,2 / " # .................................................................. elif [ "$CHOICE" = "BQ" ];then TITTLE="Show session blocking Alter database Quiesce" SQL=" prompt prompt to quiesce : ALTER SYSTEM QUIESCE RESTRICTED;; prompt to unquiesce : ALTER SYSTEM UNQUIESCE;; prompt select bl.sid, user, osuser, type, program from v\$blocking_quiesce bl, v\$session se where bl.sid = se.sid; " # .................................................................. elif [ "$CHOICE" = "HEX" ];then if [ -z "$String" ];then echo " I need an hexdecimal value" exit fi # starting 8i we can also do : select to_number('F','XXXXXXXX' ) from dual sqlplus -s "$CONNECT_STRING" < '|| v_out ) ; end; / EOF # .................................................................. elif [ "$CHOICE" = "PSWD" ];then TMP=$SBIN/tmp FOUT=$TMP/alter_user_passwd_$ORACLE_SID.txt > $FOUT echo " Create user script " echo " =======================" ( sqlplus -s "$CONNECT_STRING" <> $FOUT echo >> $FOUT echo " Preserve user passwd for later use" echo " ==================================" ( sqlplus -s "$CONNECT_STRING" <> $FOUT cd $TMP echo " " cat $FOUT echo " " exit # .................................................................. elif [ "$CHOICE" = "BW" ];then #--------------------------------------------------------------------------------- # date : 2005 Nov 15 # Author : Donald K. Burleson ( derived from a script of Steve Adams ) # ( but DKB seems to have a short memory ) # adapted to smenu by By Bernard Polarski #--------------------------------------------------------------------------------- TITTLE="System Backround events" SQL="set lines 190 pages 66 column c1 heading 'System|ID' format 9999 column c2 heading 'Background|Process' format a10 justify l column c3 heading 'Event name' format a40 column c4 heading 'Total|Waits' format 999,999,999 column c5 heading 'Time|Waited|(in secs)' format 999,999,999 column c6 heading 'Nbr |timouts' format 9999999 justify c column c7 heading 'Avg|Wait|secs' format 99990.999 column c8 heading 'Max|Wait|(in secs)' format 99999 break on c1 on report select c1,c2,c3,c4,c6,c6,c7,c8 from ( select b.sid c1, decode(b.username,NULL,c.name,b.username) c2, a.event c3, a.total_waits c4, round((a.time_waited / 100),2) c5, a.total_timeouts c6, round((average_wait / 100),3) c7, round((a.max_wait / 100),2) c8, rank() over ( partition by decode(b.username,NULL,c.name,b.username) order by a.total_waits desc) as topr from sys.v\$session_event a, sys.v\$session b, sys.v\$bgprocess c where a.event NOT LIKE 'DFS%' and a.event NOT LIKE 'KXFX%' and a.sid = b.sid and b.paddr = c.paddr and a.event NOT IN ( 'lock element cleanup', 'pmon timer', 'rdbms ipc message', 'smon timer', 'SQL*Net message from client', 'SQL*Net break/reset to client', 'SQL*Net message to client', 'SQL*Net more data to client', 'dispatcher timer', 'Null event', 'io done', 'parallel query dequeue wait', 'parallel query idle wait - Slaves', 'pipe get', 'PL/SQL lock timer', 'slave wait', 'virtual circuit status', 'WMON goes to sleep') $ORDER ) where topr <= $ROWNUM ; " elif [ "$CHOICE" = "URC" ];then TITTLE="List No logging operations" SQL=" set linesize 125 set head on COL fName FORMAT A55 HEADING 'Datafile' COL tbs FORMAT A30 HEADING 'Tablespace' COL uc FORMAT 999999999999 HEADING 'Scn' COL fd FORMAT A20 HEADING 'Date' SELECT a.fNAME, a.uc, TO_CHAR (a.fdate,'DD-MON-YYYY HH:MI:SS') fd , b.name tbs from ( SELECT NAME fname, UNRECOVERABLE_CHANGE# uc, UNRECOVERABLE_TIME fdate, ts# FROM V\$DATAFILE where UNRECOVERABLE_CHANGE# > 0 order by fdate desc) a, sys.ts\$ b where a.ts# = b.ts# and rownum <=30 / " # ................................................................................. elif [ "$CHOICE" = "VAR" ];then TITTLE="Show instance variables" SQL="set lines 190 pages 65 column variable format a16 column description format a60 break on struct select 'X\$KVII' struct, kviitag variable, kviidsc description, kviival value from sys.x\$kvii union all select 'X\$KVIT', kvittag, kvitdsc, kvitval from sys.x\$kvit union all select 'X\$KVIS', kvistag, kvisdsc, kvisval from sys.x\$kvis / " elif [ "$CHOICE" = "GDS" ];then SQL="col operation format a30 col start_time for a22 col duration format a18 break on operation on report set lines 124 pages 66 select operation,to_char(start_time,'YYYY-MM-DD HH24:MI:SS')start_time, (end_time-start_time) day(1) to second(0) as duration from dba_optstat_operations order by start_time desc;" # .................................................................. elif [ "$CHOICE" = "SYSSTAT" ];then SQL=" set lines 190 pages 66 set feed off COL statistics_name FORMAT A30 HEADING 'Statistics' COL system_status FORMAT A10 HEADING 'Status' COL statistics_view_name FORMAT A24 heading 'Corresponding view' COL activation_level FORMAT A10 heading 'Activation|Level' COL description FORMAT A73 heading 'Description' select statistics_name,system_status, statistics_view_name , activation_level, description from v\$statistics_level ; prompt set feed on prompt System statistics setting select pname, pval1 value from sys.aux_stats\$ where sname = 'SYSSTATS_MAIN'; " elif [ "$CHOICE" = "STS" ];then sqlplus -s '/ as sysdba' <