ODC 常见问题

客户端版 ODC 安装问题

  1. Q:客户端版 ODC 安装预检查时会检查哪些项目?

    A:客户端版 ODC 预检查项目如下所示:

    • Windows 操作系统版本检查:仅支持 Windows 7 及以上版本。

    • 端口检查:查看 8989 是否被占用。在 ODC V2.3.0 后采用动态端口将不再检查该项。

    • Java 运行环境检查:建议安装 JDK 1.8.0_242 及以上版本。

  1. Q:客户端版 ODC 安装或启动失败时如何查看日志?

    A:在日志文件 main.log 中查看报错信息。日志的存放路径如下所示:

    • Linux: ~/.config/odc/logs

    • macOS: ~/Library/Application Support/Logs/odc/logs

    • Windows: %USERPROFILE%\AppData\Roaming\odc\logs

  1. Q:客户端版 ODC 安装或启动失败,提示端口冲突问题时该如何排查?

    A:查看占用了端口号 8989 的进程,关闭相关进程后重新安装或启动。ODC V2.3.0 及以上版本采用动态端口技术,不会出现该类问题。

    • 使用以下命令在 MAC 系统下查看端口号占用情况:

      lsof -i tcp:8989
    • 使用以下语句在 Win 系统下查看端口号占用情况:

      netstat -ano|findstr 8989

    ODC V3.2.0 支持自定义端口设置:

    • MAC 系统下需设置环境变量后通过命令启动:

      常见问题-端口自定义1常见问题-端口自定义2

    • Windows 通过环境变量设置 ODC_PORT 指定端口生效:

      常见问题-WIN端口自定义
  1. Q:客户端版 ODC 安装或启动失败,提示 Java 版本问题时该如何解决?

    A:使用以下命令查看 Java 运行环境,ODC 需使用 JDK 1.8.0_242 及以上版本,若版本低于 1.8.0_242 请更新 JDK 并重启电脑后重新安装或启动:

    java -version
  1. Q:客户端版 ODC 安装或启动失败,提示软件包损坏该如何解决?

    A:通过 sudo spctl --master-disable 后,选择任何来源。

    常见问题-安装包损坏解决
  2. Q:在 macOS 系统中安装 ODC 时,提示如下信息。0630BE10-49E1-4E06-BB2B-F55CDEEDC31FA:macOS 暂不支持直接安装,您可以参照 Apple 的支持文档查看如何安全的打开非通过 Apple Store 下载的应用,详情请参见文章 在 Mac 上安全地打开 App

Web 版 ODC 启动问题

  1. Q:从旧版本 ODC 升级至 V3.2.0 及以上版本时,出现用户名冲突(如 admin),且启动失败,应如何解决?

    A:

    报错示例:

    用户名冲突启动失败

    解决方案

    (以用户名 admin 冲突为例)

    1. 在安装目录下的 ../odc/static/tmp/rename.properties 中编辑 rename.properties,格式为

      admin=用户重命名
    2. 用户名修改完成后保存,再次尝试启动 ODC。

连接信息相关问题

  1. Q:ODC 执行 SQL 时连接中断,应如何解决?

    A:

    此问题因代理服务器超时导致,可通过浏览器调试模式检查 sql-execute 请求的 response 确认。

    可修改负载均衡配置,确保 proxy 超时配置时长充足。如 nginx 配置可修改如下:

    1. 增加以下 proxy 配置。

      proxy_read_timeout 1800;
      proxy_send_timeout 1800;
      proxy_connect_timeout 75;
      proxy_next_upstream off;
      说明

      建议 proxy_connect_timeout 参数不超过 75 秒,请参见 proxy_connect_timeout

      设置 proxy_next_upstream off 旨在禁止 nginx 将请求转发至下一个 ODC 节点,导致用户需重新登录,且某些功能不可用,如异步任务结果集下载等与文件上传下载相关的功能。

    2. 修改配置后重启 nginx 。

  2. Q:如何备份 ODC 中的连接信息?

    A:

    • 针对 Web 版 ODC,可直接迁移或备份部署 ODC 时创建的元数据库;

    • 针对客户端版 ODC,可备份用户目录下的 odc2.0.mv.db 文件,需恢复连接时,拷贝或替换该文件至到原目录下即可。

  3. Q:执行 SQL 超时时,应如何解决?

    A:当执行 SQL 超时时,可手动设置查询超时时间。在连接信息编辑页面的高级配置中,加大 SQL 查询超时时间 项的值。该设置项从 ODC V2.2.0 版本开始支持,若您使用的是低版本应用,请升级至 ODC V2.2.0 及以上版本。

  4. Q:如出现 proxyro 用户不存在的报错时,应如何解决?

    A:如出现报错信息 proxyro 用户不存在时,可在连接信息编辑页面的高级配置中,配置 查询 sys 租户视图 项来设置拥有查询 sys 租户视图权限的用户。该设置项从 ODC V2.2.0 版本开始支持,若您使用的是低版本应用,请升级至 ODC V2.2.0 及以上版本。

命令行工具相关问题

  1. Q:Windows 系统下桌面版 ODC 使用命令行工具建立连接后,如下图所示出现连接卡住后并断开的问题,应如何解决?Image 360A:这是因为环境中缺少 Windows 下系统库文件 msvcp120.dll 和 msvcr120.dll,请安装官方 Visual Studio 补丁

    说明

    Visual Studio 补丁安装后不用重启,建议更新 ODC 至最新版本,目前的 ODC 版本带有对应的 DLL 文件,无需再单独安装补丁。

编码相关问题

  1. Q:在使用 ODC 时出现查询结果集为乱码,应如何解决?

    A:出现此现象主要因客户端的编码和数据库认为的客户端编码不一致造成。ODC 客户端的编码分两种情况:

    位置

    Linux

    Mac

    Windows

    SQL 窗口

    UTF8

    UTF8

    UTF8

    命令行窗口

    UTF8

    UTF8

    GBK

    数据库认为的客户端编码可以通过数据库参数查看,查看方法:

    show variables like '%character_set_c%';
    show variables like '%character_set_r%';

    具体参数如下:

    常见问题-乱码

    可通过如下命令进行数据库认为的客户端编码调整:

    set names gbk;

    场景

    解决方案

    SQL 窗口执行 SQL 结果集中包含中文字符乱码
    • ODC 安装服务器:mac

    • OBserver的字符集编码:GBK

    • 查看现象

      在数据库中执行如下命令:

      show variables like '%character%';

      得到结果:

      character_set_client gbk
      character_set_connection gbk
      character_set_filesystem binary
      character_set_results gbk
      character_set_system gbk

      从现象可看出数据的字符集是 GBK,且数据库认为客户端使用的字符集也是 GBK。

    • 问题原因

      数据库认为客户端使用的字符集(GBK)与实际客户端的字符集(UTF8)不一致。

    • 解决方案

      调整数据库认为客户端使用的字符集,将其与实际客户端的字符集兼容。

      set names utf8mb4;

      调整完成后,在当前 session 内再执行 SQL ,查看结果集时即可避免中文乱码问题。

    命令行窗口中执行 SQL 结果集中包含中文字符乱码
    • ODC 安装服务器:windows

    • OBserver的字符集编码:utf8mb4

    • 查看现象

      在数据库中执行如下命令:

      show variables like '%character%';

      得到结果:

      character_set_client utf8mb4
      character_set_connection utf8mb4
      character_set_filesystem binary
      character_set_results utf8mb4
      character_set_system utf8mb4

      从现象可看出数据的字符集是 utf8mb4,且数据库认为客户端使用的字符集也是 utf8mb4。

    • 问题原因

      数据库认为客户端使用的字符集(utf8mb4)与实际客户端的字符集(GBK)不一致。

    • 解决方案

      调整数据库认为客户端使用的字符集,将其与实际客户端的字符集兼容。

      set names gbk;

      调整完成后,在当前 session 内再执行 SQL ,查看结果集时就可避免中文乱码问题。

    导入文件至数据库中,中文内容乱码
    • 文件编码:GBK

    • ODC 安装服务器:mac

    • OBserver的字符集编码:utf8mb4

    • 查看现象

      在数据库中执行如下命令:

      show variables like '%character%';

      得到结果:

      character_set_client utf8mb4
      character_set_connection utf8mb4
      character_set_filesystem binary
      character_set_results utf8mb4
      character_set_system utf8mb4
      从现象可看出数据的字符集是 utf8mb4,且数据库认为客户端使用的字符集也是 utf8mb4。
    • 问题原因

      因为此时用户是通过导入往数据库中写入数据,与 ODC 自身的客户端编码无关,需保证导入文件编码和数据库认为客户端使用的字符集保持一致。

    • 解决方案

      将导入文件由 GBK 转码至 UTF8 后,再导入,乱码问题解决。

数据导出导入问题

  1. Q:导入或导出数据失败时,任务汇总信息中抛出异常: javax.crypto.BadPaddingException: Given final block not properly padded 时该如何处理?

    A:看到该异常的原因是 OBProxy 密码解密失败。可通过以下三种方法解决:

    • 方法一:建议直接安装使用 Open JDK 1.8.0_242 及以上版本,这样可以保证 Jre 和 Jce 的版本一致。

    • 方法二:从 Oracle 官网下载与当前使用的 JDK 版本一致的 jce_policy 插件,解压后将其中的 local_policy.jar 和 US_export_policy.jar 文件替换原来的 Jar 文件即可。

    • 方法三:升级您的 ODC 应用至 V2.3.0 及以后版本。由于策略改变,ODC V2.3.0 后将不再出现这个问题。

DDL 语句展示问题

  1. Q:表结构 DDL 查看信息不全,应如何解决?

    A:获取索引和约束 DDL 本身就包含在现有的 DDL 中,可通过 DBMS_METADATA.get_ddlshow create table 实现。

    示例:

    -- 获取表索引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';
  2. Q:在视图或表管理页面查看视图或表的 DDL 语句时,所展示的语句不全被截断了。

    A:数据库对象管理页面的 DDL 页签调用了系统表 all_views 中字段 text 的内容,在 OBServer V2.2.70 之前, all_views 表中字段 text 的内容太长时会被截断,这个问题的 OBServer V2.2.70 后被修复了。您也可以使用 SHOW CREATE VIEW/TABLE 语句直接查询目标视图或表的完整结构语句。