數據泵方式導入(impdp)數據,更新數據庫
注1:首先要確定你導出的數據庫是用數據泵的方式導出(expdp)的
注2:我是在有安裝Oracle數據庫的服務器上操作的
1. 查看當前用戶所在表空間
- 登入你要刪除的庫的用戶
- 查看當前用戶所在表空間
-- 如何查詢當前用戶的表空間名稱?
select default_tablespace from dba_users where username='AUTH_NEW'
2. 管理員的數據庫賬號密碼登錄
- 用plsql工具切換管理員賬號
- 也可以 直接進入黑窗口 cmd --> sqlplus / as sysdba
/*以管理員身份登錄*/
sqlplus / as sysdba
3. 刪除表空間、用戶
- 先刪除表空間(就是步驟1查出的表空間)
drop tablespace AUTH including contents and datafiles;
- 再刪除用戶
drop user AUTH_NEW cascade;
4.創建表空間、用戶、授權
注1:下面這些命令建議都在黑窗口下面敲,在plsql登入的管理員賬號下我昨天試了偶爾不太順利
注2:創建一個用戶名/密碼和上面刪除的一樣的就好,這樣就不用去改項目裏面配置的連接數據庫用戶密碼了;
1.管理員賬號登錄
cmd ----> sqlplus / as sysdba
2. 創建表空間
create tablespace AUTH datafile 'D:\lmgd\tablespace\AUTH.dbf' size 500M autoextend on next 200M;
create tablespace AUTH -- 表空間名
datafile 'E:\wonders\lmgd\tablespace\AUTH.dbf' --表空間放的路徑 路徑+文件名
size 500M autoextend on next 200M --表空間的大小,
3. 創建用戶
create user AUTH_NEW identified by AUTH_NEW default tablespace AUTH;
4.分配權限
grant dba to AUTH_NEW; -- 用這個最高權限
注:分配最高權限是由於,等會導入數據庫的時候怕沒有權限,不能導入;
導入(impdp)數據庫
5. 建立導入路徑(把導出的eamdb.dmp放在此路徑下),並授權。
create directory original as 'D:\lmgd\original';
grant read,write on directory original to AUTH_NEW;
- 然後把你按照你創建的目錄手動創建一個文件夾;我的就是在 D盤lmm目錄下創建一個 original文件夾
D:\lmgd\original
2. 然後再手動把你要導入的數據庫 .dmp文件放到、複製到 original文件夾裏面即可
6.導入數據庫
注:現在重新打開一個黑窗口,不用以 sqlplus管理員的身份登入啦!不然會報錯
cmd --> 然後再敲下面的命令
-- 正確的命令
impdp AUTH_NEW/[email protected]:1521/ORCLPDB REMAP_SCHEMA = dbuser:AUTH_NEW table_exists_action = replace directory=original dumpfile=xxxx.dmp
注意:這個 127.0.0.1換成你自己的服務器地址就好,然後dmp文件換成你自己的就好
-- 失敗的命令
-- 這個錯的 指定文件夾的名字 而不是路徑
impdp AUTH_NEW/[email protected]:1521/ORCLPDB REMAP_SCHEMA = dbuser:AUTH_NEW table_exists_action = replace directory=D:\lmgd\original dumpfile=xxxx.dmp
報錯整理
1.步驟6直接是以管理員身份登錄 sqlplus,再敲導入數據庫命令步驟的
報錯: SP2-0734:未知的命令開頭“IMPDP”
解決:重新打開一個黑窗口(cmd)敲導入數據庫命令即可
2.步驟6敲導入數據庫時報錯
報錯:
ORA-39002: 操作無效
ORA-39070: 無法打開日誌文件。
ORA-29283: 文件操作無效
原因:
- 沒有給用戶授權,步驟5有寫需要給用戶授創建的文件夾的讀寫權限;
- 檢查你的導入命令是否有問題
導出(expdp)數據庫
注:記得 cmd--->然後管理員賬號登入 sqlplus
/*以管理員身份登錄*/
sqlplus / as sysdba
以下簡單介紹schema的導出
以schema方式導出生產庫用戶下所有對象,並導入測試庫。
注:eamdb爲生產庫,eamprd爲生產庫用戶,密碼爲eamprd
eamuat爲測試庫,eamprduat爲測試庫用戶,密碼爲eamprduat
一、生產庫的導出(以sqlplus命令行的方式)。
1.以sys或者system用戶身份登錄生產數據庫。
2.創建schema導出路徑(DUMP_DIR名稱可替換),並在dba_directories中查看
create directory DUMP_DIR as ‘/xxx/xxx’; select * from dba_directories;
3.把導出路徑與導出權限授權給eamprd,如果用system等高級帳號導出,則不用。
grant read,write on directory DUMP_DIR to eamprd; grant exp_full_database to eamprd;
4.退出sqlplus,在oracle系統用戶下運行,導出對應的SCHEMA,推薦第二種。
expdp eamprd/eamprd@eamdb DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp expdp system/xxxx@eamdb directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd
導出重點參數:
版本:高往低需加version=xx.x 導出某些張表tables=xxxx content=metadata_only(只要結構) content=data_only(只要數據)
5.把eamdb.dmp拷貝到測試庫。
導出直接複製這篇文章的然後導入數據庫也有參考這篇COOL:
https://www.cnblogs.com/livebetter/p/9248568.html