Oracle 12c(12.1)中性能优化功能增强之通过参数THR(2)

多线程模型不支持OS认证,这是一个特点而不是bug。看前面的例子,使用线程模型时,通过"SYS ASSYSDBA"而不是 "/ AS SYSDBA"连接数据库。试着以OS认证连接库会报错。

$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production onThu Jul 4 11:28:16 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:

ORA-01017: invalid username/password;logon denied

Enter user-name: sys as sysdba

Enter password:

Connected to:

Oracle Database 12c Enterprise EditionRelease 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL>

文档上说会报错ORA-01031 "insufficientprivileges" 。

4.  杀会话

视图V$PROCESS包括一个叫STID的新列,该列显示会话的线程ID。

SET LINESIZE 140

COLUMN username FORMAT A15

COLUMN oSUSEr FORMAT A15

COLUMN spid FORMAT A10

COLUMN stid FORMAT A10

SELECT s.username,

s.osuser,

s.sid,

s.serial#,

p.spid,

p.stid,

s.status

FROM  v$session s,

v$process p

WHERE s.paddr = p.addr

AND  s.username IS NOT NULL

ORDER BY s.username, s.osuser;

USERNAME        OSUSER                SID    SERIAL# SPID      STID      STATUS

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

SYS            oracle                  35          3 18844      18901    ACTIVE

TEST            oracle                  40        37 18844      19020    INACTIVE

SQL>

在Oracle内杀会话的方法没变,因为你还是可以找到SID和SERIAL#。

SQL> ALTER SYSTEM KILL SESSION '40,37';

System altered.

SQL>

但一定不要用UNIX/Linux命令杀掉会话进程(SPID)对应的OS进程,否则,我们会杀掉多个会话,而不是我们真正想杀的会话。

$ ps -ef | grep 18844 | grep -v grep

oracle  18844    1  1 16:27 ?        00:00:22 ora_u005_db12c

$

5.  总结

1)  使用该特点的唯一可信理由是将多个实例集成到一个服务器上,同时,没用多宿主数据库选项。因为,如果不用多线程模型,OS进程数将会很高。

2)  如果你的硬件架构相对进程而言,更适合处理线程,那么,该特点也许会带来一些好处。

3)  RAC环境中,各节点必须都用同样的线程模型。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/eaa5f35ae7fb67aee42a25ab23856c95.html