【原创】Oracle配置监听和连接,已经一些比较容易混淆的相关概念

1.配置监听

配置监听的方法有3种:

Database 

PLSExtProc 

Executable

Database 模式是标准的配置方式,也是最常用的数据库连接方式。

PLSExtProc  模式允许PL/SQL程序访问外部程序,并且被大多数实例配置为默认连接方式

Executable  模式允许外部程序能通过一个tns连接被访问(目前没用到过)

Database 模式配置方式:

(SID_DESC =

      (GLOBAL_DBNAME= querymqq)

      (ORACLE_HOME= /data/oracle/product/10.2.0/db_1/)

      (SID_NAME = mqq)

    )

PLSExtProc模式配置方式:

(SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /usr/local/oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

在我们新oracle和8.155机器上只使用PLSextProc方式配置,并不能建立连接,还得加database配置。

对PLSextProc的解释,网上也没人能说出个名堂,疑惑的提问倒是一堆一堆的。那个e文档也含糊的很。

2.监听状态

命令:lsnrctl status,红色部分为注解

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 12-3ÔÂ -2007 21:39:27

 

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production

Start Date                12-3ÔÂ -2007 20:53:47

Uptime                    0 days 0 hr. 45 min. 39 sec

Trace Level               off /*关闭跟踪*/

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /usr/local/oracle/product/10.2.0/db_1/network/admin/listener.ora  /*监听配置文件地址*/

Listener Log File         /usr/local/oracle/product/10.2.0/db_1/network/log/listener.log    /*监听日志文件地址*/

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.225.158)(PORT=1521)))

Services Summary...

Service "MQQ_XPT" has 1 instance(s).

  Instance "mqq", status READY, has 1 handler(s) for this service...

Service "PLSExtProc" has 1 instance(s).

  Instance "PLSExtProc", status UNKNOWN/*UNKNOWN 表示是在listener.ora文件配置*/, has 1 handler(s) for this service...

Service "mqq" has 1 instance(s).

  Instance "mqq", status READY/*READY表示是在DB启动PMON(监控进程)之后,自动注册DB到监听,一般在启动实例后1分钟注册监听*/, has 1 handler(s) for this service...

The command completed successfully

 

3.比较容易混淆的概念:

Db_name:对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。查看方式:show parameter db_name;

Db_domain:定义一个数据库所在的域,域只是为了更好的管理分布式oracle系统。查看方式:show parameter db_domain;

Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO ‘db_name.db_domain’。查看方式:show parameter global_name;

Service_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。查看方式:show parameter service_name;

Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。查看方式:show parameter Net service name;

 

4.SQLPLUS运行时,建立连接的方式

在用户输入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网络服务名;假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。

posted @ 2008-02-27 09:37  jacktu  阅读(2624)  评论(0编辑  收藏  举报