ODC 常見問題
客戶端版 ODC 安裝問題
Q:客戶端版 ODC 安裝預(yù)檢查時(shí)會(huì)檢查哪些項(xiàng)目?
A:客戶端版 ODC 預(yù)檢查項(xiàng)目如下所示:
Windows 操作系統(tǒng)版本檢查:僅支持 Windows 7 及以上版本。
端口檢查:查看 8989 是否被占用。在 ODC V2.3.0 后采用動(dòng)態(tài)端口將不再檢查該項(xiàng)。
Java 運(yùn)行環(huán)境檢查:建議安裝 JDK 1.8.0_242 及以上版本。
Q:客戶端版 ODC 安裝或啟動(dòng)失敗時(shí)如何查看日志?
A:在日志文件 main.log 中查看報(bào)錯(cuò)信息。日志的存放路徑如下所示:
Linux:
~/.config/odc/logs
macOS:
~/Library/Application Support/Logs/odc/logs
Windows:
%USERPROFILE%\AppData\Roaming\odc\logs
Q:客戶端版 ODC 安裝或啟動(dòng)失敗,提示端口沖突問題時(shí)該如何排查?
A:查看占用了端口號(hào) 8989 的進(jìn)程,關(guān)閉相關(guān)進(jìn)程后重新安裝或啟動(dòng)。ODC V2.3.0 及以上版本采用動(dòng)態(tài)端口技術(shù),不會(huì)出現(xiàn)該類問題。
使用以下命令在 MAC 系統(tǒng)下查看端口號(hào)占用情況:
lsof -i tcp:8989
使用以下語句在 Win 系統(tǒng)下查看端口號(hào)占用情況:
netstat -ano|findstr 8989
MAC 系統(tǒng)下需設(shè)置環(huán)境變量后通過命令啟動(dòng):
Windows 通過環(huán)境變量設(shè)置 ODC_PORT 指定端口生效:
ODC V3.2.0 支持自定義端口設(shè)置:
Q:客戶端版 ODC 安裝或啟動(dòng)失敗,提示 Java 版本問題時(shí)該如何解決?
A:使用以下命令查看 Java 運(yùn)行環(huán)境,ODC 需使用 JDK 1.8.0_242 及以上版本,若版本低于 1.8.0_242 請(qǐng)更新 JDK 并重啟電腦后重新安裝或啟動(dòng):
java -version
Q:客戶端版 ODC 安裝或啟動(dòng)失敗,提示軟件包損壞該如何解決?
A:通過
sudo spctl --master-disable
后,選擇任何來源。Q:在 macOS 系統(tǒng)中安裝 ODC 時(shí),提示如下信息。A:macOS 暫不支持直接安裝,您可以參照 Apple 的支持文檔查看如何安全的打開非通過 Apple Store 下載的應(yīng)用,詳情請(qǐng)參見文章 在 Mac 上安全地打開 App。
Web 版 ODC 啟動(dòng)問題
Q:從舊版本 ODC 升級(jí)至 V3.2.0 及以上版本時(shí),出現(xiàn)用戶名沖突(如 admin),且啟動(dòng)失敗,應(yīng)如何解決?
A:
報(bào)錯(cuò)示例:
解決方案:
(以用戶名 admin 沖突為例)
在安裝目錄下的 ../odc/static/tmp/rename.properties 中編輯 rename.properties,格式為
admin=用戶重命名
用戶名修改完成后保存,再次嘗試啟動(dòng) ODC。
連接信息相關(guān)問題
Q:ODC 執(zhí)行 SQL 時(shí)連接中斷,應(yīng)如何解決?
A:
此問題因代理服務(wù)器超時(shí)導(dǎo)致,可通過瀏覽器調(diào)試模式檢查
sql-execute
請(qǐng)求的 response 確認(rèn)。可修改負(fù)載均衡配置,確保 proxy 超時(shí)配置時(shí)長充足。如 nginx 配置可修改如下:
增加以下 proxy 配置。
proxy_read_timeout 1800; proxy_send_timeout 1800; proxy_connect_timeout 75; proxy_next_upstream off;
說明建議proxy_connect_timeout
參數(shù)不超過 75 秒,請(qǐng)參見 proxy_connect_timeout。設(shè)置
proxy_next_upstream off
旨在禁止 nginx 將請(qǐng)求轉(zhuǎn)發(fā)至下一個(gè) ODC 節(jié)點(diǎn),導(dǎo)致用戶需重新登錄,且某些功能不可用,如異步任務(wù)結(jié)果集下載等與文件上傳下載相關(guān)的功能。修改配置后重啟 nginx 。
Q:如何備份 ODC 中的連接信息?
A:
針對(duì) Web 版 ODC,可直接遷移或備份部署 ODC 時(shí)創(chuàng)建的元數(shù)據(jù)庫;
針對(duì)客戶端版 ODC,可備份用戶目錄下的
odc2.0.mv.db
文件,需恢復(fù)連接時(shí),拷貝或替換該文件至到原目錄下即可。
Q:執(zhí)行 SQL 超時(shí)時(shí),應(yīng)如何解決?
A:當(dāng)執(zhí)行 SQL 超時(shí)時(shí),可手動(dòng)設(shè)置查詢超時(shí)時(shí)間。在連接信息編輯頁面的高級(jí)配置中,加大 SQL 查詢超時(shí)時(shí)間 項(xiàng)的值。該設(shè)置項(xiàng)從 ODC V2.2.0 版本開始支持,若您使用的是低版本應(yīng)用,請(qǐng)升級(jí)至 ODC V2.2.0 及以上版本。
Q:如出現(xiàn) proxyro 用戶不存在的報(bào)錯(cuò)時(shí),應(yīng)如何解決?
A:如出現(xiàn)報(bào)錯(cuò)信息 proxyro 用戶不存在時(shí),可在連接信息編輯頁面的高級(jí)配置中,配置 查詢 sys 租戶視圖 項(xiàng)來設(shè)置擁有查詢 sys 租戶視圖權(quán)限的用戶。該設(shè)置項(xiàng)從 ODC V2.2.0 版本開始支持,若您使用的是低版本應(yīng)用,請(qǐng)升級(jí)至 ODC V2.2.0 及以上版本。
命令行工具相關(guān)問題
Q:Windows 系統(tǒng)下桌面版 ODC 使用命令行工具建立連接后,如下圖所示出現(xiàn)連接卡住后并斷開的問題,應(yīng)如何解決?A:這是因?yàn)榄h(huán)境中缺少 Windows 下系統(tǒng)庫文件 msvcp120.dll 和 msvcr120.dll,請(qǐng)安裝官方 Visual Studio 補(bǔ)丁。
說明Visual Studio 補(bǔ)丁安裝后不用重啟,建議更新 ODC 至最新版本,目前的 ODC 版本帶有對(duì)應(yīng)的 DLL 文件,無需再單獨(dú)安裝補(bǔ)丁。
編碼相關(guān)問題
Q:在使用 ODC 時(shí)出現(xiàn)查詢結(jié)果集為亂碼,應(yīng)如何解決?
A:出現(xiàn)此現(xiàn)象主要因客戶端的編碼和數(shù)據(jù)庫認(rèn)為的客戶端編碼不一致造成。ODC 客戶端的編碼分兩種情況:
位置
Linux
Mac
Windows
SQL 窗口
UTF8
UTF8
UTF8
命令行窗口
UTF8
UTF8
GBK
數(shù)據(jù)庫認(rèn)為的客戶端編碼可以通過數(shù)據(jù)庫參數(shù)查看,查看方法:
show variables like '%character_set_c%'; show variables like '%character_set_r%';
具體參數(shù)如下:
可通過如下命令進(jìn)行數(shù)據(jù)庫認(rèn)為的客戶端編碼調(diào)整:
set names gbk;
場(chǎng)景
解決方案
SQL 窗口執(zhí)行 SQL 結(jié)果集中包含中文字符亂碼ODC 安裝服務(wù)器:mac
OBserver的字符集編碼:GBK
查看現(xiàn)象
在數(shù)據(jù)庫中執(zhí)行如下命令:
show variables like '%character%';
得到結(jié)果:
character_set_client gbk character_set_connection gbk character_set_filesystem binary character_set_results gbk character_set_system gbk
從現(xiàn)象可看出數(shù)據(jù)的字符集是 GBK,且數(shù)據(jù)庫認(rèn)為客戶端使用的字符集也是 GBK。
- 問題原因
數(shù)據(jù)庫認(rèn)為客戶端使用的字符集(GBK)與實(shí)際客戶端的字符集(UTF8)不一致。
解決方案
調(diào)整數(shù)據(jù)庫認(rèn)為客戶端使用的字符集,將其與實(shí)際客戶端的字符集兼容。
set names utf8mb4;
調(diào)整完成后,在當(dāng)前 session 內(nèi)再執(zhí)行 SQL ,查看結(jié)果集時(shí)即可避免中文亂碼問題。
命令行窗口中執(zhí)行 SQL 結(jié)果集中包含中文字符亂碼ODC 安裝服務(wù)器:windows
OBserver的字符集編碼:utf8mb4
查看現(xiàn)象
在數(shù)據(jù)庫中執(zhí)行如下命令:
show variables like '%character%';
得到結(jié)果:
character_set_client utf8mb4 character_set_connection utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_system utf8mb4
從現(xiàn)象可看出數(shù)據(jù)的字符集是 utf8mb4,且數(shù)據(jù)庫認(rèn)為客戶端使用的字符集也是 utf8mb4。
- 問題原因
數(shù)據(jù)庫認(rèn)為客戶端使用的字符集(utf8mb4)與實(shí)際客戶端的字符集(GBK)不一致。
解決方案
調(diào)整數(shù)據(jù)庫認(rèn)為客戶端使用的字符集,將其與實(shí)際客戶端的字符集兼容。
set names gbk;
調(diào)整完成后,在當(dāng)前 session 內(nèi)再執(zhí)行 SQL ,查看結(jié)果集時(shí)就可避免中文亂碼問題。
導(dǎo)入文件至數(shù)據(jù)庫中,中文內(nèi)容亂碼文件編碼:GBK
ODC 安裝服務(wù)器:mac
OBserver的字符集編碼:utf8mb4
查看現(xiàn)象
在數(shù)據(jù)庫中執(zhí)行如下命令:
show variables like '%character%';
得到結(jié)果:
character_set_client utf8mb4 character_set_connection utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_system utf8mb4
從現(xiàn)象可看出數(shù)據(jù)的字符集是 utf8mb4,且數(shù)據(jù)庫認(rèn)為客戶端使用的字符集也是 utf8mb4。- 問題原因
因?yàn)榇藭r(shí)用戶是通過導(dǎo)入往數(shù)據(jù)庫中寫入數(shù)據(jù),與 ODC 自身的客戶端編碼無關(guān),需保證導(dǎo)入文件編碼和數(shù)據(jù)庫認(rèn)為客戶端使用的字符集保持一致。
解決方案
將導(dǎo)入文件由 GBK 轉(zhuǎn)碼至 UTF8 后,再導(dǎo)入,亂碼問題解決。
數(shù)據(jù)導(dǎo)出導(dǎo)入問題
Q:導(dǎo)入或?qū)С鰯?shù)據(jù)失敗時(shí),任務(wù)匯總信息中拋出異常:
javax.crypto.BadPaddingException: Given final block not properly padded
時(shí)該如何處理?A:看到該異常的原因是 OBProxy 密碼解密失敗。可通過以下三種方法解決:
方法一:建議直接安裝使用 Open JDK 1.8.0_242 及以上版本,這樣可以保證 Jre 和 Jce 的版本一致。
方法二:從 Oracle 官網(wǎng)下載與當(dāng)前使用的 JDK 版本一致的 jce_policy 插件,解壓后將其中的 local_policy.jar 和 US_export_policy.jar 文件替換原來的 Jar 文件即可。
方法三:升級(jí)您的 ODC 應(yīng)用至 V2.3.0 及以后版本。由于策略改變,ODC V2.3.0 后將不再出現(xiàn)這個(gè)問題。
DDL 語句展示問題
Q:表結(jié)構(gòu) DDL 查看信息不全,應(yīng)如何解決?
A:獲取索引和約束 DDL 本身就包含在現(xiàn)有的 DDL 中,可通過
DBMS_METADATA.get_ddl
或show create table
實(shí)現(xiàn)。示例:
-- 獲取表索引DDL SELECT dbms_metadata.get_ddl('INDEX', 'indexname', 'username') from dual; -- 獲取表注釋 DDL SELECT 'comment on table ' || table_name || ' is ' || '''' || comments || ''';' FROM all_tab_comments where owner='USER1' AND table_name='T_1' ; -- 獲取表注釋 DDL 樣例 comment on table T_1 is 'desc 2'; -- 獲取列注釋 DDL SELECT 'comment on column ' || table_name || '.' || column_name || ' is ' || '''' || comments || ''';' FROM all_col_comments where owner='USER1' AND table_name='T_1' ; -- 獲取列注釋 DDL 樣例 comment on column T_1.ID is 'ID 3';
Q:在視圖或表管理頁面查看視圖或表的 DDL 語句時(shí),所展示的語句不全被截?cái)嗔恕?/p>
A:數(shù)據(jù)庫對(duì)象管理頁面的 DDL 頁簽調(diào)用了系統(tǒng)表
all_views
中字段text
的內(nèi)容,在 OBServer V2.2.70 之前,all_views
表中字段text
的內(nèi)容太長時(shí)會(huì)被截?cái)啵@個(gè)問題的 OBServer V2.2.70 后被修復(fù)了。您也可以使用SHOW CREATE VIEW/TABLE
語句直接查詢目標(biāo)視圖或表的完整結(jié)構(gòu)語句。