1、情況解釋
1.1、英文報錯截圖
1.2、配置環境變量,然後可以看到中文的提示
TNS_ADMIN:oracle根目錄\product\11.2.0\dbhome_1\NETWORK\ADMIN
NLS_LANG:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
1.3、問題原因解釋
場景描述:
通過navicat連接配接了oracle資料庫,然後通過navicat導出了xx.sql的檔案。但是更換了不同的伺服器的oracle資料庫之後,使用navicat導入的時候報錯。報錯如上圖。
導緻問題原因:
資料庫的字元編碼不同,oracle預設的是英文的編碼。換成中文之後,位元組數就不一樣了。
2、解決過程
1、打開控制台,用sys賬号連接配接上
C:\Users\Administrator>sqlplus sys/pass as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 7月 13 19:09:15 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連接配接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
2、關閉資料庫
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
3、mount
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 1.3629E+10 bytes
Fixed Size 2188688 bytes
Variable Size 7113542256 bytes
Database Buffers 6476005376 bytes
Redo Buffers 37343232 bytes
資料庫裝載完畢。
解釋: startup nomount:啟動執行個體,讀取參數檔案,配置設定記憶體空間,啟動背景程序,打開跟蹤檔案和報警檔案。startup mount:裝載資料庫,打開控制檔案。nomount方式下還沒有讀取控制檔案,該選項用于在資料庫的控制檔案全部損壞,需要重新建立資料庫控制檔案或建立一個新的資料庫時使用。mount 選項下并沒有打開資料檔案,該選項可以用來修改資料庫的運作模式或進行資料庫恢複。
4、設定session
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
系統已更改。
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
系統已更改。
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
系統已更改。
5、啟動資料庫
SQL> alter database open;
資料庫已更改。
6、修改字元集
會報錯,提示我們的字元集:新字元集必須為舊字元集的超集,這時我們可以跳過超集的檢查做更改:
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
第 1 行出現錯誤:
ORA-12712: 新字元集必須為舊字元集的超集
加了TERNAL_USE,就會使oracle繞過了子集與超集的驗證,這條語句和上面的語句内部操作時完全相同的。
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
資料庫已更改。
7、關閉,重新啟動
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup;
ORACLE 例程已經啟動。
Total System Global Area 1.3629E+10 bytes
Fixed Size 2188688 bytes
Variable Size 7113542256 bytes
Database Buffers 6476005376 bytes
Redo Buffers 37343232 bytes
資料庫裝載完畢。
資料庫已經打開。
SQL>
3、導入和導出指令
導入和導出指令,預設路徑都是D:\app\Administrator\admin\orcl\dpdump。導出預設路徑這個,如果改了就報錯。導入指令預設路徑也是這個,如果加路徑就會報錯。
impdp 賬号/密碼@127.0.0.1/orcl dumpfile= backupfile.dmp full=y
expdp 賬号/密碼@127.0.0.1/orcl dumpfile=backupfile.dmp logfile=logfile.log