當前位置:
首頁 > 最新 > 關於一次Oracle資料庫DMP文件導入的記述

關於一次Oracle資料庫DMP文件導入的記述

這是一篇Pentaho產品不相關的Oracle資料庫操作記錄。僅以此紀念半夜之辛勞。

一 字符集探查

查看dmp的字符集和要導入的oracle的字符集是否一致。

查看oracle的字符集

SQL> select userenv("language") from dual;

USERENV("LANGUAGE")

-----------------------------------------------

SIMPLIFIED CHINESE_CHINA. ZHS16GBK

查看DMP文件字符集

使用UltraEdit打開,會看到字符集。

因DMP文件字符集(AL32UTF8)與Oracle資料庫字符集(ZHS16GBK)不一致。導致通過IMP程序導入時報錯:

IMP-00038: 無法轉換為環境字符集句柄

IMP-00000: 未成功終止導入

二 Oracle資料庫字符集更改

本次需更換的字符集.

AMERICAN_AMERICA.AL32UTF8

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

查看字符集命令

select * from v$nls_parameters;

select * from nls_database_parameters;

oracle資料庫的字符集更改 步驟

SQL> conn / as sysdba --需要使用SYSDBA帳戶

SQL> startup mount

SQL> shutdown immediate; --停止資料庫

SQL> startup mount; --啟動資料庫到 mount 狀態

SQL> alter session set sql_trace=true;

SQL> alter system enable restricted session;

SQL> alter system set job_queue_processes=0;

SQL> alter system set aq_tm_processes=0;

SQL> alter database open;

SQL>alter databasecharacter set INTERNAL_USE AL32UTF8; --修改字符集ZHS16GBK->AL32UTF8

SQL> shutdown immediate; --再次關閉資料庫

SQL> STARTUP; --啟動資料庫

查詢修改後的字符集

SQL> select userenv("language") from dual;

USERENV("LANGUAGE")

--------------------------------------------------------------------------------

SIMPLIFIED CHINESE_CHINA.AL32UTF8

三 導入DMP文件

1 實用程序IMP和IMPDP的區別

EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務端使用。EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用。

IMP只適用於EXP導出的文件,不適用於EXPDP導出文件;IMPDP只適用於EXPDP導出的文件,而不適用於EXP導出文件。

2 IMP實用程序導入DMP文件

由於不知此將導入的DMP文件是用exp實用程序導出還是用expdp實用程序導出。So,本次導入操作首先嘗試使用exp實用程序對應的imp實用程序進行操作。

在CMD界面輸入imp導入命令

C:UsersAdministrator>impdp scott/tiger file=c: est1.dmp full=y ignore=y;

執行後依然報下述錯誤:

IMP-00038: 無法轉換為環境字符集句柄

IMP-00000: 未成功終止導入

通過網路查找原因,造成此錯誤的疑是下述原因:

2.1 此DMP文件是採用expdp導出的數據文件,採用imp無法導入導致此錯誤。

解決方法:改用impdp實用程序執行導入操作。

2.2 由高版本資料庫導出的數據文件,在低版本資料庫無法正常導入。

解決方法:例如導出數據的伺服器版本是11.2.0.1.0,導入的伺服器版本為11.1.0.6.0導出語句末尾添加version=11.1.0.6.0。

Expdp 戶名/密碼 directory=目錄名 dumpfile=備份文件名.dmp logfile=日誌文件.log version= 11.1.0.6.0

3 IMPDP實用程序導入DMP文件

再次嘗試使用impdp實用程序進行導入操作。結果是成功的。證明此DMP文件是由expdp實用程序導出。

在使用impdp實用程序導入操作過程中,因導入語句拼寫錯誤導致多種導入錯誤產生,在此記述,以備後事之師。

3.1 導入目錄缺失

導入命令:

C:UsersAdministrator>impdp scott/tiger@XKZENON directory="c:" DUMPFILE=test1.

dmp full=y;

錯誤信息:

ORA-39002: 操作無效

ORA-39070: 無法打開日誌文件。

ORA-39087: 目錄名 C: 無效

解決辦法:

創建導入邏輯目錄,並給導入賬號scott賦予指定目錄的操作許可權。

SQL> create or replace directory expdir as "c:";

目錄已創建。

SQL> grant read,write on directory expdir to scott;

授權成功。

3.2 導入賬號為授權

導入命令修改為:

C:UsersAdministrator>impdp scott/tiger@XKZENON directory=expdir DUMPFILE=test1

.dmp full=y remap_schema=EDBADM:scott;

錯誤信息:

ORA-31631: 需要許可權

ORA-39122: 未授權的用戶不能執行 REMAP_SCHEMA 重新映射。

解決辦法:

當執行impdp操作指定remap_schema參數時,需要具備imp_full_database許可權。為導入賬號scott進行授權。

SQL> grant imp_full_database to scott;

授權成功。

3.3 導入表空間缺失

加remap_schema參數後,提示tablespace不存在。錯誤信息忘記截圖了哈:)。

在impdp導入命令中添加下述參數:

REMAP_TABLESPACE=sourcespacename:targetspacename

添加remap_tablespace參數後,依然提示表空間不存在。錯誤如下:

ORA-39083: 對象類型 TABLE:"SCOTT"."TEST1" 創建失敗, 出現錯誤:

ORA-00959: 表空間 "USERS;" 不存在

解決辦法:

通過網路查找原因,給出如下兩種方法:創建導出數據源表空間或者加入ignore = y 參數。

3.4 導入成功

通過加入ignore = y 參數。終於成功的將DMP數據文件導入到Oracle資料庫中。執行過程記錄如下。

C:UsersAdministrator>impdp scott/tiger@XKZENON directory=expdir DUMPFILE=test1

.dmp full=y remap_schema=EDBADM:scott REMAP_TABLESPACE=EDS_EQP_IDX_TBS:users ign

ore=y;

Import: Release 11.2.0.1.0 - Production on 星期二 1月 23 00:12:46 2018

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Produc

tion

With the Partitioning, OLAP, Data Mining and Real Application Testing options

由於以下參數, 舊有模式處於活動狀態:

舊有模式參數: "ignore=TRUE" 位置: Command Line, 替換為: "table_exists_action=app

end"

已成功載入/卸載了主表 "SCOTT"."SYS_IMPORT_FULL_01"

啟動 "SCOTT"."SYS_IMPORT_FULL_01": scott/********@XKZENON directory=expdir DUMP

FILE=test1.dmp full=y remap_schema=EDBADM:scott REMAP_TABLESPACE=EDS_EQP_IDX_TBS

:users table_exists_action=append

處理對象類型 TABLE_EXPORT/TABLE/TABLE

處理對象類型 TABLE_EXPORT/TABLE/TABLE_DATA

. . 導入了 "SCOTT"."TEST1" 372.4 MB 2882820 行

作業 "SCOTT"."SYS_IMPORT_FULL_01" 已於 00:13:36 成功完成


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

PHP-Beast 加密你的PHP源代碼

TAG:全球大搜羅 |