一次資料變更的稽核過程
今天正在做一個資料變更操作,突然一個開發的同學找到我,看起來比較著急的樣子,說想讓我做一個資料變更。
當然在這種時候,我正在做的資料變更操作已經被打斷了,已經有一些不願意了,而且還要緊急變更,在沒有得到指令碼,沒有環境,沒有指令碼說明,對於這種三無要求我一向都是比較排斥的。所以我靜下來,讓他提供這些資訊,這些是資料變更的必備條件,哪怕再緊急,這些資訊也需要有基本的流程規範。
所以這位同學就這樣無功而返,當然換誰都一樣。很快他就確認了環境,是一個使用率不高的線上業務庫,當我得到他提供的語句的時候,我已經有些崩潰了,因為開啟檔案的時候,發現指令碼註釋都是亂碼,所以我還是選擇打回。然後等開發的這位同學再次發過來檔案的時候,我終於耐著性子開始稽核指令碼。
可以從指令碼的內容和註釋看出,這是透過一個工具匯出的指令碼,當然了這種指令碼還是有很多的問題。
首先就是匯出的指令碼中的使用者是TEST
指令碼中是類似"TEST"."TABLE1"的形式,而我要匯入的環境的使用者為TEST_OPER,這就給我帶來了一些困擾。
其次是匯出的指令碼中的表空間在目標庫中不存在,如果開發的同學不確定,其實這個地方就可以直接省略,而作為DBA會做權衡,當然使用者的預設表空間就是相關的表空間。
再次就是匯出的環境中的段屬性,索引段屬性等,其實在目標環境中大部分都不需要。
比如下面的段儲存屬性:
SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
其實這些資訊都是實際的應用來說沒有特別的使用者,從上面的內容可以裡面有11g的特性segment creation的設定,如果是在10g肯定會報錯。而且後面的屬性資訊也都不需要,完全可以根據當前的資料設定來取得預設值。
然後看著後面的幾行語句,我不禁皺起了眉頭,因為這位同學自己新增了幾行指令碼,DML末尾沒有commit。
當然這個時候我也不能怪這位開發同學的不專業,我需要告訴他的我的建議,於是我從頭按照我的建議改了一遍檔案,告訴他哪些是要注意的,而不是簡單的拿到檔案就交給DBA執行。
問題解決了之後,大家都相安無事,他也從中學到了東西。但是下午的時候,他又找到我說,他們訪問的時候有個報錯是table or view does not exist,然後想問問我早上的變更是否成功,為了儘快平息這種疑問,我就直接登入系統給他看了一下,所以這位同學帶著結果又回去了。但是讓我快爆發的是,他過了會又找到我說,這個表的變更應該是在另外一個線上庫中,這個時候我還是希望得到一個肯定的答覆,當初為什麼確認是之前的資料庫地址?看著這位同學也是模稜兩可,我覺得還是需要儘快把這件事情弄清楚,因為儘管確定是這個庫,我需要一個清楚的解釋,這次他提供的環境是一個非常重要的核心庫,一旦出現問題,那就是牽一髮而動全身。顯然這位同學不知道這個風險。於是我就找到了這個開發的負責同學,向他確認這個需求,業務上大體是什麼樣的情況,大體瞭解了下,原來他們有一個業務會涉及兩個庫,這個業務有一些功能點,有些需要連線資料庫1,有些需要連線資料庫2,而經過他們的確認,這個功能點是隻在資料庫2中會被應用呼叫,所以資料庫1的變更是不需要的了。反覆確認,開發的同學重新走流程,終於這個問題才算完整解決。
看起來確實是一個挺讓人糾結的問題處理過程,當然我也理解那位開發同學的苦衷,但是不知者無畏,在不瞭解整個環境的前提下,貿然改動,留給系統的是數不盡的後患,作為DBA是需要嚴格稽核資料的變更和訴求,對於資料變化敏感的操作,需要保留備份,保留操作日誌,考慮影響範圍等等,也希望在工作中大家都更加專業,儘可能減少一些返工,過度交流的情況。
當然在這種時候,我正在做的資料變更操作已經被打斷了,已經有一些不願意了,而且還要緊急變更,在沒有得到指令碼,沒有環境,沒有指令碼說明,對於這種三無要求我一向都是比較排斥的。所以我靜下來,讓他提供這些資訊,這些是資料變更的必備條件,哪怕再緊急,這些資訊也需要有基本的流程規範。
所以這位同學就這樣無功而返,當然換誰都一樣。很快他就確認了環境,是一個使用率不高的線上業務庫,當我得到他提供的語句的時候,我已經有些崩潰了,因為開啟檔案的時候,發現指令碼註釋都是亂碼,所以我還是選擇打回。然後等開發的這位同學再次發過來檔案的時候,我終於耐著性子開始稽核指令碼。
可以從指令碼的內容和註釋看出,這是透過一個工具匯出的指令碼,當然了這種指令碼還是有很多的問題。
首先就是匯出的指令碼中的使用者是TEST
指令碼中是類似"TEST"."TABLE1"的形式,而我要匯入的環境的使用者為TEST_OPER,這就給我帶來了一些困擾。
其次是匯出的指令碼中的表空間在目標庫中不存在,如果開發的同學不確定,其實這個地方就可以直接省略,而作為DBA會做權衡,當然使用者的預設表空間就是相關的表空間。
再次就是匯出的環境中的段屬性,索引段屬性等,其實在目標環境中大部分都不需要。
比如下面的段儲存屬性:
SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
其實這些資訊都是實際的應用來說沒有特別的使用者,從上面的內容可以裡面有11g的特性segment creation的設定,如果是在10g肯定會報錯。而且後面的屬性資訊也都不需要,完全可以根據當前的資料設定來取得預設值。
然後看著後面的幾行語句,我不禁皺起了眉頭,因為這位同學自己新增了幾行指令碼,DML末尾沒有commit。
當然這個時候我也不能怪這位開發同學的不專業,我需要告訴他的我的建議,於是我從頭按照我的建議改了一遍檔案,告訴他哪些是要注意的,而不是簡單的拿到檔案就交給DBA執行。
問題解決了之後,大家都相安無事,他也從中學到了東西。但是下午的時候,他又找到我說,他們訪問的時候有個報錯是table or view does not exist,然後想問問我早上的變更是否成功,為了儘快平息這種疑問,我就直接登入系統給他看了一下,所以這位同學帶著結果又回去了。但是讓我快爆發的是,他過了會又找到我說,這個表的變更應該是在另外一個線上庫中,這個時候我還是希望得到一個肯定的答覆,當初為什麼確認是之前的資料庫地址?看著這位同學也是模稜兩可,我覺得還是需要儘快把這件事情弄清楚,因為儘管確定是這個庫,我需要一個清楚的解釋,這次他提供的環境是一個非常重要的核心庫,一旦出現問題,那就是牽一髮而動全身。顯然這位同學不知道這個風險。於是我就找到了這個開發的負責同學,向他確認這個需求,業務上大體是什麼樣的情況,大體瞭解了下,原來他們有一個業務會涉及兩個庫,這個業務有一些功能點,有些需要連線資料庫1,有些需要連線資料庫2,而經過他們的確認,這個功能點是隻在資料庫2中會被應用呼叫,所以資料庫1的變更是不需要的了。反覆確認,開發的同學重新走流程,終於這個問題才算完整解決。
看起來確實是一個挺讓人糾結的問題處理過程,當然我也理解那位開發同學的苦衷,但是不知者無畏,在不瞭解整個環境的前提下,貿然改動,留給系統的是數不盡的後患,作為DBA是需要嚴格稽核資料的變更和訴求,對於資料變化敏感的操作,需要保留備份,保留操作日誌,考慮影響範圍等等,也希望在工作中大家都更加專業,儘可能減少一些返工,過度交流的情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-2107481/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多級稽核狀態的變更
- 資料庫的一次資料恢復過程資料庫資料恢復
- 通過修改資料字典,變更表的owner
- 資料庫變慢的處理過程資料庫
- 排查Mysql突然變慢的一次過程MySql
- 一次Oracle資料庫恢復過程Oracle資料庫
- 一次資料庫異常的處理過程資料庫
- 一次資料庫硬解析的分析全過程資料庫
- 一次客戶資料庫恢復的過程資料庫
- 記一次系統演變過程
- 一次使用duplicate建立測試資料庫的過程資料庫
- 一次客戶資料庫恢復的過程 [轉]資料庫
- 記錄一次資料庫CPU被打滿的排查過程資料庫
- 一次物理刪除資料檔案的恢復過程
- 記一次MySQL資料遷移到SQLServer全過程MySqlServer
- 軟體開發過程中的變更請求管理薦
- 資料變更通知的一種方案
- 記錄一次爬取淘寶/天貓評論資料的過程
- 一次性更該所有物件所有者的儲存過程。物件儲存過程
- 記一次開啟資料庫慢原因分析過程資料庫
- 資料的過程性表示
- 記錄一次線上資料圖源本地化操作的過程
- 一次oracle 11g 資料泵 報錯 的解決過程Oracle
- 一次利用mv線上遷移資料、切換系統的過程
- 一次詭異的線上資料庫的死鎖問題排查過程資料庫
- 記一次資料庫高CPU佔用率處理過程資料庫
- 一次客戶資料庫CPU 100%處理過程資料庫
- GoldenGate初始載入過程變化資料處理Go
- 記一次簡單的Oracle離線資料遷移至TiDB過程OracleTiDB
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- 安全警示錄---記一次oracle資料檔案遷移過程Oracle
- 資料探勘的過程有哪些
- standby 資料庫的建立過程資料庫
- oracle 寫入資料的過程Oracle
- 資料庫的連線過程資料庫
- 線上的一次fullgc排查過程GC
- 資料庫系列:高併發下的資料欄位變更資料庫
- SQL Server 變更資料捕獲(CDC)SQLServer