Oracle數據庫表備份導入導出dmp的方式及踩坑記錄
目錄
- 一、備份導出前的注意事項
- 二、導出的兩種方式
- 2.1.使用exp導出
- 2.2.使用數據泵expdp導出
- 三、在備份時遇到的坑
- 附:Oracle導出指定用戶下dmp文件
- 總結
一、備份導出前的注意事項
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:\dmp\DEMO_20220121.dmp owner=DEMO buffer=8192000 log=D:\dmp\DEMO_20220121_daochu.log
上述內容代表將用戶DEMO的全部表導出為D盤dmp文件夾下的DEMO_20220121.dmp文件,導出日志為相同目錄下的DEMO_20220121_daochu.log
2.導出指定表名的表
exp DEMO/DEMO@ORCL file=D:\dmp\DEMO_20220121_ep.dmp tables=("EP_SYS_CQ_COND","EP_SYS_CONSIGN_REC","EP_SYS_CQ_COND_DEF") buffer=8192000 log=D:\dmp\DEMO_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:\dmp\DEMO_20220307_demo.dmp tables=(DEMO.DEMO_%) buffer=8192000 log=D:\dmp\DEMO_20220307_demo_daochu.log
表示導出DEMO用戶下DEMO_開頭的全部表
總結
到此這篇關于Oracle數據庫表備份導入導出dmp的文章就介紹到這了,更多相關Oracle備份導入導出dmp內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!
相關文章: