1.連接Oracle12C數據庫報錯,監聽程序無法識別請求服務
原因:數據庫連接的數據庫名字錯誤
要區分服務器連接名跟SID是否一樣
2.連接Oracle12C報錯,沒有匹配的驗證協議
原因:Oracle12C版本爲12.2.0.1.0,要求jdk1.8+ojdbc8.jar
網上有兩種方式,方式一修改爲ojdbc6.jar。方式二,修改配置文件。
因爲數據庫版本原因,方式一沒有生效,方式二可以。
解決辦法:
- 使用 jdk1.8+ojdbc8.jar
- 修改Oracle配置文件,允許低版本訪問
在Oracle的安裝路徑下找到sqlnet.ora文件。
(我的安裝路徑F:\app\root\root\product\12.1.0\dbhome_1\NETWORK\ADMIN)
在文件的最後添加SQLNET.ALLOWED_LOGON_VERSION=8
如果文件不存在,在該路徑下新建文件sqlnet.ora,加上這句話。
如圖:
3.Oracle10往Oracle12C導數據,報錯字段長度太長
原因:數據庫字符集不同導致,Oracle12c一個字佔3個字符,
解決辦法:將varchar類型的數據字段長度擴充1.5倍,但是不能超過4000修
將varchar類型的數據字段長度擴充1.5倍
select 'alter table '||table_name||' modify'||'('||column_name||
' '||data_type||'('||ceil(data_length*1.5)||'));'
from user_tab_columns where data_type like '%VARCHAR2%' AND COLUMN_NAME !='SHEETID'
and ceil(data_length*1.5)<=4000 and table_name not in(SELECT view_name FROM user_views)
執行查詢出來的數據,進行擴容
擴容結束後,導出數據庫
可能還是會存在問題,但是大部分問題解決,其他的可以根據日誌報錯去單獨添補缺