遷移式升級的測試(二)
在之前寫的一篇博文中,自己是打算對一臺資料庫使用Data Guard+TTS的方式來完成資料遷移和升級的工作,整體的思路如下。
備庫Failover之後,匯出後設資料,然後同一臺伺服器上的11g的資料庫中匯入後設資料,這樣就避免了傳輸檔案的時間消耗。從而達到快速遷移升級的目的。
具體的操作步驟如下所示:
1.在備庫端需要開啟閃回
這個也是為了能夠在遷移失敗的情況下,能夠迅速回退,馬上重構主備庫的環境。
2.在開啟閃回資料庫之後,記錄一下SCN的資訊,留作後面備用。
select current_scn from v$database;
CURRENT_SCN
------------------
228967862801
3.開始備庫切換
在備庫端進行Failover的操作。整個過程分分鐘即可完成。這個過程需要保證主庫端的資料能夠及時更新過來。
alter database recover managed standby database finish force;
alter database commit to switchover to primary;
select database_role,open_mode from v$database;
4.在開始遷移前,做一個完整的檢查,這是遷移的重中之重,如果遷移的表空間很多,可以直接放到指令碼里面來統一處理也可以。
exec dbms_tts.transport_set_check(TS_LIST=>'STORELOG_DATA,STORELOG_INDX,USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,TS_AUDIT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,OEM_MON_TEST,USERCENTER_DATA',INCL_CONSTRAINTS=>TRUE,full_check=>true);
檢視檢查的結果:
select *from transport_set_violations;
------------------------------------------------------------------------------------------------------------------------ Sys owned object SYS_LOB0000133356C00040$$ in tablespace TS_AUDIT not allowed in pluggable set
可以看到這個例子中還是違反自包含約束的情況,從日誌能夠看出,主要是和aud$的處理相關。
經過確認,MARKET_ANGEL_USEDUP是個索引,但是屬主存在問題,可以在遷移的時候直接重建。
sys@TEST> drop index MARKET_ANGEL_USEDUP;
Index dropped.
sys@TEST> create index TEST.MARKET_ANGEL_USEDUP on TEST.MARKET_ANGEL("USED_UP") tablespace TEST_index;
Index created.
另外的幾個表 TEST_WEAPON,TMP_CNINFO_XTG_20081212,AUD$_20120608是臨時表,可以直接刪除。
drop table TEST_WEAPON;
drop table TMP_CNINFO_XTG_20081212;
drop table AUD$_20120608;
最後的注意力就到了aud$,可以看到這個表是在之前因為考慮到資料量較大,直接遷移到一個獨立的表空間了,在這個例子中為了保證遷移的順利,可以先把aud$遷移到sysaux裡面,遷移完成之後再處理即可。資料量不大的情況下直接move tablespace即可,如果裡面的資料可以刪除,直接truncate即可。
truncate table aud$;
alter table aud$ move tablespace sysaux;
這個時候檢視檢查資訊,還是存在下面的一些提示資訊。
這個時候可以檢視LOB的具體資訊,發現是AUD$裡面的一個LOB列,單獨遷移即可。
SQL> select table_name,column_name,tablespace_name,index_name from user_lobs where index_name='SYS_IL0000011218C00041$$'
SQL>alter table aud$ move tablespace sysaux lob(SQLTEXT) store as lobsegment(tablespace sysaux);
另外一個LOB也是同樣的處理。
SQL> alter table aud$ move tablespace sysaux lob(SQLBIND) store as lobsegment2(tablespace sysaux);
對於其他的物件,如果不是LOB列,那很可能就是回收站裡的物件了,直接刪除即可。
sys@TEST> select table_name,column_name,tablespace_name,index_name from user_lobs where segment_name='SYS_LOB0000133356C00041$$';
sys@TEST> show recyclebin
SQL>purge recyclebin;
對於aud$上面的索引可以直接rebuild即可達到效果。
alter index I_AUD2 rebuild tablespace sysaux;
再次檢查阿九沒有任何問題了。
PL/SQL procedure successfully completed.
no rows selected
5.接下來的工作就是把表空間置為READ ONLY狀態。
alter tablespace USERS read only;
alter tablespace TS_AUDIT read only;
alter tablespace GHOSTOL_DATA read only;
alter tablespace GHOSTOL_INDEX read only;
alter tablespace TEST_DATA read only;
alter tablespace TEST_INDEX read only;
6.匯出10g資料庫的後設資料資訊,標註為遷移表空間的方式。
exp \'sys/oracle as sysdba\' file=exp_tts_TEST.dmp transport_tablespace= y tablespaces=USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,STORELOG_DATA,STORELOG_INDX,OEM_MON_TEST,USERCENTER_DATA log=exp_tts_TEST.log
7.在11g的新庫中可以嘗試建立相應的使用者,這裡有幾個地方需要注意。
理論上可以透過impdp來完成使用者資訊的匯入,但是這個步驟建議還是手工處理,從10g的庫上匯出使用者的DDL語句,簡單修改。
原因在於預設表空間在新庫上存在,如果存在PROFILE的資源設定,很可能匯入失敗。可以批次生成語句,簡單修改即可。
CREATE USER "TEST" IDENTIFIED BY VALUES '5F712A8369686639'
DEFAULT TABLESPACE "TEST_DATA"
TEMPORARY TABLESPACE "TEMP"
PROFILE "PF_TEST" ;
後續來繼續解讀這個遷移的過程。整個過程會是一個完整的演練過程,碰到的問題越多,解決的越多。遷移的時候越順利。
備庫Failover之後,匯出後設資料,然後同一臺伺服器上的11g的資料庫中匯入後設資料,這樣就避免了傳輸檔案的時間消耗。從而達到快速遷移升級的目的。
具體的操作步驟如下所示:
1.在備庫端需要開啟閃回
這個也是為了能夠在遷移失敗的情況下,能夠迅速回退,馬上重構主備庫的環境。
2.在開啟閃回資料庫之後,記錄一下SCN的資訊,留作後面備用。
select current_scn from v$database;
CURRENT_SCN
------------------
228967862801
3.開始備庫切換
在備庫端進行Failover的操作。整個過程分分鐘即可完成。這個過程需要保證主庫端的資料能夠及時更新過來。
alter database recover managed standby database finish force;
alter database commit to switchover to primary;
select database_role,open_mode from v$database;
4.在開始遷移前,做一個完整的檢查,這是遷移的重中之重,如果遷移的表空間很多,可以直接放到指令碼里面來統一處理也可以。
exec dbms_tts.transport_set_check(TS_LIST=>'STORELOG_DATA,STORELOG_INDX,USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,TS_AUDIT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,OEM_MON_TEST,USERCENTER_DATA',INCL_CONSTRAINTS=>TRUE,full_check=>true);
檢視檢查的結果:
select *from transport_set_violations;
------------------------------------------------------------------------------------------------------------------------ Sys owned object SYS_LOB0000133356C00040$$ in tablespace TS_AUDIT not allowed in pluggable set
可以看到這個例子中還是違反自包含約束的情況,從日誌能夠看出,主要是和aud$的處理相關。
經過確認,MARKET_ANGEL_USEDUP是個索引,但是屬主存在問題,可以在遷移的時候直接重建。
sys@TEST> drop index MARKET_ANGEL_USEDUP;
Index dropped.
sys@TEST> create index TEST.MARKET_ANGEL_USEDUP on TEST.MARKET_ANGEL("USED_UP") tablespace TEST_index;
Index created.
另外的幾個表 TEST_WEAPON,TMP_CNINFO_XTG_20081212,AUD$_20120608是臨時表,可以直接刪除。
drop table TEST_WEAPON;
drop table TMP_CNINFO_XTG_20081212;
drop table AUD$_20120608;
最後的注意力就到了aud$,可以看到這個表是在之前因為考慮到資料量較大,直接遷移到一個獨立的表空間了,在這個例子中為了保證遷移的順利,可以先把aud$遷移到sysaux裡面,遷移完成之後再處理即可。資料量不大的情況下直接move tablespace即可,如果裡面的資料可以刪除,直接truncate即可。
truncate table aud$;
alter table aud$ move tablespace sysaux;
這個時候檢視檢查資訊,還是存在下面的一些提示資訊。
這個時候可以檢視LOB的具體資訊,發現是AUD$裡面的一個LOB列,單獨遷移即可。
SQL> select table_name,column_name,tablespace_name,index_name from user_lobs where index_name='SYS_IL0000011218C00041$$'
SQL>alter table aud$ move tablespace sysaux lob(SQLTEXT) store as lobsegment(tablespace sysaux);
另外一個LOB也是同樣的處理。
SQL> alter table aud$ move tablespace sysaux lob(SQLBIND) store as lobsegment2(tablespace sysaux);
對於其他的物件,如果不是LOB列,那很可能就是回收站裡的物件了,直接刪除即可。
sys@TEST> select table_name,column_name,tablespace_name,index_name from user_lobs where segment_name='SYS_LOB0000133356C00041$$';
sys@TEST> show recyclebin
SQL>purge recyclebin;
對於aud$上面的索引可以直接rebuild即可達到效果。
alter index I_AUD2 rebuild tablespace sysaux;
再次檢查阿九沒有任何問題了。
PL/SQL procedure successfully completed.
no rows selected
5.接下來的工作就是把表空間置為READ ONLY狀態。
alter tablespace USERS read only;
alter tablespace TS_AUDIT read only;
alter tablespace GHOSTOL_DATA read only;
alter tablespace GHOSTOL_INDEX read only;
alter tablespace TEST_DATA read only;
alter tablespace TEST_INDEX read only;
6.匯出10g資料庫的後設資料資訊,標註為遷移表空間的方式。
exp \'sys/oracle as sysdba\' file=exp_tts_TEST.dmp transport_tablespace= y tablespaces=USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,STORELOG_DATA,STORELOG_INDX,OEM_MON_TEST,USERCENTER_DATA log=exp_tts_TEST.log
7.在11g的新庫中可以嘗試建立相應的使用者,這裡有幾個地方需要注意。
理論上可以透過impdp來完成使用者資訊的匯入,但是這個步驟建議還是手工處理,從10g的庫上匯出使用者的DDL語句,簡單修改。
原因在於預設表空間在新庫上存在,如果存在PROFILE的資源設定,很可能匯入失敗。可以批次生成語句,簡單修改即可。
CREATE USER "TEST" IDENTIFIED BY VALUES '5F712A8369686639'
DEFAULT TABLESPACE "TEST_DATA"
TEMPORARY TABLESPACE "TEMP"
PROFILE "PF_TEST" ;
後續來繼續解讀這個遷移的過程。整個過程會是一個完整的演練過程,碰到的問題越多,解決的越多。遷移的時候越順利。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2125662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遷移式升級的測試
- 遷移式升級的測試(三)
- 測試環境的遷移式升級和資料整合
- 遷移式升級的一點思考
- datapump跨平臺升級遷移的對比測試和優化優化
- 一種遷移式升級的方案考慮
- datapump跨平臺升級遷移的對比測試和最佳化
- 同位元組序跨平臺資料庫遷移和升級的測試資料庫
- iOS CoreData (二) 版本升級和資料庫遷移iOS資料庫
- expdp 遷移測試
- 行遷移測試
- 資料庫的升級及遷移資料庫
- Grafana的版本升級和資料遷移Grafana
- gitlab安裝/遷移/升級流程Gitlab
- datapump跨平臺升級遷移的總結
- Oracle rman duplicate遷移測試Oracle
- PostMan newman測試介面遷移Postman
- SQL Server升級和遷移的三個技巧GZSQLServer
- Android O 遷移測試:RoomAndroidOOM
- Oracle 9i升級19C 邏輯遷移詳細方法(二)Oracle
- svn版本升級遷移和異地備份
- 資料庫的建立、遷移、升級和流等方面資料庫
- 行遷移測試實驗(轉載)
- weblogic版本升級遷移需要注意事項Web
- SAP系統升級,如何做資料遷移?
- expdp/impdp跨版本升級遷移問題總結
- 如何將.Net SOE遷移升級到10.1上
- ERP升級:如何做好資料遷移(轉)
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫
- 【XTTS】Oracle XTTS V4--Oracle11.2.0.4+ 遷移升級TTSOracle
- 最全weblogic升級與遷移改造常見問題Web
- oracle upgrade 升級前測試,升級後穩定計劃Oracle
- 百萬級資料遷移方案測評小記
- 【版本升級】PerfDog新增多維度測試報告對比功能、iOS電量測試功能升級測試報告iOS
- Core Data資料遷移及單元測試
- 遷移或升級後你應該如何調整你的資料
- CentOS 停止維護,一文看懂升級遷移路徑CentOS
- 淺談測試生涯如何轉型升級