数据库客户端连接访问服务器

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数据库客户端连接访问服务器相关推荐

  1. win7 64位系统oracle客户端访问远程数据库

    今天将win7 64位系统oracle客户端访问远程数据库配置成功,由于我用的是64位的win7操作系统,在网上查了很多资料都说在64位系统下oracle客户端配置很复杂,于是自己亲手试了一下成功了, ...

  2. Oracle新手笔记(2) 关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法...

    在做项目过程中,遇到Oracle 9i或9i版本以上客户端连接Oracle 8i及8i版本以下服务器端时,查询出来的中文数据全部变成了乱码.经查询资料终于解决了乱码问题. 开发工具是ASP.NET(C ...

  3. 在C#中,不安装Oracle客户端如何连接Oracle数据库

    本方法优点: 1.程序内集成Oracle客户端,无需用户自行进行配置 本方法缺点: 2.增加程序包的体积(Oracle instant client本身有几十兆大小) 下面说一下如何实现. 0.首先, ...

  4. t3客户端连不上服务器数据库协议,t3客户端连接不到服务器6

    t3客户端连接不到服务器6 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的NodeJs Redis客户端连接Redis实例的方法.更多的客户端的使用方法请参考Redis客户端.本章节操作 ...

  5. oracle透明网关访问antdb,oracle通过透明网关,创建dblink,访问ms sql server和其他数据库 -......

    oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库 环境: 1.在安装有oracle服务器端,ms sql server的客 ...

  6. 没有oracle客户端可以连接数据库,Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端)...

    本文主要向大家介绍了Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 标签:acl   str    ...

  7. oracle客户端设置中文,Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法

    本文主要向大家介绍了Oracle数据库之ORACLE客户端语言设置,SQLPLUS乱码解决方法,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 客户端环境参数NLS_LANG = ...

  8. oracle客户端备份导入导出数据库(exp,imp)

    当从服务器上备份数据到本地 exp HPTDATA/HPTDATA@HPTDATA F:\backup\1.dmp 说明 exp是orcale 备份数据库操作语句 第一个 HPTDATA 是服务器数据 ...

  9. oracle客户端查看字符集,oracle 中文乱码---查看和修改客户端字符集

    客户端NLS_LANG的设置方法 Windows: # 常用中文字符集set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK # 常用unicode字符集 set ...

最新文章

  1. MyBatis Review——输入输出映射
  2. 操作系统:虚拟内存的定义及实现方式
  3. Android之DiskLruCache(缓存工具)
  4. 转型从思维习惯的转变开始
  5. Android平台各类恶意软件及病毒概览
  6. html有4个li怎么选择第二个,如何在html中使用两个具有不同属性的Li?
  7. MySQL 性能分析 之 联合索引(复合索引)实践分析
  8. 引领Boost(二)(Boost::Any)
  9. 防火墙设置对外开放port
  10. 12c emcc Algorithm negotiation fail
  11. python operator用法,Python operator.eq()函数与示例
  12. 嵌入式系统基础——Unbuntu的初步使用
  13. 米家和苹果HomeKit更推荐哪个,各自的优缺点如何?
  14. 单元测试中 Right-BICEP 和 CORRECT
  15. 喜茶门店总数超过650家,深圳单城市突破100家店
  16. MacOS系统升级与MacOS13版本
  17. 用计算机弹九八k的乐谱,抖音计算器按出的音乐乐谱有哪些 抖音计算器乐谱汇总...
  18. Facebook账号为什么老是被限制?
  19. html/css做一个简单的个人简历
  20. seek是python文件操作方法吗,seek引发的python文件读写的问题

热门文章

  1. java类多例_Java多例设计模式实例详解
  2. 【python教程】IO文件操作的常见用法
  3. Python列表的增删查改及常用操作
  4. 如何保护你的 Python 代码—— 定制 Python 解释器
  5. 请写php合并数组,合并PHP数组
  6. php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧
  7. pytorch torch.Tensor.numpy()(从张量创建一个numpy数组,数组和张量共享相同内存)
  8. python 如何从列表中剔除(去除)重复元素?set()
  9. Python 计算机视觉(九)—— OpenCV进行图像平滑
  10. Haproxy + Pacemaker 实现高可用负载均衡(二)