資料庫環境中的shell指令碼應用
維護多個資料庫,又沒有EM,在各個資料庫之間來回切換很是麻煩,
今天參照一些資料寫了如下的shell指令碼。主要來講dba的賬戶密碼,ORACLE_SID都以環境變數的形式注入,然後在當前session中可以靈活的切換例項來進行相應的操作。
比如想檢視資料庫中的表空間情況,可以在當前的session中檢視其他資料庫例項的資料情況。
export SH_USERNAME=system
export SH_PASSWORD=oracle
export ORACLE_SID=PROD
Num=`echo show user | $ORACLE_HOME/bin/sqlplus -s $SH_USERNAME/$SH_PASSWORD | grep -i 'USER ' | wc -l`
if [ $Num -gt 0 ]
then
## ok - instance is up
echo Instance $ORACLE_SID has been connected
else
## inst is down
echo $ORACLE_SID is down
count=`expr $count + 1 `
fi
$SHELL
執行結果如下:
[oracle@oel1 ~]$ ksh settdb.sh PROD
Instance PROD has been connected
這可以作為一個初始化的操作,如果切換到其他資料庫也很方便,
然後編寫相應的shell 指令碼,比如檢視錶空間的情況
指令碼如下:
sqlplus -S ${SH_USERNAME}/${SH_PASSWORD}@${ORACLE_SID} << EOF
set echo off
set feedback off
set verify off
set linesize 150
set pages 30
set heading off
REM clear screen
COLUMN Tablespace FORMAT A20 HEADING 'Tablespace|Name' JUSTIFY left
COLUMN Total_Size FORMAT 999,999 HEADING 'Total|Size(MB)' JUSTIFY left
COLUMN Free_Space FORMAT 999,999 HEADING 'Free(MB)'
COLUMN Percentage FORMAT 90.0 HEADING '%|Used' JUSTIFY left
COLUMN decode FORMAT A14 HEADING '(Space Gauge)'
COLUMN fragdec FORMAT A14 HEADING '(Frag Gauge)'
COLUMN percfrag FORMAT 90.0 HEADING '%|Frag' JUSTIFY left
COLUMN frags FORMAT 999,999 HEADING 'Frags'
COLUMN bigchunk FORMAT 999,999 HEADING 'Big|Chunk(MB)' JUSTIFY left
COLUMN data_files FORMAT 99 HEADING 'Data|Files' JUSTIFY left
set heading on
select free.tablespace_name Tablespace, tot.total Total_Size,
100 - ((free.free / tot.total) * 100) Percentage,
decode
((ceil(10-(free.free / tot.total) * 10)),
0,'| .......... |',
1,'| *......... |',
2,'| **........ |',
3,'| ***....... |',
4,'| ****...... |',
5,'| *****..... |',
6,'| ******.... |',
7,'| *******... |',
8,'| ********.. |',
9,'| *********. |',
10,'| !! DNGR !! |') decode,
free.free Free_Space, bigchunk, data_files, frags, percfrag,
decode ((ceil(percfrag / 10)) ,
0,'| .......... |',
1,'| *......... |',
2,'| **........ |',
3,'| ***....... |',
4,'| ****...... |',
5,'| *****..... |',
6,'| ******.... |',
7,'| *******... |',
8,'| ********.. |',
9,'| *********. |',
10,'| !! DNGR !! |') fragdec
from (select tablespace_name, ceil(sum(bytes) / 1048576) total, count(*) data_files
from dba_data_files
group by tablespace_name) tot,
(select tablespace_name, ceil(sum(bytes) / 1048576) free,
ceil(max(bytes) / 1048576) bigchunk, count(*)frags, 100 - (max(bytes) /sum(bytes)) * 100 percfrag
from dba_free_space
group by tablespace_name) free
where free.tablespace_name = tot.tablespace_name;
exit
EOF
執行結果如下:
Tablespace Total % Big Data %
Name Size(MB) Used (Space Gauge) Free(MB) Chunk(MB) Files Frags Frag (Frag Gauge)
-------------------- -------- ----- -------------- -------- --------- ----- -------- ----- --------------
TBS2 20 0.0 | .......... | 20 20 1 1 0.0 | .......... |
SYSAUX 325 19.1 | **........ | 263 263 1 1 0.0 | .......... |
TBS1 55 5.5 | *......... | 52 29 3 3 44.2 | *****..... |
UNDOTBS 200 6.0 | *......... | 188 185 1 5 1.5 | *......... |
USERS 135 78.5 | ********.. | 29 28 2 3 3.6 | *......... |
TEST 10 0.0 | .......... | 10 10 1 1 0.0 | .......... |
SYSTEM 325 68.3 | *******... | 103 103 1 1 0.0 | .......... |
RCTS 100 0.0 | .......... | 100 100 1 1 0.0 | .......... |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 每日同步環境SHELL指令碼指令碼
- shell指令碼中的變數及應用指令碼變數
- shell指令碼的執行環境變數指令碼變數
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- 建立管理MySQL資料庫的shell指令碼MySql資料庫指令碼
- Shell指令碼應用(三)指令碼
- 透過shell得到資料庫中許可權的指令碼資料庫指令碼
- 通過shell得到資料庫中許可權的指令碼資料庫指令碼
- 生產環境備份shell指令碼薦指令碼
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- 監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 巧用shell生成資料庫檢查指令碼資料庫指令碼
- [轉]監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 監控Oracle資料庫的常用shell指令碼(轉)Oracle資料庫指令碼
- Shell指令碼應用兩個例子指令碼
- 通過shell指令碼批量操作mysql資料庫指令碼MySql資料庫
- 巧用shell指令碼分析資料庫使用者指令碼資料庫
- 簡單資料庫及表建立shell指令碼資料庫指令碼
- shell 指令碼常用 oracle 環境變數set 設定指令碼Oracle變數
- Shell多執行緒備份資料庫的指令碼執行緒資料庫指令碼
- 通過shell指令碼得到資料庫的基本資訊(一)指令碼資料庫
- 【轉載】監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 用於管理應用程式得shell指令碼指令碼
- 【博文推薦】用shell指令碼自動化備份資料庫指令碼資料庫
- 使用shell指令碼在Linux中管理Java應用程式指令碼LinuxJava
- 使用shell指令碼替換csv檔案中的資料指令碼
- impala-shell指令碼python環境缺少依賴包指令碼Python
- Shell指令碼中執行sql語句操作MySQL資料庫的幾個方法指令碼MySql資料庫
- Shell指令碼之for迴圈語句的應用指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- 關於Solidity指令碼相關環境配置及指令碼資料的查詢Solid指令碼
- 使用shell 指令碼備份資料指令碼
- 資料匯出shell指令碼(上)指令碼
- 資料匯入shell指令碼(下)指令碼
- 使用shell指令碼檢視資料庫負載情況指令碼資料庫負載
- Shell指令碼應用 – for、while迴圈語句指令碼While
- springboot打包不同環境配置與shell指令碼部署Spring Boot指令碼
- 資料庫應有與之匹配的基礎環境資料庫