尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SQL Developer 18.4 安装配置实战:从解压到连接数据库的避坑手册

SQL Developer 18.4 安装配置实战:从解压到连接数据库的避坑手册 简介SQL Developer 18.4.0 64位安装包是甲骨文官方出品的数据库开发与管理工具面向需要频繁操作Oracle、MySQL等数据库的DBA、开发人员和数据分析师用于解决跨平台SQL编写、调试、数据迁移与日常管理效率低下的问题。这份zip压缩包共收录2000个文件大小428.22MB内部以Java类库jar文件为程序主体xml与properties用于配置环境html/XSLT文档提供说明SQL脚本提供示例dll/so等动态库保证不同系统下的兼容运行。已有512人学习/下载。解压后即可获得官方64位软件本体及其依赖组件包含可视化查询编辑器、对象浏览器、SQL优化建议与版本控制集成等核心功能同时附带的证书、启动脚本和配置文件能帮助用户快速在Windows/Linux/macOS等平台启动运行显著提升数据库运维和开发效率适合需要快速搭建数据库工具环境的中高级使用者也可作为教学演示或企业内部分发的离线安装包。1. 为什么我到现在还在用 SQL Developer 写数据库代码先交代一下背景。我手里管着几十套 Oracle 数据库日常干得最多的活儿就是写 PL/SQL 脚本、排查慢 SQL、做数据比对、给业务部门出报表结果。工具换过好几轮Toad 用过一阵子PL/SQL Developer 也买了授权DBeaver 偶尔拿来连 PostgreSQL。但最后打开频率最高的还是 Oracle 官方出的 SQL Developer。原因很简单它和数据库同源兼容性永远是最稳的。尤其是在 Oracle 12c、18c、19c 这几个版本上SQL Developer 对隐藏参数、高级特性、数据泵这类东西的支持是第三方工具比不了的。你拿别的工具连 18c 的 PDB可能出现莫名其妙的字符集问题或者某些数据字典视图查不出东西但 SQL Developer 基本不会。我这篇文章就是以sqldeveloper-18.4.0-376.1900-x64.zip这个实际安装包为例子把从下载、解压、配置 JDK、连接数据库到日常开发中的实用设置和踩坑经验完整梳理一遍。这篇文章适合这几类人看刚入行的 DBA 或后端开发需要一套能立刻上手的 Oracle 客户端工具公司内网环境受限只能拿着安装包离线部署的人被各种工具折腾到烦想找一个装上就能用、别老出幺蛾子的方案的人。我先说句大实话SQL Developer 的安装方式和你想象中可能不太一样它不需要跑安装向导没有注册表也不往系统目录里塞一堆 DLL。它就是一个 zip 包解压即用。但这个简单背后其实藏着不少坑版本选不对、JDK 对不上、配置文件的参数写错都会让它在启动阶段就罢工。2. 选择 18.4.0 这个版本前先看懂版本号和 x64 标识2.1 版本号拆开看18.4.0 里的每个数字都在告诉你信息sqldeveloper-18.4.0-376.1900-x64这个文件名拆开看是有讲究的。18 代表的是主版本号对应 Oracle 数据库 18c 的时代。4.0 是更新版本也就是说在 18c 的生命周期里这个工具至少做过了四轮较大的功能迭代。376.1900是 Oracle 内部的构建编号其中 1900 通常表示 2019 年的某个时间点——所以这个版本修复了很多 18c 早期版本遗留的 bug同时又没到 19.1、19.2 那种大改版属于功能成熟度和稳定性平衡得最好的一个版本。我刻意没有去追最新版比如 21.x、23.x。原因不是新版本不好而是对于生产环境来说工具的首要价值是稳而不是新。新版 SQL Developer 确实带了一些新特性比如对 MongoDB 的支持、REST Data Services 的集成面板但我的业务场景用不上这些。如果团队里其他人还在用 18.x 或者 19.x保持同一世代的工具导出导入配置时互相兼容的程度更高也少了很多版本差异带来的沟通成本。2.2 x64 不是随便标一标的这些细节影响你的 JDK 选择文件名末尾的-x64指的是这个安装包是针对 64 位操作系统编译的。如果你用的是 64 位 Windows 10 或 Windows 11那选 x64 版本完全没问题。现在基本上没人再用 32 位系统跑开发工具了但即使你系统是 64 位JDK 也得用 64 位的这点我后面会详细说。18.4.0 这个版本对 JDK 的要求是 8 及以上版本。Oracle 官方说支持 JDK 8 和 JDK 11。我用的是 JDK 1.8也就是 Java 8的 64 位版本跑了差不多两年没出过兼容性问题。这里要说一个重要知识点SQL Developer 18.4 在启动时会自动检测JAVA_HOME环境变量如果系统里装了多个版本的 Java它会优先找JAVA_HOME指向的那个。这一点既是方便也是坑因为我见过太多同事的电脑上JAVA_HOME指向了一个 32 位的 JDK结果 SQL Developer 尽管是 64 位版本启动时依然报错提示找不到适合的 Java 运行时环境。2.3 下载渠道怎么选官方渠道和离线镜像的取舍以前 Oracle 官网下载要登录账号、同意一堆协议不是很方便。现在 Oracle 已经把 SQL Developer 的下载页面改得友好多了直接就能下载 zip 包。但内网环境、或者官网访问不稳定的情况很多人会选择从一些高校镜像站或者网盘拿到这个包。不管你从哪个渠道拿到压缩包拿完之后第一件事就是校验文件哈希。Oracle 官网上每个版本都公布了对应的 SHA-1 或 SHA-256 值。在 PowerShell 里执行Get-FileHash .\sqldeveloper-18.4.0-376.1900-x64.zip -Algorithm SHA256把算出来的值和官网对一下一致才解压。这个习惯特别重要尤其是内网环境下你根本不知道文件在传输过程中有没有被人动过手脚。不是危言耸听开发工具被植入恶意代码的事在行业内是发生过的。3. 从压缩包到连接上数据库完整安装实操记录3.1 解压位置选不好后面全是坑解压这个 zip 包看起来是操作的第一步但其实这里已经藏着一个坑了。很多人习惯把 zip 包右键直接解压到当前文件夹结果sqldeveloper这个目录就直接躺在下载目录里和一堆乱七八糟的文件混在一起。这样做的问题在于SQL Developer 运行时会在自己的安装目录下生成配置文件和日志如果目录层级过深或者路径中有中文、空格启动时会有小概率出现路径解析异常。我的做法是这样在D:\或C:\根目录下新建一个专门的目录比如D:\oracle-tools把 zip 包拷贝到这个目录下右键解压得到D:\oracle-tools\sqldeveloper这个完整的目录结构。选在根目录下建多层目录有一个额外的好处后续配置JAVA_HOME或者命令行调用sqldeveloper.exe时路径短、好记、不容易出错。路径这个东西平时看着不显眼真出了问题排查起来是很费时间的。3.2 配置 JDK改配置文件而不是动系统环境变量解压完先别急着双击sqldeveloper.exe。先把 JDK 环境准备好。我的电脑之前装过好几个版本的 Java比如 JDK 8、JDK 11、JDK 17。如果直接把JAVA_HOME改成 JDK 8可能会导致别的依赖高版本 Java 的软件出问题。所以我更推荐一种更克制的做法只改 SQL Developer 自己的配置文件不动全局环境变量。找到安装目录下的文件D:\oracle-tools\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf用记事本打开找到这一段SetJavaHome ../../jdk把../../jdk改成你本机 JDK 8 的实际路径比如SetJavaHome D:\dev\jdk1.8.0_202注意这里写的路径必须以 JDK 的根目录为准不是bin目录也不是lib目录。SetJavaHome指向的目录下必须能直接看到bin\java.exe这个文件。如果复制的时候界面上显示找不到 Java 运行时环境大概率就是这里路径写错了或者指向了JRE而不是JDK。SQL Developer 在启动时是需要javac和jar这些工具的所以不能只给一个 JRE必须是完整的 JDK。3.3 双击启动后界面卡死的两个高频原因配置好sqldeveloper.conf后双击sqldeveloper.exe会看到启动界面。但有一个高频问题就是卡在启动画面转了十几分钟进不去。我排查过很多次原因基本是这两种第一种是防火墙拦截了 Java 进程的网络请求。SQL Developer 启动时会尝试访问网络检查更新如果防火墙弹出提示而你点了阻止某些情况下主界面会一直等待网络响应。解决方法是在 Windows Defender 防火墙的允许应用通过防火墙里把java.exe对应的条目改成允许或者干脆把 SQL Developer 的自动更新检查关掉。第二种是工作目录权限不足。SQL Developer 会在用户目录下创建AppData\Roaming\SQL Developer之类的配置目录。如果公司电脑上的用户目录被安全策略锁了写入权限启动过程就会卡住。这个情况比较隐蔽因为界面没有任何错误提示单纯的卡。处理办法是检查一下这个目录是否存在、有没有写入权限实在不行就给它手动加完全控制的权限。3.4 新建连接从连接到写 SQL 的完整步骤成功启动后正式进入连接配置环节。左侧连接面板里点击左上角的加号会弹出新建数据库连接窗口。这里面的关键字段我逐一说明连接名这是本地别名只对你自己有意义。建议按业务线_环境_用途的格式命名比如order_pdb_dev方便后期管理大量连接用户名 / 密码数据库账号建议本地保存密码勾上省得每次重启工具都要重新输入连接类型默认是基本。如果你是通过 SSH 跳板连远程数据库这里下拉框里还有 SSH 相关的选项。这个功能真的方便后面第4节我会展开讲主机名 / 端口Oracle 默认 1521服务名 / SID这是新手最容易迷糊的地方。Oracle 12c 以后基本都是多租户架构你连接 PDB 时用的是服务名而 SID 只是实例标识。填完之后点测试按钮能看到左下角状态栏变成状态成功再点连接就进入工作区了。双击左侧已保存的连接也可以快速进入。我第一次用这个工具时在SID 还是服务名上栽过跟头当时连接一直报 ORA-12505就是因为用 SID 填了 PDB 的数据库名但实际应该选服务名。进了工作区之后写 SQL 其实和别的工具差别不大上面是 SQL 工作表下面是执行结果。选中一段 SQL 按CtrlEnter只执行选中部分这个习惯务必养成。4. 我用得最顺手的几个功能配置不设置等于白装4.1 SSH 隧道连接远程数据库省掉一层跳板机的工单前面提到连接类型里有 SSH这里展开说。很多公司的数据库部署在内网DBA 会分配一个跳板机账号给你。传统做法是先用 Xshell 之类的工具建一个 SSH 隧道再做端口转发SQL Developer 里填localhost:1521才能连上。过程繁琐而且隧道断了还得重新建。SQL Developer 18.4 自带的 SSH 支持可以省掉这一步。新建连接时把连接类型改成 SSH填上跳板机的 IP、端口默认22、用户名和密码或者密钥文件然后把数据库的主机名填成内网真实的数据库 IP端口填数据库监听的端口。工具会自己先建立 SSH 通道再走这个通道去连数据库。这个功能我用了很久之后回头看确实帮我省了至少一张跳板机端口开通的工单。因为通过 SSH 通道走的是 22 端口大部分安全策略不会拦。但有几个细节要注意跳板机的系统如果限制了登录来源 IP那 SQL Developer 的 SSH 出口 IP 必须在白名单里另外用密钥登录时私钥格式要 PEM 格式如果用的是 PuTTY 生成的 PPK 格式需要先转换一下。4.2 自动补全和 SQL 格式化参数写代码效率翻倍SQL Developer 默认的自动补全有时候不会自动弹出需要手动按快捷键。在菜单栏里选工具→首选项在搜索框里输入Completion找到代码编辑器相关的补全设置项把以下三个勾都勾上自动弹出完成建议把表名、视图名、列名纳入建议范围自动弹出 SQL 关键字建议设置完之后写一个SELECT * FROM ord的时候工具会直接弹出orders表名回车就补全了。列名也一样出了表名后敲一个空格它会列出这个表的所有列。这个不要嫌小等你一天写几百行 SQL 的时候这会给你节约出很多时间。另外是 SQL 格式化。团队里如果有严格的代码规范可以用内置的格式化功能。选中一段 SQL按CtrlF7SQL Developer 会把关键字统一大写、缩进重新排列。在首选项→数据库→SQL 格式化程序里可以自定义规则比如关键字要不要大写、逗号放在行首还是行尾。这套东西默认配置已经比较符合大众审美一般不需要额外调整。不过有一点要提醒格式化对包含复杂 JPQL 或者嵌套子查询的 SQL 偶尔会处理得不太理想尤其是WITH子句特别长的时候格式化之后可能并不完全符合你的分组意图。我的习惯是小范围选中关键片段格式化不全篇一键格式化。4.3 导出查询结果为 INSERT 语句迁移数据时比什么工具都好用做数据订正、把测试数据迁到预发环境这种事以前我会借助第三方工具生成 INSERT 脚本。后来发现 SQL Developer 自带的功能已经做得很好。查询结果出来之后在结果网格上右键选择导出格式选 SQL 的 INSERT 语句。你会看到几个特别实用的选项是否包含列名是否每个 INSERT 单独一行还是合并成一个多行 insert是否限制行数数据量太大时可以分批导出。我自己做数据订正时的习惯是先在 SQL 里写好过滤条件确认数据量不超过 2000 行然后导出 INSERT 脚本放事务里执行。因为生产环境直接多行 insert 一旦中间某条出错整个脚本回滚很麻烦拆成单个 INSERT 放进事务会更安全可控。这个控制数据量 分批执行的思路其实比工具本身更值得你关注。5. 结合 x64 和 Windows 环境我实际踩过的坑和验证过的解决办法5.1 Java 与 x64 不匹配导致的Unable to launch报错这个坑我真的踩过而且不止一次。有次我在一台 Windows 7 x64 的机器上部署 SQL Developer 18.4解压后双击sqldeveloper.exe直接弹一个对话框Unable to launch。原因是这台机器虽然装了 JDK但装的是 32 位版本且没有设置JAVA_HOME。而我解压的 SQL Developer 是 x64 版本它去系统目录里找 Java找到的是 32 位的就不认。解决办法其实很简单但当时我绕了很大一圈才知道要么保证 JDK 是 64 位要么就在sqldeveloper.conf里用SetJavaHome显式指定一个 64 位 JDK 的路径。我用的是后面那种方式因为不动系统全局环境变量对机器上的其他软件影响最小。这个坑的根因本质上是 JVM 在 Windows 下的位数匹配机制。64 位 JVM 和 32 位 JVM 不兼容你装了两个 Java 也没用SQL Developer 只会挑一个它看起来合适的。如果你启动时遇到过类似提示别急着重装工具先检查 JDK 位数和SetJavaHome路径多半问题就出在这。5.2 Oracle 连接报错 ORA-12514服务名还是 SID 的问题另一个高频坑是连接测试时直接报ORA-12514: TNS:listener does not currently know of service requested in connect descriptor这个错意味着客户端提交的服务名监听器不认识。常见场景是你拿 SID 去连 PDB 数据库。在 Oracle 18c 多租户架构中PDB 有自己的名字同时也有一个服务名两者通常相同但也可能不同。最好在数据库服务器上执行show parameter service_names;把返回的服务名填到 SQL Developer 的连接配置里别凭印象填 SID。这一步排查逻辑也适用于 DBeaver、Toad只要连 Oracle 都会遇到。另外在连接配置界面不要只填了服务名忘了端口。有时候默认端口是 1521但你们的数据库可能是在 1522 或自定义端口上监听报错就是 ORA-12541 或者连接超时。先用命令lsnrctl status在数据库服务器上看一眼实际监听的端口和注册的服务名再回来填配置一次就通。5.3 界面中文乱码的完整修复方案如果连接后查询发现数据出现乱码通常是因为客户端和数据库的字符集不一致。先执行SELECT USERENV(language) FROM dual;看返回结果。如果客户端环境是SIMPLIFIED CHINESE_CHINA.ZHS16GBK而数据库字符集是AL32UTF8连接时就可能出现乱码。对于 SQL Developer 18.4 来说字符集一般会跟随 JDBC 驱动自动处理大概率不会出问题。但有一种情况例外你在 Windows 系统的区域设置中改了非 Unicode 程序的语言导致 Java 读取系统默认字符集出错。解法是在sqldeveloper.conf中添加一行AddVMOption -Dfile.encodingUTF-8加完之后重启工具。这个问题在 Windows 中文环境下时有发生特别是换了系统语言区域后会突然出现。5.4 大结果集查询导致内存溢出调整 JVM 堆内存SQL Developer 本身是 Java 应用默认启动内存是有限制的。如果你经常执行SELECT *查那种几百万行的表工具可能直接卡死或者报java.lang.OutOfMemoryError: Java heap space。在sqldeveloper.conf里找到这两个参数默认值通常是AddVMOption -Xms128M AddVMOption -Xmx128M我把-Xmx调到了 1024MAddVMOption -Xms256M AddVMOption -Xmx1024M注意-Xms是初始堆大小-Xmx是最大堆大小。如果你的机器内存只有 4G别把-Xmx调到 2048M因为 SQL Developer 还要留一部分给 Java 的元空间和线程栈调得太大反而会因为系统内存不足拖慢整体运行速度。我的经验是 1024M 对绝大多数场景足够。调整完重启工具再跑以前会把工具弄崩的大查询就能正常处理了。不过我还是要啰嗦一句能带上限的查询请务必写上ROWNUM或者限定条件别把工具当命令行终端一样肆无忌惮地全表扫。6. 我安装配置 SQL Developer 18.4 时的一些最终体会文章最后说几句真心话。如果让我在两年前重新选择我依然会选 SQL Developer 18.4 作为日常 Oracle 开发的主力工具。不是因为它是免费的虽然开源免费确实是一个加分项而是因为它在开箱即用和深度功能之间做到了一个很好的平衡。安装阶段只要你记住三件事文件哈希先校验、JDK 用 64 位且路径要写对、配置文件改参数用sqldeveloper.conf而非乱动全局变量。这三条线捋顺了基本就不会出现装上打不开、打开连不上、连上乱码这类常见问题。最近又有一次同事请我帮忙说他的 SQL Developer 能看到连接列表但一测试就报 ORA-01017用户名密码错误。我过去一看发现他用的是 SYS 账号去连普通业务库没有加AS SYSDBA的连接角色。这个虽然只是个使用习惯问题但侧面说明工具本身再强大连接参数的含义如果不理解照样会被绕晕。所以如果你看完这篇文章能对版本号、JDK 位数、服务名这些概念比之前清晰了不少那这篇折腾记录就没白写。本文还有配套的精品资源点击获取
返回列表