[20190115]关于共享服务与专用模式.txt

来源:这里教程网 时间:2026-03-03 12:51:59 作者:

[20190115]关于共享服务与专用模式.txt --//前几天看https://www.cnblogs.com/kerrycode/p/10252951.html的链接,原来许多不理解的问题一下理解了. --//关于配置共享服务的问题,最好使用单独的服务名,不要一个服务名支持两种模式,这样很容易出现一些怪问题. --//我在这方面吃了许多苦头. --//有一些配置网络连接串,选择缺省连接模式,这样就没有SERVER = SHARED,SERVER = DEDICATED这些内容. --//而如果服务名支持两种模式,在没有明确配置的情况下,优先选择共享模式. --//另外共享服务模式关闭直接路径读,异步IO,支持并行模式.参考链接: http://blog.itpub.net/267265/viewspace-2151928/ http://blog.itpub.net/267265/viewspace-2151913/ http://blog.itpub.net/267265/viewspace-2130292/ --//如何区分这些服务支持那些模式,哪一些是静态注册的服务我自己也是很混乱的.通过我测试环境说明. 1.环境: SCOTT@book> @ ver1 PORT_STRING         VERSION        BANNER ------------------- -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production --//首先关闭数据库重启监听. --//我的监听文件配置如下: $ grep -v "^#" listener.ora SID_LIST_LISTENER =    (SID_LIST =     (SID_DESC =       (SDU=32767)       (GLOBAL_DBNAME = booK123)       (ARGV0=myapp0)       (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1)       (SID_NAME=book)       )     ) SID_LIST_LISTENERz =    (SID_LIST =     (SID_DESC =       (SDU=32767)       (GLOBAL_DBNAME = booK123)       (ARGV0=myapp0)       (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1)       (SID_NAME=book)       )     )     LISTENER =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(ARGV0=LLLLLL)(HOST = 0.0.0.0)(PORT = 1521)(ARGV0=KKKKK))       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))   )  ) LISTENERz =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.78)(PORT = 1522))       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))   )  )    SECURE_REGISTER_LISTENER = (TCP) ADR_BASE_LISTENER = /u01/app/oracle DIAG_ADR_ENABLED_LISTENER=OFF USE_NS_PROBES_FOR_DCD=true INBOUND_CONNECT_TIMEOUT_LISTENER=10 $ lsnrctl status LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 11:01:46 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(ARGV0=LLLLLL)(HOST=0.0.0.0)(PORT=1521)(ARGV0=KKKKK))) STATUS of the LISTENER ------------------------ Alias                     LISTENER Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date                15-JAN-2019 10:52:18 Uptime                    0 days 0 hr. 9 min. 28 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora Listener Log File         /u01/app/oracle/product/11.2.0.4/dbhome_1/network/log/listener.log Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully --//有1个服务booK123,这是1个静态注册服务名,状态UNKNOWN.因为静态注册服务名根本不知道实例名为book的数据库是否存在. $ lsnrctl services LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 11:02:11 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(ARGV0=LLLLLL)(HOST=0.0.0.0)(PORT=1521)(ARGV0=KKKKK))) Services Summary... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0          LOCAL SERVER The command completed successfully --//这个服务名仅仅支持DEDICATED模式. --//实际上这个时候是通过通过服务名book123远程连接数据库的. d:\>sqlplus sys@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.78)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=book123))) as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 15 11:12:45 2019 Copyright (c) 1982, 2016, Oracle.  All rights reserved. Enter password: Connected to an idle instance. --//注意一点这样写连接串里面不能有空格.这样可以实现远程启动数据库.这也是为什么配置dg要求配置静态注册服务名的主要原因. --//注:如果连接串里面有空格,要使用双引号,避免作为参数解析. 2.启动数据库(nomount): SYS@book> startup nomount ORACLE instance started. Total System Global Area  643084288 bytes Fixed Size                  2255872 bytes Variable Size             205521920 bytes Database Buffers          427819008 bytes Redo Buffers                7487488 bytes --//nomount仅仅启动实例. SYS@book> show parameter service_name NAME          TYPE   VALUE ------------- ------ --------------- service_names string BOOK, BOOKSHARE SYS@book> show parameter dispatchers NAME        TYPE   VALUE ----------- ------ ------------------------------------- dispatchers string (PROTOCOL=TCP) (SERVICE=book,bookXDB) $ lsnrctl status .... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status BLOCKED, has 1 handler(s) for this service... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status BLOCKED, has 1 handler(s) for this service... The command completed successfully $ lsnrctl services ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status BLOCKED, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:2 refused:0          LOCAL SERVER Service "book" has 1 instance(s).   Instance "book", status BLOCKED, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER The command completed successfully --//增加2个服务名,BOOKSHARE,book,状态是BLOCKED.因为这个时候数据库还没有到mount状态. --//注意这个时候并没有启动共享服务book,bookxdb.虽然s000,d000进程已经启动. $ ps -ef | egrep 's00[0]|d00[0]' oracle   49808     1  0 11:16 ?        00:00:00 ora_d000_book oracle   49810     1  0 11:16 ?        00:00:00 ora_s000_book --//这个时候远程客户端无法使用服务名BOOKSHARE,book.不过有一个方法绕过.加入(UR=A),这个相当于一个后门. d:\>sqlplus sys@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.78)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(UR=A)(SERVICE_NAME=book))) as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 15 11:18:54 2019 Copyright (c) 1982, 2016, Oracle.  All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options --//这样写sqlplus sys@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.78)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(UR=A)(SERVICE_NAME=bookshare))) as sysdba --//不写(UR=A)报如下错误. --//ORA-12528: TNS:listener: all appropriate instances are blocking new connections 3.启动数据库(mount): SYS@book> alter database mount ; Database altered. $ lsnrctl status ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully $ lsnrctl service ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:3 refused:0 state:ready          LOCAL SERVER Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:3 refused:0          LOCAL SERVER Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:3 refused:0 state:ready          LOCAL SERVER The command completed successfully --//与nomount状态很相似,仅仅服务名BOOKSHARE,book,状态是READY.也就是这个时候远程客户端可以连接数据库,连接串可以不用 --//(UR=A),当然限制sys用户.因为数据库还没有起来. --//并且3个服务BOOKSHARE,book,booK123仅仅支持专用服务模式. d:\> sqlplus sys@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.78)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=book))) as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 15 11:29:11 2019 Copyright (c) 1982, 2016, Oracle.  All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options --//sqlplus sys@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.78)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bookshare))) as sysdba --//一样ok. 4.启动数据库(open): SYS@book> alter database open ; Database altered. $ lsnrctl status ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 2 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully --//服务名增加了bookXDB. $ lsnrctl services .. Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready          LOCAL SERVER Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:4 refused:0          LOCAL SERVER Service "book" has 1 instance(s).   Instance "book", status READY, has 2 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready          LOCAL SERVER       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) The command completed successfully --//可以注意一个细节,bookxdb仅仅支持共享服务模式.而book服务名增加了共享服务模式. 5.继续测试: SYS@book> alter system set dispatchers='(PROTOCOL=TCP) (SERVICE=bookXDB,bookz,book123)' scope=memory; System altered. SYS@book> alter system register ; System altered. --//给共享服务器模式增加bookz,book123服务名.并且取消了服务名book的共享服务模式. $ lsnrctl service .. Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready          LOCAL SERVER Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:4 refused:0          LOCAL SERVER   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          LOCAL SERVER Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) Service "bookz" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) The command completed successfully --//可以发现服务名book123,bookz增加支持共享服务模式,而服务名book的共享服务模式被取消了,仅仅支持专用连接模式. SYS@book> alter system set dispatchers='(PROTOCOL=TCP) (SERVICE=bookXDB)' scope=memory; System altered. $ lsnrctl status ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...   Instance "book", status READY, has 0 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookz" has 1 instance(s).   Instance "book", status READY, has 0 handler(s) for this service... The command completed successfully --//注意看book123服务名现在出现两种状态,status=UNKNOWN,READY.实际上我已经取消了book123的共享服务模式,但是 --//这样操作无法删除book123动态注册的服务名,包括bookz也一样. --//注意对应的handler(s)=0. $ lsnrctl service ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready          LOCAL SERVER Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:4 refused:0          LOCAL SERVER   Instance "book", status READY, has 0 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:6 refused:0 state:ready          LOCAL SERVER Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) Service "bookz" has 1 instance(s).   Instance "book", status READY, has 0 handler(s) for this service... --//可以发现当前仅仅bookxdb支持共享服务模式.其它服务名支持专用服务模式(除了bookz服务名). --//另外可以发现bookz服务还存在,但是2种模式都不支持.视乎oracle无法删除bookz这个服务. --//bookz 对应的handler(s)=0. SYS@book> exec dbms_service.stop_service('bookz'); BEGIN dbms_service.stop_service('bookz'); END; * ERROR at line 1: ORA-44311: service bookz not running ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.DBMS_SERVICE", line 466 ORA-06512: at "SYS.DBMS_SERVICE", line 400 ORA-06512: at line 1 SYS@book> alter system set service_names=BOOK,BOOKSHARE,bookz scope=memory; System altered. $ lsnrctl status .. Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...   Instance "book", status READY, has 0 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully SYS@book> alter system set service_names=BOOK,BOOKSHARE scope=memory; System altered. $ lsnrctl status ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...   Instance "book", status READY, has 0 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully $ lsnrctl services ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER Service "booK123" has 2 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:4 refused:0          LOCAL SERVER   Instance "book", status READY, has 0 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) The command completed successfully --//这样才能删除bookz服务名. SYS@book> alter system set service_names=BOOK,BOOKSHARE,book123 scope=memory; System altered. SYS@book> alter system set service_names=BOOK,BOOKSHARE scope=memory; System altered. $ lsnrctl status ... Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully --//服务名book123的动态注册才会删除. 6.再启动一个监听服务名看看. --//我前面的监听配置还配置了一个监听服务名LISTENERz.缺省如果你启动监听服务执行lsnrctl start,启动的是缺省的 --//listener监听.我以前遇到一个问题就是对方配置一个特殊监听服务名,导致我执行lsnrctl start,client段无法连接数据库. $ grep -v "^#" listener.ora ... SID_LIST_LISTENERz =    (SID_LIST =     (SID_DESC =       (SDU=32767)       (GLOBAL_DBNAME = booK123)       (ARGV0=myapp0)       (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1)       (SID_NAME=book)       )     ) .. LISTENERz =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.78)(PORT = 1522))       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))   )  ) $ netstat -nap | grep :1521 | grep tn[s] (Not all processes could be identified, non-owned process info  will not be shown, you would have to be root to see it all.) tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      49554/tnslsnr tcp        0      0 192.168.100.78:1521         192.168.100.78:22140        ESTABLISHED 49554/tnslsnr $ lsnrctl start listenerz LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 12:12:30 Copyright (c) 1991, 2013, Oracle.  All rights reserved. TNS-01106: Listener using listener name LISTENER has already been started --//无法启动. $ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 12:12:55 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(ARGV0=LLLLLL)(HOST=0.0.0.0)(PORT=1521)(ARGV0=KKKKK))) The command completed successfully $ lsnrctl start listenerz LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 12:13:00 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Starting /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.4.0 - Production System parameter file is /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/xxxxxyyy/listenerz/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=1522))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522))) STATUS of the LISTENER ------------------------ Alias                     listenerz Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date                15-JAN-2019 12:13:00 Uptime                    0 days 0 hr. 0 min. 0 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora Listener Log File         /u01/app/oracle/diag/tnslsnr/xxxxxyyy/listenerz/alert/log.xml Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=1522)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully $ lsnrctl services listenerz LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 12:17:22 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522))) Services Summary... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0          LOCAL SERVER The command completed successfully $ netstat -nap | grep :1522 | grep tn[s] (Not all processes could be identified, non-owned process info  will not be shown, you would have to be root to see it all.) tcp        0      0 192.168.100.78:1522         0.0.0.0:*                   LISTEN      50219/tnslsnr tcp        0      0 127.0.0.1:1522              0.0.0.0:*                   LISTEN      50219/tnslsnr --//可以发现其它服务名book,bookshare没有动态注册成功.因为pmon进程缺省注册使用1521端口. $ ps -ef | grep pmo[n] oracle   49772     1  0 11:16 ?        00:00:02 ora_pmon_book $ strace -f -p 49772 -e network Process 49772 attached - interrupt to quit getsockopt(0, SOL_SOCKET, SO_SNDBUF, 0x7fffedf9fabc, 0x7fffedf9fab8) = -1 ENOTSOCK (Socket operation on non-socket) getsockopt(0, SOL_SOCKET, SO_RCVBUF, 0x7fffedf9fabc, 0x7fffedf9fab8) = -1 ENOTSOCK (Socket operation on non-socket) socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 10 connect(10, {sa_family=AF_INET, sin_port=htons(1521), sin_addr=inet_addr("192.168.100.78")}, 16) = -1 EINPROGRESS (Operation now in progress) getsockopt(10, SOL_SOCKET, SO_SNDBUF, [-1298728016444112896], [4]) = 0 getsockopt(10, SOL_SOCKET, SO_RCVBUF, [-1298728016444041900], [4]) = 0 getsockname(10, {sa_family=AF_INET, sin_port=htons(25054), sin_addr=inet_addr("192.168.100.78")}, [16]) = 0 ^CProcess 49772 detached --//因为启动监听使用1522,无法动态注册成功.必须修改参数local_listener.参考链接: --//http://blog.itpub.net/267265/viewspace-2083455/=>[20160418]修改oracle监听端口.txt  SYS@book> alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=1522))' scope=memory ; System altered. SYS@book> alter system register; System altered. $ strace -f -p 49772 -e network Process 49772 attached - interrupt to quit getsockopt(0, SOL_SOCKET, SO_SNDBUF, 0x7fffedf9fabc, 0x7fffedf9fab8) = -1 ENOTSOCK (Socket operation on non-socket) getsockopt(0, SOL_SOCKET, SO_RCVBUF, 0x7fffedf9fabc, 0x7fffedf9fab8) = -1 ENOTSOCK (Socket operation on non-socket) socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 10 connect(10, {sa_family=AF_INET, sin_port=htons(1522), sin_addr=inet_addr("192.168.100.78")}, 16) = -1 EINPROGRESS (Operation now in progress) getsockopt(10, SOL_SOCKET, SO_SNDBUF, [-1298728016444077260], [4]) = 0 getsockopt(10, SOL_SOCKET, SO_RCVBUF, [-1298728016443998016], [4]) = 0 getsockname(10, {sa_family=AF_INET, sin_port=htons(3098), sin_addr=inet_addr("192.168.100.78")}, [16]) = 0 ^CProcess 49772 detached SYS@book> show parameter service NAME          TYPE   VALUE ------------- ------ --------------- service_names string BOOK, BOOKSHARE SYS@book> show parameter dispatchers NAME        TYPE   VALUE ----------- ------ -------------------------------- dispatchers string (PROTOCOL=TCP) (SERVICE=bookXDB) $ lsnrctl status listenerz LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 15:34:46 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522))) STATUS of the LISTENER ------------------------ Alias                     listenerz Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date                15-JAN-2019 15:32:05 Uptime                    0 days 0 hr. 2 min. 40 sec Trace Level               off Security                  ON: Local OS Authentication SNMP                      OFF Listener Parameter File   /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora Listener Log File         /u01/app/oracle/diag/tnslsnr/xxxxxyyy/listenerz/alert/log.xml Listening Endpoints Summary...   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=1522)))   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service... Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service... The command completed successfully $ lsnrctl services listenerz LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-JAN-2019 14:58:50 Copyright (c) 1991, 2013, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Services Summary... Service "BOOKSHARE" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER Service "booK123" has 1 instance(s).   Instance "book", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0          LOCAL SERVER Service "book" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:0 refused:0 state:ready          LOCAL SERVER Service "bookXDB" has 1 instance(s).   Instance "book", status READY, has 1 handler(s) for this service...     Handler(s):       "D000" established:0 refused:0 current:0 max:1022 state:ready          DISPATCHER <machine: xxxxxyyy, pid: 49808>          (ADDRESS=(PROTOCOL=tcp)(HOST=xxxxxyyy.com)(PORT=26919)) The command completed successfully --//这里仅仅看到127.0.0.1的IP.,不过远程能正常登录数据库.

相关推荐