[20181128]toad连接数据库的问题.txt

[20181128]toad连接数据库的问题.txt


--//昨天下午,使用toad连接数据库,出现一些奇怪的问题,做一个记录.

--//有点不理解:


1.环境:

SYS@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


SYS@book> show parameter dispatchers

NAME            TYPE    VALUE

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

dispatchers     string  (PROTOCOL=TCP) (SERVICE=book,bookXDB)

max_dispatchers integer


--//共享服务器支持服务名book.另外我以前多次提到使用ezconnect连接模式,优先使用共享服务器模式.

--//测试连接脚本:

$ cat spid.sql

SELECT s.sid

      ,s.serial#

      ,s.process

      ,s.server

      ,p.spid

      ,p.pid

      ,p.serial# p_serial#

      ,   'alter system kill session '''

       || s.sid

       || ','

       || s.serial#

       || ''''

       || ' immediate;'

          c50

  FROM v$session s, v$process p

 WHERE     s.sid IN (SELECT sid

                       FROM v$mystat

                      WHERE ROWNUM = 1)

       AND s.paddr = p.addr;


$ rlsql scott/book@127.0.0.1:1521/book

SCOTT@127.0.0.1:1521/book> @ spid

SID SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50

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

262     227 25399                    SHARED    11840       20          1 alter system kill session '262,227' immediate;

--//SERVER=SHARED.除非明确指定DEDICATED.


$ rlsql scott/book@127.0.0.1:1521/book:DEDICATED

SCOTT@127.0.0.1:1521/book:DEDICATED> @ spid


       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50

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

       274       1351 25406                    DEDICATED 25408       21        246 alter system kill session '274,1351' immediate;

--//SERVER=DEDICATED.


2.测试:

--//我个人喜欢使用ezconnect连接数据库,这样的就是不用配置修改tnsnames.ora文件.

--//采用如图方式连接数据库,执行spid.sql脚本内容:

bb


SID|SERIAL#|PROCESS|SERVER|SPID|PID|P_SERIAL#|C50

262|229|7880:7884|SHARED|11840|20|1|alter system kill session '262,229' immediate;

--//可以看到连接模式共享服务器模式server=shared.


--//但是我如果采用sid方式连接,执行spid.sql脚本内容:

SID|SERIAL#|PROCESS|SERVER|SPID|PID|P_SERIAL#|C50

28|875|7880:7884|DEDICATED|25451|26|154|alter system kill session '28,875' immediate;

--//可以看到连接模式专用服务器模式server=DEDICATED.


--//登录后,从toad界面提示栏看不出两者的不同,显示的都是SCOTT@192.168.100.78:1521/book.

--//在toad下还有一种连接方式,选中TNS,直接输入连接命令.比如:192.168.100.78:1521/book,执行spid.sql脚本内容:


SID|SERIAL#|PROCESS|SERVER|SPID|PID|P_SERIAL#|C50

28|877|7880:7884|DEDICATED|25499|26|155|alter system kill session '28,877' immediate;

--//可以看到连接模式专用服务器模式server=DEDICATED.

--//按照前面的测试,这样选择的模式后面的book应该是sid,而不是服务名.


3.再通过另外的方式验证:

--//在tnsnames.ora配置如下:

78S =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.78)(PORT = 1521))

    )

    (SDU = 32768)

    (CONNECT_DATA =

#      (SERVER = SHARED)

#      (SERVICE_NAME = book)

      (SID = book)

    )

  )


--//使用该连接串登录.执行spid.sql:

SID|SERIAL#|PROCESS|SERVER|SPID|PID|P_SERIAL#|C50

274|1353|7880:7884|DEDICATED|25539|21|247|alter system kill session '274,1353' immediate;

--//连接模式专用服务器模式server=DEDICATED.

--//这也充分说明使用sid,连接模式优先使用专用模式.


--//通过sqlplus验证:

R:\>sqlplus scott/book@78s

SCOTT@78s> @ spid

       SID    SERIAL# PROCESS                  SERVER    SPID                     PID  P_SERIAL# C50

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

        41        311 7840:6436                DEDICATED 25551                     27        137 alter system kill session '41,311' immediate;

--//连接模式专用服务器模式server=DEDICATED.


4.修改tnsnames.ora配置如下:

78S =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.78)(PORT = 1521))

    )

    (SDU = 32768)

    (CONNECT_DATA =

      (SERVER = SHARED)

#      (SERVICE_NAME = book)

      (SID = book)

    )

  )

--//明确指明SERVER = SHARED.


R:\>sqlplus scott/book@78s

SCOTT@78s> @ spid

       SID    SERIAL# PROCESS                  SERVER    SPID                     PID  P_SERIAL# C50

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

       263        125 8144:276                 SHARED    11840                     20          1 alter system kill session '263,125' immediate;

--//连接模式共享服务器模式server=SHARED.


--//在toad下使用连接串78s测试.

SID|SERIAL#|PROCESS|SERVER|SPID|PID|P_SERIAL#|C50

262|265|7880:7884|SHARED|11840|20|1|alter system kill session '262,265' immediate;

--//连接模式共享服务器模式server=SHARED.


--//可以做一个小结:

--//如果连接配置中使用sid,优先选择专用模式server=DEDICATED.除非明确指明连接模式(SERVER = SHARED).


5.问题来了:

--//如何在toad下使用ezconnect连接,连接模式是专用模式呢?因为缺省连接模式是共享服务器模式.

--//我的测试目前做不到.


--//另外sys用户连接数据库,必须是专用模式,否则无法连接数据库.而这样使用ezconnect模式无法连接数据库,必须使用sid模式.这也是

--//我昨天遇到的情况.

--//还有一个问题toad使用命令行方式,写入的连接串实际上使用sid方式.

%toad126% -min -max  -c "scott/book@192.168.100.78:1521/book"


SID,SERIAL#,PROCESS,SERVER,SPID,PID,P_SERIAL#,C50

14,1485,7588:272,DEDICATED,25706,25,72,alter system kill session '14,1485' immediate;

--//连接成功,可以推测相当于前面选中tns登录.


--//这也是我遇到为什么执行如下可以连接数据库的原因,这里后面的book是指sid.

%toad126% -min -max  -c "sys/oracle@192.168.100.78:1521/book as sysdba"


--//注:toad126是环境变量

R:\>set toad126

toad126="E:\Program Files\Dell\Toad for Oracle 12.6\Toad.exe"


--//最后感觉在生产系统,修改参数dispatchers='(PROTOCOL=TCP) (SERVICE=book,bookXDB)',不是太建议.

--//另外单独建立服务名提供给共享服务器使用.这里面的坑实在太多.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2221915/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-2221915/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值