Oracle exp/imp:源和目標資料表空間不同時的處理方法____Oracle

來源:互聯網
上載者:User

情境描述:

1、做一個從UAT到PRD的Schema遷移,UAT環境有sys使用者,PRD環境沒有sys使用者,由於許可權限制,沒辦法使用expdp/impdp,只好選擇exp/imp命令;

2、UAT和PRD環境的TNS已明確,假設UAT環境的TNS配置為:TNS_UAT,PRD環境的配置為:TNS_PRD;

3、PRD環境的DB USER已建好(其他人建好提供的),和UAT環境的是一樣的,假設都為user/pwd;

4、UAT和PRD環境,user使用者的資料表空間名不同,假設UAT環境資料表空間為:TBSP_UAT,PRD環境為TBSP_PRD;

當兩個user的資料表空間不同時無法直接exp/imp(不妨嘗試一下),所以找了以下兩種解決辦法:

方法一:

1、使用exp命令從UAT庫匯出user使用者資料檔案Schema_USER_BAK.dmp,命令格式為:

EXP  user/pwd@TNS_UAT  BUFFER=64000  FILE=D:\SCHEMA_USER_BAK.dmp  OWNER=USER(參數按需添加)

2、使用Notepad++等文本工具開啟檔案,尋找出其中的資料表空間資訊,將SCHEMA_USER_BAK.dmp檔案中的UAT環境資料表空間名TBSP_UAT全部替換PRD對應的資料表空間名TBSP_PRD,修改後的檔案另存新檔SCHEMA_USER.dmp;

3、然後使用imp命令將SCHEMA_USER.dmp檔案匯入給PRD環境的user使用者,命令格式為:

IMP  user/pwd@TNS_PRD   BUFFER=64000   FILE=D:\SCHEMA_USER.dmp FROMUSER=USER  TOUSER=USER

4、OK,方法一完成。

但是,假設UAT環境的user使用者的資料量很大,匯出的dmp檔案通常有3GB、4GB甚至更大,此時就無法通過Notepad++或者UE等編輯器直接去編輯替換資料表空間資訊了,方法一就行不通了,所以這時有了方法二。

方法二:

1、修改UAT環境user使用者的資料表空間名為PRD環境對應的資料表空間名:(修改之前記得備份)

ALTER TABLESPACE TBSP_UAT  RENAME TO  TBSP_PRD

2、匯出UAT環境user使用者:

EXP  user/pwd@TNS_UAT  BUFFER=64000  FILE=D:\SCHEMA_USER.dmp  OWNER=USER

3、將匯出的dmp檔案匯入給PRD環境的user使用者:

IMP  user/pwd@TNS_PRD   BUFFER=64000   FILE=D:\SCHEMA_USER.dmp FROMUSER=USER  TOUSER=USER

4、還原UAT環境user使用者的資料表空間名:

ALTER TABLESPACE TBSP_PRD  RENAME TO  TBSP_UAT

5、OK,方法二完成。

上述兩種方法親測有效,但是可能會有特殊情況,至於特殊情況是什麼,那就不好說了。所謂特殊情況特殊處理,所以還得各位小夥伴多多研究了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.