首頁 > 軟體

Oracle資料庫表備份匯入匯出dmp的方式及踩坑記錄

2022-07-25 14:04:54

一、備份匯出前的注意事項

1.匯出匯出的時候需要注意資料庫的字元集是否一致,使用工具匯入的話也需要確認工具的字元集

   --查詢伺服器端的編碼命令
SELECT * FROM Nls_Database_Parameters where parameter = 'NLS_CHARACTERSET';
   --查詢使用者端軟體的編碼命令
SELECT Userenv('language') FROM dual where parameter = 'NLS_CHARACTERSET';

2.匯出時要確認匯出檔案的目錄,使用oracle自帶的邏輯目錄或者自己建立邏輯目錄,需要用到目錄名稱和目錄路徑,在匯出時只需指定目錄名稱,匯出的檔案存放在目錄路徑下

   --2.1.檢視oracle已有的目錄,
select * from dba_directories;
   --2.2.自己建立邏輯目錄
create directory 目錄名稱 as ‘目錄路徑';
   --2.3.如果是自己建立的目錄,需要給使用者新增讀寫此資料夾的許可權
grant read,write on directory dir to scott;

3.需要確認要匯出的目錄中空間是否夠用,空間不足時匯入會停止

二、匯出的兩種方式

2.1.使用exp匯出

    --2.1.1.匯出命令
exp 使用者名稱/密碼@資料庫IP:埠號/orcl file=匯出的目標檔名稱 tables=要匯出的表名(多個表時用逗號隔開)
exp TJ_DATA/a123456@10.10.1.54:1521/orcl file=export.dmp tables=USER_INFO,POLICY_INFO;

   --2.1.2.匯入命令
imp 使用者名稱/密碼@資料庫IP:埠號/orcl file=匯出的目標檔名稱 tables=要匯出的表名(多個表時用逗號隔開)
imp TJ_DATA/a123456@10.10.1.54:1521/orcl file=export.dmp tables=USER_INFO,POLICY_INFO;

2.2.使用資料泵expdp匯出

   --2.2.1.匯出命令
expdp 使用者名稱/密碼@資料庫IP:埠號/orcl file=匯出的目標檔名稱 tables=要匯出的表名(多個表時用逗號隔開)
expdp TJ_DATA/a123456@10.10.1.54:1521/orcl file=export.dmp tables=USER_INFO,POLICY_INFO;

   --2.2.2.匯入命令
impdp 使用者名稱/密碼@資料庫IP:埠號/orcl file=匯出的目標檔名稱 tables=要匯出的表名(多個表時用逗號隔開)
impdp TJ_DATA/a123456@10.10.1.54:1521/orcl file=export.dmp tables=USER_INFO,POLICY_INFO

三、在備份時遇到的坑

   --3.1. 要備份的表如果是分割區表,不能使用exp匯出命令.只能使用資料泵匯出方式.

   --3.2. dmp檔案匯入時,資料庫中不能存在同名的表

   --3.3. 匯入時,資料庫表的表空間要一致,在命令中可以修改表空間,在匯入匯入命令後面加上 ‘remap_tablespace=原表空間名:新表空間名’
impdp TJ_DATA/a123456@10.10.1.54:1521/orcl file=export.dmp tables=USER_INFO remap_tablespace=OLD_SPACE:NEW_SPACE

   – 3.4. 匯出時如果表空間不足,需要為當前表空間新增資料檔案來擴容,資料檔案可以設定初始大小,並設定自增,也可以限定最大值
ALTER TABLESPACE 表空間名 ADD DATAFILE ‘資料檔案路徑及名稱’ size 檔案初始大小 autoextend on (設定是否開啟自增) MAXSIZE 檔案最大值;

ALTER TABLESPACE TJ_DATA ADD DATAFILE '/oracle/oradata/ds.dbf' size 1024M autoextend on MAXSIZE 20480M;

   --3.5.匯入匯出有三種型別,分別是表方式(T方式),使用者方式(U方式),全庫方式(Full方式),這裡只記錄了表匯出方式

附:Oracle匯出指定使用者下dmp檔案

1.匯出指定使用者下的全部表

exp DEMO/DEMO@ORCL file=D:dmpDEMO_20220121.dmp owner=DEMO buffer=8192000 log=D:dmpDEMO_20220121_daochu.log

上述內容代表將使用者DEMO的全部表匯出為D槽dmp資料夾下的DEMO_20220121.dmp檔案,匯出紀錄檔為相同目錄下的DEMO_20220121_daochu.log

2.匯出指定表名的表

exp DEMO/DEMO@ORCL file=D:dmpDEMO_20220121_ep.dmp tables=('EP_SYS_CQ_COND','EP_SYS_CONSIGN_REC','EP_SYS_CQ_COND_DEF') buffer=8192000 log=D:dmpDEMO_20220121_ep_daochu.log

表示匯出指定的三個表('EP_SYS_CQ_COND','EP_SYS_CONSIGN_REC','EP_SYS_CQ_COND_DEF')

3.匯出以**開頭的表

exp DEMO/DEMO@ORCL_MDPC file=D:dmpDEMO_20220307_demo.dmp tables=(DEMO.DEMO_%) buffer=8192000 log=D:dmpDEMO_20220307_demo_daochu.log

表示匯出DEMO使用者下DEMO_開頭的全部表

總結

到此這篇關於Oracle資料庫表備份匯入匯出dmp的文章就介紹到這了,更多相關Oracle備份匯入匯出dmp內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com