李玉麗,李啟雷,楊曉霞,李國(guó)佑
(青海省地震局,青海 西寧 810001)
中國(guó)地震地球物理臺(tái)網(wǎng)先后經(jīng)歷了“模擬和人工”、“九五”數(shù)字化及“十五”網(wǎng)絡(luò)化等三個(gè)階段。各階段都建設(shè)了一批臺(tái)站和相應(yīng)的觀測(cè)、技術(shù)系統(tǒng)?!熬盼濉睌?shù)字化期間,地球物理臺(tái)網(wǎng)采樣的是SQL Sever數(shù)據(jù)庫(kù)。“十五”網(wǎng)絡(luò)化期間,地球物理臺(tái)網(wǎng)采用Oracle數(shù)據(jù)[1-3]。隨著系統(tǒng)軟件和數(shù)據(jù)庫(kù)軟件新版本的產(chǎn)出,我們對(duì)地球物理服務(wù)器進(jìn)行相應(yīng)的升級(jí)。2018年我局地球物理服務(wù)器數(shù)據(jù)庫(kù)升級(jí)沒(méi)有重裝數(shù)據(jù)庫(kù)軟件,直接通過(guò)文件拷貝替換原數(shù)據(jù)庫(kù)相應(yīng)文件的方式進(jìn)行了升級(jí)。一段時(shí)間后,一臺(tái)服務(wù)器校時(shí)后出現(xiàn)地球物理數(shù)據(jù)管理系統(tǒng)自動(dòng)采集和手動(dòng)采集數(shù)據(jù)時(shí)提示“入庫(kù)異?!眴?wèn)題。數(shù)據(jù)不能通過(guò)自動(dòng)采集和手動(dòng)補(bǔ)采的方式采集入庫(kù),需要通過(guò)手動(dòng)入庫(kù)方式,增加了日常工作量。本文針對(duì)此問(wèn)題進(jìn)行了一系列的排查。
地震地球物理臺(tái)網(wǎng)系統(tǒng)由國(guó)家地球物理臺(tái)網(wǎng)中心、區(qū)域地球物理臺(tái)網(wǎng)中心、直屬觀測(cè)臺(tái)站和地方臺(tái)站組成。通過(guò)地球物理臺(tái)網(wǎng)數(shù)據(jù)管理系統(tǒng)收取原始、匯集原始和預(yù)處理數(shù)據(jù),將臺(tái)站的資料匯集到區(qū)域中心,再上報(bào)到國(guó)家地球物理臺(tái)網(wǎng)中心。數(shù)據(jù)管理系統(tǒng)在地球物理臺(tái)網(wǎng)及臺(tái)站的工作中發(fā)揮重要作用。
青海區(qū)域臺(tái)網(wǎng)數(shù)據(jù)管理系統(tǒng)的日常運(yùn)維主要包含圖1中虛線左邊的部分,數(shù)據(jù)管理系統(tǒng)較為常見(jiàn)的問(wèn)題是網(wǎng)頁(yè)無(wú)法顯示和“數(shù)據(jù)庫(kù)操作失敗,請(qǐng)返回”,一般通過(guò)重啟管理系統(tǒng)應(yīng)用軟件或重啟數(shù)據(jù)庫(kù)即可恢復(fù)正常[4]。除了數(shù)據(jù)庫(kù)密碼到期,需要重置數(shù)據(jù)庫(kù)密碼,然后用超級(jí)管理員用戶登陸管理系統(tǒng),在系統(tǒng)管理功能中的參數(shù)配置下,重置處理用戶和訪問(wèn)用戶的密碼。
圖1中虛線右邊部分是數(shù)據(jù)管理系統(tǒng)的9項(xiàng)功能,其中臺(tái)網(wǎng)數(shù)據(jù)管理系統(tǒng)有數(shù)據(jù)交換功能,臺(tái)站數(shù)據(jù)管理系統(tǒng)中無(wú)此功能。數(shù)據(jù)采集和數(shù)據(jù)交換功能是最常用的兩項(xiàng),日常工作中每天都會(huì)用到。數(shù)據(jù)交換和數(shù)據(jù)采集一般出現(xiàn)問(wèn)題較少,很多情況下是由于通訊故障造成數(shù)據(jù)不能及時(shí)采集和交換。數(shù)據(jù)交換經(jīng)常出現(xiàn)的問(wèn)題是臺(tái)站數(shù)據(jù)不能交換到臺(tái)網(wǎng)中心,在數(shù)據(jù)管理系統(tǒng)下系統(tǒng)管理功能中的查看交換日志,提示節(jié)點(diǎn)連接異常。這一般是下級(jí)節(jié)點(diǎn)數(shù)據(jù)庫(kù)關(guān)閉或網(wǎng)絡(luò)故障造成的。
圖1 青海區(qū)域臺(tái)網(wǎng)地球物理數(shù)據(jù)管理系統(tǒng)運(yùn)維流程
數(shù)據(jù)采集功能一般出現(xiàn)問(wèn)題較少,常見(jiàn)問(wèn)題是由于通訊故障造成數(shù)據(jù)不能及時(shí)收取會(huì)提示“任務(wù)超時(shí)”或“登陸失敗”,一般網(wǎng)絡(luò)狀態(tài)良好時(shí)再收取,都能完成數(shù)據(jù)采集。再是由于儀器和數(shù)據(jù)管理系統(tǒng)的時(shí)間差別較大,造成收取數(shù)據(jù)時(shí)提示“元數(shù)據(jù)錯(cuò)誤”,通過(guò)校時(shí)可以排除此問(wèn)題。再是執(zhí)行手動(dòng)補(bǔ)采任務(wù)時(shí),界面始終處于“任務(wù)進(jìn)行中”狀態(tài)[5],長(zhǎng)時(shí)間任務(wù)不結(jié)束,不能完成數(shù)據(jù)的采集。這種情況一般是數(shù)據(jù)管理系統(tǒng)進(jìn)程處于僵死狀態(tài),通過(guò)重啟數(shù)據(jù)管理系統(tǒng),再重新采集就可以采集上。本文中的“入庫(kù)異?!笔菍儆跀?shù)據(jù)采集功能下出現(xiàn)的一項(xiàng)故障。是我臺(tái)網(wǎng)使用數(shù)據(jù)管理系統(tǒng)以來(lái)首次出現(xiàn)此問(wèn)題。其他省局未聽(tīng)聞出現(xiàn)過(guò)該問(wèn)題。本文參照《前兆數(shù)據(jù)管理系統(tǒng)使用指南》進(jìn)行了以下排查。
數(shù)據(jù)管理系統(tǒng)依托于數(shù)據(jù)庫(kù)服務(wù)器工作,數(shù)據(jù)庫(kù)服務(wù)器的服務(wù)狀態(tài)正常和數(shù)據(jù)庫(kù)用戶處于生存期的情況下,數(shù)據(jù)庫(kù)才可能工作正常。檢查數(shù)據(jù)庫(kù)服務(wù)器的服務(wù)狀態(tài)即查看oracle服務(wù)是否啟動(dòng),Linux下可以用ipcs查看,也可以進(jìn)到數(shù)據(jù)庫(kù)里面看數(shù)據(jù)庫(kù)當(dāng)前狀態(tài) select status from v$instance;如果status = open 就說(shuō)明oracle服務(wù)正常。
基于數(shù)據(jù)安全的需要,數(shù)據(jù)庫(kù)對(duì)用戶的口令的有效期做了限制。要求定期進(jìn)行更換,如果到期未更換數(shù)據(jù)庫(kù)就無(wú)法正常工作。檢查數(shù)據(jù)庫(kù)服務(wù)器的生存期可以通過(guò)使用用戶登錄檢查是否密碼過(guò)期,如果密碼過(guò)期會(huì)提示密碼到期請(qǐng)修改,密碼未過(guò)期則提示連接成功。也可以通過(guò)查看對(duì)應(yīng)文件的口令有效期設(shè)置文件查看。密碼過(guò)期提示如下:
SQL>conn username/password
ERROR:
ORA-28001:The password has expired
Changing password for username
New password:輸入密碼,回車
Retype new password: 輸入密碼,回車
Password changed
Connected.
本案例中,經(jīng)過(guò)檢查數(shù)據(jù)庫(kù)服務(wù)器的服務(wù)狀態(tài)正常和數(shù)據(jù)庫(kù)用戶處于生存期。因此排除此原因。
當(dāng)管理系統(tǒng)應(yīng)用軟件出現(xiàn)故障,基本都是應(yīng)用程序異常造成的,一般通過(guò)重啟管理系統(tǒng)應(yīng)用軟件或重啟數(shù)據(jù)庫(kù)即可恢復(fù)正常[4]。但是入庫(kù)異常的錯(cuò)誤這兩種方式都解決不了。本文首先嘗試了冷備份方式。冷備份方式是恢復(fù)數(shù)據(jù)比較常用的一種方式[6-7],操作比較簡(jiǎn)單。即在關(guān)閉數(shù)據(jù)庫(kù)的狀態(tài)下冷備份舊服務(wù)器的數(shù)據(jù),將數(shù)據(jù)文件、日志文件、控制文件等拷貝至新服務(wù)器相應(yīng)目錄下,進(jìn)行數(shù)據(jù)的完全恢復(fù)。很多文獻(xiàn)都詳細(xì)講述了冷備方式[8-9],在此不做詳述。在新服務(wù)器上恢復(fù)數(shù)據(jù)后,管理系統(tǒng)仍存在入庫(kù)異常錯(cuò)誤。冷備份方式不能用于應(yīng)用或用戶存在錯(cuò)誤的情況下的數(shù)據(jù)恢復(fù),因此我們認(rèn)為這臺(tái)舊服務(wù)器應(yīng)用或用戶存在錯(cuò)誤。
數(shù)據(jù)庫(kù)的備份與恢復(fù)主要有三種方法:邏輯備份與恢復(fù)、脫機(jī)備份與恢復(fù)(冷備份與恢復(fù))、聯(lián)機(jī)備份與恢復(fù)。邏輯備份與恢復(fù):用oracle提供的使用工具軟件,如導(dǎo)出/導(dǎo)入工具(exp,imp)、數(shù)據(jù)泵導(dǎo)出/導(dǎo)入工具(impdp,expdp)、裝入器(SQL*Loader),將數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行卸出與裝入[4]。邏輯備份是對(duì)數(shù)據(jù)的備份,可以使應(yīng)用有錯(cuò)誤的數(shù)據(jù)庫(kù)通過(guò)備份可以正常工作。為了確保數(shù)據(jù)的安全與完整,不影響業(yè)務(wù)的正常運(yùn)行,首先利用數(shù)據(jù)泵進(jìn)行數(shù)據(jù)的備份與恢復(fù)。
首先備份舊服務(wù)器的數(shù)據(jù):
(1)以操作系統(tǒng)認(rèn)證的管理員角色登錄數(shù)據(jù)庫(kù):
sqlplus /nolog
conn /as sysdba
(2)創(chuàng)建目錄路徑并查看已創(chuàng)建的路徑信息:
創(chuàng)建:create directory directry_export as’/mnt/expdpdir’;
查看:select * from dba_directories;
(3)將創(chuàng)建目錄的讀寫和導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)權(quán)限賦予dbuser用戶,最好以system管理員賦予:
Grant read,write on directory directry_export to dbuser;
Grant export full database,import full database to dbuser;
關(guān)閉數(shù)據(jù)管理系統(tǒng):./stoprun.sh
(4)數(shù)據(jù)導(dǎo)出,可以按用戶、按表名、按進(jìn)程等導(dǎo)出數(shù)據(jù)。按用戶導(dǎo)出數(shù)據(jù)命令格式如下:
expdp dbuser/password@ip/example schemas=dbuser dumpfile=expdpfile.dmp directory= directry_export logfile=expdp.log
將舊服務(wù)器上導(dǎo)出的數(shù)據(jù)導(dǎo)入新服務(wù)器。數(shù)據(jù)導(dǎo)入和數(shù)據(jù)導(dǎo)出的步驟相似,只是第5步不同,數(shù)據(jù)導(dǎo)入命令:
impdp dbuser/password@ip/example schemas=dbuser dumpfile=expdpfile.dmp directory= directry_export logfile=impdp.log
通過(guò)數(shù)據(jù)泵方式,將數(shù)據(jù)導(dǎo)入新服務(wù)器,數(shù)據(jù)管理系統(tǒng)運(yùn)行正常。保證了業(yè)務(wù)的正常運(yùn)行。如果不需要排查故障原因,可以直接采用此方式恢復(fù)數(shù)據(jù)。
地球物理服務(wù)器上的應(yīng)用有數(shù)據(jù)管理系統(tǒng)、數(shù)據(jù)庫(kù)和Linux系統(tǒng),這三個(gè)應(yīng)用中的任何一個(gè)應(yīng)用出現(xiàn)異常,都可能影響整體性能,影響其中的某項(xiàng)功能。首先在舊服務(wù)器上對(duì)數(shù)據(jù)管理系統(tǒng)應(yīng)用程序進(jìn)行排查。
(1)修復(fù)數(shù)據(jù)管理系統(tǒng)
數(shù)據(jù)管理系統(tǒng)在安裝的時(shí)候創(chuàng)建了業(yè)務(wù)中所需的表,如果表結(jié)構(gòu)遭到破壞或某個(gè)表丟失,也將影響數(shù)據(jù)庫(kù)的正常工作。對(duì)數(shù)據(jù)管理系統(tǒng)進(jìn)行修復(fù)可以修復(fù)表結(jié)構(gòu),跟安裝數(shù)據(jù)管理系統(tǒng)的步驟類似,進(jìn)入數(shù)據(jù)管理系統(tǒng)軟件目錄,選擇安裝軟件,再選擇“3—系統(tǒng)修復(fù)”來(lái)修復(fù)數(shù)據(jù)管理系統(tǒng)。修復(fù)數(shù)據(jù)管理系統(tǒng),只是在原來(lái)軟件的基礎(chǔ)上,對(duì)數(shù)據(jù)表結(jié)構(gòu)的修復(fù),沒(méi)有對(duì)數(shù)據(jù)文件進(jìn)行操作。經(jīng)過(guò)試驗(yàn)仍舊存在入庫(kù)異常錯(cuò)誤。這臺(tái)服務(wù)器的故障應(yīng)該不是表結(jié)構(gòu)方面的問(wèn)題引起的。
(2)重裝數(shù)據(jù)管理系統(tǒng)
A.進(jìn)入數(shù)據(jù)管理系統(tǒng)軟件目錄:cd /install
B.執(zhí)行數(shù)據(jù)安裝管理系統(tǒng)軟件命令:./install.sh
C.選擇“1-安裝管理系統(tǒng)”。因之前安裝了管理系統(tǒng)軟件,安裝過(guò)程中提示之前已安裝此軟件是否卸載,是否刪除數(shù)據(jù)文件,此處都選是,進(jìn)行完全卸載。如果不刪除數(shù)據(jù)文件,重新安裝管理系統(tǒng)時(shí)用戶驗(yàn)證這一步不能順利進(jìn)行。
D.按照提示輸入sys用戶密碼和數(shù)據(jù)庫(kù)地址,通過(guò)驗(yàn)證后自動(dòng)安裝,創(chuàng)建所需用戶,創(chuàng)建地球物理數(shù)據(jù)表。
根據(jù)原來(lái)數(shù)據(jù)庫(kù)的數(shù)據(jù)量進(jìn)行擴(kuò)容后,用邏輯備份的方法導(dǎo)入數(shù)據(jù)后。管理系統(tǒng)仍舊存在入庫(kù)異常錯(cuò)誤。新數(shù)據(jù)庫(kù)的所有用戶和表通過(guò)安裝數(shù)據(jù)管理系統(tǒng)軟件自動(dòng)創(chuàng)建。此處創(chuàng)建是一個(gè)全新的過(guò)程,排除用戶和表存在錯(cuò)誤的可能。排查數(shù)據(jù)管理系統(tǒng)應(yīng)用軟件存在問(wèn)題。但入庫(kù)異常錯(cuò)誤仍存在,懷疑Oracle數(shù)據(jù)庫(kù)存在問(wèn)題或者Linux系統(tǒng)存在問(wèn)題導(dǎo)致數(shù)據(jù)管理系統(tǒng)軟跟數(shù)據(jù)庫(kù)之間的聯(lián)系不能正常建立。
2.4.2 排查數(shù)據(jù)庫(kù)應(yīng)用程序
通過(guò)重新安裝oracle數(shù)據(jù)庫(kù)來(lái)排查此應(yīng)用是否存在問(wèn)題。重新安裝數(shù)據(jù)庫(kù),要先卸載數(shù)據(jù)管理系統(tǒng)和數(shù)據(jù)庫(kù),之后才能重新安裝。
A.卸載數(shù)據(jù)管理系統(tǒng)
B.刪除實(shí)例./netca
C.卸載數(shù)據(jù)庫(kù)
D.重裝數(shù)據(jù)庫(kù)、創(chuàng)建實(shí)例
E.安裝數(shù)據(jù)管理系統(tǒng)
F.擴(kuò)展表空間,用數(shù)據(jù)泵方法導(dǎo)入數(shù)據(jù)
經(jīng)過(guò)上述操作后,數(shù)據(jù)管理系統(tǒng)自動(dòng)采集數(shù)據(jù)或者一鍵收取采集數(shù)據(jù)都正常。通過(guò)上述排查過(guò)程,懷疑oracle數(shù)據(jù)庫(kù)存在故障。
Oracle故障主要是物理結(jié)構(gòu)故障,構(gòu)成數(shù)據(jù)庫(kù)的各個(gè)物理文件損壞而導(dǎo)致的各種數(shù)據(jù)庫(kù)故障,這些可能是由于硬件故障造成,也可能是人為誤操作引起。本案例中硬件正常。除去硬件故障,Oracle數(shù)據(jù)庫(kù)錯(cuò)誤主要有:SQL語(yǔ)句失敗、線程失敗、實(shí)例失敗、用戶操作失敗、存儲(chǔ)設(shè)備失敗。前三種失敗,不需要人為干涉,oracle系統(tǒng)會(huì)自動(dòng)進(jìn)行恢復(fù)。因此排除前三種故障。再是本案例中不能自動(dòng)采集數(shù)據(jù),但是可以手動(dòng)入庫(kù)方式將數(shù)據(jù)入庫(kù),后續(xù)處理和交換等操作均正常。并且存儲(chǔ)空間足夠,硬盤狀態(tài)正常。因此排除存儲(chǔ)設(shè)備失敗,只剩用戶操作失敗一種可能。用戶操作失敗是指用戶在進(jìn)行誤刪除表、UPDATA更新、insert插入、DELETE刪除等誤操作所引發(fā)的錯(cuò)誤。本案例錯(cuò)誤是UPDATA更新操作后出現(xiàn)的,很可能是更新操作未能完全正確執(zhí)行,造成用戶操作失敗錯(cuò)誤,進(jìn)而造成數(shù)據(jù)庫(kù)應(yīng)用不能正常工作。用戶操作失敗故障可以采用邏輯備份恢復(fù)數(shù)據(jù),但不適合冷備份方式恢復(fù)數(shù)據(jù)[1,10]。
本文針對(duì)數(shù)據(jù)管理系統(tǒng)的“入庫(kù)異?!眴?wèn)題,先檢查該服務(wù)器上的數(shù)據(jù)庫(kù)的服務(wù)狀態(tài)和生存期,再檢查服務(wù)器的應(yīng)用是否正常,再利用數(shù)據(jù)泵備份和恢復(fù)數(shù)據(jù),最后逐次排查服務(wù)器上的應(yīng)用程序。經(jīng)過(guò)排查發(fā)現(xiàn)是數(shù)據(jù)庫(kù)應(yīng)用存在故障導(dǎo)致了這個(gè)問(wèn)題。
地球物理服務(wù)器是地球物理臺(tái)網(wǎng)技術(shù)系統(tǒng)的核心設(shè)備,是關(guān)乎數(shù)據(jù)采集、處理、交換的重要中介,如果服務(wù)器不能正常運(yùn)行,將會(huì)影響地球物理臺(tái)網(wǎng)工作的正常運(yùn)行。再是不同情況下需要使用不同的備份與恢復(fù)方法,某情況下的備份信息只能由對(duì)應(yīng)方法進(jìn)行還原或恢復(fù)。這要求臺(tái)網(wǎng)人員要掌握多種數(shù)據(jù)庫(kù)恢復(fù)的方法。