如何檢測Oracle的可用性和表空間容量

2021-05-22 17:25:28 字數 2980 閱讀 4898

很多人也許並不了解,檢測oracle的可用性所需要的命令比簡單的ping或者ps -ef | grep 等oracle的命令要多得多。有觀點認為它需要乙個使用sql*net 來驗證***已經開啟並執行的測試訪問oracle——這是使用者經常用到的訪問。通過實際地登入到實際環境中,你可以確認這個例項環境可以接受登入的,如果你只是做了以上的檢測的話,你如何才能知道是否登入沒有被接受,只是因為需要等待文件日誌?

除了oracle的啟用和可用性之外,我們還需要進行檢測以確保它可以用,這樣我們還可以檢測表空間的容量。

檢測的指令碼:

◆假設所有的oracle環境都已經搭建起來了

◆假設所有的擴充套件都已經達到了最大的限度

◆假設左右的表空間都缺乏執行的空閒空間

下面的指令碼可以在你想要的任何時候通過crontab 來中斷。另外,如果上面的例外情況出現了的話,您還可以就這個指令碼寫信或者電子郵件給支援人員獲得幫助。

如果您有什麼其他的測試,這個指令碼可以讓您輕鬆地進行修改以加以利用。我使用這個monitororcl 指令碼作為模板並且在末尾新增了功能。

按crontab來呼叫query_oracle_instances.sh 指令碼:

#!/bin/ksh

. /u01/home/oracle/.profile

exit

get_oracle_instance_list 指令碼如下:

instance_name1 tnsname1 sys_password_for_this_instance

instance_name2 tnsname2 sys_password_for_this_instance

instance_name3 tnsname3 sys_password_for_this_instance

下面是monitororcl指令碼:

#!/bin/ksh

#script : rick stehno

# script will monitor to see if oracle is up

while [ "$1" != "" ]

dooracle_instance=$1

oracle_tns=$2

usr_id=sys

usr_pass=$3

# echo "instance: [$oracle_instance]"

# echo "tns [$oracle_tns]"

# echo "pass: [$usr_pass]"

[email protected],userid2,[email protected]

## 檢測關鍵的段沒有達到最大限度

sqlplus -s <$logfil 2>/dev/null

$usr_id/$usr_pass@$oracle_tns

set pages 0

select distinct 'yes' from dba_segments

where extents >= (max_extents-5) and segment_name not like '1.%';

eof1

grep -i '^ora-' $logfil >/dev/null

if [ $? -eq 0 ]

then

echo "$0 failed: check $oracle_instance for problems" | /bin/mailx -

s "$ : script failed" $notify_list

exit 1

fimaxextents_reached=`awk '' $logfil`

if [ "$maxextents_reached" = "yes" ]

then

echo "$0 failed: $oracle_instance max extents reached" | /bin/mailx -

s "$ : max extents reached" $notify_list

exit 1fi#

# 檢測是否能分配下乙個段

sqlplus -s <$logfil 2>/dev/null

$usr_id/$usr_pass@$oracle_tns

set pages 0

select distinct 'yes' from dba_segments ds

where next_extent >

(select max(bytes) from dba_free_space

where tablespace_name = ds.tablespace_name);

eof2

grep -i '^ora-' $logfil >/dev/null

if [ $? -eq 0 ]

then

echo "$0 failed: check $oracle_instance for problems" | /bin/mailx -

s "$ : script failed" $notify_list

exit 1

fipossible_nextext_fail=`awk '' $logfil`

if [ "$possible_nextext_fail" = "yes" ]

then

echo "$0 failed: $oracle_instance cannot extend segment" | /bin/mailx -

s "$ : max extents reached" $notify_list

exit 1

fishift 3

# echo "shift done"

done

echo "successful completion of $0" `date`

exit 0

TCP連線可用性檢測

1 問題的引出 我們假設有兩種服務,a和b。其中b部署在無差別的多台機器上。當a向b請求服務的時候我們通過軟體或是硬體的負載均衡演算法把該請求路由到提供b服務的某台機器上。這個時候b對a提供的服務在可靠性上我們是要做些工作的。如果負載均衡是通過軟體來實現的那麼檢測通向b的tcp鏈結是否可用這個工作就...

如何提公升系統可用性?

相傳魏文王和名醫扁鵲之間曾經發生過這樣一段對話 魏文王 你們兄弟三人,誰是醫術是最好的呢?扁鵲 大哥最好,二哥差些,我是三人中最差的乙個。魏文王 那為什麼你的名氣最大?扁鵲 大哥治病,是治病於病情發作之前,病人尚未發病即已 使得他的醫術沒有得到認可,沒什麼名氣 二哥治病,是治病於病情初起時,二哥藥到...

HDFS如何保證高可用性

1 實現方式 namenode冗餘備份 2 具體過程 多個節點作為namenode,其中乙個處於active狀態,其它處於standby狀態。目前的實現有乙個條件,需要借助類似nfs這樣的分布式共享儲存系統,而且節點要能夠訪問這一系統。在active的namespace上的每個改變,需要同步到處於s...