欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle故障怎么解決 oracle常見異常

Oracle Enterprise Manager常見問題及解決

Oracle Enterprise Manager常見問題及解決 Oracle Enterprise Manager(Oracle企業(yè)管理器 簡稱OEM)是通過一組Oracle程序 為管理分布式環(huán)境提供了管理服務 OEM包括了一組DBA工具 一個repository 以及一個圖形化顯示的控制臺 OEM控制臺與每一個服務器上的智能化代理(IntelligentAgent)相對應 智能化代理能夠監(jiān)控系統(tǒng)的特定事件并且執(zhí)行任務(作業(yè))就象你在系統(tǒng)本地一樣 事件和作業(yè)的結(jié)果會被送回控制臺 這樣可以在一個地方管理所有的系統(tǒng) OEM與Server Manager Motif相比 有以下優(yōu)點 )從適用范圍看 OEM可以同時監(jiān)控管理多個系統(tǒng)上的多個數(shù)據(jù)庫 因而特別適合分布式環(huán)境 而Server Manager只能監(jiān)控管理一個數(shù)據(jù)庫 )從管理對象看 OEM可以監(jiān)控管理節(jié)點 數(shù)據(jù)庫和監(jiān)聽進程(listener) 而Server Manager只能監(jiān)控數(shù)據(jù)庫 )從適用版本看 OEM可以同時監(jiān)控管理Oracle x和 x 而從 版開始 Server Manager已不存在 本文主要介紹一些OEM的常見問題及其解決方法 Q OEM數(shù)據(jù)庫工具組的功能是什么?? A OEM數(shù)據(jù)庫工具組是一組使DBA能夠通過GUI界面管理Oracle數(shù)據(jù)庫的工具 包括以下工具 Data Manager(數(shù)據(jù)管理器) 這工具使你能夠象加載數(shù)據(jù)一樣執(zhí)行數(shù)據(jù)的export/import Schema Manager 這工具使你能夠在數(shù)據(jù)庫中管理對象 可以用于創(chuàng)建 修改 和刪除tables indexes views snapshots sequences等等 Security Manager(安全性管理器) 這工具使你能夠管理用戶 角色 權(quán)限及profiles StorageManager(存儲管理器) 這工具允許你創(chuàng)建和修改表空間 數(shù)據(jù)文件和回滾段 InstanceManager(實例管理器) 這工具允許你關(guān)閉 啟動實例并且存儲和管理數(shù)據(jù)庫參數(shù) SQL*Worksheet 這工具使你能夠運行或創(chuàng)造SQL腳本并且存儲在硬盤上 你能使用這工具重現(xiàn)最后執(zhí)行的語句 同時 檢查顯示到屏幕上的執(zhí)行結(jié)果 BackupManager(備份管理器) 這工具允許你管理備份和恢復為Oracle 和Oracle 數(shù)據(jù)庫 在Oracle 此工具支持EnterpriseBackupUtility(EBU) 在Oracle 此工具支持恢復管理器RecoveryManager SofareManager(軟件管理器) 這允許你將遠程軟件安裝到支持這一特性的遠程服務器 Q 作業(yè)狀態(tài)一直為提交 未變?yōu)轭A定(scheduled) A 作業(yè)在OEM控制臺創(chuàng)建并且到被通過SQL*net送至智能化代理 一旦當智能化代理接受作業(yè)請求 會發(fā)送一個通知回到OEM控制臺 狀態(tài)變化到 預定 如果狀態(tài)從未從提交變化到預定 那代理程序可能沒有收到作業(yè)請求 確定代理程序是否已經(jīng)啟動 確定SQL*net和OEM是否已經(jīng)適當配置 Q 作業(yè)狀態(tài)一直為預定 未變?yōu)檫\行 A 當代理程序開始運行作業(yè)的時候 會發(fā)送一個通知回到OEM控制臺 狀態(tài)變化到 已發(fā)送 或 啟動 如果作業(yè)狀態(tài)一直為預定而無變化 那可能是代理程序不能打開一個socket回到OEM控制臺 原因可能是TCP/IP問題或代理程序沒有足夠權(quán)限去派生一個進程來運行作業(yè) 在服務器端使用主機名來Ping控制臺 以此確定TCP/IP不存在問題 確認運行作業(yè)的數(shù)據(jù)庫用戶具有dba connect resource權(quán)限 Q 運行作業(yè)出錯 錯誤信息為 FailedtoAuthenticateUser A 在NT系統(tǒng)上 你必須把 Logonasabatchjob 權(quán)限授予登錄用戶 然后在OEM Preferred Credentials中設置此用戶 如果代理程序是一個 x的代理程序 那這個用戶必須是一個本地的NT用戶 不能為一個DOMAIN用戶 在Unix系統(tǒng)上 代理程序的權(quán)限應為 rwsr xr xrootdbadbsnmp s 權(quán)限意味著dbsnmp進程將用root用戶的權(quán)限運行 當這權(quán)限設置以后 作業(yè)將由在OEM控制臺的Preferred Credentials窗口中設置的用戶運行 確認在OEM控制臺的Preferred Credentials窗口中設置的用戶在服務器上有合適的登錄權(quán)利 Q 客戶能創(chuàng)建自己定義的事件嗎? A 在OEM x中 客戶不能創(chuàng)建自己定義的事件 這將是OEM x的一個新特性 然而 你能創(chuàng)建一個運行TCL腳本的作業(yè) 能通過使用TCL命令orareportevent觸發(fā)一個事件 有關(guān)orareportevent的進一步信息 請參閱OEM應用開發(fā)者手冊 Q 在控制臺上 數(shù)據(jù)庫顯示為紅色的圓圈和斜線 表示數(shù)據(jù)庫已關(guān)閉 然而 數(shù)據(jù)庫是正在運行的 A 如果數(shù)據(jù)庫 監(jiān)聽進程或節(jié)點顯示為紅色的圓圈和斜線 OEM控制臺是在試圖通知你服務已關(guān)閉 如果服務未關(guān)閉 你需要在事件窗口中單擊 OutstandingEventstab 并將通知移動至歷史記錄 這應該從導航(navigator)和地圖(map)窗口中清除關(guān)閉提示 Q 怎樣創(chuàng)建OEMRepository? A OEMRepository是在Oracle 或Oracle 數(shù)據(jù)庫中的一組表 這些表存儲了通過OEM控制臺圖形化瀏覽的信息 在OEM x結(jié)構(gòu)中 這些表存儲在一個特定的用戶下并且不能與另外的用戶共享 在OEM x 應該用一個非 system 用戶登錄來運行腳本SMPCRE SQL 此用戶必須有connect resource和dba權(quán)限 在OEM x 初次激活OEM控制臺圖標時將自動地創(chuàng)建Repository 如果已存在一個早期版本的repository 會提示更新表 如果沒有OEM表 會提示創(chuàng)建表 Q 怎樣自定義OEM工具欄? A 如果要設定OEM工具欄 應在工具欄上按右鍵 選擇Customizetab 你能編輯工具欄項目的名字 刪除項目 或添加項目 如果在Databasetab上單擊 可以進入logoncredentials 為每數(shù)據(jù)庫選擇一個默認值輸入項 Q 當?shù)卿浿罯EM控制臺時 得到以下錯誤信息 VOC Failuretoobtaininterfacelogin A 原因是OEM通信后臺進程不能打開一個與Repository的連接 確認TCP/IP配置正確 以及是否通信后臺進程的缺省參數(shù)已被修改(使用DaemonManager) Q 當使用OEM控制臺時 得到以下錯誤信息 VOC FailuresettingcredentialdetailsORA NotconnectedtoORACLE A 原因是OEMRepository所在數(shù)據(jù)庫已關(guān)機 或是連接數(shù)據(jù)庫的服務發(fā)生了網(wǎng)絡故障 Q 當使用SYSDBA登錄至OEM控制臺時 得到以下錯誤信息 VOC Failureupdatingorinsertingauserdetailentry ORA Tableorviewdoesnotexist A 用戶登錄至OEM控制臺的缺省角色是NORMAL 如果你需要作為SYSDBA連接 應該在Preferred Credentials窗口中設置CONNECTASSYSDBA選項 Q 當?shù)卿浿罯EM控制臺時 得到以下錯誤信息 VOC OracleDaemonprocesscouldnotbestarted A 通信后臺進程不能初始化的原因是因為NT或Windows 的登錄庫輸入項(registryentries)是缺少或無效的 在命令提示符狀態(tài)下手工地運行VOD EXE注冊 OCX Q 當?shù)卿浿罯EM控制臺時 得到以下錯誤信息 VOD OracleDaemonprocesscouldnotbestartedVODA EXE AdeviceattachedtothesystemisnotfunctioningNCRNT DLL FileislinkedtomissingexportinNSNT DLL:n *** hwk A 原因是在同一個ORACLE_HOME中安裝了 個以上版本的SQL*NetV 應該僅僅運行與OEM光盤所含版本的SQL*Net 啟動Oracle安裝程序 移去所有的更早版本的SQL*NetV X Q 當?shù)卿浿罯EM控制臺時 得到以下錯誤信息 VOD Failedtolistenforiningconnections A 后臺進程的LISTENINGADDRESS設置錯誤或是系統(tǒng)的TCP/IP未設置 Q 當?shù)卿浿罯EM控制臺時 得到以下錯誤信息 VAX Repository(x x)isnotpatiblewiththeOEM(x x) A 原因是在此用戶中找不到Repository表格或當創(chuàng)建Repository表格時發(fā)生問題 應重新創(chuàng)建Repository Q OEM控制臺安裝在一個共享網(wǎng)絡驅(qū)動器上 當?shù)卿浿罯EM控制臺時 得到GPF A 不應試圖從一個共享網(wǎng)絡驅(qū)動器運行OEM控制臺 OEM x產(chǎn)品應該安裝在每個工作站的本地盤上 Q 當試圖使用OEM對數(shù)據(jù)庫進行離線備份時 得到以下錯誤信息 ORA SMP_OFFLINE_BACKUP_LOCKtablesnotfound A 用DBSNMP用戶登錄來運行腳本BACKUPTS SQL Q 當試圖使用OEM對數(shù)據(jù)庫進行熱備份時 得到以下錯誤信息 calltoaltertablespacebackupfailed NMS :unabletostartHOTbackup A 數(shù)據(jù)庫不在ArchiveLog方式 將數(shù)據(jù)庫改為ArchiveLog方式 Q 當試圖升級或創(chuàng)建一個新的repository時 得到以下錯誤信息 VOJ :ErrorInsertingintoselect from A 如果是從OEM 升級到OEM 這是一個BUG 可以運行SMPCRE SQL來刪除 倉庫或聯(lián)系OracleWorldWideSupport以得到PATCH 如果這不是升級而是一個新的安裝 應檢查用戶所在表空間 修改存儲參數(shù)或增加新的數(shù)據(jù)文件 Q 在安裝OEM 時 得到以下錯誤信息 oem ins writeerrorwhilecopyingfile c:\windows\system\oleaut new A 安裝程序試圖用一個較老版本的oleaut dll來覆蓋當前的文件 將oleaut dll拷貝為oleaut old 然后重新啟動Oracle安裝程序 Q lishixinzhi/Article/program/Oracle/201311/16989

創(chuàng)新互聯(lián)是專業(yè)的涉縣網(wǎng)站建設公司,涉縣接單;提供成都網(wǎng)站設計、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行涉縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

Oracle 觸發(fā)器調(diào)試及遇到相關(guān)問題解決

今天在項目中遇到一個比較棘手的問題,需要用到觸發(fā)器。在編寫觸發(fā)器和調(diào)試過程中遇到下列問題,在此記錄一下:

由于之前寫的觸發(fā)器都能正常運行,就沒有涉及到觸發(fā)器的調(diào)試,今天發(fā)現(xiàn)觸發(fā)器沒起作用,需要調(diào)試,竟不知道在哪兒調(diào)試。在網(wǎng)上借鑒一些別人的經(jīng)驗(),記錄一下。在PL/SQL中,觸發(fā)器的調(diào)試方法如下:

1,選中要調(diào)試的觸發(fā)器,右擊,然后勾選 Add debug information,只有勾選這個按鈕后,調(diào)試才能進入到斷點。

2,選中觸發(fā)器,點擊 Edit,到Edit 界面,在要調(diào)試的行號前面單擊,或者右鍵,添加斷點。

3,在菜單的新建中選擇“測試窗口”,打開一個如下塊,在begin和end中間添加能觸發(fā)觸發(fā)器的語句

4,按F9或者點擊調(diào)試菜單中的開始菜單,進入運行調(diào)試狀態(tài)(后面的紅框是單步進入)

5,點擊運行圖標跳到觸發(fā)器中斷點位置

6,鼠標放到變量上可以顯示變量值。

7,如果有異常,就彈出相關(guān)異常信息。

調(diào)試的時候發(fā)現(xiàn)new對象的日期格式為中文,而后面又需要yyyy-mm-dd 的格式來作為查詢條件。所以就在賦值的時候轉(zhuǎn)換一下。

在select into 給變量賦值的時候,select 查詢出來的集合為空,導致報錯ORA-01403,解決方案就是將這一段用begin end 包裹起來,拋出改異常的時候給變量一個默認值。如下圖:

Oracle數(shù)據(jù)庫頻繁歸檔問題的解決辦法

Oracle數(shù)據(jù)庫頻繁歸檔問題的解決辦法

第一步 檢查

top 輸出 CPU 使用率很低

iostat 讀 M/s 寫 K/s iowait %

v$session 中的會話不多 且都沒有大的事務操作

db_writer_processes=

log_archive_max_processes=

主日志組 個 每個組中 個 M大小的日志文件

備日志組 個 每個組中 個 M大小的日志文件

v$log 除了一個組為current 其它所有日志組狀態(tài)均為active

重啟數(shù)據(jù)庫現(xiàn)象依舊

第二步 判斷

根據(jù)以上檢查結(jié)果 判斷應該不是應用層的問題 初步判斷是系統(tǒng)進程或硬件問題 因為是生產(chǎn)系統(tǒng) 不到萬不得已不要輕易作硬件檢測和更換 因為那樣會需要大量停止服務時間 首先采取一般控制日志歸檔的方法

第三步 措施

增加主日志文件

alter database add logfile member /u /oradata/BOSS/redo log to group

alter database add logfile member /u /oradata/BOSS/redo log to group

alter database add logfile member /u /oradata/BOSS/redo log to group

alter database add logfile member /u /oradata/BOSS/redo log to group

第四步 增加歸檔進程數(shù) 由 改為

alter system set log_archive_max_processes= scope=both

lishixinzhi/Article/program/Oracle/201311/17384

我的oracle宕機了怎么處理

1、案例現(xiàn)象

在root用戶下,su切換到一個普通用戶oracle下,卻發(fā)生了如下錯誤:

oracle數(shù)據(jù)庫意外宕機的分析處理案例

于是,嘗試直接通過oracle用戶登錄系統(tǒng),發(fā)現(xiàn)此時的oracle用戶也無法登錄了,出現(xiàn)與上面同樣的錯誤。

2、解決思路

從上面錯誤提示可知是權(quán)限出現(xiàn)了問題,那么可以從權(quán)限入手進行排查,基本思路如下:

用戶目錄/home/oracle權(quán)限問題;

su程序執(zhí)行權(quán)限問題;

程序依賴的共享權(quán)限問題;

selinux問題導致;

系統(tǒng)根空間問題。

3、排查問題

根據(jù)上面的思路,我們進行逐一檢查,考慮到su在切換到oracle用戶時會讀取oracle目錄下的環(huán)境變量配置文件,因此,首先檢查/home/oralce目錄的權(quán)限是否存在問題,

[root@loaclhost home]# ls -al/home|grep oracle

drwx---- 4 oralce oinstall 4096 01-31 10:45 oracle

從輸出可知,/home/oracle目錄的屬主是oracle用戶,oracle用戶對這個目錄有“rwx”權(quán)限,因此,oracle用戶目錄的權(quán)限設置是正確的,可以排除掉這個問題了。

接著檢查su執(zhí)行權(quán)限問題:

[root@loaclhost home]# 11 /bin/su

-rwsr-xr-x 1 root root 24120 2007-11-30 /bin/su

可見su命令執(zhí)行權(quán)限也沒有問題,這個也排除了。

繼續(xù)檢查su依賴的共享庫權(quán)限,使用ldd命令檢查su命令依賴的共享庫文件,如下圖

oracle數(shù)據(jù)庫意外宕機的分析處理案例

根據(jù)上面的操作,依次檢查su命令依賴的每個庫文件的權(quán)限,發(fā)現(xiàn)也都是正常的,因此,共享庫的問題也排除了。

根據(jù)上面的思路,績效檢查SELinux的設置。

oracle數(shù)據(jù)庫意外宕機的分析處理案例

由輸出可知,SELinux處于關(guān)閉狀態(tài),這個原因也排除了。

到這來為止,問題變得樸素迷離,到底是哪里出現(xiàn)問題了呢?作為Linux運維,例行檢查系統(tǒng)根分區(qū)狀態(tài)是非常必要的,那么首先檢查一個根分區(qū)的磁盤空間大小,發(fā)現(xiàn)剩余空間還有很多,空間問題也排除了。既然報的錯誤是權(quán)限有問題,那么只要以權(quán)限為線索,不偏離這個核心就沒錯,于是繼續(xù)嘗試檢查/home目錄下各個用戶的權(quán)限,如下圖。

oracle數(shù)據(jù)庫意外宕機的分析處理案例

從輸出看每個用戶的目錄權(quán)限,都是“rwx----”,即“700”,完全沒有問題,可是我發(fā)現(xiàn)我錯了,我的目光一直在用戶對應的目錄上,而忽略了其他輸出信息,而問題就藏在我沒有關(guān)注的信息中。在這個命令輸出的前兩行中,第一行權(quán)限對應的目錄是“.”,代表當前目錄,也就是/home目錄,權(quán)限為“rwxr-xr-x”,第二行權(quán)限對應的目錄是“..”,也就是根目錄,權(quán)限卻為“rw-rw-rw-”,即“666”,此時,問題終于查找到了,原來是根目錄權(quán)限問題。

4、解決問題

知道了問題產(chǎn)生的原因,解決問題就非常簡單,執(zhí)行如下命令:

[root@localhost~]#chmod 755 /

然后就可順利執(zhí)行su切換命令。

經(jīng)驗分享

這個問題主要是由于根目錄沒有執(zhí)行權(quán)限,而Linux下所有的操作都是在根目錄下進行的,進而導致/home/oralce目錄沒有執(zhí)行權(quán)限。其實根目錄權(quán)限的丟失對于系統(tǒng)中運行的每個用戶存在同樣的影響。因此,在權(quán)限出現(xiàn)問題時,一定要注意根目錄的權(quán)限。

Oracle數(shù)據(jù)庫無響應故障處理方式

Oracle數(shù)據(jù)庫無響應故障處理方式

Oracle數(shù)據(jù)庫無響應故障,簡單地講就是數(shù)據(jù)庫實例不能響應客戶端發(fā)起的請求,客戶端提交一個SQL后,就一直處于等待數(shù)據(jù)庫實例返回結(jié)果的狀態(tài)。更嚴重的現(xiàn)象是客戶端根本不能連接到數(shù)據(jù)庫,發(fā)起一個連接請求后,一直處于等待狀態(tài)。Oracle數(shù)據(jù)庫無響應故障怎么處理呢?下面跟我一起來學習Oracle數(shù)據(jù)庫無響應故障的處理方法吧!

無響應的故障現(xiàn)象一般有以下幾種:

1.Oracle的進程在等待某個資源或事件

這種現(xiàn)象一般可以從V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等動態(tài)視圖中檢查進程正在等待的資源或事件,而被等待的資源或事件,一直都不能被獲取,甚至是很長時間都不可獲得。如果這個正在等待的進程持有了其他的資源,則會引起其他的進程等待,這樣就很可能引起實例中大范圍的會話發(fā)生等待。由于進程在等待資源或事件時,通常都處于SLEEP狀態(tài),消耗的CPU資源非常少(在等待latch時要稍微多消耗一些CPU資源),所以從OS來看,CPU的消耗并不高,甚至是非常低。

這種因為等待而引起的個別進程Hang,相對比較容易處理。

2. OracleProcess Spins

所謂Spin,就是指Oracle進程中的代碼在執(zhí)行某個過程時,陷入了循環(huán)。在V$SESSION視圖中,往往可以看到Hang住的會話,一直處于“ACTIVE”狀態(tài)。對于這樣的會話,用“alter system kill session ‘sid,serial#’”命令也不能完全斷開會話,會話只能被標記為“killed”,會話會繼續(xù)消耗大量的CPU。進程Spins由于是在做循環(huán),CPU的消耗非常大,從OS上明顯可以看到這樣的進程,通常會消耗整個CPU的資源。

而對于這樣的Hang住的會話,處理起來相對比較復雜,并且為了從根本上解決問題,需要超過DBA日常維護所需要的技能。

從故障范圍來看,無響應故障可以分為以下幾種情況:

1. 單個或部分會話(進程)Hang住

這種情況屬于小范圍的故障,業(yè)務影響相對較小,一般來說只會影響業(yè)務系統(tǒng)的個別模塊。在一個多應用系統(tǒng)的數(shù)據(jù)庫上面,如果Hang住的會話比較多,則影響的可能是其中的一個應用系統(tǒng)。這里有一個例外,如果Hang住的進程是系統(tǒng)后臺進程,如pmon、smon等,則影響的范圍就非常大了,最終甚至會影響整個數(shù)據(jù)庫及所有應用系統(tǒng)。還有值得注意的是,即使是少部分會話Hang住,也要及時處理,否則極有可能會擴散到整個系統(tǒng)。

2. 單個數(shù)據(jù)庫實例Hang住

這種情況造成的影響非常大。在這個實例上的所有應用系統(tǒng)均受到嚴重影響,并且在找到根源并最終解決問題之前,數(shù)據(jù)庫實例往往須要重啟。

3. OPS或RAC中的多個實例或所有實例都Hang住

在這種情況下,即使是OPS或RAC,都已經(jīng)沒辦法提供高可用特性了。使用這個數(shù)據(jù)庫的所有應用系統(tǒng)將不能繼續(xù)提供服務,這種情況往往須要重啟。

無響應故障成因分析

Oracle數(shù)據(jù)庫無響應,一般主要由以下幾種原因引起:

1. 數(shù)據(jù)庫主機負載過高,嚴重超過主機承受能力

比如應用設計不當,數(shù)據(jù)庫性能低下,活動會話數(shù)的大量增加,導致數(shù)據(jù)庫主機的負載迅速增加,數(shù)據(jù)庫不能正常操作,并最終Hang住;主機物理內(nèi)存嚴重不足,引起大量的換頁,特別是在SGA中的內(nèi)存被大量換出到虛擬內(nèi)存時,數(shù)據(jù)庫實例往往就會Hang住。

2. 日常維護不當、不正確的操作引起數(shù)據(jù)庫Hang住

比如歸檔日志的存儲空間滿,導致數(shù)據(jù)庫不能歸檔,引起數(shù)據(jù)庫Hang住;在一個大并發(fā)的繁忙的系

統(tǒng)上,對DML操作比較多的大表進行move、增加外鍵約束等操作也可能使系統(tǒng)在短時間內(nèi)負載大幅升高,并引起數(shù)據(jù)庫系統(tǒng)Hang住;不正確的資源計劃(Resource Plan)配置,使進程得不到足夠的CPU等。

3. Oracle數(shù)據(jù)庫的Bug

幾乎每個版本都存在著會導致數(shù)據(jù)庫系統(tǒng)Hang住的Bug,這些Bug會在一些特定的條件下觸發(fā),特別是在RAC數(shù)據(jù)庫中,引起數(shù)據(jù)庫Hang住的Bug比較多。

4. 其他方面的一些原因

比如在RAC數(shù)據(jù)庫中,如果一個節(jié)點退出或加入到RAC的過程中,當進行Resource Reconfiguration時,會使系統(tǒng)凍結(jié)一段時間,也有可能使系統(tǒng)Hang住。

以上所描述的幾種常見的會導致Oracle數(shù)據(jù)庫實例Hang住的原因中,大部分的情況是可以避免的,只要維護得當,一般不會出現(xiàn)這種故障。對于Oracle數(shù)據(jù)庫Bug所導致的數(shù)據(jù)庫無響應故障,由于是在特定的情況下才會觸發(fā),所以如果能夠盡量對數(shù)據(jù)庫打上最新版本的補丁,并且熟悉當前版本中會導致系統(tǒng)Hang住的Bug以及觸發(fā)條件,就能夠最大限度地避免這種故障的發(fā)生,提高系統(tǒng)的可用性。

那么,在數(shù)據(jù)庫Hang住的情況下,如何去分析并發(fā)現(xiàn)導致問題的根源?一方面,由于系統(tǒng)Hang住會導致業(yè)務系統(tǒng)不可用,為了能夠盡快地恢復業(yè)務,須快速地判斷問題所在,然后Kill掉引起故障的會話和進程,或者數(shù)據(jù)庫實例不得不重啟以迅速恢復業(yè)務;但另一方面,如果只是重啟數(shù)據(jù)庫或Kill會話和進程來解決問題,在很多情況下是治標不治本的辦法,在以后故障隨時可能會出現(xiàn)。如何在二者之間進行抉擇呢?對于數(shù)據(jù)庫Hang故障的處理,首先是盡可能地收集到系統(tǒng)Hang住時的狀態(tài)數(shù)據(jù),然后盡快地恢復業(yè)務,恢復業(yè)務后分析收集到的數(shù)據(jù),找到數(shù)據(jù)庫系統(tǒng)Hang住的真正原因,然后再進行相應的處理。下一節(jié)將詳細描述數(shù)據(jù)庫系統(tǒng)Hang住后的處理流程。

無響應故障處理流程

對于Oracle無響應故障的處理,我們可以按下圖所示的流程進行。

值得注意的是,上圖并不是一個完整的Oracle數(shù)據(jù)庫故障處理流程圖,只是處理Oralce數(shù)據(jù)庫無響應這一類特定的故障的流程,只列出了針對這一特定類型故障處理時的關(guān)鍵處理點。不過既然是故障,所以這類故障的處理流程與其他故障的處理流程,有著非常相似的地方。

下面是整個流程的詳細說明:

1. 在出現(xiàn)數(shù)據(jù)庫無響應故障后,首先確認系統(tǒng)的影響范圍,如上節(jié)所描述的',是部分業(yè)務系統(tǒng)或模塊還是所有的業(yè)務系統(tǒng)都受影響,是不是整個實例或多個實例都無響應。同時應詢問系統(tǒng)維護和開發(fā)人員,受影響的系統(tǒng)在出現(xiàn)故障前是否有過變動,包括主機硬件、操作系統(tǒng)、網(wǎng)絡、數(shù)據(jù)庫以及應用等。有時一個細小的變動就可能導致出現(xiàn)數(shù)據(jù)庫Hang住這樣嚴重的故障。曾經(jīng)遇到一個庫,應用只是修改了一個SELECT語句就導致了數(shù)據(jù)庫Hang住。

2. 為了避免由于網(wǎng)絡、數(shù)據(jù)庫監(jiān)聽或客戶端因素影響分析,建議都登錄到主機上進行操作。

3. 如果主機不能登錄(為了避免干擾流程主線,這里不討論如網(wǎng)絡問題這樣也會導致不能連接的故障),嘗試關(guān)閉出現(xiàn)問題的業(yè)務系統(tǒng),甚至是所有的業(yè)務系統(tǒng)。如果關(guān)閉了所有的業(yè)務系統(tǒng)之后,仍然不能連接,則只有考慮重新啟動數(shù)據(jù)庫主機。在數(shù)據(jù)庫主機重新啟動后,使用操作系統(tǒng)工具或OSW等長期監(jiān)控操作系統(tǒng)的資源使用,同時監(jiān)控Oracle數(shù)據(jù)庫的性能和等待等。

4. 登錄上主機后,先用top、topas等命令簡單觀察一下系統(tǒng)。看看系統(tǒng)的CPU使用、物理內(nèi)存和虛擬內(nèi)存的使用、IO使用等情況。

5. 使用SQLPLUS連接數(shù)據(jù)庫,如果不能連接,則只能從操作系統(tǒng)上觀察系統(tǒng)中是否有異常的現(xiàn)象,比如占用CPU過高的進程。使用gdb、dbx等debugger工具對數(shù)據(jù)庫進行system state dump;使用strace、truss等工具檢查異常進程的系統(tǒng)調(diào)用;使用pstack、procstack等工具察看異常進程的call stack等。

6. 使用SQLPLUS連接上數(shù)據(jù)庫后,進行hanganalyze、system state dump等操作;或檢查等待事件、異常會話等正在執(zhí)行的SQL等待。

7. 找到故障產(chǎn)生的原因,如果暫時找不到原因,盡量收集數(shù)據(jù)。

8.確良如果應用急須恢復,可通過Kill會話、重啟數(shù)據(jù)庫實例等方式,先恢復應用。

9. 根據(jù)最終診斷結(jié)果,對數(shù)據(jù)庫升級打補丁,或者修改應用等方式從根本上解決問題。

怎樣避免數(shù)據(jù)庫出現(xiàn)無響應故障

作為Oracle數(shù)據(jù)庫DBA,除了處理故障之外,更重要的是如何預防故障的發(fā)生。根據(jù)前面對數(shù)據(jù)庫無響應故障的成因分析,在日常的維護工作中,須做到以下幾點:

1. 進行正確的維護操作

很多的數(shù)據(jù)庫無響應故障都是由于不正確的維護操作引起的。應避免在業(yè)務高峰期做大的維護操作,比如像move、加主外鍵約束等會長時間鎖表的操作。如果的確需要,盡量使用正確的操作方法。比如用ONLINE方式重建索引;建主鍵、唯一鍵約束時先建索引,然后在建約束時指定新建的索引,等等。也就是保證系統(tǒng)的并發(fā)性、可伸縮性,避免系統(tǒng)串行操作的出現(xiàn)。

2. 優(yōu)化應用設計,優(yōu)化數(shù)據(jù)庫性能

為避免性能問題導致在業(yè)務高峰期數(shù)據(jù)庫不能及時有效處理來自業(yè)務的請求,甚至于完全Hang住。對于數(shù)據(jù)庫中存在串行訪問的部分進行優(yōu)化,比如latch、enqueue,還包括不合理的sequence設計等。特別是在RAC數(shù)據(jù)庫中,嚴重串行訪問等待往往更容易引起嚴重的性能問題。優(yōu)化應用設計,使數(shù)據(jù)庫具有更好的可伸縮性和并行處理能力,能夠有效地避免性能問題引起的數(shù)據(jù)庫Hang住。

3. 利用監(jiān)控系統(tǒng)隨時監(jiān)控系統(tǒng)負載

遇到系統(tǒng)負載過高,內(nèi)存不足,OS中虛擬內(nèi)存換頁很頻繁等情況時,及時采取措施;監(jiān)控Oracle數(shù)據(jù)庫的核心進程,如pmon、smon等,看是否有異常,如過高的CPU消耗。出現(xiàn)異常應立即處理;監(jiān)控歸檔空間和日志切換;監(jiān)控數(shù)據(jù)庫中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。

4. 為數(shù)據(jù)庫打上補丁

很多的無響應故障是由于Oracle的Bug引起的,數(shù)據(jù)庫DBA應關(guān)注當前版本中有哪些Bug會導致數(shù)據(jù)庫Hang住,盡量為數(shù)據(jù)庫打上解決這些Bug的補丁。

;

如何連接oracle數(shù)據(jù)庫及故障解決辦法

如何配置才能使客戶端連到數(shù)據(jù)庫:

要使一個客戶端機器能連接oracle數(shù)據(jù)庫,需要在客戶端機器上安裝oracle的客戶端軟件,唯一的例外就是java連接數(shù)據(jù)庫的時候,可以用

jdbc

thin模式,不用裝oracle的客戶端軟件。加入你在機器上裝了oracle數(shù)據(jù)庫,就不需要在單獨在該機器上安裝oracle客戶端了,因為裝

oracle數(shù)據(jù)庫的時候會自動安裝oracle客戶端。

用過sql

server數(shù)據(jù)庫然后又用oracle的新手可能會有這樣的疑問:問什么我用sql server的時候不用裝sql

server的客戶端呢?原因很簡單,sql server也是microsoft的,它在操作系統(tǒng)中集成了sql

server客戶端,如果microsoft與oracle有協(xié)議,將oracle客戶端也集成到操作系統(tǒng)中,那我們也就不用在客戶端機器裝oracle

客戶端軟機就可訪問數(shù)據(jù)庫了,不過,這好像是不可能實現(xiàn)的事情。

也有的人會問:為什么在sql

server中沒有偵聽端口一說,而在oracle中要配置偵聽端口?其實sql

server中也有偵聽端口,只不過microsoft將偵聽端口固定為1433,不允許你隨便改動,這樣給你一個錯覺感覺sql

server中沒有偵聽端口,咳,microsoft把太多的東西都封裝到黑盒子里,方便使用的同時也帶來的需要副作用。而oracle中的偵聽端口直接

在配置文件中,允許隨便改動,只不過無論怎樣改動,要與oracle服務器端設置的偵聽端口一致。

好,言歸正傳,我們?nèi)绾巫霾拍苁箍蛻舳藱C器連接到oracle數(shù)據(jù)庫呢?

A. 安裝相關(guān)軟件

B. 進行適當?shù)呐渲?/p>

A.在適當?shù)奈恢冒惭b適當?shù)能浖?/p>

在客戶端機器:

1.在客戶端機器上安裝ORACLE的Oracle Net通訊軟件,它包含在oracle的客戶端軟件中。

2.正確配置了sqlnet.ora文件:

NAMES.DIRECTORY_PATH = (TNSNAMES, ….)

NAMES.DEFAULT_DOMAIN=DB_DOMAIN

一般情況下我們不用NAMES.DEFAULT_DOMAIN參數(shù)。如果想不用該參數(shù)用#注釋掉或?qū)⒃搮?shù)刪除即可,對于NAMES.DIRECTORY_PATH參數(shù)采用缺省值即可,對于NAMES.DEFAULT_DOMAIN參數(shù)有時需要注釋掉,在下面有詳細解釋。

3.正確配置了tnsname.ora文件

在服務器端機器:

1.保證listener已經(jīng)啟動

2.保證數(shù)據(jù)庫已經(jīng)啟動。

如果數(shù)據(jù)庫沒有啟動,用:

Oracle 9i:

dossqlplus “/ as sysdba”

sqlplus startup

Oracle 8i:

dossvrmgrl

svrmgrlconnect internal

svrmgrlstartup

命令啟動數(shù)據(jù)庫

如果listener沒有啟動,用:

lsnrctl start [listener name]

lsnrctl status [listener name]

命令啟動listener

B.進行適當?shù)呐渲?/p>

如何正確配置tnsname.ora文件:

以在客戶端機器上使用oracle Net Configuration Assistant或oracle Net

Manager圖形配置工具對客戶端進行配置,該配置工具實際上修改tnsnames.ora文件。所以我們可以直接修改tnsnames.ora文件,

下面以直接修改tnsnames.ora文件為例:

該文件的位置為: …\network\admin\tnsnames.ora (for windows)

…/network/admin/tnsnames.ora (for unix)

此處,假設服務器名為testserver,服務名為orcl.testserver.com,使用的偵聽端口為1521,則tnsnams.ora文件中的一個test網(wǎng)絡服務名(數(shù)據(jù)庫別名)為:

test =

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))

)

(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)

)

)

此處的笑臉為)。

紅色的內(nèi)容為需要根據(jù)實際情況修改的內(nèi)容,現(xiàn)解釋如下:

PROTOCOL:客戶端與服務器端通訊的協(xié)議,一般為TCP,該內(nèi)容一般不用改。

HOST:數(shù)據(jù)庫偵聽所在的機器的機器名或IP地址,數(shù)據(jù)庫偵聽一般與數(shù)據(jù)庫在同一個機器上,所以當我說數(shù)據(jù)庫偵聽所在的機器一般也是指數(shù)據(jù)庫所在的機

器。在UNIX或WINDOWS下,可以通過在數(shù)據(jù)庫偵聽所在的機器的命令提示符下使用hostname命令得到機器名,或通過ipconfig(for

WINDOWS) or ifconfig(for

UNIX)命令得到IP地址。需要注意的是,不管用機器名或IP地址,在客戶端一定要用ping命令ping通數(shù)據(jù)庫偵聽所在的機器的機器名,否則需要在

hosts文件中加入數(shù)據(jù)庫偵聽所在的機器的機器名的解析。

PORT:數(shù)據(jù)庫偵聽正在偵聽的端口,可以察看服務器端的listener.ora文件或在數(shù)據(jù)庫偵聽所在的機器的命令提示符下通過lnsrctl status [listener name]命令察看。此處Port的值一定要與數(shù)據(jù)庫偵聽正在偵聽的端口一樣。

SERVICE_NAME:在服務器端,用system用戶登陸后,sqlplus show parameter service_name命令察看。

如何利用配置的網(wǎng)絡服務名連接到數(shù)據(jù)庫:

用sqlplus程序通過test網(wǎng)絡服務名進行測試,如sqlplus system/manager@test。

如果不能連接到數(shù)據(jù)庫,則在tnsname.ora文件中的test網(wǎng)絡服務名(net

service)后面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN參數(shù)的值,此處我的參數(shù)值為

testserver.com,將其加到網(wǎng)絡服務名后面,修改后的tnsname.ora中關(guān)于該網(wǎng)絡服務名的內(nèi)容為:

什么情況下會引起oracle自動設置NAMES.DEFAULT_DOMAIN參數(shù)?

出現(xiàn)這種情況的典型環(huán)境為windows的客戶端的‘我得電腦à屬性à計算機名à更改à其它…à此計算機的主DNS后綴’中設置了‘primary

dns

suffix’,因為在這種情況下安裝客戶端時,會在sqlnet.ora文件中自動設置NAMES.DEFAULT_DOMAIN參數(shù),或許當把計算機

加入域中安裝oracle客戶端時也會出現(xiàn)這種情況,有條件的話大家可以試一下。

我在設置oracle的客戶端時一般手工修改tnsnames.ora文件,但是還有許多人喜歡用圖形工具配置,該圖形工具最終還是修改tnsnames.ora文件,但是它有時會引起其它的問題:

在用oracle的圖形配置軟件'net assistant'或‘Net Configuration

Assistant’配置網(wǎng)絡服務名時,假如已經(jīng)設置了‘primary dns

suffix’,但是在圖形配置軟件中寫的網(wǎng)絡服務名的名字中沒有‘primary dns

suffix’,如只是寫了test,則圖形配置軟件會自動在后面加上‘primary dns

suffix’,使之變?yōu)閠est.testserver.com,并存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有

NAMES.DEFAULT_DOMAIN參數(shù)。此時,用圖形工具進行測試連接是通過的,但是假如此時sqlnet.ora文件中沒有

NAMES.DEFAULT_DOMAIN參數(shù),則你在使用網(wǎng)絡服務名時應該使用在tnsnames.ora中的

test.testserver.com,而不是你在圖形配置軟件中鍵入的test。解決的辦法為:

1可以在sqlnet.ora文件中設置NAMES.DEFAULT_DOMAIN= testserver.com,這時你可以用test或test.testserver.com連接數(shù)據(jù)庫

2在sqlnet.ora文件中不設置NAMES.DEFAULT_DOMAIN參數(shù),在tnsnames.ora文件中將test.testserver.com中的.testserver.com去掉,這時你可以用test連接數(shù)據(jù)庫。

關(guān)于為什們在網(wǎng)絡服務名后面加db_domain參數(shù),需要了解sql*plus連接數(shù)據(jù)庫的原理,我在后面解決12154常見故障中給出了詳細的說明。

如果上面的招數(shù)還不奏效的話,只好用一下乾坤大挪移了。

將客戶端的網(wǎng)絡服務名部分

test.testserver.com =

(DESCRIPTION=

(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))

)

(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)

)

)

此處的笑臉為)。

拷貝到服務器的tnsnames.ora文件中。然后再服務器端用sqlplus system/manager@test.testserver.com連接到數(shù)據(jù)庫。

如果能連接成功,說明你的客戶端與服務器端的網(wǎng)絡有問題。

如果連接不成功,用前面的部分檢查網(wǎng)絡服務名部分部分是否正確,如果確信網(wǎng)絡服務名部分正確而且所有的客戶端都連不上數(shù)據(jù)庫則可能為系統(tǒng)TCP/IP或Oracle系統(tǒng)有問題,建議重新安裝數(shù)據(jù)庫。

該錯誤表示用于連接的網(wǎng)絡服務名在tnsnames.ora文件中不存在,如上面的tnsnames.ora中的網(wǎng)絡服務名只有test,假如用戶在連接時用sqlplus system/manager@test1則就會給出TNS-12154錯誤。

要注意的是,有時即使在tnsnames.ora文件中有相應的網(wǎng)絡服務名,可是用該網(wǎng)絡服務名連接時還會出錯,出現(xiàn)這種情況的典型配置如下(在客戶端的機器上):

sqlnet.ora文件:

NAMES.DIRECTORY_PATH = (TNSNAMES, ….)

NAMES.DEFAULT_DOMAIN = server.com

tnsnames.ora文件:

test =

(DESCRIPTION=

(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))

)

(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)

)

)

此處的笑臉為)。

sql*plus運行基本機理:

在用戶輸入sqlplus system/manager@test后,sqlplus程序會自動到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN參數(shù),假 如該參數(shù)存在,則將該參數(shù)中的值取出,加到網(wǎng)絡服務名的后面,

即此例中你的輸入由sqlplus system/manager@test自動變?yōu)閟qlplus system/manager@test.server.com

,然后再到tnsnames.ora文件中找test.server.com網(wǎng)絡服務名,這當然找不到了,因為該文件中只有test網(wǎng)絡服務名,所以報

錯。解決的辦法就是將sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN參數(shù)注釋掉即可,如

#NAMES.DEFAULT_DOMAIN =

server.com。假如NAMES.DEFAULT_DOMAIN參數(shù)不存在,則sqlplus程序會直接到tnsnames.ora文件中找

test網(wǎng)絡服務名,然后取出其中的host,port,tcp,service_name,利用這些信息將連接請求發(fā)送到正確的數(shù)據(jù)庫服務器上。

另外原則上tnsnames.ora中的配置不區(qū)分大小寫,但是我的確遇到區(qū)分大小寫的情況,所以最好將使用的網(wǎng)絡服務與tnsnames.ora中配置的完全一樣。

ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor.

該錯誤表示能在tnsnames.ora中找到網(wǎng)絡服務名,但是在tnsnames.ora中指定的SERVICE_NAME與服務器端的SERVICE_NAME不一致。解決的辦法是修改tnsnames.ora中的SERVICE_NAME。

易混淆術(shù)語介紹:

Db_name:對一個數(shù)據(jù)庫(Oracle database)的唯一標識,該數(shù)據(jù)庫為第一章講到的Oracle

database。這種表示對于單個數(shù)據(jù)庫是足夠的,但是隨著由多個數(shù)據(jù)庫構(gòu)成的分布式數(shù)據(jù)庫的普及,這種命令數(shù)據(jù)庫的方法給數(shù)據(jù)庫的管理造成一定的負

擔,因為各個數(shù)據(jù)庫的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了Db_domain參數(shù),這樣在數(shù)據(jù)庫的標識是由Db_name和

Db_domain兩個參數(shù)共同決定的,避免了因為數(shù)據(jù)庫重名而造成管理上的混亂。這類似于互連網(wǎng)上的機器名的管理。我們將Db_name和

Db_domain兩個參數(shù)用’.’連接起來,表示一個數(shù)據(jù)庫,并將該數(shù)據(jù)庫的名稱稱為Global_name,即它擴展了Db_name。

Db_name參數(shù)只能由字母、數(shù)字、’_’、’#’、’$’組成,而且最多8個字符。

Db_domain:定義一個數(shù)據(jù)庫所在的域,該域的命名同互聯(lián)網(wǎng)的’域’沒有任何關(guān)系,只是數(shù)據(jù)庫管理員為了更好的管理分布式數(shù)據(jù)庫而根據(jù)實際情況決定的。當然為了管理方便,可以將其等于互聯(lián)網(wǎng)的域。

Global_name:對一個數(shù)據(jù)庫(Oracle

database)的唯一標識,oracle建議用此種方法命令數(shù)據(jù)庫。該值是在創(chuàng)建數(shù)據(jù)庫是決定的,缺省值為Db_name.

Db_domain。在以后對參數(shù)文件中Db_name與Db_domain參數(shù)的任何修改不影響Global_name的值,如果要修改

Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO

db_name.db_domain命令進行修改,然后修改相應參數(shù)。

Service_name:該參數(shù)是oracle8i新引進的。在8i以前,我們用SID來表示標識數(shù)據(jù)庫的一個實例,但是在Oracle的并行環(huán)境中,

一個數(shù)據(jù)庫對應多個實例,這樣就需要多個網(wǎng)絡服務名,設置繁瑣。為了方便并行環(huán)境中的設置,引進了Service_name參數(shù),該參數(shù)對應一個數(shù)據(jù)庫,

而不是一個實例,而且該參數(shù)有許多其它的好處。該參數(shù)的缺省值為Db_name.

Db_domain,即等于Global_name。一個數(shù)據(jù)庫可以對應多個Service_name,以便實現(xiàn)更靈活的配置。該參數(shù)與SID沒有直接關(guān)

系,即不必Service name 必須與SID一樣。

Net service name:網(wǎng)絡服務名,又可以稱為數(shù)據(jù)庫別名(database alias)。是客戶端程序訪問數(shù)據(jù)庫時所需要,屏蔽了客戶端如何連接到服務器端的細節(jié),實現(xiàn)了數(shù)據(jù)庫的位置透明的特性。

分享文章:oracle故障怎么解決 oracle常見異常
文章路徑:http://chinadenli.net/article6/hgphog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站網(wǎng)站收錄外貿(mào)建站App開發(fā)全網(wǎng)營銷推廣網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計