ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PLSQL Developer完全指南:从安装配置到连接调优实战

PLSQL Developer完全指南:从安装配置到连接调优实战 简介PLSQL Developer是Oracle数据库开发与管理场景中常用的集成开发环境IDE面向数据库管理员、开发人员及需要频繁编写PL/SQL代码的运维工程师。该工具以中文界面和简洁操作为特色旨在帮助用户完成从数据库连接、对象管理到SQL调试和性能优化的全流程工作。压缩包体积为19.05MB便于快速下载部署已有190人学习下载内容覆盖工具核心能力包括本地或远程数据库连接、多种身份验证方式以及表、视图、存储过程、触发器、索引等对象的可视化编辑。编辑器提供语法高亮、自动完成与代码片段可显著提升编码效率同时具备断点调试、单步执行、变量监视等功能便于定位PL/SQL错误。此外还集成了SVN/Git版本控制、数据导入导出、SQL分析器与Explain Plan执行计划查看适合团队协作与SQL调优整份资源适合Oracle初学者快速上手也能作为资深开发者的日常效率工具。 在Oracle数据库这个圈子里混得久了电脑上最后留下的日常工具其实就那么几样而PLSQL Developer绝对是排在最前面的那个老伙计。它是荷兰Allround Automations公司做的一款Oracle数据库图形化开发客户端Windows上跑得特别顺几乎所有和Oracle打交道的人都绕不开它。这篇文章我就以一个用了十几年的老用户身份把安装配置、局域网连接、字符集、定时任务、常见报错这些东西一次讲透新手照着操作就能跑通老手也能翻到几个平时没注意的小技巧。1. 先搞清楚这工具到底解决什么问题1.1 一个Oracle数据库的“图形化工作台”很多人第一次接触到PLSQL Developer是因为被命令行折磨过。Oracle自带的SQL*Plus能执行SQL但想要看清表结构、查某个存储过程、看SQL执行计划纯用命令行体验确实很费劲。PLSQL Developer解决的问题就是把这些高频操作全部图形化左侧对象浏览器直接看表、视图、索引、存储过程、包、序列、用户、DBLINK中间区域可以同时开多个SQL窗口写SQL有自动补全调试存储过程还能断点、单步、看变量窗口下方一键看执行计划导入导出、定时任务也有独立界面。日常做Oracle开发、运维、数据修复、性能诊断这个工具基本全覆盖。我当年从一个只会写SELECT的小白到后来独立负责一套核心系统很大程度就是靠这个工具一点点练起来的。1.2 哪些人最适合读这篇经验如果你属于下面这几类人这篇文章正好帮你扫清障碍后端开发Java、.NET、Python项目连Oracle每天都在写SQL、调存储过程。DBA和运维人员查会话、看锁、导数据、调慢SQL日常基本离不开它。数据分析取数人员业务库就是Oracle写完SQL直接在这里看结果。学生和刚入门的新手装完工具不知道怎么连库、乱码、报错翻这篇就行。无论你是哪一种安装配置、连接数据库、字符集、权限和定时任务都是高频需求后面几个章节会逐一拆开讲。2. 安装和新手配置最容易翻车的三个点2.1 选版本别贪新先看配套的Oracle客户端PLSQL Developer的版本从14、15到16一直在迭代新版本界面更现代对高分屏支持也好。但选择版本的核心原则不是“越新越好”而是要和你的Oracle客户端位数保持一致。这里有个背景PLSQL Developer只是一个外壳真正负责连接Oracle数据库的是Oracle客户端提供的OCI接口也就是oci.dll。你电脑上如果没有Oracle客户端光装这个工具是连不上库的。常见的解决方案有两种一是你本机本身就装了Oracle数据库比如开发环境装的是Oracle Database Express Edition那客户端就跟着有了二是电脑上没装数据库那就去Oracle官网下载Instant Client解压即用选Basic包就够不需要额外装SQL*Plus扩展。位数方面32位和64位必须一致。你下载了64位的Instant ClientPLSQL Developer也要装64位老环境很多还是32位就统一换成32位。这个细节一旦没对上等着你的就是启动时报“Could not load oci.dll”。2.2 oci.dll、环境变量、字符集的前因后果第一次打开PLSQL Developer最崩溃的报错就是“Could not load oci.dll”。原因一句话就能说清工具找不到Oracle客户端的dll文件。处理分两步第一步确认oci.dll确实存在。比如你解压Instant Client到D:\oracle\instantclient_19_12里面应该有oci.dll文件。第二步在PLSQL Developer里指定OCI库路径。打开Tools工具 Preferences首选项 Oracle Connection在“OCI library”一栏填上oci.dll的完整路径比如D:\oracle\instantclient_19_12\oci.dll重启工具生效。同时建议把几个系统环境变量配好否则后面还会遇到一堆莫名其妙的问题ORACLE_HOME指向Instant Client解压目录。TNS_ADMIN指向tnsnames.ora所在目录。如果你有专门的网络配置目录这里就指到那个目录。NLS_LANG设置数据库连接字符集中文环境常用SIMPLIFIED CHINESE_CHINA.ZHS16GBK或AL32UTF8具体以数据库服务端为准。PATH把Instant Client目录加进去避免其他命令行工具调用时报错。Windows下就是在系统属性里点“环境变量”新增或修改以上变量。改完记得重新打开终端或工具再验证。2.3 界面语言改中文和登录前的自检清单不少朋友装上以后发现是全英文界面其实不用另外找汉化包。打开Tools Preferences User Interface Language选择Chinese重启就是中文界面。新版PLSQL Developer 15、16对高分屏的渲染也做了优化如果界面还是模糊右键快捷方式在兼容性里勾选“替代高DPI缩放行为”就行。登录之前多花两分钟做个自检能省掉后面一大半的报错排查时间确认Oracle数据库服务已启动。Windows下叫OracleService加SID比如OracleServiceORCL。确认监听器已启动。服务器上执行lsnrctl status可以查看监听状态。用连接串在cmd里执行tnsping命令确认网络和解析都通。在数据库服务器本地用SQL*Plus登录一次确认账号密码没问题。这四步过了打开PLSQL Developer填用户名密码基本一次成功。3. 连接Oracle库本地和局域网一次配明白3.1 tnsnames.ora里的连接串长什么样PLSQL Developer登录界面有一个数据库下拉框里面的内容就是读取tnsnames.ora得到的。如果你打开工具发现下拉是空的多半是TNS_ADMIN环境变量没配或者文件里没有对应连接串。一个最简单的连接串比如连接另一台机器192.168.1.100上的orcl库ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 192.168.1.100)(PORT 1521)) (CONNECT_DATA (SERVICE_NAME orcl) ) )把这段保存到tnsnames.ora重启工具下拉框就会出现ORCL这个连接名。注意括号、逗号、缩进都不能错少一个括号就会报ORA-12154。还要区分两个概念SID是实例名SERVICE_NAME是服务名。现在的Oracle默认使用服务名连接串里写SERVICE_NAME orcl数据库那边也要真的注册了这个服务。单实例环境两者经常一样但到了RAC或容灾环境必须用SERVICE_NAME才能正确路由。3.2 连接局域网其他机器的Oracle三个必查项“如何连接局域网其他机器的Oracle数据库”这个问题出现的频率极高。本地连得通局域网连不通原因通常集中在三个地方。第一数据库服务器上的监听器有没有启动。在服务器cmd里执行lsnrctl status看监听是否在运行服务列表里有没有orcl。很多刚装好的库监听根本没启动远程自然是连不上的。启动方式就是lsnrctl start。第二网络和防火墙。先在客户端机器上ping一下数据库服务器IP通了之后执行telnet 192.168.1.100 1521看1521端口通不通。Windows默认可能没装Telnet客户端去“启用或关闭Windows功能”里勾选即可。不通的话去服务器Windows防火墙放行1521端口或者放行Oracle服务进程。第三listener.ora里的监听地址。默认listener.ora经常写的是HOST localhost这样本机能连但局域网其他机器根本连不上必须改成数据库服务器的实际IP改完重启监听。命令是lsnrctl stop再lsnrctl start。另外还有一个容易被忽略的数据库有没有注册进监听。动态注册需要实例在启动时上报服务名如果监听器先启动、数据库后启动有时会等一会儿才注册上。实在不行可以在listener.ora里手工写静态注册。3.3 Normal、Sysdba和数据库版本那点事登录窗口的身份下拉栏有三个选项Normal、Sysdba、Sysoper。Normal就是普通账号日常开发、查询、增删改都走这个Sysdba是数据库管理员权限能做启动关闭、备份恢复等高权限操作Sysoper是操作员权限介于两者之间。普通账号想用Sysdba登录前提是账号本身被授予了SYSDBA权限否则会报ORA-01031 insufficient privileges。日常开发千万别动不动就用Sysdba连生产库误操作的概率太高这是DBA最忌讳的操作习惯。最好一个普通开发账号只做属于它权限范围的事。顺带提一下有朋友搜索过“evaluation developer和express版developer和enterprise”的问题这说的是Oracle数据库本身的版本和PLSQL Developer工具没关系。简单区分Enterprise Edition是企业版功能最全但授权贵Standard Edition是标准版功能有裁剪Express Edition完全免费但CPU、内存、数据量都有限制Developer Edition是开发版功能接近企业版专给开发测试用但不能用于生产环境。如果你只是装数据库来练习Express Edition或Developer Edition都够用。3.4 查询结果出现乱码多半是NLS_LANG没对上乱码问题的根源不是数据库存坏了而是客户端和服务端的字符集不一致。数据库里存的是GBK编码客户端却按UTF-8来解读显示就会变成乱码。正确做法分两步。第一步查数据库字符集SQL窗口执行SELECT userenv(language) FROM dual;返回结果类似SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者AMERICAN_AMERICA.AL32UTF8。第二步把本机环境变量NLS_LANG改成和数据库一致。如果数据库是ZHS16GBK就设置为NLS_LANGSIMPLIFIED CHINESE_CHINA.ZHS16GBK改完环境变量必须完全退出PLSQL Developer再重新打开只关窗口不结束进程是没用的。这里有个容易踩的坑Windows系统变量和用户变量如果同时存在同一个名字工具实际读取的可能不是你改的那个所以配置完最好在cmd里执行echo %NLS_LANG%确认一下实际值。4. 几个真正高频的功能实操4.1 新增一个数据库用户并分配权限建用户在PLSQL Developer里有图形化方式左侧Objects树展开Users右键New直接填写。不过我更习惯直接开SQL窗口执行脚本尤其在需要留痕、走评审的公司环境脚本比点击操作可靠得多。最标准的建用户三步-- 1. 建用户密码尽量复杂 CREATE USER demo IDENTIFIED BY Your_Str0ng_Psw; -- 2. 给基本权限 GRANT CONNECT, RESOURCE TO demo; -- 3. 设置默认表空间和配额 ALTER USER demo DEFAULT TABLESPACE users QUOTA 100M ON users;说明一下这几个权限的作用CONNECT角色允许用户登录数据库RESOURCE角色允许在表空间里建表、建过程等这是开发账号的常见组合。生产环境千万别图省事直接GRANT DBA最小权限原则关键时刻能保命。配额那一行表示该账号在users表空间最多占用100MB如果漏了这一行新用户建表时会报ORA-01950 no privileges on tablespace很多人在这里卡住。4.2 创建定时任务Jobs的两种姿势定时任务在Oracle里有两种写法老的DBMS_JOB和新的DBMS_SCHEDULER。新版本强烈推荐DBMS_SCHEDULER功能更全面表达式也更灵活。PLSQL Developer左侧有Jobs节点右键New可以在界面上操作底层生成的还是DBMS_SCHEDULER脚本。手写一个每天凌晨2点执行的任务BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name JOB_DEMO_DAILY, job_type PLSQL_BLOCK, job_action BEGIN your_procedure_name; END;, start_date SYSTIMESTAMP, repeat_interval FREQDAILY; BYHOUR2; BYMINUTE0; BYSECOND0, enabled TRUE, comments 每天凌晨2点执行示例作业 ); END;repeat_interval就是调度表达式FREQDAILY加BYHOUR2表示每天2点。每周一晚上10点就是FREQWEEKLY; BYDAYMON; BYHOUR22; BYMINUTE0; BYSECOND0。作业建完要看执行情况有两张视图常用SELECT * FROM user_scheduler_jobs; SELECT * FROM user_scheduler_job_run_details ORDER BY log_date DESC;常见的问题是作业建了但一直没跑先检查enabled是否为TRUE再去run details里看执行报错。在PLSQL Developer的Jobs节点右键就能看到运行历史和日志比命令行直观很多。4.3 导入导出别用错模式开发环境之间迁移小表PLSQL Developer的Tools菜单下Export Tables和Import Tables非常方便。导出可选几种格式最常用的是Oracle Export生成.pde文件这是工具自带的格式导入最顺手另外还可以导出SQL Inserts生成标准Insert语句适合跨工具迁移。我的经验是几十万行以内的小表用Oracle Export导出成pde再到目标库Import Tables选择文件点Import基本无脑完成表结构、数据、索引都能带上。但数据量大或者跨大版本迁移别用这工具老老实实走expdp/impdp。有个实用小技巧在PLSQL Developer里直接把一个表从连接A拖到连接B也能快速复制表结构和数据临时建测试表时特别方便。4.4 写SQL时顺手看眼执行计划看执行计划是SQL优化的基本功。在PLSQL Developer里很简单写完SQL光标停在语句上按F5下方立刻展示执行计划。举一个最典型的全表扫描案例。业务表T_ORDER有个500万行查询某个用户最近30天的订单SELECT * FROM t_order WHERE user_id 10086 AND order_time SYSDATE - 30;执行计划里如果出现TABLE ACCESS FULL慢一般就慢在这里。原因通常是两种没建索引或者统计信息过期。先检查表上有没有(user_id, order_time)组合索引没有就建CREATE INDEX idx_order_user_time ON t_order(user_id, order_time);再按F5看执行计划会从全表扫描变成INDEX RANGE SCAN响应时间从秒级降到毫秒级。这里要说句公道话看到全表扫描别急着骂优化器如果表只有几百行全表扫描反而是最快的。优化的核心是结合数据量和实际执行情况而不是机械地认为全表扫描一定坏。5. 从ORA-12560到乱码典型报错排查清单5.1 ORA-12560和ORA-12154两个最常见的连接问题连接Oracle数据库最常见的两个连接报错一个是ORA-12560一个是ORA-12154。我把它们的区别和排查思路整理成一张表错误码含义最常见原因解决思路ORA-12560协议适配器错误连不上服务Oracle服务未启动或监听器未启动服务管理器启动数据库监听器执行lsnrctl startORA-12154TNS名称解析失败tnsnames.ora路径不对或连接名写错核对TNS_ADMIN变量、检查连接串括号和连接名ORA-12514监听器不识别服务SERVICE_NAME写错或未注册到监听查数据库服务名确认动态注册或手工静态注册ORA-12560的排查顺序建议是先看服务管理器里OracleServiceORCL是否运行再看监听状态然后本地sqlplus连一次确认账号没问题最后才排查网络。ORA-12154则主要在tnsnames.ora本身确认TNS_ADMIN指向的目录下真的有这个文件连接串的括号和连接名大小写都没问题。5.2 启动报错“Could not load oci.dll”工具能打开一点连接就报这错几乎就是OCI路径没配对。解决办法前面提过拿到Instant Client解压目录把oci.dll完整路径填到Tools Preferences Oracle Connection的OCI library里然后重启。还不行就把ORACLE_HOME和PATH都配上再检查位数是否一致。这个报错90%以上都是位数不匹配或者路径填错没有更复杂的原因。5.3 乱码问题的完整排查顺序乱码问题按下述顺序排查基本几分钟内能定位先确认数据库字符集SELECT userenv(language) FROM dual。比对本地NLS_LANG环境变量不一致就去改。改完环境变量完全退出PLSQL Developer再重新启动注意是全部退出包括右下角托盘。还没好检查操作系统区域设置和PLSQL Developer的字体设置Tools Preferences User Interface Fonts里换一个支持中文的等宽字体。如果数据库用了AL32UTF8而公司旧环境还在用GBK建议新项目统一按数据库字符集来配旧库以数据库实际字符集为准。5.4 试用期到期后怎么办PLSQL Developer是商业共享软件官网提供30天试用版。相信不少朋友搜过注册码、破解版之类的东西这里我直接说一句不建议去搞来路不明的注册机或破解包。这类东西很容易被塞进挖矿程序、键盘记录器真中招了成本远超买授权。公司生产环境用盗版工具出了问题也是自己背锅。正规路径其实很简单。公司场景找采购或IT负责人买正版License官方站直接能下单价格相对于人力成本来说并不夸张而且能持续收到版本更新。个人学习和测试用Oracle官方的SQL Developer或者DBeaver这类免费工具一样能连Oracle写SQL、看执行计划。SQL Developer虽然界面朴实一点但胜在免费可靠。如果你日常工作确实重度依赖PLSQL Developer的调试功能让公司买正版授权就是最省心的答案。6. 最后分享几个我离不开的小设置6.1 快捷键和三件套窗口用久了会发现PLSQL Developer最常用的就三个窗口SQL Window写查询和DDLCommand Window执行脚本Test Window调试存储过程。配套快捷键记熟能省不少时间CtrlD打开Command WindowCtrlT打开Test WindowF5看执行计划F8执行SQLCtrlEnter执行当前语句对经常写存储过程的人来说Test Window的调试功能是PLSQL Developer最值钱的部分设断点、看变量、单步执行比在SQL*Plus里靠dbms_output输出靠谱太多。6.2 记住登录历史和保存窗口布局重装工具最烦的就是重新配环境。PLSQL Developer的配置都存在本地建议把配置目录整体备份一份系统重装后直接恢复登录历史、快捷键、颜色主题、窗口布局就全回来了。Tools Preferences里把Logon History勾选上以后打开工具直接双击历史连接不用每次手输服务器地址。如果运维环境里有大量测试机这个功能能省下不少时间。窗口布局乱了之后用Window Save Layout固化自己的习惯布局换屏幕分辨率或者换电脑时也能一键恢复。6.3 一点关于安全的碎碎念最后说一句可能不中听但很重要的话。数据库客户端会缓存SQL历史、登录信息甚至密码如果你常年用Sysdba连生产库这台机器的安全级别就要拉高。不要随意在公网环境保存生产库密码不要拿一个万能密码连所有环境该分开的账号权限要分开该走堡垒机就走堡垒机。工具是提效的不是让人放松安全警惕的。这些年我用PLSQL Developer最大的体会是这个工具的上限确实很高但大多数人长期只用了它20%的功能。先把安装、连接、字符集、权限、定时任务、执行计划这些基础打牢再去深入调试器、DBMS_SCHEDULER这些高级功能它会成为你工作里最可靠的一件趁手工具。希望这篇内容能让你少走一些我当年走过的弯路。本文还有配套的精品资源点击获取
返回列表