网站首页 > 技术文章 正文
概述
ORACLE Net是一个软件层,驻留在客户端和数据库服务器上。它负责建立和维护客户端应用程序和服务器之间的连接,以及它们之间的信息交换,使用的是标准协议。
1.Oracle Net 基础层
在客户端上,应用程序于Oracle Net基础层通信并维护连接。Oracle Net 基础层使用的是Oracle 协议支持,与业界标准的网络通信协议通信,例如TCP/IP,再与Oracle数据库服务器通信。
在Oracle数据库服务器上的情况和在客户端类似。网络协议发生请求到Oracle协议支持层,然后发送信息到Oracle Net 基础层。Oralce Net 基础层再与数据库服务器进程通信处理客户端请求。
2.Oracle 协议支持
Oracle Net 基础层使用Oracle 协议支持与下列标准网络协议进行通信:
1.TCP/IP(4和6)
2.带SSL的TCP/IP
3.命名管道
–专门为微软局域网环境提供。一个服务器端程序创建一个命名管道,客户端进程以名为名称打开它。一边写入,再另一边就可以读取。
关于连接描述符
一个连接描述符时在 tnsnames.ora文件中包含的一个或多个监听的地址和连接信息。
例如:
dbdao= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=dbdao.com)(PORT=1521)) (CONNECT_DATA= (SID= dbdao01) (SERVICE_NAME= dbdao01.com) (INSTANCE_NAME=dbdao01)))
PROTOCOL 参数,用来指定监听协议地址。此处tcp 代表的是TCP/IP在这个例子中 ADDRESS 选项包含下列内容:
HOST 参数 定义了主机名。此处主机是dbdao.com
PORT参数定义了端口。此处指定是1521,这是默认的端口号
CONNECT_DATA 选项包含下列内容:
SID 参数 定义了ORACLE数据库的实例名。此处是dbdao01
SERVICE_NAME参数定义了目标数据库的服务名是dbdao01.com。在数据库中对应的是SERVICE_NAMES初始化参数,也就是通常所说的全局数据库名。
INSTANCE_NAME 参数定义数据库实例。这个是可选的参数。在安装和数据库创建的时候初始化参数INSTANCE_NAME默认为SID。
当然也可以直接使用简单连接字符串的方式例如:
CONNECT scott/oracle@dbdao:1521/dbdao01.com–不指定端口默认使用1521CONNECT scott/oracle@// dbdao /dbdao01.com –//是指定使用JDBC或URL进行连接。普通的sql连接和不指定时等价。
其实就是本地命名配置的连接字符串,例如
dbdao/dbdao01.com:dedicated/dbdao01
对应于:
(DESCRIPTION=(CONNECT_DATA= (SERVICE_NAME=dbdao01.com) (INSTANCE_NAME=dbdao01) (SERVER=dedicated)) (ADDRESS= (PROTOCOL=TCP) (HOST=dbdao) (PORT=1521)))
基本上只要安装了Oracle Net 服务软件的环境都可以使用简单连接命名。确保在sqlnet.ora文件中指定了 NAMES.DIRECTORY_PATH参数中包含EZCONNECT此处dbdao为主机名,dbdao01.com是服务名,dbdao是实例名
例如:
NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)
使用多个监听器来提高服务的可用性:
例如,配置多个监听到多个节点上,可以让客户端连接到相同的数据库服务:
(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=dbdao1-server)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=dbdao2-server)(PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=dbdao01)))
注意:关于RAC的负载均衡,不在此章节的讨论范文之类,有兴趣的同学可以参考:这样还可以利用负载均衡和故障转移特性。当客户端连接第一个监听的时候失败了,就会尝试其他的协议地址。如果启用了客户端连接平衡,客户端在连接的时候会随机连接到一个地址。(dbdao.com oracle 11g OCM培训)
关于监听器:
监听器的配置存储在配置文件listener.ora中。因为配置参数均为默认值,所以可以不用什么配置启动一个监听(没有配置文件listener.ora)。默认的监听名称时LISTENER,支持无服务的启动,并监听固定的TCP协议地址:
(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))
监听转发客户端需要被支持的服务,这个服务会动态注册到监听上。这个动态注册的特性被称为服务注册(service regisration).12C之后,当数据库启动的时候LREG后台进程会调查监听是否启动,如果启动就会传递相关参数,如果没启动LREG会周期的尝试连接。在12C 之前,PMON 执行监听注册。
注意:LISTENER 的属性会重写LOCAL_LISTENER参数。修改LOCAL_LISTENER参数不会影响监听器配置的属性。只是影响PMON去自动的注册非1521的监听器。
远程监听参数 REMOTE_LISTENER 也是类似,用于注册数据库到远程的监听。LOCAL_LISTENER和REMOTE_LISTENER参数的值由命名规则解析,通过设置tnsnames.ora来指定。如果tnsnames.ora未设置命名规则别名,在指定参数值的时候会出现ORA-00119和ORA-00132的错误。
例如在tnsnames.ora中配置:
Dbdao_test =(DESCRIPTION = (ADDRESS = (PROTOCOL=tcp)(HOST=10.0.3.15)(PORT=1521)) (CONNECT_DATA = (SERVICE_NAME = dbdao01) ) )
lsnrctl 监听器工具
Lsnrctl 是一个交互式的命令行工具。直接运行lsnrctl可以进入控制台
运行help命令可以查询相关的使用说明:(dbdao.com oracle 11g OCM培训)
常用的命令:
lsnrctl RELOAD listener_name
–重载配置
lsnrctl start listener_name
–启动监听
lsnrctl stop listener_name
–关闭监听
lsnrctl status listener_name
–查询监听的状态,会列出很多信息,注册的服务,使用的协议。关于实例信息,如果是ready表示允许连接。BLOCKED 表示实例不允许连接。UNKNOWN表明不是动态注册的,这状态是未知的。RESTRICTED表明实例处于拒绝模式。(dbdao.com oracle 11g OCM培训)
lsnrctl service listener_name
–service 能显示关于服务和句柄的信息。
在使用lsnrctl 命令时,如果不指定监听名称(lsnrctl RELOAD,lsnrctl start lsnrctl stop),默认使用的是LISTENER。
有时候客户端在指定的时候无响应,那么会中断其连接。并且在监听器的日志中会出现:
ORA-12525:TNS: listener has not received client’s request in time allowed 的消息
可以通过SET INBOUND_CONNECT_TIMEOUT 来设置时间:
例如:
lsnrctl set INBOUND_CONNECT_TIMEOUT 600lsnrctl save_config
--保留变更之前的listener配置文件,默认备份为listener.bak
后面会分享更多DBA内容,感兴趣的朋友可以关注下!
猜你喜欢
- 2025-07-14 网络安全工程师必知的75个网络端口
- 2025-07-14 零基础也能实现外网访问到内网的数据库,选对了工具一点也不难
- 2025-07-14 Linux: SSH隧道 (端口转发)(ssh隧道详细使用教程)
- 2025-07-14 危!这些高危端口再不知道问题就大了
- 2025-07-14 风险突出的高危端口汇总 一网打尽 !
- 2024-10-21 Docker安装部署Oracle/Sql Server
- 2024-10-21 Ubuntu 系统上使用docker安装Oracle
- 2024-10-21 超详细的各种数据库默认驱动、URL、端口总结
- 2024-10-21 漫画——你还记得原生的JDBC怎么连接数据库吗?
- 2024-10-21 Jsp九大内置对象,三大指令,七大动作的具体功能——你都知道吗
你 发表评论:
欢迎- 607℃几个Oracle空值处理函数 oracle处理null值的函数
- 600℃Oracle分析函数之Lag和Lead()使用
- 587℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 583℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 580℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 572℃【数据统计分析】详解Oracle分组函数之CUBE
- 561℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 552℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)