Sql*Plus网络访问基本原理及相关名词解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

sql*plus 网络访问运行基本机理: 
listener.ora文件
SID_LIST_LISTENER =                                                            #命名规则 SID_LIST_+上面定义的监听器名称 
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (SID_NAME = orcl)
    )
  )
LISTENER =   
                                                                           #监听器名称 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
  ) 
sqlnet.ora 文件: 
NAMES.DIRECTORY_PATH = (TNSNAMES, ….)
NAMES.DEFAULT_DOMAIN = server.com
tnsnames.ora
 文件 : 
test =
(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521))
)
(CONNECT_DATA=(SERVICE_NAME=orcl.testserver.com)
)

在用户输入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 ,利用这些信息将连接请求发送到正确的数据库服务器上。
另外原则上tnsnames.ora 中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与tnsnames.ora 中配置的完全一样。
ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor.
该错误表示能在tnsnames.ora 中找到网络服务名,但是在tnsnames.ora 中指定的SERVICE_NAME 与服务器端的SERVICE_NAME 不一致。解决的办法是修改tnsnames.ora 中的SERVICE_NAME 。 
易混淆术语介绍:
Db_name  对一个数据库(Oracle database )的唯一标识,该数据库为Oracle database 。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain 参数,这样在数据库的标识是由Db_name 和 Db_domain 两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name 和 Db_domain 两个参数用’.’ 连接起来,表示一个数据库,并将该数据库的名称称为Global_name ,即它扩展了Db_name 。 Db_name 参数只能由字母、数字、’_’ 、’#’ 、’$’ 组成,而且最多8 个字符。
Db_domain  定义一个数据库所在的域,该域的命名同互联网的’ 域’ 没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
Global_name  对一个数据库(Oracle database )的唯一标识,oracle 建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain 。在以后对参数文件中Db_name 与Db_domain 参数的任何修改不影响Global_name 的值,可通过select * from global_name命令查看global_name。如果要修改 Global_name ,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain> 命令进行修改,然后修改相应参数。
Service_name  该参数是oracle8i 新引进的。在8i 以前,我们用SID 来表示标识数据库的一个实例,但是在Oracle 的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name 参数,该参数对应一个数据库, 而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain ,即等于Global_name 。一个数据库可以对应多个Service_name ,以便实现更灵活的配置。该参数与SID 没有直接关 系,即不必Service name 必须与SID 一样。可通过show parameter service 查看Service_name.在10g R2版本中,当采用默认端口时,系统每隔60秒会自动向默认监听重新进行注册服务。当然也可以采用alter system register 进行手动注册。

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
上面的话很容易误解,让人认为数据库服务名(SERVICE NAME)有问题,其实他指的是tnsnames.ora中配置的别名ALIAS所对应的SERVICE_NAME,与在LISTENER中的注册的一堆服务名找不到(也可能一个也没有,比如只配置了动态监听)。
GLOBAL_DBNAME 是指listener.ora文件中注册静态监听时的服务名。另在PARAMETER(spfile)中也可用SERVICE_NAME参数指定注册动态监听时的服务名。
而tnsnames.ora中的服务名SERVICE_NAME的可选值为静态和动态注册的服务名(SERVICE_NAME),也即listener.ora中的GLOBAL_DBNAME和PARAMETER中的SERVICE_NAME,可以是任意支持的字符,但两者必须与保持一致。而sqlplus中的链接字符串,并不是SERVICE_NAME,而是一个SERVICE_NAME的ALIAS(在tnsname.ora中配置) 。
静态监听的目的,除了简化配置外,还可以提供在数据库未启动前仍能连接的功能。

参考至:http://lzysystem.iteye.com/blog/424569
http://tianyadgt.blog.163.com/blog/static/3708909320103855054808/
如有错误,欢迎指正
邮箱:czmcj@163.com

作者:czmmiao 原文地址:http://czmmiao.iteye.com/blog/911082
相关文章
|
29天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
155 30
|
17天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
44 11
|
13天前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
13天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
29 2
|
13天前
|
存储 监控 网络协议
一次读懂网络分层:应用层到物理层全解析
网络模型分为五层结构,从应用层到物理层逐层解析。应用层提供HTTP、SMTP、DNS等常见协议;传输层通过TCP和UDP确保数据可靠或高效传输;网络层利用IP和路由器实现跨网数据包路由;数据链路层通过MAC地址管理局域网设备;物理层负责比特流的物理传输。各层协同工作,使网络通信得以实现。
|
13天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
60 1
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
SQL 安全 算法
网络安全之盾:漏洞防御与加密技术解析
在数字时代的浪潮中,网络安全和信息安全成为维护个人隐私和企业资产的重要防线。本文将深入探讨网络安全的薄弱环节—漏洞,并分析如何通过加密技术来加固这道防线。文章还将分享提升安全意识的重要性,以预防潜在的网络威胁,确保数据的安全与隐私。
66 2
|
2月前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术深度解析
在数字信息的海洋中,网络安全是航行者不可或缺的指南针。本文将深入探讨网络安全的两大支柱——漏洞防御和加密技术,揭示它们如何共同构筑起信息时代的安全屏障。从最新的网络攻击手段到防御策略,再到加密技术的奥秘,我们将一起揭开网络安全的神秘面纱,理解其背后的科学原理,并掌握保护个人和企业数据的关键技能。
56 3
|
2月前
|
网络协议
网络通信的基石:TCP/IP协议栈的层次结构解析
在现代网络通信中,TCP/IP协议栈是构建互联网的基础。它定义了数据如何在网络中传输,以及如何确保数据的完整性和可靠性。本文将深入探讨TCP/IP协议栈的层次结构,揭示每一层的功能和重要性。
71 5

推荐镜像

更多