一、什么是dmp文件
在oracle中,dmp文件是數(shù)據(jù)庫導(dǎo)出的文件,常用于數(shù)據(jù)庫的備份和遷移。一般會用exp命令來導(dǎo)出,用imp命令來導(dǎo)入也就是恢復(fù)數(shù)據(jù)庫。
二、dmp文件導(dǎo)入
常用于數(shù)據(jù)庫遷移使用,當(dāng)需要額外部署新的服務(wù)器時,需要將提前備份好的dmp文件導(dǎo)入到新的環(huán)境中。
創(chuàng)建用戶
在導(dǎo)入之前,我們需要新建一個用戶,用于存放我們的dmp數(shù)據(jù)
-
登錄到linux服務(wù)器 切換oracle用戶
su - oracle
-
登錄到oracle數(shù)據(jù)庫
sqlplus / as sysdba ? --以操作系統(tǒng)權(quán)限認(rèn)證的oracle sys管理員登陸
-
切換到數(shù)據(jù)庫存儲端(pdb)
alter session set container=idms ? alter session 切換容器
-
創(chuàng)建數(shù)據(jù)庫用戶
create user <username> identified by <password> default tablespace <tablespace_name> -- 默認(rèn)表空間 temporary tablespace temp -- 臨時表空間 ? create user ecdsprodtest0412 identified by ecdsprodtest0412 default tablespace ITREASURY temporary tablespace temp;
-
用戶授權(quán)
授予角色語法: grant <object/system privilege> to <role name>; CONNECT 角色,--擁有Connect權(quán)限的用戶只可以登錄ORACLE(僅具有創(chuàng)建SESSION的權(quán)限),不可以創(chuàng)建實體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。 RESOURCE 角色,--是授予開發(fā)人員的。擁有Resource權(quán)限的用戶只可以創(chuàng)建實體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。 DBA角色,--是授予數(shù)據(jù)庫維護人員的。擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。 ? grant connect,resource,dba to ecdsprodtest0412;
-
創(chuàng)建dmp文件存儲目錄并賦權(quán)
新建directory的語法 CREATE [OR REPLACE] DIRECTORY directory directoryName AS 'pathname'; ? create or replace directory dmpdir ?as ?'/oradata'; grant read ,write on directory dmpdir to ecdsprodtest0412;
-
切換root用戶,賦予讀寫權(quán)限
mkdir ? /oradata chmod -R 777 /oradata
導(dǎo)入dmp文件
-
將dmp文件上傳到/oradata目錄下 切換到oracle用戶 執(zhí)行導(dǎo)入dmp命令
impdp ecdsprodtest0412/ecdsprodtest0412 ?directory=dmpdir dumpfile=hbisdp_230411.dmp ?remap_schema=hbisdp:ecdsprodtest0412 ?logfile=20230412.log; ? directory ? ? --此路徑可以理解為實際絕對路徑在oracle數(shù)據(jù)庫里的別名,是導(dǎo)入文件的存儲位置 DUMPFILE ? ? ?--此參數(shù)為需要導(dǎo)入的dmp文件名 REMAP_SCHEMA ?--當(dāng)把用戶A的對象導(dǎo)入到用戶B時,使用此參數(shù) REMAP_TABLESPACE ?--用于進行數(shù)據(jù)的表空間遷移。把前一個表空間中的對象導(dǎo)入到冒號后面的表空間 LOGFILE ? ? ? --指定導(dǎo)入日志名稱
至此導(dǎo)入dmp文件完成
三、導(dǎo)入報錯處理
需刪除當(dāng)前創(chuàng)建的用戶,重新執(zhí)行上面的導(dǎo)入步驟
刪除用戶命令
drop user ECDSPRODTEST0412 cascade; ? 表示刪除用戶ECDSPRODTEST0412,同時刪除 ECDSPRODTEST0412 用戶下的所有數(shù)據(jù)對象,如 table, view 等 ? cascade 介紹與用法 ( oracle) 級聯(lián)刪除,比如你刪除某個表的時候后面加這個關(guān)鍵字,會在刪除這個表的同時刪除和該表有關(guān)系的其他對象
此時可能會出現(xiàn)這個問題,解決方案:
1)查看用戶的連接狀況
SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='ECDSPRODTEST0412';
如果報錯
則查詢所有的oracle用戶,找到要刪除的用戶對應(yīng)的名字
select * from all_users;
再次執(zhí)行
SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='ECDSPRODTEST0412';
2)刪除用戶所有連接的session文章來源:http://www.zghlxwxcb.cn/news/detail-501151.html
alter system kill session '213,4036';
最后再次刪除用戶文章來源地址http://www.zghlxwxcb.cn/news/detail-501151.html
drop user ECDSPRODTEST0412 cascade;
到了這里,關(guān)于dmp文件導(dǎo)入數(shù)據(jù)庫服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!