0%

关于ORACLE配置文件和连接的问题总结

2017年8月30日 上午8:34

我参考过一些文章
ORACLE配置tnsnames.ora文件详解 - kobe269的专栏
关于“ORA-12518: TNS: 监听程序无法分发客户机连接”的解决
plsql 安装后database下拉没有东西 - qitongce的博客 - CSDN博客
pl/sql登录时database下拉框没有任何内容_百度经验
卸载plsql后重新安装遇到问题小结 - 到底意难平的专栏 - CSDN博客
tnsping用法 - evilcry2012的专栏 - CSDN博客

关于配置关键问题理解

  1. listener.ora tnsnames.ora sqlnet.ora
    1. listener.ora是用来配置服务端监听客户端申请操作的
    2. 因此,告诉服务器的监听要监听哪个GLOBAL_DBNAME,SID_NAME
    3. 通俗的就是说,只有规定的人才可以连接我的数据库,其他没有定义的人是不可以连接我的数据库的
    4. 而且,也规定了这个人可以连接哪个数据库。这不是连接的时候定的,而是我服务端一开始配置就写死的,你作为使用者是不能更改的
    5. 其中的GLOBAL_DBNAME 对应着的是客户端连接时填写的SERVER_NAME
    6. 其中的SID_NAME对应着客户端连接时填写的SID
  2. tnsnames.ora
    1. 这个文件是给客户端用的
    2. 客户端连接服务器数据库过程:我作为用户,要和哪个监听对应,那么我就填所选监听的名字(SERVER_NAME或SID),这个监听的位置(ip)然后,就会去判断这个位置上的这个名字的监听在不在,如果在,那么就连接上这个监听对应的数据库
  3. sqlnet.ora
    1. 这个东西我不知道是啥,网上说是自动生成的,也是一个配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# listener.ora Network Configuration File: C:\Users\All Users\Desktop\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(SID_NAME = ORCL)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)

ADR_BASE_LISTENER = C:\app\oracle\product\11.2.0\dbhome_2\log
1
2
3
4
5
6
7
8
9
10
11
12
# tnsnames.ora Network Configuration File: C:\Users\All Users\Desktop\tnsnames.ora
# Generated by Oracle configuration tools.

ORICLE_SERVER_NAME =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
1
2
3
4
5
6
7
8
9
10
11
12
# sqlnet.ora Network Configuration File: C:\Users\All Users\Desktop\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = C:\app\oracle\product\11.2.0\dbhome_2\log

当服务的网络ip发生更改

  1. 有三个文件需要更改
  2. 更改的内容是服务器的ip
  3. 重新配置lisenter.ora,本地PL\SQL使用的nsnames.ora,以及外部客户端软件navicat
  4. 否则,会出现监听服务不随系统启动,并且,当我们手动启动的时候出现下面的报错,然后又自动关闭了

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

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


当我主机中个客户端navicat在删除服务命名时,同样也可以连接。
说明

  1. 当我用navicat连接服务器数据库时,nsnames.ora 文件会根据你在navicat的配置自动生成
  2. 用net manager配置的nsnames.ora (服务命名)其实也是给客户端程序用的,例如,PL\SQL中配置环境变量
    1. 配置参考pl/sql登录时database下拉框没有任何内容_百度经验
    2. 你配置的服务名就会出现在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]
这里一定要调试通,才可以说明问题解决了


这里说明成功登陆了

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