oracle 客户端访问数据库,ORACLE数据库客户端连接访问服务器
数据库客户端连接访问服务器
oracle客户端访问服务器是通过Listener/Tnsnames协议机制。Listener负责再服务器上监听来自远端的连接请求,而Tnsnames则是远端的连接协议。用户在使用这个机制的时候,只需要保证三点即可:
1.客户端/服务器之间的网络链路通畅。
2.服务器上监听器配置正确并启动($ORACLE_HOME/network/admin/Listener.ora),且数据库实例已经启动。
3.客户端上请求器配置正确($ORACLE_HOME/network/admin/Tnsname.ora)。
下面是我的配置并访问过程:
一:检查客户端/服务器之间的网络状态
客户端操作系统:Windows XP Professional SP3
数据库客户端版本:Oracle 11g Release
IP:192.168.114.103
服务器操作系统:RHEL 5.1
数据库服务器版本:Oracle Enterprise 11.1.0.6 Release
IP:192.168.114.222
IP对应名称:ttecdis.tju-tcb.cn
常见数据库名称ttecdis
数据库启动后实例名称ttecdis
客户端与服务器互相ping,网络通畅。
二:服务器端Listener.ora配置
在服务器端,存在一个初始化参数SERVICE_NAME,这个参数就是用于定义客户端文件(tnsname.ora)请求的服务器端的服务名,也是服务器端文件(listener.ora)提供的服务名。
可以使用show parameter service_name来查看。
修改了服务器的SERVICE_NAME参数,监听文件listerner.ora文件也要做出修改,使二者保持一致,并使客户端的tnsnames.ora内的SERVICE_NAME与之一致。才能保证通畅。
此处特意将服务器的SERVICE_NAME设置为两个值,以描述客户端请求服务器端连接的对应关系。
ALTER SYSTEM SET SERVICE_NAMES='kanon,emily' scope=both--此修改将使的spfile与内存同时被修改,下面是监听器的配置。
配置举例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = kanon)
(ORACLE_HOME = $ORACLE_HOME/)
(SID_NAME = ttecdis)
)
(SID_DESC =
(GLOBAL_DBNAME = emily)
(ORACLE_HOME = $ORACLE_HOME/)
(SID_NAME = ttecdis)
)
)
Listener.ora位于目录$ORACLE_HOME/network/admin.文件内包含两部分内容:LISTENER包含了监听使用的协议、本机地址和监听端口;SID_LIST_LISTENER描述了本机对外提供的服务(GLOBAL_DBNAME)。
完成上述两端的配置后,启动数据库,之后,启动监听器(lsnrctl start),显示信息如下:
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ttecdis.tju-tcb.cn)(PORT=1521)))
Services Summary...
Service "kanon" has 1 instance(s).
Instance "ttecdis", status UNKNOWN, has 1 handler(s) for this service...
Service "emily" has 1 instance(s).
Instance "ttecdis", status UNKNOWN, has 1 handler(s) for this service...
Service "ttecdis" has 1 instance(s).
Instance "ttecdis", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
此时,服务器实现启动监听程序,向外提供服务kanon与emily(GLOBAL_DBNAME参数描述的值就是对外提供的服务器名),客户端可以向服务器上的kanon(SERVICE_NAME参数描述的值就是目的服务)发起连接了。
三:远端Tnsnames.ora配置
配置举例:
wintolinux =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.222)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kanon)
)
)
文件内包含两部分内容:ADDRESS_LIST 描述了连接使用的协议、服务器地址和端口;CONNECT_DATA描述了目标服务器名(SERVICE_NAME),tnsname.ora内的SERVICE_NAME要与服务器端的GLOBAL_DBNAME相同,这是客户端请求的服务。
还可以修改客户端配置的SERVICE_NAME = emily来请求连接另一个服务。
wintolinux =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.114.222)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = emily)
)
)
客户端并不需要关心它连接的数据库究竟是哪个,更不会想到两个客户端连接的是同一个数据库了。
四:测试客户端向服务器发起连接
1.客户端启动sqlplus,不登录
cmd>sqlplus /nolog
2.向服务器发起连接
sql> connect sys/ttecdis@wintolinux as sysdba(wintolinux是我的客户端tnsname.ora内的配置连接信息标识符) 得到反馈信息: ERROR: ORA-12532: TNS: 无效的参数 3.检测到数据库服务器是否可以ping通 cmd>tnsping wintolinux 不通!! 4.分析原因 检查网络连接---通过! 检查配置文件正确性---通过! 检查服务器防火墙设置---system-config-securitylevel---发现1521端口被关闭。 打开该端口,再次连接,成功。 5.测试访问 客户端执行SQL语句select * from dual; 输出结果。成功! 扩展:在Oracle8i以及之后的版本里,Oracle引入了一个动态服务注册功能。所谓动态服务注册是指当实例启动之后,由后台进程PMON在监听器中注册数据库服务器信息,在此机制下,原来监听器配置文件listener.ora中的DIS_LIST部分将不是必须的,默认的配置文件里面也的确是没有这部分的。如果先启动监听器,再启动数据库实例,我们就可以通过lsnrctl status命令看到动态注册进入的服务了,此时服务的状态不再是UNKNOWN,而是READY了,因为监听器具体知道是哪个服务注册进来了。另外,在客户端配置工具net manager中,服务名不支持"域名格式",但tnsname协议是支持的,所以可以通过手工修改tnsname.ora的方式更改服务名为"域名格式"的。
oracle 客户端访问数据库,ORACLE数据库客户端连接访问服务器相关推荐
- win7 64位系统oracle客户端访问远程数据库
今天将win7 64位系统oracle客户端访问远程数据库配置成功,由于我用的是64位的win7操作系统,在网上查了很多资料都说在64位系统下oracle客户端配置很复杂,于是自己亲手试了一下成功了, ...
- Oracle新手笔记(2) 关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法...
在做项目过程中,遇到Oracle 9i或9i版本以上客户端连接Oracle 8i及8i版本以下服务器端时,查询出来的中文数据全部变成了乱码.经查询资料终于解决了乱码问题. 开发工具是ASP.NET(C ...
- 在C#中,不安装Oracle客户端如何连接Oracle数据库
本方法优点: 1.程序内集成Oracle客户端,无需用户自行进行配置 本方法缺点: 2.增加程序包的体积(Oracle instant client本身有几十兆大小) 下面说一下如何实现. 0.首先, ...
- t3客户端连不上服务器数据库协议,t3客户端连接不到服务器6
t3客户端连接不到服务器6 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的NodeJs Redis客户端连接Redis实例的方法.更多的客户端的使用方法请参考Redis客户端.本章节操作 ...
- oracle透明网关访问antdb,oracle通过透明网关,创建dblink,访问ms sql server和其他数据库 -......
oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库 环境: 1.在安装有oracle服务器端,ms sql server的客 ...
- 没有oracle客户端可以连接数据库,Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端)...
本文主要向大家介绍了Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 标签:acl str ...
- oracle客户端设置中文,Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法
本文主要向大家介绍了Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 客户端环境参数NLS_LANG = ...
- oracle客户端备份导入导出数据库(exp,imp)
当从服务器上备份数据到本地 exp HPTDATA/HPTDATA@HPTDATA F:\backup\1.dmp 说明 exp是orcale 备份数据库操作语句 第一个 HPTDATA 是服务器数据 ...
- oracle客户端查看字符集,oracle 中文乱码---查看和修改客户端字符集
客户端NLS_LANG的设置方法 Windows: # 常用中文字符集set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK # 常用unicode字符集 set ...
最新文章
- MyBatis Review——输入输出映射
- 操作系统:虚拟内存的定义及实现方式
- Android之DiskLruCache(缓存工具)
- 转型从思维习惯的转变开始
- Android平台各类恶意软件及病毒概览
- html有4个li怎么选择第二个,如何在html中使用两个具有不同属性的Li?
- MySQL 性能分析 之 联合索引(复合索引)实践分析
- 引领Boost(二)(Boost::Any)
- 防火墙设置对外开放port
- 12c emcc Algorithm negotiation fail
- python operator用法,Python operator.eq()函数与示例
- 嵌入式系统基础——Unbuntu的初步使用
- 米家和苹果HomeKit更推荐哪个,各自的优缺点如何?
- 单元测试中 Right-BICEP 和 CORRECT
- 喜茶门店总数超过650家,深圳单城市突破100家店
- MacOS系统升级与MacOS13版本
- 用计算机弹九八k的乐谱,抖音计算器按出的音乐乐谱有哪些 抖音计算器乐谱汇总...
- Facebook账号为什么老是被限制?
- html/css做一个简单的个人简历
- seek是python文件操作方法吗,seek引发的python文件读写的问题
热门文章
- java类多例_Java多例设计模式实例详解
- 【python教程】IO文件操作的常见用法
- Python列表的增删查改及常用操作
- 如何保护你的 Python 代码—— 定制 Python 解释器
- 请写php合并数组,合并PHP数组
- php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧
- pytorch torch.Tensor.numpy()(从张量创建一个numpy数组,数组和张量共享相同内存)
- python 如何从列表中剔除(去除)重复元素?set()
- Python 计算机视觉(九)—— OpenCV进行图像平滑
- Haproxy + Pacemaker 实现高可用负载均衡(二)