2017年8月30日 上午8:34
我参考过一些文章
ORACLE配置tnsnames.ora文件详解 - kobe269的专栏
关于“ORA-12518: TNS: 监听程序无法分发客户机连接”的解决
plsql 安装后database下拉没有东西 - qitongce的博客 - CSDN博客
pl/sql登录时database下拉框没有任何内容_百度经验
卸载plsql后重新安装遇到问题小结 - 到底意难平的专栏 - CSDN博客
tnsping用法 - evilcry2012的专栏 - CSDN博客
关于配置关键问题理解
- listener.ora tnsnames.ora sqlnet.ora
- listener.ora是用来配置服务端监听客户端申请操作的
- 因此,告诉服务器的监听要监听哪个GLOBAL_DBNAME,SID_NAME
- 通俗的就是说,只有规定的人才可以连接我的数据库,其他没有定义的人是不可以连接我的数据库的
- 而且,也规定了这个人可以连接哪个数据库。这不是连接的时候定的,而是我服务端一开始配置就写死的,你作为使用者是不能更改的
- 其中的GLOBAL_DBNAME 对应着的是客户端连接时填写的SERVER_NAME
- 其中的SID_NAME对应着客户端连接时填写的SID
- tnsnames.ora
- 这个文件是给客户端用的
- 客户端连接服务器数据库过程:我作为用户,要和哪个监听对应,那么我就填所选监听的名字(SERVER_NAME或SID),这个监听的位置(ip)然后,就会去判断这个位置上的这个名字的监听在不在,如果在,那么就连接上这个监听对应的数据库
- sqlnet.ora
- 这个东西我不知道是啥,网上说是自动生成的,也是一个配置文件
1 | # listener.ora Network Configuration File: C:\Users\All Users\Desktop\listener.ora |
1 | # tnsnames.ora Network Configuration File: C:\Users\All Users\Desktop\tnsnames.ora |
1 | # sqlnet.ora Network Configuration File: C:\Users\All Users\Desktop\sqlnet.ora |
当服务的网络ip发生更改
- 有三个文件需要更改
- 更改的内容是服务器的ip
- 重新配置lisenter.ora,本地PL\SQL使用的nsnames.ora,以及外部客户端软件navicat
- 否则,会出现监听服务不随系统启动,并且,当我们手动启动的时候出现下面的报错,然后又自动关闭了

解决问题过程中的一些截图



测试istener.ora tnsnames.ora sqlnet.ora 这三个文件的作用的过程









当我主机中个客户端navicat在删除服务命名时,同样也可以连接。
说明
- 当我用navicat连接服务器数据库时,nsnames.ora 文件会根据你在navicat的配置自动生成
- 用net manager配置的nsnames.ora (服务命名)其实也是给客户端程序用的,例如,PL\SQL中配置环境变量
- 配置参考pl/sql登录时database下拉框没有任何内容_百度经验
- 你配置的服务名就会出现在PL\SQL登陆界面的下拉框中


解决PL\SQL安装问题
第二个问题
我的环境是win7 64位虚拟机,当我安装PL\SQL时出现了一个错是关于路径中不能使用括号,因为默认的路径是(x86),这个(x86)就是括号,这里一定要更改默认路径才行 (ps:他的warning是英文的,我就是没有仔细看,而且也不认识这个括号的单词)
第一个问题
提示没有msvcr100这个文件,这个去百度上下一个,放到路径中规定的路径就可以解决。(网上有一个教程是安装一个window官方的软件,我这里是不行)
解决PL\SQL下拉框问题
[assets/6413C249-774A-4A4A-8E2D-FD199350E91F.png]
我不知道这个lisener_ORCL是从哪来的
[assets/7DB6B554-0CC8-4BB3-B05C-0498EA4959DC.png]
但出现这个问题是因为自己的的nsnames.ora 文件没有设置好,可以在net manager中设置
[assets/98B3AAAC-FB50-428C-92D1-52DBFEEDAE15.png]
我这里起的是local_server_name。
这个名字要出现在PL\SQL中的下框中,来说明这次登陆使用的是哪个nsnames.ora
[assets/4ECA1415-F659-4D58-9221-E667037E3860.png]
这里一定要调试通,才可以说明问题解决了




这里说明成功登陆了

- tnsping这个命令是用来判断你的服务名配置是否成功
- 我理解就是模拟了一次使用nsnames.ora文件进行访问服务器监听的过程,和在软件中的操作一样,只不过在软件中是界面的形式
- 可以发现最后是“ok”,说明我的这个nsnames.ora是没有问题的
- 当发现问题时,重新去net manager中配置服务名
- tnsping用法 - evilcry2012的专栏 - CSDN博客