ORACLE学习笔记(四)——数据库的访问

数据库启动之后想要提供网络服务还需要启动数据库的监听器(配置文件通常为listener.ora),其缺省端口是1521,接收来自客户端的访问请求(客户端请求通过tnsnames.ora文件定义发送)。

一、客户端的TNSNAMES.ORA文件配置

这个配置文件位于$ORACLE_HOME/network/admin目录下,典型的配置如下:
CLAUDE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = claude.com.cn)
    )
  )
这里的ADDRESS部分包含了服务器的地址及监听端口信息,CONNECT_DATA部分包含了链接信息,用于定义目标服务的名称。SERVER_NAME在这里用于识别访问的数据库服务。
配置完成之后,可以通过tnsping工具进行连通性测试:
[oracle@claude ~]$ tnsping claude
Used parameter files:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = claude.com.cn)))
OK (0 msec)
在服务器端数据库中存在一个初始化参数SERVICE_NAME,这个参数用于客户端请求的数据库服务名。SERVICE_NAMES为实例所连接的数据库定义一个或多个服务名,可以通过定义多个服务名将不同的用户连接区分开来。

二、服务器端的监听器文件LISTENER.ORA配置

这个配置文件同样位于$ORACLE_HOME/network/admin目录下,典型的配置如下:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=orcl)
    )
  )
监听器文件主要包括两个部分:
  • 第一部分LISTENER信息,这部分包含了监听的协议、地址以及端口等信息。
  • 第二部分SID_LIST_LISTENER信息,这部分信息用于提供对外的数据库服务列表。
设置服务名的参数为GLOBAL_DBNAME,当处理客户端连接请求时,监听器首先尝试将GLOBAL_DBNAME和客户端请求中的SERVICE_NAME相匹配;如果客户端连接请求的是SID信息,则Oracle不检查GLOBAL_DBNAME设置,而是对监听器中设置的SID_NAME进行匹配。

三、通过不同服务器名对数据库的访问

客户端的配置示范:
SALES =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sales.claude.com)
    )
  )

NEWS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED) 
      (SERVICE_NAME = news.claude.com)
    )
  )
通过这两个服务名都可以顺利地访问到数据库:
SQL> connect claude/claude@news;
Connected.
SQL> show parameter service_names;
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
service_names			     string	 sales.claude.com, news.claude.
						 com
SQL> connect claude/claude@sales;
Connected.
SQL> show parameter service_names;
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
service_names			     string	 sales.claude.com, news.claude.
						 com

四、动态监听器注册服务

所谓动态注册时指当前实例启动之后,由后台进程PMON在监听器中注册数据库服务信息。在动态注册机制下,原来监听器中的SID_LIST部分将不再需要。
如果监听器具有非缺省配置,则需要设置LOCAL_LISTENER参数。例如监听器端口为1522,可以设置初始化参数为:
LOCAL_LISTENER=listener1;
对于共享服务器模式,可以设置为:
DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener1)"
在tnsnames.ora文件中listener1可以按如下方式解析:
listener1=
    (DESCRIPTION=
         (ADDRESS=(PROTOCOL=tcp)(HOST=prod-server)(PORT=1522)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值