网站首页 > 技术文章 正文
概述
Oracle监听一般会涉及三个文件:sqlnet.ora、tnsnames.ora、listener.ora,这三个文件之间有什么区别呢?分别的作用是什么?
sqlnet.ora
sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数。
1).NAMES.DEFAULT_DOMAIN:域名domain定义
在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"
示例:.NAMES.DEFAULT_DOMAIN.com
2)NAMES.DIRECTORY_PATH:定义了在客户端连接数据库时,采用什么样的匹配方式。
示例:NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
那么在客户端执行sqlplus username/password@local_dev连接数据库的时,首先采用tnsnames.ora的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;HOSTNAME表示使用host文件,DNS,NIS等来解析;
3)SQLNET.AUTHENTICATION_SERVICES:定义登录数据库的认证方式,这个参数默认没有设置。
示例:SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)
NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用,先后顺序表明验证的优先方式。
4)tcp.validnode_checking=yes:表示启用客户端的IP检查,非法的IP将被拒绝访问Oracle。
5)tcp.invited_nodes=(IP1,IP2,IP3...):表示允许哪些IP访问Oracle。
6)tcp.excluded_nodes=(IP1,IP2,IP3...):表示拒绝哪些IP访问Oracle。
tnsnames.ora
tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。
PROTOCOL参数一般是TCP,可以根据服务器情况选择一种配置方式。
HOST 一般是ip地址,如果是主机名,则应该在客户端系统的host文件上配好主机名和ip地址的映射关系。
PORT 标准是1521,根据服务器端的监听端口而定。
SERVICE_NAME 就是数据库的服务名。
listener.ora
tnslsnr进程是监听、并接受远程连接数据库请求的监听进程。listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取,该文件位于服务端。如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr进程,也不需要去维护listener.ora文件。
启动监听进程的命令,在命令模式下,执行lsnrctl start命令就启动了监听进程tnslsnr。
LISTENER部分包含协议地址列表,每个实例一个入口。
SID_LIST_LISTENER部分标识全局数据库名称、标识监听程序正在服务的每个实例的Oracle软件主目录以及实例或SID。
当你执行命令sqlplus username/password@tnsname时,一般处理过程如下:
1) 查询sqlnet.ora看看名称的解析方式,由参数NAMES.DIRECTORY_PATH控制,常用参数值TNSNAME和hostname,不指定参数则默认使用TNSNAME。 2) 如果使用TNSNAME,则查询tnsnames.ora文件,从里边找tnsname的记录,并且找到主机名,端口和service_name。 3) 如果listener进程没有问题的话,建立与listener进程的连接。 4) 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。 5) 这时候网络连接已经建立,listener进程的历史使命也就完成了。
几种连接数据库命令形式
1)sqlplus "/ as sysdba" 这是典型的操作系统认证,不需要listener进程,数据库即使不可用也可以登录。
2)sqlplus username/password 不需要listener进程,登录本机数据库,数据库实例启动即可。
3)sqlplus username/password@tnsname需要listener进程,最常见的远程登录模式,需要启动数据库实例和listener进程。
注:如果本地连接数据库,服务器进程显示如下:
oracle 2878 2814 0 09:46 ? 00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=xxx)))
如果通过监听连接数据库,服务器进程显示如下:
oracle 3124 1 0 09:48 ? 00:00:00 oracleorcl (LOCAL=NO)
篇幅有限,关于监听的几个配置文件就介绍到这了,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
猜你喜欢
- 2024-10-16 数据库Oracle的安装及访问 oracle数据库安装视频教程
- 2024-10-16 Oracle数据库不为人知的几个概念:selectivity、cardinality和CF
- 2024-10-16 Oracle数据库之高级查询二 oracle 高级
- 2024-10-16 Oracle数据库死锁查询 oracle数据库死锁处理方法
- 2024-10-16 Oracle——怎么查看执行计划 oracle查看执行计划详解
- 2024-10-16 详解六种方法查看oracle执行计划=》优化必备
- 2024-10-16 oracle数据库条件查询之本月之前 oracle查询当月的每一天
- 2024-10-16 Oracle查看Sql执行计划的方法及示例
- 2024-10-16 详解Oracle 数据库启动过程 oracle数据库启动步骤顺序
- 2024-10-16 分享两个Oracle的shell脚本---一键获得数据库实例状态、参数及包
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)