вторник, 17 марта 2015 г.

osize.sh

cat osize.sh
#!/bin/sh
# 11.03.2015
daScr=/tmp/ots_150306.sql
echo SET LINESIZE 125\;>$daScr
echo SET PAGESIZE 90\;>>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
  echo --DBA_DATA_FILES>>$daScr
  echo SELECT /\* + RULE \*/>>$daScr
  echo df.tablespace_name,>>$daScr
  echo round\(sum\(df.maxbytes\)/1048576\) \"SizeMAX\(MB\)\",>>$daScr
  echo --round\(sum\(df.bytes\)/1048576\) \"SizeCUR\(MB\)\",>>$daScr
  echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\) \"Free\(MB\)\",>>$daScr
  echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
  echo FROM dba_data_files df>>$daScr
  echo GROUP BY df.tablespace_name>>$daScr
  echo UNION ALL>>$daScr
  echo --DBA_TEMP_FILES>>$daScr
  echo SELECT /\* + RULE \*/>>$daScr
  echo df.tablespace_name,>>$daScr
  echo round\(sum\(df.maxbytes\)/1048576\),>>$daScr
  echo --round\(sum\(df.bytes\)/1048576\),>>$daScr
  echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),>>$daScr
  echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
  echo FROM dba_temp_files df>>$daScr
  echo GROUP BY df.tablespace_name>>$daScr
  echo order by 1 desc\;>>$daScr
  echo exit\;>>$daScr
  sqlplus -S / as sysdba @$daScr
  if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi # Если скрипт запущен в GUI, то окно не закрываем.

elif [ $1 == "-g" ]; then # Скрипт выводит дополнительный столбец (SizeCUR - текущий фактический размер на диске), и все числовые значения, группируются по разрядам.
  echo --DBA_DATA_FILES>>$daScr
  echo SELECT /\* + RULE \*/>>$daScr
  echo df.tablespace_name,>>$daScr
  echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\) \"SizeMAX\(MB\)\",>>$daScr
  echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\) \"SizeCUR\(MB\)\",>>$daScr
  echo to_char\(round\(\(sum\(df.maxbytes\)-sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\) \"Free\(MB\)\",>>$daScr
  echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
  echo FROM dba_data_files df>>$daScr
  echo GROUP BY df.tablespace_name>>$daScr
  echo UNION ALL>>$daScr
  echo --DBA_TEMP_FILES>>$daScr
  echo SELECT /\* + RULE \*/>>$daScr
  echo df.tablespace_name,>>$daScr
  echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
  echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
  echo to_char\(round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\),>>$daScr
  echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
  echo FROM dba_temp_files df>>$daScr
  echo GROUP BY df.tablespace_name>>$daScr
  echo order by 1 desc\;>>$daScr
  echo exit\;>>$daScr
  sqlplus -S / as sysdba @$daScr
else
  echo Usage:
  echo $0 [-g]
fi
rm $daScr

Комментариев нет:

Архив