天天看點

DBA生存警示:主備環境誤操作案例及防範建議

編輯手記:對于資深的老dba們,他們在漫長的職業生涯中養成了很多稀奇古怪的守則,以在複雜多變的環境中“幸存”,這源于無數血淚的教訓,我曾經在《資料安全警示錄》一書收錄了大量現實案例,現在整理分享給大家,共為警示。

DBA生存警示:主備環境誤操作案例及防範建議

在資料庫日常管理過程中,有些威脅來自資料庫外部,而有些威脅則來自資料庫内部,對于資料庫外部,破壞性的操作有rm,而在資料庫内部,同樣有破壞性操作,如truncate。

案例分享

生産與測試環境錯誤

開了兩個pl/sql develope視窗,一個生産的,一個非生産的,同名使用者,同表空間名,結果非生産的建使用者腳本在生産中跑了一下,非生産是grant limit table space to xxx的,在生産中跑了以後,生産中的使用者變成limit了,結果程式出錯,表空間不足。導緻應用出錯半個小時後才處理好。 這個太慘痛了,建議所有的使用多個環境的人,并且操作多個pl/sql develope的人盡量隻開一個視窗操作,或者是操作生産的時候,用隻讀的查詢使用者。

生産與測試環境錯誤

自己電腦裝了oracle資料庫,平時操作都在自己建立的庫上........經常删除使用者,重新導最新的資料進去。 那天也是快下班了........急,直接删除使用者,删除的時候還在想就算是正式庫權限不夠沒關系,看也沒看就敲回車了.......後來不說了,兩個字,郁悶。

我有一次本來要删除測試庫的,結果差點删除生産庫的一個表的所有資料,還好強行ctrl_alt_delete,最後復原了,哈哈,居然一條資料都沒有删除。确實是快下班,比較累。以後不能在心急的時候維護資料庫。

也是開了多個視窗,一個視窗建庫,另一個視窗是生産的庫。搞錯了,在生産的伺服器上直接shutdown了,立刻電話就上來了。好在沒有造成太大影響,也是提心吊膽的。多視窗危險很大。

尤記得那年我還很沖動,測試環境中發現表空間不夠了,就加了一個檔案。一會有人打電話說生産庫總報一個提示。 馬上去看,發現我的資料檔案竟然加在生産庫上!而且路徑類似windows的,非常奇怪,冷汗!靠,原來寫錯tns串了,見鬼的是測試環境和生産環境網絡竟然是互通的!生産環境是rac,裸裝置,9i......後來隻好把這個本地檔案脫機,資料倒沒有丢失,但總有個删不掉的脫機檔案!後來找個理由更新成10g了,我心裡的石頭才算放下了。 從此以後我再也沒有犯錯。

誤删除生産環境資料

有一次在測試庫drop掉一個表,drop完發現把生產庫中的表給drop了,1000多萬筆紀錄啊。當時產線就停了,最後一級生產事故。偶公開檢討。教訓:不能同時打開兩個以上的庫。

防範建議

1.測試環境和生産環境應當處于不可互通的實體網絡

互通就意味着同時可以通路,也就可能帶來很多意想不到的安全風險,企業應當将測試環境和生産環境部署于不可互通,或者不可同時通路的網絡環境中,避免因為錯誤連接配接而發生的資料庫災難。 分離部署一方面可以降低誤操作的可能性,也可以屏蔽一些無關的通路可能,進而從網絡鍊路上保證資料安全。

2.在執行任務之前确認連接配接通路的資料環境

通過查詢資料庫的視圖(v$instance,v$database)就可以獲得資料庫的主機、執行個體名稱等資訊,在任何重要任務執行之前,都應當明确确認連接配接到的環境是正确的。 sql>select instance_name,host_name from v$instance; 這應當成為dba的習慣。

3.避免打開過多的視窗以緻操作錯誤

在執行任務時,保持盡量少的打開視窗,我經常見到工程師桌面打開衆多淩亂的視窗,混亂與錯誤同行,尤其是在通宵加班等環境下。 保持簡介清晰的工作界面,是一個工程師應當具備的基本素質。

4.在執行重要任務時應保持良好的狀态

良好的狀态是高效率和高品質工作的保障,如果是夜間工作,應該保障充足的睡眠,以清醒的頭腦面對重要的工作;并且一定要避免在疲勞狀态下連續工作,疲勞作戰是對自己和資料的不負責任。

5.避免匆忙之下進行重要的工作或決定

很多誤操作都是因為急着下班,急着回家,臨門一腳導緻的失誤,是以當我們去執行一項工作時,應當保持平和的心态,避免倉促緊急的決定。從來匆忙和倉促都不是一個正确的方法。

6.測試環境和産品環境密碼設定不能相同

有些測試環境或者非産品環境是利用産品環境恢複得到的,dba在建立了測試環境後,就沒有修改資料庫使用者的登入密碼;經常性的,dba也習慣在所有環境中設定通用的密碼;這些習慣為系統帶來了很多風險和不确定性。 我們建議使用者在不同環境中采用不同的密碼設定,這是因為一方面産品環境和測試環境面對的通路使用者不同,密碼設定相同則意味着産品環境的安全性完全得不到保障;另一方面,dba登入到不同的資料庫需要使用不同的密碼,這進一步減低了dba在錯誤的環境下執行指令的可能性。

以上内容摘錄自蓋國強《oracledba手記4資料安全警示錄》。