【Oracle学习】之 配置监听器 和 TNSName

时间:2021-02-03 08:38:26

今天被oracle老师扣平时分了,忧伤(╯﹏╰),还是好好学吧。


实际上,在安装完oracle11g时候,就已经配置监听器了。
不信?cmd 中 输入services.msc, 打开服务会看到OracleOraDb11g_home1TNSListener。
下面是默认配置文件信息


【Oracle学习】之 配置监听器 和 TNSName

如上图,配置和移植工具->Net Manager。

【Oracle学习】之 配置监听器 和 TNSName

  在该对话框中可以进行数据库服务器的网络配置,包括查看概要文件、服务命名、监听程序的配置信息;同时还可以进行概要文件、服务命名、监听程序的配置、以及测试与数据库的连接情况。

一、配置监听器

  监听程序(监听器)是Oracle基于服务器端的一种网络服务。监听程序创建在数据库服务器端,主要作用是监听客户端的连接请求,并将请求转发给服务器。Oracle监听程序总是存在于数据库服务器端,因此在客户端创建监听程序毫无意义。

(1)启动netcat(Net Configuration Assistant)

方法:
1.netcat
2.window菜单 应用里直接打开Net Configuration Assistant

【Oracle学习】之 配置监听器 和 TNSName



(2)步骤二

【Oracle学习】之 配置监听器 和 TNSName

为什么是添加呢?
因为安装oracle11g后,就已经有默认配置了。
如图所示:

【Oracle学习】之 配置监听器 和 TNSName

【Oracle学习】之 配置监听器 和 TNSName

listener.ora——listener监听器进程的配置文件

LISTENER :监听名称,可以配置多个监听,多个监听的端口号要区分开来。
GLOBAL_DBNAME :全局数据库名。通过select * from global_name; 查询得出
ORACLE_HOME :oracle软件的根目录
SID_NAME :服务器端(本机)的SID
PROTOCOL:监听协议,一般都使用TCP
HOST:本机IP地址,双机时候使用浮动IP
PORT:监听的端口号,使用netstat –an 检查该端口不被占用。



(3)步骤三

【Oracle学习】之 配置监听器 和 TNSName



(4)步骤四

【Oracle学习】之 配置监听器 和 TNSName



(5)步骤五

【Oracle学习】之 配置监听器 和 TNSName

实际上:就是在listener.ora 添加配置

//分别在List下 加
(SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = 路径)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:路径")
    )

(DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
      (ADDRESS = (PROTOCOL = TCP)(HOST = xxxip)(PORT = 1522))
    )



(6)步骤六

【Oracle学习】之 配置监听器 和 TNSName




二、配置本地Net服务名

  本地网络服务器名配置就是通过网络访问Oracle数据库或其他服务时用到的Net服务名。在进行Oracle软件开发时,每一个人只需要安装一个客户端即可,没有必要将所有的都安装一个Oracle数据库服务器,因为数据库服务器是共享的。此时需要配置客户端。

(1)启动netcat

【Oracle学习】之 配置监听器 和 TNSName


(2)步骤二

【Oracle学习】之 配置监听器 和 TNSName


(3)步骤三

【Oracle学习】之 配置监听器 和 TNSName



(4)步骤四

注意:这里的服务器名,是你数据库名,后面的。默认是:orcl

【Oracle学习】之 配置监听器 和 TNSName
【Oracle学习】之 配置监听器 和 TNSName



(5)步骤五

【Oracle学习】之 配置监听器 和 TNSName



(6)步骤六

【Oracle学习】之 配置监听器 和 TNSName

说明已经有了

【Oracle学习】之 配置监听器 和 TNSName

  tnsnames.ora——这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应

  只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。

ORCL:客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
HOST:ORACLE服务器端IP地址或者hostname。确保服务器端的监听启动正常。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令查看。

【Oracle学习】之 配置监听器 和 TNSName



sqlplus运行基本机理:

  在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@test.server.com ,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如 #NAMES.DEFAULT_DOMAIN = server.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找 test网络服务名,然后取出其中的host ,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。