Oracle老版本SQL Developer 4.0.3实战:免安装连接11g与存储过程调试
简介Oracle SQL Developer 4.0.3.16.84-x64 是 Oracle 官方推出的免费数据库管理工具面向开发人员与数据库管理员用于连接、开发与维护 Oracle 数据库。该版本针对 64 位操作系统提供 SQL 编辑器、数据浏览与编辑、数据模型设计、数据迁移、PL/SQL 调试、性能分析及版本控制集成等能力新手可通过向导快速建立连接有经验者也能借助 AWR 报告与 SQL Tuning Advisor 深入优化性能。资源包为 zip 格式共约 2000 个文件以 jar 库、xml 配置、sql 脚本、xslt 样式、exe 可执行程序及 dll 动态库为主另含少量 html、pdf、properties 等说明与配置文件整体约 312MB。目前已有 769 人学习下载。解压后按目录结构即可完成部署适合需要稳定、功能完整的 Oracle 数据库开发与管理环境的读者直接使用。1. 为什么还有人专门找 sqldeveloper-4.0.3.16.84 这个老版本上周帮一个做金融外包的朋友排查环境他那边生产库还是 Oracle 11g R2客户给的跳板机上只允许装免安装的客户端工具。他试了最新版的 SQL Developer连上去能查但一执行带DBMS_OUTPUT的存储过程调试就报字符集错乱折腾一下午没结果。后来换回 sqldeveloper-4.0.3.16.84-x64 这个 2015 年前后的老版本问题直接消失。这不是玄学是版本与 JDK、OCI 驱动、数据库字符集之间的匹配问题。SQL Developer 是 Oracle 官方出的免费图形化数据库开发工具纯 Java 写的解压即用不需要安装。4.0.3 这个分支属于 4.0 系列的末期维护版内置 JDK 7 时代的运行环境对 Oracle 10g、11g 的兼容性反而比后面 17.x、19.x 那些强制要求 JDK 8 的新版更稳。它适合三类人一是维护老版本 Oracle 库的 DBA 和开发二是需要在隔离环境里用免安装工具连库的运维三是教学场景里不想折腾新版依赖的学生和讲师。下面我按实际拆包和连库的过程把这份资源怎么用、参数怎么填、坑在哪讲清楚。2. 解压即用目录结构、JDK 依赖与首次启动配置2.1 先看清压缩包里到底有什么拿到 sqldeveloper-4.0.3.16.84-x64 这个包解压后根目录通常长这样路径作用是否可删sqldeveloper.exeWindows 启动入口x64 专用否sqldeveloper/bin/核心 jar 与启动脚本否sqldeveloper/jdk/内置的 64 位 JDK否删了起不来sqldeveloper/jlib/依赖库含 JDBC 驱动否sqldeveloper/sqldeveloper.conf启动参数配置文件否ide/底层 IDE 框架否这个包是 x64 版本意味着它自带的 JDK 是 64 位的。如果你在 32 位系统上跑会直接提示不兼容。反过来如果你机器上已经装了别的 64 位 JDK也不用管它默认走自己jdk/目录里的那套不会去读系统环境变量里的JAVA_HOME。这一点很关键很多人启动报Unable to find a JDK就是因为误删了内置 jdk 目录或者手动改了 conf 文件指向了一个不存在的路径。2.2 首次启动要改的两个地方解压完别急着双击 exe。先打开sqldeveloper/bin/sqldeveloper.conf用文本编辑器看两行# 内存参数老机器默认可能偏小跑大结果集容易卡 AddVMOption -Xmx1024m # 用户配置目录默认在 C 盘用户目录下想便携就改到当前目录 # AddVMOption -Duser.home../userconfig第一行-Xmx1024m是最大堆内存。如果你经常查几十万行的结果集或者要开多个连接窗口建议改成-Xmx2048m。但别超过物理内存的一半否则 GC 会拖慢界面响应。第二行默认是注释掉的意思是配置写到系统用户目录。如果你想把整个工具放 U 盘里带着走就把注释去掉路径改成相对当前目录的../userconfig这样连接信息、SQL 历史都跟着 U 盘走换机器不用重新配。改完保存双击sqldeveloper.exe。第一次启动会弹一个「迁移用户设置」的对话框问你要不要从旧版本导入。如果是全新环境直接选「否」让它建一套干净的配置。启动过程大概 20 到 40 秒取决于磁盘速度界面出来之前会有一个 splash 窗口别以为卡死了。2.3 建第一个连接主机名、端口、SID 与 Service Name 的区别启动后左侧是「连接」面板右键新建连接。这里最容易填错的是「连接类型」那一栏。常见做法是选「基本」然后填主机名数据库服务器 IP 或域名端口默认 1521除非对方改过SID 或 Service Name这两个不是一回事SID 是实例名一个库一个实例的老架构用 SIDService Name 是服务名RAC 或者多实例环境用服务名。如果你不确定先问 DBA 要tnsnames.ora里的配置里面SERVICE_NAME和SID写得清清楚楚。填错了会报ORA-12505: TNS:listener does not currently know of SID given in connect descriptor这个错九成是 SID 和 Service Name 搞混了。用户名和密码填好后点「测试」。如果通了点「连接」。第一次连上会提示保存密码建议选「否」每次手动输避免密码明文存在本地。如果非要保存记得给系统账户设个登录密码不然别人拿到你电脑就能直接连库。3. 连库之后SQL 工作表、执行计划与导出结果的实操参数3.1 SQL 工作表里几个影响效率的开关连上之后主界面中间就是「SQL 工作表」。别急着写 SQL先看右上角两个按钮一个是「自动跟踪」一个是「执行计划」。「自动跟踪」打开后每条 SQL 执行完会自动在下面「自动跟踪」页签里生成执行统计包括db block gets、consistent gets、physical reads这些。调优的时候这个比set autotrace on方便不用切命令行。但注意它会给每条语句额外加一层统计采集批量跑脚本时建议关掉否则整体耗时会被拉长。「执行计划」按钮是 F6 快捷键选中 SQL 按 F6直接出图形化执行计划。看执行计划重点看三列Operation、Rows、Cost。如果看到TABLE ACCESS FULL出现在大表上而Rows估算值和实际返回行数差好几个数量级那多半是统计信息过期了需要让 DBA 收集一下。3.2 用脚本导出查询结果到 CSVSQL Developer 支持把结果集导出成 CSV、Excel、JSON 等格式。右键结果网格选「导出」然后选格式。但如果你要定期导手动点太慢可以用spool命令-- 在 SQL 工作表中执行把结果写到文件 spool D:\export\user_list.csv set colsep , set pagesize 0 set trimspool on set linesize 32767 select user_id || , || user_name || , || create_date from users; spool offset colsep ,指定列分隔符为逗号set pagesize 0去掉分页和标题行set trimspool on去掉行尾空格set linesize 32767防止长行被截断。这几行组合起来导出的 CSV 基本能直接给下游用。注意spool是 SQL*Plus 的命令SQL Developer 的工作表兼容大部分但个别版本对set linesize上限有差异如果报错就降到 2000 试试。3.3 存储过程调试断点、单步与 DBMS_OUTPUT 的坑SQL Developer 4.0.3 的存储过程调试功能是它比很多轻量工具强的地方。找到左侧「过程」节点展开你的包或存储过程右键「编译以进行调试」然后右键「调试」。界面会切到调试模式可以设断点、单步跳过、查看变量。这里有个血泪经验如果你的存储过程里用了DBMS_OUTPUT.PUT_LINE输出日志调试前必须确保「DBMS 输出」窗口是打开的并且勾选了「启用 DBMS 输出」。否则你单步走完日志一条都看不到还以为代码没执行。启用方式在菜单「视图」→「DBMS 输出」然后点那个绿色加号图标把缓冲区大小从默认 20000 改到 100000不然输出多了会被截断。另一个坑是权限。调试需要当前用户有DEBUG CONNECT SESSION和DEBUG ANY PROCEDURE权限。如果点「调试」报ORA-01031: insufficient privileges就是权限没给。让 DBA 执行grant debug connect session to your_user; grant debug any procedure to your_user;授权后重新连一次调试功能才能正常用。4. 避坑排查连接失败、乱码与启动报错的五条记录4.1 现象启动报「Unable to create an instance of the Java Virtual Machine」原因sqldeveloper.conf里的SetJavaHome指向了一个不存在的 JDK 路径或者内置 jdk 目录被杀毒软件隔离了。解决打开 conf 文件把SetJavaHome那一行注释掉让它用自带的 jdk如果 jdk 目录确实没了重新解压一份完整的包别单独去补 jdk。4.2 现象连接测试报「IO Error: The Network Adapter could not establish the connection」原因网络不通或者监听端口不对。先telnet 主机名 1521看端口通不通。如果 telnet 不通是防火墙或监听没起如果 telnet 通但 SQL Developer 还报这个错检查是不是填了 IPv6 地址而对方只监听 IPv4。解决换 IPv4 地址或者让 DBA 确认listener.ora里监听的协议。4.3 现象查询中文显示成问号或乱码原因客户端字符集和数据库字符集不一致。常见于数据库是ZHS16GBK而客户端环境变量NLS_LANG没设对。解决在 Windows 环境变量里加NLS_LANGSIMPLIFIED CHINESE_CHINA.ZHS16GBK或者在 SQL Developer 的「工具」→「首选项」→「数据库」→「NLS」里手动指定语言、地域、字符集。改完重启工具生效。4.4 现象执行计划按钮是灰的点不了原因当前连接没有PLAN_TABLE或者没有SELECT权限。执行计划依赖EXPLAIN PLAN FOR语句需要用户有PLAN_TABLE的写权限。解决让 DBA 执行?/rdbms/admin/utlxplan.sql建表然后grant select, insert, update, delete on PLAN_TABLE to your_user;。或者直接用SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);看最近一次的执行计划。4.5 现象导出 CSV 时数字变成科学计数法原因长数字被 Excel 自动识别成数值并截断精度。解决导出时选「导出为 CSV」然后在「首选项」→「数据库」→「导出」里勾选「将数字格式化为文本」。或者在 SQL 里用to_char(数字列)强制转成字符串再导出。这个坑在导身份证号、订单号时特别常见导完一定要用文本编辑器打开抽查几行。5. 进阶技巧用 tnsnames.ora 管理多环境与连接导入导出5.1 把 tnsnames.ora 挂进 SQL Developer如果你手头有多个环境开发、测试、生产每个环境的连接信息都写在tnsnames.ora里那不用在 SQL Developer 里一个个手填。打开「工具」→「首选项」→「数据库」→「高级」→「TNS 名称」把tnsnames.ora所在目录填进去。然后新建连接时「连接类型」选「TNS」下拉框里就会列出所有配置好的别名。tnsnames.ora的格式长这样# 开发环境 DEVDB (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 10.0.0.11)(PORT 1521)) (CONNECT_DATA (SERVICE_NAME devdb) ) ) # 测试环境 TESTDB (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 10.0.0.12)(PORT 1521)) (CONNECT_DATA (SERVICE_NAME testdb) ) )每个别名对应一个环境切换时只改下拉框不用重新输 IP 和端口。注意HOST后面别带空格SERVICE_NAME大小写要和数据库一致否则会报ORA-12514。5.2 连接信息的导入导出换机器或者重装工具时一个个重建连接很烦。SQL Developer 支持把连接导出成 XML。在「连接」面板右键选「导出连接」会生成一个connections.xml。新环境里右键「导入连接」选这个文件所有连接一次性恢复。但注意导出的 XML 里密码是加密的换机器后需要重新输一次密码这是正常的安全设计。我一般还会把常用的 SQL 片段存成「代码模板」。在「工具」→「首选项」→「数据库」→「SQL 编辑器」→「代码模板」里加几条比如sel展开成select * fromcnt展开成select count(*) from。这样写查询时少敲很多字。5.3 一个验证连接是否真正可用的笨办法有时候连接测试通过了但一执行 SQL 就报错。我习惯在连上之后先跑这三条-- 看当前用户和实例 select user, instance_name from v$instance; -- 看字符集 select parameter, value from nls_database_parameters where parameter like %CHARACTERSET%; -- 看版本 select banner from v$version;第一条确认连的是哪个库第二条确认字符集和客户端是否匹配第三条确认数据库版本方便判断哪些语法能用。这三条能跑通基本说明连接是健康的。从那以后我每次配新环境都强制走一遍这个检查省得后面写半天 SQL 才发现连错了库。希望帮到你。本文还有配套的精品资源点击获取