会计考友 发表于 2012-8-4 14:06:19

Oracle技术:Oraclelistener静态注册和动态注册介绍

一、什么是注册?
  注册就是将数据库作为一个处事注册到监听轨范。客户端不需要知道数据库名和实例名,只需要知道该数据库对外供给的处事名就可以申请毗连到数据库。这个处事名可能与实例名一样,也有可能纷歧样。
  在数据库处事器启动过程中,数据库处事器会向监听轨范注册响应的处事(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库处事器对应的实例和处事。)
  相当于是这样:在数据库处事器和客户端之间有一监听轨范(Listener),在监听轨范中,会记实响应数据库对应的处事名(一个数据库可能对应有多个处事名),当客户端需要毗连数据库时,只需要供给处事名,就可以成立客户端和处事器之间的毗连。
  二、静态注册
  静态注册就是实例启动时篡夺listener.ora文件的设置装备摆设,将实例和处事注册到监听轨范。无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库处事器对应的实例和处事。
  静态注册时,listener.ora中的GLOBAL_DBNAME向外供给处事名,listener.ora中的SID_NAME供给注册的实例名。
  采纳静态注册体例时,listener.ora中的内容如下:
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = PLSExtProc)
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)
  (PROGRAM = extproc)
  )
  (SID_DESC =
  (GLOBAL_DBNAME =orcl)
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)
  (SID_NAME =orcl)
  )
  (SID_DESC =
  (GLOBAL_DBNAME =orcl1)
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)
  (SID_NAME =orcl)
  )
  )
  该文件剖明数据库是单实例的,实例名为orcl,向外供给了两个处事:orcl和orcl1
  三、动态注册
  动态注册是在instance启动的时辰PMON历程按照init.ora中的instance_name,service_names两个参数将实例和处事动态注册到listener中。
  首先要在init.ora中指定instance_name,service_names两个参数的值。在sqlplus下经由过程show parameter service_names 和show parameter instance_name可以查看这两个参数的值。
  注册到监听器中的实例值年夜init.ora文件中的instance_name参数取得。如不美观该参数没有设定值,那么它将取init.ora文件中的db_name的值。
  注册到监听器中的处事值年夜init.ora文件中的参数service_names取得。如不美观该参数没有设定值,数据库将拼接init.ora文件中的 db_name和db_domain的值来注书籍身。如不美观选择供给service_names值,您可以使用完全限制的名称(好比 orcl.oracle.com)或缩写的名称(好比orcl)。如不美观选择缩写的名称并设置了db_domain参数,注册到监听器中的处事将是 service_name值和db_domain值的拼接。例如下面的设置将导致处事orcl.oracle.com被注册到监听器中:
  db_domain=oracle.com
  service_names=orcl ;
  采纳动态注册体例时,listener.ora中的内容如下:
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = PLSExtProc)
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)
  (PROGRAM = extproc)
  )
  )
  可选择的是,您可以在service_names参数中指定多个处事值,值之间用逗号格开,这对于共享处事器设置装备摆设是很有用的。
  动态注默然认只注册到默认的监听器上(名称是LISTENER、端口是1521、和谈是TCP),如不美观需要向非默认监听注册,则需要设置装备摆设local_listener参数!
  如不美观没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情形 下,如不美观监听器后来发生了重启,动态注册信息将会丢失踪。显然,最好在所有的数据库启动之前先启动监听器,这样就会避免没有显式设置 service_names和instance_name的制瘫,若重启监听器带来的动态注册信息丢失踪的情形。
  为初始化参数service_names和instance_name设置显式的值是个值得可取的体例和建议。因为如不美观监听器在数据库运行过程中要年夜头启 动,仅当你在init.ora文件中显式地设置了service_names和instance_name的制瘫,每个数据库的PMON历程才会在很短的 时刻之内完成动态注册。
  四、发芽某处事是静态注册仍是动态注册
  可以使用呼吁lsnrctl status来查看某处事是静态注册仍是动态注册。
  实例状况为UNKNOWN值时剖明此处事是静态注册的设置。这时监听器用来剖明它不知道关于该实例的任何信息,只有当客户发出毗连请求时,它才搜检该实例是否存在。
  动态注册的数据库经由过程状况信息中的状况READY或状况BLOCKED(对于一个备用数据库)来指明。不管封锁何时数据库,动态注册的数据库城市动态地年夜 监听器注销,而与之相关的信息将年夜状况列表中消逝踪。这样,不管数据库是在运行仍是已经封锁,监听器老是知道它的状况。该信息将被用于毗连请求的回退 (fallback)和负载平衡
页: [1]
查看完整版本: Oracle技术:Oraclelistener静态注册和动态注册介绍