a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 83|回复: 0

[考试辅导] Oracle技术:Oraclelistener静态注册和动态注册介绍

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
一、什么是注册?
1 B4 S4 Z" h3 H9 c  注册就是将数据库作为一个处事注册到监听轨范。客户端不需要知道数据库名和实例名,只需要知道该数据库对外供给的处事名就可以申请毗连到数据库。这个处事名可能与实例名一样,也有可能纷歧样。
# `& s( R* I0 ]4 }  在数据库处事器启动过程中,数据库处事器会向监听轨范注册响应的处事(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库处事器对应的实例和处事。)
6 y/ r6 U' Q/ L  相当于是这样:在数据库处事器和客户端之间有一监听轨范(Listener),在监听轨范中,会记实响应数据库对应的处事名(一个数据库可能对应有多个处事名),当客户端需要毗连数据库时,只需要供给处事名,就可以成立客户端和处事器之间的毗连。- A; j6 L8 q1 u/ i7 L& X9 P2 n
  二、静态注册
; W! c4 F( R. p  静态注册就是实例启动时篡夺listener.ora文件的设置装备摆设,将实例和处事注册到监听轨范。无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库处事器对应的实例和处事。
6 u  {3 c$ `$ c" o  静态注册时,listener.ora中的GLOBAL_DBNAME向外供给处事名,listener.ora中的SID_NAME供给注册的实例名。
: e: O% Q, x4 F, S' C2 w  采纳静态注册体例时,listener.ora中的内容如下:4 b  M- f% W: e- L0 ]
  SID_LIST_LISTENER =
$ R: {0 K/ `5 [: c4 V& e. a  (SID_LIST =
$ U8 k& _7 \) O. `  (SID_DESC =9 l' O% w" {3 n9 r. Q$ i! W, |
  (SID_NAME = PLSExtProc): t- T6 S1 o  v/ N2 S8 a0 ]
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)' l/ I3 s. M6 B" C- T
  (PROGRAM = extproc)* e3 V/ G* p0 U5 N% l. Z
  )4 S" n  |# B5 ]1 y
  (SID_DESC =! [  i  c$ p3 a% s7 I) ~: c
  (GLOBAL_DBNAME =orcl)
. F4 z$ m' H! }0 [8 f  (ORACLE_HOME = D:oracleproduct10.2.0db_1)  z. s+ b  Z( v# {' g# c- W3 f
  (SID_NAME =orcl)9 O0 P' L" |4 ~
  )
3 e  U, S1 V  ^  (SID_DESC =
$ l( r% C3 k5 o5 w  (GLOBAL_DBNAME =orcl1)
7 {0 G' r8 ]( Y! Q7 R6 ?  (ORACLE_HOME = D:oracleproduct10.2.0db_1)2 j1 `8 I9 R/ P4 T* J/ j
  (SID_NAME =orcl)3 E8 m3 f0 x. v8 {
  )0 O0 F) N9 n# z2 I3 I1 n5 n8 o3 D
  )# x# N1 j: y' b, q0 B7 r3 u
  该文件剖明数据库是单实例的,实例名为orcl,向外供给了两个处事:orcl和orcl1
2 u6 W8 p. |5 c& S: n  三、动态注册" i3 g5 W1 T  Y7 g
  动态注册是在instance启动的时辰PMON历程按照init.ora中的instance_name,service_names两个参数将实例和处事动态注册到listener中。% s8 N: {# \  j9 e' S: }$ y
  首先要在init.ora中指定instance_name,service_names两个参数的值。在sqlplus下经由过程show parameter service_names 和show parameter instance_name可以查看这两个参数的值。: T: t4 E) b6 j: R0 V* s
  注册到监听器中的实例值年夜init.ora文件中的instance_name参数取得。如不美观该参数没有设定值,那么它将取init.ora文件中的db_name的值。
8 U1 u0 F6 D, @1 a; }4 Y- J0 R  注册到监听器中的处事值年夜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被注册到监听器中:
2 x! S4 f, V: S4 B  db_domain=oracle.com
" @( x8 w( e8 o  f# @5 U9 Q: V  service_names=orcl ;
" l# C" ~; V* P( y  s  采纳动态注册体例时,listener.ora中的内容如下:* L" ~3 \2 s* t" G# l( O" z
  SID_LIST_LISTENER =/ ~/ `9 r9 }+ V  V" `2 ^
  (SID_LIST =
+ x. J: `) ?! A4 d- x  (SID_DESC =
9 B, G; R( ?  D% T  x  (SID_NAME = PLSExtProc)9 W2 A8 e2 N4 Z: j! ]5 u
  (ORACLE_HOME = D:oracleproduct10.2.0db_1)
. d# _2 U2 I; F' t! E  (PROGRAM = extproc)
: o3 A5 R2 y: X  )
  R1 k/ M  d1 P6 L. P+ _  )
  [/ H& E2 ]7 \' U( p  可选择的是,您可以在service_names参数中指定多个处事值,值之间用逗号格开,这对于共享处事器设置装备摆设是很有用的。( j* P) y0 W0 @/ j
  动态注默然认只注册到默认的监听器上(名称是LISTENER、端口是1521、和谈是TCP),如不美观需要向非默认监听注册,则需要设置装备摆设local_listener参数!0 o- w! t' }0 t( Q7 B% M
  如不美观没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情形 下,如不美观监听器后来发生了重启,动态注册信息将会丢失踪。显然,最好在所有的数据库启动之前先启动监听器,这样就会避免没有显式设置 service_names和instance_name的制瘫,若重启监听器带来的动态注册信息丢失踪的情形。& J1 _  |5 M" h3 k* }
  为初始化参数service_names和instance_name设置显式的值是个值得可取的体例和建议。因为如不美观监听器在数据库运行过程中要年夜头启 动,仅当你在init.ora文件中显式地设置了service_names和instance_name的制瘫,每个数据库的PMON历程才会在很短的 时刻之内完成动态注册。
" S5 ?: t# |( A  四、发芽某处事是静态注册仍是动态注册
( Z% t  p8 c. X# R7 I- K3 \) b  可以使用呼吁lsnrctl status来查看某处事是静态注册仍是动态注册。
9 W- v: D* Y  ?0 A9 K3 o  实例状况为UNKNOWN值时剖明此处事是静态注册的设置。这时监听器用来剖明它不知道关于该实例的任何信息,只有当客户发出毗连请求时,它才搜检该实例是否存在。3 q! m# ?- m8 Y0 P* M5 k' E" A
  动态注册的数据库经由过程状况信息中的状况READY或状况BLOCKED(对于一个备用数据库)来指明。不管封锁何时数据库,动态注册的数据库城市动态地年夜 监听器注销,而与之相关的信息将年夜状况列表中消逝踪。这样,不管数据库是在运行仍是已经封锁,监听器老是知道它的状况。该信息将被用于毗连请求的回退 (fallback)和负载平衡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 19:09 , Processed in 0.400523 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表