温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

达梦关闭连接和线程

发布时间:2020-08-11 18:18:33 来源:ITPUB博客 阅读:334 作者:yanhengdoudou 栏目:数据库

Oracle 和达梦 kill session 的差异

1.  Oracle 数据库 其中一种 Kill Session 的方法:

Oracle --  ALTER SYSTEM KILL SESSION 杀死会话的基本语法如下所示。

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';

RAC环境中,可以选择指定INST_ID,在查询GV$SESSION视图时显示。这允许终止不同RAC节点上的会话。

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#,@inst_id';

KILL SESSION命令实际上不会终止会话。它只是要求会话自杀。在某些情况下,例如等待远程数据库的回复或回滚事务,会话不会立即自行终止并等待当前操作完成。在这些情况下,会话将具有“标记为杀死”的状态。然后它会尽快被杀死。 除了上面描述的语法之外,还可以添加IMMEDIATE子句。

SQL> ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;

这不会影响命令执行的工作,但会立即将控制权返回给当前会话,而不是等待确认kill。

2 . DM   杀会话

DM 数据库采用的是线程架构,所有不能向Oracle那样直接kill 进程,只能调用sp_close_session()来kill 线程杀掉会话。

SQL> select  sess_id,curr_sch ,sql_text,user_name,trx_id ,clnt_host,clnt_ip,osname, vpooladdr from sys.v$sessions where sql_text<>'';

LINEID     SESS_ID              CURR_SCH SQL_TEXT                                                                                                                        

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

           USER_NAME TRX_ID               CLNT_HOST CLNT_IP              OSNAME    VPOOLADDR           

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

1          140615618728712      SYSDBA   select COMMENT$ from SYS.SYSCOLUMNCOMMENTS where SCHNAME='SYS' and TVNAME='SYSOBJECTS' and COLNAME='SUBTYPE$'

           SYSDBA    1871                 ahzhixin  ::ffff:192.168.20.45 Windows 8 140615618661112

2          140615954273032      SYSDBA   select  sess_id,curr_sch ,sql_text,user_name,trx_id ,clnt_host,clnt_ip,osname, vpooladdr from sys.v$sessions where sql_text<>'';

           SYSDBA    1874                 dm2       ::ffff:127.0.0.1     Linux     140615954205432

used time: 1.935(ms). Execute id is 57.

然后根据SESSION_ID使用系统过程SP_CLOSE_SESSION(SESSION_ID)来kill 会话:

SQL> SP_CLOSE_SESSION(140615618728712);

DMSQL executed successfully

used time: 1.099(ms). Execute id is 58.

SQL>

二、  关于线程的概念:

Oracle 数据库中,有很多的进程,每个进程负责不同的功能。 而DM 数据库使用“对称服务器构架”的单进程、多线程结构。这种对称服务器构架在有效地利用了系统资源的同时又提供了较高的可伸缩性能,这里所指的线程即为操作系统的线程。

[root@dm1 dm]# ps -ef|grep dmserver

dmdba    21285     1  0 18:02 ?        00:00:04 /dm/dmdbms/bin/dmserver /dm/dmdbms/data/cndba/dm.ini -noconsole

root     21638 21435  0 23:52 pts/1    00:00:00 grep dmserver

[root@dm1 dm]#

服务器在运行时由各种内存数据结构和一系列的线程组成,线程分为多种类型,不同类型的线程完成不同的任务。线程通过一定的同步机制对数据结构进行并发访问和处理,以完成客户提交的各种任务。DM 数据库服务器是共享的服务器,允许多个用户连接到同一个服务器上,服务器进程称为共享服务器进程。

DM 进程中主要包括监听线程、IO 线程、工作线程、调度线程、日志线程等,可以通过DM 的动态性能视图查看线程的相关信息。主要 相关的线程有如下4个:

V$LATCHES 记录当前正在等待的线程信息 V$THREADS 记录当前系统中活动线程的信息 V$WTHRD_HISTORY 记录自系统启动以来,所有活动过线程的相关历史信息。 V$PROCESS 记录服务器进程信息

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI