简介:面向Oracle数据库管理员与开发人员的PL/SQL Developer 13免安装版本,压缩为7z格式,约64.04MB。解压即可运行,省去安装与配置步骤,同时提供中文界面和本地化帮助,大幅降低中文用户的使用门槛。工具功能覆盖日常Oracle开发与维护:SQL/PL/SQL编辑器具备语法高亮、自动补全、错误检查和断点调试,数据浏览与图形化对象管理可直观操作表、索引、表空间等对象;还能生成性能统计与表空间使用报表,并集成SVN、Git进行版本控制,支持自动化脚本执行与任务调度。免安装特性让工具便于随身携带和跨机器使用,且不污染系统环境;使用前仅需确认已安装合适版本的JRE,并正确配置Oracle客户端库,即可连接数据库开始工作。目前已有1090人学习或下载,适合希望快速获得高效Oracle开发环境的初中级开发人员参考使用。
1. PLSQL Developer 13 免安装版:数据库软件便携化的实际价值
某次去客户现场排查 Oracle 连接问题,对方内网机器不允许安装任何第三方程序,而我手头唯一能用的就是 U 盘里这个 PLSQL Developer 13 可选中文语言免安装包。解压、配好 OCI 和 tnsnames,十分钟内连上业务库定位了阻塞会话。这个资源说白了就是把 PLSQL Developer 13 的完整运行目录打成 7z 压缩包,让你不需要走安装向导,直接解压运行,同时内置了中文语言包,界面可以一键切换。适合经常在隔离网络、客户机房和不方便装客户端软件的开发者、运维和 DBA,解决的是“数据库软件没法随身携带”这个老问题。接下来我会从文件结构、依赖、配置到实际排查把每个环节拆开,告诉你哪些坑可以提前绕开。
2. 解压即用的原理:文件目录、OCI 依赖与首次启动验证
免安装版能跑起来,核心不是“免安装”三个字,而是它把程序运行需要的外部依赖一并考虑到了。实际解压一个 PLSQL Developer 13,里面一般会有一个主程序 exe、Language 目录、Plugins 目录,可能还有几个 DLL 文件。很多人双击 exe 发现报错,第一反应是资源有问题,其实多半是缺了 OCI 库或者环境变量没指向对地方。这一章先从文件结构讲清楚哪些文件不能删,再验证程序能不能启动。
2.1 免安装版的文件结构:哪些文件是命根子
拿到压缩包后先用 7-Zip 解压,不要解压到带中文的路径,也尽量避免带空格的目录。解压完成后,建议用命令行看一眼目录内容,先确认主程序和语言包在不在。
cd /d D:\PLSQLDev dir /s /b | findstr /i "plsqldev.exe language"这段命令会在当前目录下递归查找 plsqldev.exe 和任何带 language 字样的文件。我一般会先看这两个,主程序不在就是包损坏;language 目录不在,后面的中文界面切换就没戏。免安装版实际运行时不依赖系统服务,也不会写系统目录,但第一次启动会在当前用户注册表里生成一些键值,所以包本身的文件完整性是重中之重。
为了更直观地判断需要保留什么,建议对照下面这张表检查,尤其是从别人手里拷这个包的时候:
| 文件或目录 | 作用 | 缺失后的表现 |
|---|---|---|
| plsqldev.exe | 主程序入口 | 无法启动 |
| Language 目录 | 存放多语言包 | 无法切换中文 |
| InstantClient 目录(如果有) | Oracle 客户端运行库 | 连接数据库报 OCI 错误 |
| Plugins 目录 | 插件和扩展功能 | 部分功能按钮不可用 |
这张表里最容易忽略的是 InstantClient。很多免安装包为了体积没带客户端,而是要求你本机装了完整 Oracle 客户端,这就失去“便携”意义了。所以收到资源后第一步就是检查有没有这个目录,没有就提前准备,不要等启动报错再猜。
2.2 OCI 库:为什么免安装版还要带客户端依赖
很多帖子说“解压即用”,听起来好像什么都不用配,实际上这个“即用”的前提是程序能找到 OCI 库。PLSQL Developer 13 安装版在安装时会把 OCI 库路径写进注册表,免安装版没有这一步,所以需要手动告诉它。常见做法是设置系统环境变量 ORACLE_HOME 和 TNS_ADMIN,或者打开程序后在 Tools -> Preferences -> Connection 里指定 OCI Library 路径。
在还没启动程序的情况下,环境变量是最快的方式。打开命令行,先看当前有没有残留变量:
set ORACLE_HOME set TNS_ADMIN如果没有输出,说明环境变量未设置。这里要注意的是,在 Windows 上,set 不带等号只是显示,不会报错。如果显示“环境变量未定义”也不影响判断。下一步就是设一个指向 Instant Client 的 ORACLE_HOME,同时把 %ORACLE_HOME% 加进 PATH。
set ORACLE_HOME=D:\PLSQLDev\InstantClient_64 set PATH=%ORACLE_HOME%;%PATH% set TNS_ADMIN=%ORACLE_HOME%\network\admin这三行我一般会直接写进启动脚本,而不会在系统设置里改全局变量,因为免安装版的价值之一就是不能污染这台机器。ORACLE_HOME 里的 InstantClient_64 是假设包内已携带客户端;如果没有,这个路径要改成你实际放置 Instant Client 的目录。TNS_ADMIN 则指向存放 tnsnames.ora 的目录,SQLNET.ORA 也可以放在同目录。
关于 32 位和 64 位,这里有一个翻车高频点:PLSQL Developer 主程序是 32 位还是 64 位,决定了它必须加载对应位数的 OCI 库。如果两者不一致,启动时会直接报“Could not load oci.dll”。我见过有人在客户机器上反复折腾,最后发现是 64 位程序配了 32 位客户端,换回匹配位数后一次通过。
2.3 首次启动验证:三步确认程序能跑起来
配置好环境变量后,先不要急着连库,做一次纯启动验证。双击 plsqldev.exe,如果在语言选择界面能看到简体中文,先不要选,直接用英文进主界面,因为语言切换存在“切换后马上需要确认字体”的问题,这一点放到后面避坑章节讲。进入主界面后,看 Help -> About 能正常弹出,说明程序本身没有问题。
第二步,验证 OCI 库是否被正确识别。在英文界面的 Tools -> Preferences -> Connection 里,找到 OCI Library 这一项,如果显示的不是完整存在路径,点 Browse 重新指定到 Instant Client 目录下的 oci.dll。这一步很容易翻车:32 位 PLSQL Developer 配 64 位 Instant Client,会直接导致启动时报错或连接崩溃。所以确认位数很重要。
第三步,查看日志输出。PLSQL Developer 启动时如果发生错误,会在主界面状态栏弹出提示,同时日志文件一般写在用户临时目录或安装目录的 log 文件夹。我看到太多人卡在启动画面,其实是 OCI 库版本不匹配,日志里写着“Could not load ... oci.dll”,但窗口一闪而过,所有注意力都在界面上。把日志路径找出来,配合系统事件查看器,通常能在一分钟内定位根因。
2.4 环境变量优先级:注册表、环境变量与配置文件谁说了算
这里再说一个比较玄学的问题:为什么同一个包,在 A 电脑上双击就能连,在 B 电脑上却提示找不到数据库?原因就是 PLSQL Developer 读取连接配置的优先级并不总是从环境变量来,它在注册表里也存了一份路径。如果此前机器上装过其他版本,注册表残留会把 OCI 库指向一个已不存在的目录,这时环境变量设了也被忽略。
我一般不会手动清理注册表,而是用 Process Monitor 去观察程序启动时到底加载了哪个路径的 oci.dll。这个工具虽然不能直接用,但可以在项目目录发布一份简化版使用说明。如果你不想上工具箱,更省事的做法是:在启动脚本里显式设置 ORACLE_HOME,同时打开程序后强制在 Preferences 里点一次 OCI Library 的浏览选择,程序会把这个选择写回注册表,从而覆盖旧值。
OCI 这一块花了大量篇幅,是因为很多“免安装版用不了”的翻车现场,几乎都集中在依赖缺失和路径优先级上。只要把 OCI 库路径稳定住,后面的中文配置和数据库连接就顺畅了。
3. 中文语言包与 Oracle 连接配置:从界面到字符集的完整链路
用完英文界面跑通启动之后,接下来要解决两件事:一是把界面切成中文,二是把数据库连上。这两件事看着独立,实际都跟注册表、字符集和 tnsnames 有关。按照前面 2.3 的流程,程序已经能起来了,现在继续往下走。
3.1 语言切换:为什么解压后默认还是英文
免安装包标题里写了“可选中文语言”,但解压后默认是英文,原因是语言包文件存在 Language 目录,程序启动时要用一种特定方式激活它。在图形界面上,路径是 Tools -> Preferences -> User Interface -> Language,下拉列表里会出现 Chinese,选中后确定,重启程序就变成中文。但这个操作有个问题:如果正在用英文菜单,有些人会找不到选项。这里给一个绕过 UI 的方法,直接通过命令行参数启动语言选择。
start "" "D:\PLSQLDev\plsqldev.exe" /language=Chinese这个参数在 13 版本里是可用的,我常用它来快速验证语言包文件是否匹配。如果启动后界面仍是英文,说明 Language 目录下的语言文件版本不对,或者文件缺失。另一种常见做法是用注册表预设语言,具体路径不用死记,先用 regedit 搜索“PLSQL Developer”找到配置项,再在值里填入 Chinese。注意,语言包文件名不一定是 chinese.lng,不同版本命名可能有差异,最稳妥的办法是看 Language 目录里有哪些文件,把对应语言的显示名写进去。
常见的坑:从旧版 PLSQL Developer 拷来的中文语言包直接放进 13 版目录,启动后界面变成“方框文字”。原因是语言包的格式是随主版本走的,13 版定义的新菜单项在旧包里没有资源定义,程序会显示占位字符。所以不要贪省事,一定要用配套版本的语言包。这个包既然标题写了可选中文,一般来说自带的语言包是匹配的,但如果你是从别处拼凑的,就要注意这点。
3.2 连接数据库:tnsnames.ora 与服务名解析
连接 Oracle 最常用的方式是输入用户名、密码、数据库名。数据库名可以是三种格式:EASY CONNECT(host:port/service_name)、完整连接串、或 TNS 别名。免安装版场景下,最推荐把连接信息写进 tnsnames.ora,这样在登录窗口的 Database 下拉框里选一下就行,不用每次输一长串。
先找到 tnsnames.ora。如果你设置了 TNS_ADMIN,程序就会去那个目录找;没设置的话,默认去 ORACLE_HOME\network\admin 找。我一般会建一个固定的网络配置目录,这样换机器不折腾:
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)) )这段配置定义了一个叫 ORCL 的连接别名。HOST 是数据库服务器 IP,PORT 是 Oracle 监听端口,SERVICE_NAME 是数据库服务名,DEDICATED 表示专用服务器模式,也就是每次连接分配独立进程。如果你的数据库是 RAC 或共享服务器模式,SERVER 的值要相应调整,但 99% 的场景用 DEDICATED 没错。编辑完保存为 UTF-8 编码,避免中文注释导致解析异常,然后重启 PLSQL Developer,登录窗口的 Database 里就能看到 ORCL 了。
如果不想用 TNS 别名,也可以直接在 Database 字段填完整连接串,比如 192.168.1.10:1521/orcl,这在快速连测试库时非常有用。但注意,EASY CONNECT 方式要求客户端 SQLNET 版本匹配,太老的 Instant Client 可能不支持。
3.3 NLS_LANG:中文数据变成问号的根源
连接成功后,最常见的现象是查询结果里的中文显示成问号“?????”,或者插入的中文在库里变成乱码。这个问题的根源基本都在 NLS_LANG 环境变量。NLS_LANG 的格式是语言_地域.字符集,例如 SIMPLIFIED CHINESE_CHINA.ZHS16GBK。它决定了客户端发送和接收数据时使用的字符集,而 Oracle 服务器有自己的一套数据库字符集,两边不一致就会发生转换,转换不了就变成问号。
在免安装版里,NLS_LANG 同样通过环境变量设置。可以先在命令行临时设置,确认能解决问题后再写进启动脚本。
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8这条命令把客户端字符集设置为 AL32UTF8,适用于数据库是 UTF8 字符集的场景。如果业务系统是 GBK,则改为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK。怎么确认数据库字符集?用 SQL 查一下:
SELECT parameter, value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';在 SQL 窗口执行,结果返回的就是库的字符集。注意 NLS_LANG 这三个部分不能写错,尤其是地域缩写,很多人把 CHINA 写成 CN,程序不认识就会默认用 AMERICAN_AMERICA。AL32UTF8 是 Oracle 的 UTF8 表示,不是标准 UTF-8,这里不要按网上搜索的“UTF8”直接填。
还要留意一个细节:如果同时设置了系统全局 NLS_LANG 和启动脚本里的 NLS_LANG,他们以谁为准取决于启动脚本的 set 命令是否发生在当前命令行会话内。在双击启动脚本的情况下,脚本里的 set 只对当前创建的进程生效,不会污染系统全局,这也是我推荐用脚本而不是改系统环境变量的原因。
到这一步,中文界面、TNS 连接、字符集三条线都打通了。下一章用一次实际排查任务把这些配置串起来跑一遍。
4. 实战:用免安装版完成一次远程数据库排查任务
配置完成后,光能登录不算什么,关键是要用它干完一次活。我把自己平时排查 Oracle 阻塞和慢 SQL 的流程压缩成一套动作:登录、查会话、看执行计划、导出结果。这套流程在免安装版上跑得跟安装版一模一样,唯一的区别是环境变量提前设好了。
4.1 登录数据库:连接名、用户名与角色
双击 plsqldev.exe,在登录窗口输入用户名、密码,Database 下拉框选择刚才配置的 ORCL,Connect As 选 Normal。如果是用 sysdba 权限,则选 SYSDBA,但日常排查一般用普通账号。这里有个细节:如果包内没有正确配置 OCI,登录窗口的 Database 下拉框可能是空的,或者连接时报“ORA-12154: TNS:could not resolve the connect identifier”。ORA-12154 大多是 tnsnames.ora 路径没被找到,回到上一章检查 TNS_ADMIN。
登录成功后,先做一个基线检查,看数据库整体状态。
SELECT inst_id, status, startup_time FROM gv$instance;这条 SQL 用来查看 RAC 环境下每个实例的状态。如果只有单实例,用 v$instance。status 为 OPEN 表示数据库正常,STARTED 表示还在 mount 阶段,MOUNTED 状态则要检查控制文件。PLSQL Developer 的 SQL 窗口默认会把结果显示在下方网格里,不需要额外安装插件。
4.2 常用窗口:SQL 窗口、命令窗口与程序窗口
免安装版和安装版在窗口布局上没有区别,核心是 SQL 窗口、命令窗口和程序窗口。SQL 窗口用来跑即席查询,按 F8 执行当前光标所在的语句,按 F5 查看执行计划。命令窗口可以运行 SQL*Plus 风格的命令,比如 desc、set serveroutput on,适合快速看表结构。程序窗口用来调试存储过程,我平时用的不多,但排查任务中如果需要确认某个函数返回值,就会在程序窗口里跑。
这里重点讲执行计划,因为阻塞和慢 SQL 的最后判断都靠它。
EXPLAIN PLAN FOR SELECT t1.sid, t1.serial#, t1.username, t1.blocking_session FROM v$session t1 WHERE t1.type = 'USER' AND t1.blocking_session IS NOT NULL; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);EXPLAIN PLAN FOR 把语句的执行计划存入计划表,第二句从计划表里取出来显示。看到 TABLE ACCESS FULL 的时候就要注意,大表全表扫描往往是锁的导火索。PLSQL Developer 虽然提供了 F5 的图形化执行计划,但保存为文本还是用 DBMS_XPLAN 更稳。这里的 SID 和 SERIAL# 是定位会话的关键,SERIAL# 用来防止误杀重连的会话。
4.3 快速排查阻塞会话:SQL 与结果导出
排查阻塞会话时,我一般先查所有存在阻塞关系的会话。
SELECT blocking_session, sid, serial#, username, sql_id, event FROM v$session WHERE blocking_session IS NOT NULL ORDER BY blocking_session;这段 SQL 会列出被阻塞的会话以及是谁阻塞了它。blocking_session 为空说明没有阻塞,有值就需要继续追根溯源。拿到阻塞会话的 sid 后,下一步查它在执行什么 SQL。
SELECT sql_text FROM v$sql WHERE sql_id = '&sql_id';用替换变量 &sql_id 的方式避免来回复制,执行时会弹出输入框,把上一步的 sql_id 填进去。PLSQL Developer 对替换变量的支持比较友好,直接弹出文本框,不用事先定义。
排查结果要带出机房,先把 SQL 窗口里的结果导出。点击查询结果网格上方的导出按钮,选 CSV 格式,再勾选“包含列标题”,三秒出文件。如果结果集很小,也可以右键选择复制为 Excel 格式。导出的文件路径不要选在 U 盘根目录,容易被杀毒软件实时扫描拦截,建一个单独的输出文件夹就好。
4.4 用 SPOOL 把过程日志留住
除了界面导出,命令窗口里的 SPOOL 是另一个实用的输出方式。比如你想把整个排查过程做成一份纯文本日志,可以在命令窗口里这样写:
SET LINESIZE 200 SET FEEDBACK OFF SET TRIMSPOOL ON SPOOL /tmp/session_audit.txt SELECT '当前阻塞情况', a.sid, b.sid FROM v$session a, v$session b WHERE a.SID = b.blocking_session; SPOOL OFFSPOOL 路径建议用绝对路径,因为命令窗口的当前目录不一定是你想要的。SET LINESIZE 控制行宽,避免长 SQL 被截断;SET FEEDBACK OFF 去掉行数回显,让日志干净一些。SPOOL OFF 或 EXIT 都会停止写文件。如果 SPOOL 不输出,大概率是目录没有写权限,换到用户目录再试。
这一章的完整排查流程走完,实际上也把第 3 章的 tnsnames 和 NLS_LANG 配置验证了一遍。如果中途出现乱码或连不上,直接跳回第 3 章对应的小节处理,不用把整个环境推倒重来。
5. 避坑指南:PLSQL Developer 13 免安装版的常见排查记录
免安装版用起来快,但坑也集中。这一章是过去几个月里我在不同机器上遇到的高频问题,按现象、原因、解决三步写清楚,照做能省下不少时间。
5.1 启动报错:Could not load "oci.dll"
现象:双击 plsqldev.exe 后,系统弹出英文错误框,提示无法加载 oci.dll,程序无法进入主界面。原因:程序按照注册表或环境变量里的路径去加载 OCI 库,路径不存在或者位数不匹配。32 位程序指向 64 位 Instant Client 的 oci.dll,会直接报错;反过来 64 位程序指向 32 位客户端,也一样。解决:先确认 exe 位数和客户端位数,然后再确认路径。如果是通过启动脚本设置的,把 ORACLE_HOME 改成实际目录;如果是别处装有完整 Oracle,在 Preferences 里手动 Browse 到对应 oci.dll。常见做法是写一个 check_oci.bat,先列出本机 Oracle 相关目录,再把程序加载路径打出来,确认后重新启动。
5.2 中文界面变成方框或乱码
现象:语言包切换后,菜单、按钮出现一排排方框,或者部分文字变成横线。原因:语言包与 13 版不配套,常见的是从网上单拎出来一个 Chinese.lng 文件丢进 Language 目录,版本完全对不上。解决:删除 Language 目录下多余语言文件,只保留包内自带的那套;如果不确定,直接重新解压原包。另一个小坑是 Windows 系统的字体设置,如果系统里没有中文字体,界面即使语言正确也可能显示异常,但这在中文 Windows 上基本不会出现。
5.3 查询结果中文全是问号
现象:数据库里存的中文是正常的,但 PLSQL Developer 查询出来变成 ?????。原因:NLS_LANG 环境变量里的字符集与数据库字符集不一致,Oracle 在客户端和服务器之间做了字符集转换,转换失败就显示问号。解决:先查出数据库真实字符集,再用 set NLS_LANG 调整。如果数据库是 AL32UTF8,客户端也必须用 AL32UTF8;如果客户端用 ZHS16GBK 连 AL32UTF8,某些生僻字或特殊字符就会转失败。注意,NLS_LANG 设置后一定要重新启动 PLSQL Developer 再连,因为程序在启动时读取。
5.4 杀毒软件把 exe 隔离
现象:解压文件时杀毒软件弹窗报毒,然后 plsqldev.exe 被隔离或直接删除。原因:免安装包没有数字签名,7z 压缩外壳又常被安全软件当成潜在威胁;但如果脚本里有可疑的注册表修改,也会触发启发式查杀。解决:先从可信渠道核对这个压缩包的 SHA256,再解压运行;如果确认没问题,把解压目录加入信任列表,但不要全局关闭实时防护。核对 SHA256 的命令如下:
certutil -hashfile plsqldev.exe SHA256这条命令输出的一串字符就是该文件的哈希值,和发布方给的比对一下。我在客户现场遇到过 IT 策略强制隔离的情况,那种环境就别硬刚,直接申请用安装版更省事。
5.5 换一台电脑后配置全丢
现象:同一把 U 盘插到另一台电脑,登录历史没了,快捷键和界面布局也回到默认。原因:PLSQL Developer 的个性化配置默认写在本机注册表,不是写在包目录里。插上一台新机器,读取的是那台机器的注册表,自然“什么都没了”。解决:把配置导出成 reg 文件,放进 U 盘,到新机器上双击导入;同时把 Language 设置写进启动脚本,每次运行都强制执行。
reg export HKCU\Software\PLSQL Developer 13.0 plsql_config.reg这条命令导出当前用户下所有 PLSQL Developer 13 配置。具体主键名以 regedit 搜索“PLSQL Developer 13.0”为准,因为版本不同键名可能有差异。导出的 reg 文件是文本,用记事本打开就能看到里面包含的语言设置、窗口大小、连接历史等。到了新机器,双击或 reg import 导入即可。注意,导入时程序不能运行,否则注册表会被程序重新写回。
6. 进阶技巧:做一个启动脚本,把配置随 U 盘带走
到这里,配置原理和常见坑都过了,剩下的问题是如何让免安装版在每台新电脑上都能一键进入可用状态。我最终的做法是写一个启动脚本,把环境变量、注册表语言配置、OCI 路径检查和程序启动绑在一起。先看脚本:
@echo off set BASE_DIR=%~dp0 set INSTANT_CLIENT=%BASE_DIR%InstantClient_64 set ORACLE_HOME=%INSTANT_CLIENT% set TNS_ADMIN=%INSTANT_CLIENT%\network\admin set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8 set PATH=%INSTANT_CLIENT%;%PATH% reg add "HKCU\Software\PLSQL Developer 13.0" /v Language /t REG_SZ /d Chinese /f >nul 2>&1 start "" "%BASE_DIR%plsqldev.exe"这个脚本必须和 plsqldev.exe 放在同一级目录。%~dp0 是脚本所在目录,末尾自带反斜杠,所以路径拼接时不要加重复斜杠。ORACLE_HOME 指向包内 InstantClient_64,如果你包内没有客户端,就改为本地实际的 Instant Client 路径。reg add 那条用来把语言预设为中文,命令中的注册表路径重点看最后的“PLSQL Developer 13.0”键名,实际以 regedit 里搜索到的主键为准。每次双击这个 bat,就相当于在一个干净环境里重新声明了程序所需的所有依赖。
如果遇到上一章注册表被旧版本污染的问题,可以在脚本里加一段检查,或者简单先运行 reg import 把之前备份的 reg 文件打进去。我自己现在到新机器上的固定流程是:解压、跑一遍这个 bat、登录窗口选 ORCL、完成。配置不靠系统环境变量,不靠安装向导,全部从 U 盘带走。这个习惯好几次在客户机房救了急——那边连完整数据库客户端都不让装,但这个数据库软件放在 U 盘里跑起来完全不受干扰。
最后再补一个验证技巧:启动脚本跑完后,在 PLSQL Developer 里打开 Help -> About,能看到当前使用的 OCI 库路径。如果这里显示的路径和脚本里不一致,说明注册表残留优先级更高,回到 5.5 节导出 reg 文件并在当前机器导入。从那以后,我每次拿到任何免安装版数据库软件,都强制走一遍“查完整性、指 OCI、配 TNS_ADMIN、验证 NLS_LANG”四步,再也不敢直接双击就完事。希望帮到你。
本文还有配套的精品资源,点击获取