1. 程式人生 > >Exp Imp 匯入匯出常見問題解決方法

Exp Imp 匯入匯出常見問題解決方法

1、IMP匯入時出現表空間不存在

表空間 'EAI1011' 不存在

表空間 'YGZJ_DATA' 不存在

表空間 'WEBMDATA' 不存在

因為已經是匯入錯誤了 所以要重新刪除後再匯入

解決方法 建立表空間 ,刪除已經匯入的表,重新匯入操作


drop user JXPCYW CASCADE;
DROP USER EAI CASCADE;  
DROP USER JXPCJIEKOU CASCADE;
DROP USER YGZJ CASCADE;

CREATE USER "EAI" PROFILE "DEFAULT" IDENTIFIED BY "EAI" DEFAULT
TABLESPACE "EAI" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "EAI"; GRANT "DBA" TO "EAI"; GRANT "RESOURCE" TO "EAI"; CREATE USER "YGZJ" PROFILE "DEFAULT" IDENTIFIED BY "YGZJ" DEFAULT TABLESPACE "YGZJ" ACCOUNT UNLOCK; GRANT "CONNECT" TO "YGZJ"; GRANT "DBA" TO "YGZJ"; GRANT "RESOURCE" TO "YGZJ"; CREATE USER
"JXPCYW" PROFILE "DEFAULT" IDENTIFIED BY "JXPCYW" DEFAULT TABLESPACE "JXPCYW" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "JXPCYW"; GRANT "DBA" TO "JXPCYW"; GRANT "RESOURCE" TO "JXPCYW"; CREATE USER "JXPCJIEKOU" PROFILE "DEFAULT" IDENTIFIED BY "JXPCJIEKOU" DEFAULT TABLESPACE "JXPCJIEKOU" ACCOUNT UNLOCK; GRANT
"CONNECT" TO "JXPCJIEKOU";
GRANT "DBA" TO "JXPCJIEKOU"; GRANT "RESOURCE" TO "JXPCJIEKOU";

然後重新建立表空間


CREATE SMALLFILE TABLESPACE "EAI1011" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EAI101101.dbf' SIZE 1G AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE SMALLFILE TABLESPACE "YGZJ_DATA" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\YGZJ_DATA01.dbf' SIZE 1G AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

CREATE SMALLFILE TABLESPACE "WEBMDATA" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\WEBMDATA01.dbf' SIZE 1G AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;

注意:一定要在初始的時候開啟自動擴充套件 然後表空間儘量大 儘量大

CREATE SMALLFILE TABLESPACE "EAI" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EAI01.dbf' SIZE 100M AUTOEXTEND ON NEXT 20M MAXSIZE 4G LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
ALTER TABLESPACE "EAI" ADD DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EAI02.DBF' SIZE 10G

然後重新匯入

imp jxpcyw/XXXXX file=/home/oracle/jxpcyw_2016-06-02.dmp ignore=y fromuser=JXPCYW touser=jxpcyw grants=n log=jxpcyw20160602.log

imp eai/XXXX file=/home/oracle/jxpceai_2016-06-02.dmp ignore=y fromuser=EAI touser=eai grants=n log=eai20160602.log

imp jxpcjiekou/XXXXXX file=/home/oracle/jxpcjk_2016-06-02.dmp ignore=y fromuser=JXPCJIEKOU touser=jxpcjiekou grants=n log=JK20160602.log data_only=n ;

imp ygzj/XXXXX file=/home/oracle/jxpcygzj_2016-06-02.dmp ignore=y fromuser=YGZJ touser=ygzj grants=n log=ygzj20160602.log

接下來在匯入的過程中,經常會出現如下問題;

Oraclet命令列imp時報值太大(ORA-12899)
不停的迴圈,提示欄位值太大

檢視日誌

經由常規路徑由 EXPORT:V11.02.00 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
匯入伺服器使用 AL32UTF8 字符集 (可能的字符集轉換)

解決辦法是:修改字符集

解決辦法:

SQL>select * from V$NLS_PARAMETERS
SQL>conn / as sysdba
SQL>shutdown immediate
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION  --單使用者  如果是確定沒有其他人在用的機器可以不用管
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0  --取消任務 如果是確定沒有其他人在用的機器可以不用管
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0 --取消queue monitor 如果是確定沒有其他人在用的機器可以不用管
SQL>ALTER DATABASE OPEN
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK

ALTER SYSTEM DISABLE RESTRICTED SESSION
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

測試OK

有時候ORACLE 11G 以上的資料庫會不匯入資料量為0的資料,可以如下處理

--11g 出現了空表不匯出的問題 ---每個使用者都要執行的 
用 這個語句 生成批處理
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;


alter table T_TASK allocate extent;
alter table T_SIMPLE_QUEUE allocate extent;
alter table T_JMS_SUBSCRIPTIONS allocate extent;
alter table T_JMS_QUEUE allocate extent;
alter table T_JMS_EVENTS allocate extent;
alter table T_JMS_DESTINATIONS allocate extent;
alter table TPALOCK allocate extent;
執行批處理