1.使用管理員賬號(sys)登錄查詢字符集信息
第一步:查詢LinuxOracle數據庫的字符集
select userenv('language') from dual;
查詢結果集可能為:AMERICAN_AMERICA.ZHS16GBK根據查詢實際結果填寫
第二步:導出數據庫前先設置導出字符集
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
--(針對windows)
導出設置什么字符集導入有設置同樣的字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
--(針對Linux)導出設置什么字符集導入有設置同樣的字符集
注意:不管是Linux導出還是windows導出建議均設置導出字符集;並且導出和導入均設置一致的字符集,避免字符錯亂,導出數據庫前oracel11G可能會有空表導不出的情況;
此時需要進到SQL Developer 執行如下查詢:
SELECT 'ALTER TABLE ' || TABLE_NAME || ' ALLOCATE EXTENT;'FROM User_Tab_Comments where table_type='TABLE';
查詢出多張空表后,復制出到SQL窗口執行以下即可;
第三步:導出數據庫
exp:適用於數據庫較少的數據,數據量大時導出數據較久,花費時間較長;
expdp:適用於任何數據庫,對於較大數據導出時間短,速度快,該命令只能在服務端使用,用於導出大量數據。
exp 用戶名/密碼@數據庫 file=路徑 log=路徑
expdp 用戶名/密碼@數據庫 directory=數據庫配置的文件夾 dumpfile=數據庫導出名 logfile=數據庫導出日志名稱
PS:需要先建好用戶。
PSS:SQL> 表示要先用sys用戶登錄后創建,其中
'/data3/oracle'可以替換。
SQL>
create or replace directory expdir as '/data3/oracle'
--配置的路徑文件
exp 用戶名/密碼 file=***.dmp log=***.log fromuser=用戶名 touser=用戶名
exp qwer/qwer file=wer.dmp log=qwer.log
expdp 用戶名/密碼 directory=expdir dumpfile=***.dmp logfile=***.log
expdp qwer/qwer directory=expdir dumpfile=qwer.dmp logfile=qwer.log
導入:
impdp qwer/qwer directory=expdir dumpfile=qwer.dmp REMAP_SCHEMA=qwer:qwer EXCLUDE=USER full=y
imp qwer/qwer file=qwer.dmp log=qwer.log fromuser=qwer touser=qwer
第四步:cmd WindowsOracel數據庫字符集設置
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --
(針對windows)導出設置什么字符集導入有設置同樣的字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --
(針對Linux)導出設置什么字符集導入有設置同樣的字符集
第五步:導入數據庫
impdp qwer/qwer directory=expdir dumpfile=qwer.dmp REMAP_SCHEMA=qwer:qwer EXCLUDE=USER full=y
imp qwer/qwer file=qwer.dmp log=qwer.log fromuser=qwer touser=qwer
