首頁 >資料庫 >mysql教程 >【用户连接】

【用户连接】

WBOY
WBOY原創
2016-06-07 16:05:051182瀏覽

1.本地连接 SQL conn scott/tiger Connected. SQL select sid,server from v$sessionwhere username=SCOTT; SID SERVER ---------- --------- 42 DEDICATED SQL select sid,server,paddr,processfrom v$session where username=SCOTT; SID SERVER PADDR PROC

1.本地连接

SQL> conn scott/tiger

Connected.

SQL> select sid,server from v$sessionwhere username='SCOTT';

SID SERVER

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

42 DEDICATED

 

SQL> select sid,server,paddr,processfrom v$session where username='SCOTT';

 

SID SERVER PADDR PROCESS

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

42 DEDICATED 000000009188D050 16592

--此处的16592标识进程

SQL> conn scott/tiger

Connected.

SQL> ho ps -ef|grep 16592

oracle 16592 16531 0 21:58 pts/1 00:00:00 sqlplus

oracle 16733 16592 0 22:02 ? 00:00:00 oracleorcl(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

–local=yes标识是本地连接,不经过TCP/IP

oracle 16915 16836 0 22:06 pts/2 00:00:00 /bin/bash -c ps -ef|grep 16592

2.远程连接

SQL> select sid,server,paddr,processfrom v$session where username='SCOTT';

SID SERVER PADDR PROCESS

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

42 DEDICATED 000000009188D050 17041

SQL> ho ps -ef|grep 17041

oracle 17041 16531 0 22:11 pts/1 00:00:00 sqlplus

oracle 17131 16836 0 22:14 pts/2 00:00:00 /bin/bash -c ps -ef|grep 17041

远程连接用同本地连接相同的查询方法查不到结果,可以用如下查询:

SQL> select spid from v$process whereaddr='000000009188D050';

SPID

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

17045

SQL> ho ps -ef|grep 17045

oracle 17045 1 0 22:11 ? 00:00:00 oracleorcl (LOCAL=NO)

–local=no 标识远程连接,走TCP/IP

oracle 17180 16836 0 22:15 pts/2 00:00:00 /bin/bash -c ps -ef|grep 17045

3.连接模式

A.专有 每个用户进程与一个服务进程进行连接

适合消耗pga为主业务比如dss、olap、 dba常规管理任务、dg实现同步--dg需要专有连接

SQL> select sid,serial#,server fromv$session where username='SCOTT';

SID SERIAL# SERVER

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

37 236 DEDICATED

SQL> show parameter dispatchers

NAME TYPE VALUE

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

dispatchers string (PROTOCOL=TCP) (SERVICE=orclXDB)

max_dispatchers integer

B.共享 多个用户进程与一个服务器的子进程进行连接

[oracle@oracle ~]$ sqlplusscott/tiger@oracle:1521/orclXDB

SQL> select sid,serial#,server from v$sessionwhere username='SCOTT';

SID SERIAL# SERVER

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

21 536 DEDICATED

27 1008 SHARED ---shared/none 标识共享连接

SQL> select sid,serial#,server,paddrfrom v$session where username='SCOTT';

SID SERIAL# SERVER PADDR

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

27 1008 NONE 0000000091888F50

44 1430 NONE 0000000091888F50

-------注意共享连接不管是多少个,此处的PADDR都是一样的。

SQL> select sid,serial#,server,paddrfrom v$session where username=’SCOTT’;

SID SERIAL# SERVER PADDR

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

21 536 DEDICATED 0000000091892190

44 1433 DEDICATED 0000000091894210

------注意专有连接不管是多少个,每个PADDR都是不一样的。

一个服务器进程可以服务多个用户进程,反之则不成立。

4.连接----物理方式通过协议进行连接

会话----在连接基础上产生的一些信息,可以有一个、可以有多个、可以没有

连接关闭,会话结束

会话结束,连接不一定关闭

会话1:

[oracle@oracle ~]$sqlplus scott/tiger

SQL> set autot trace stat

会话2:

SQL> select sid,serial#,server,paddrfrom v$session where username='SCOTT';

SID SERIAL# SERVER PADDR

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

21 536 DEDICATED 0000000091892190

34 799 DEDICATED 0000000091895250

51 252 DEDICATED 0000000091895250

–--表示在一个连接上产生两个会话

SQL> selectsid,serial#,server,paddr,process from v$session where username='SCOTT';

 

SID SERIAL# SERVER PADDR PROCESS

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

21 536 DEDICATED 0000000091892190 19652

34 799 DEDICATED 0000000091895250 21284

51 252 DEDICATED 0000000091895250 21284

--–注意PROCESS是相同,即为同一个进程

SQL> select spid from v$process whereaddr=' 0000000091895250';

SPID

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

21287

想要KILL这个会话,可以如下操作:

SQL> alter system kill session '51,252';

alter system kill session '51,252'

*

ERROR at line 1:

ORA-00031: session marked for kill

可能会出现如上的错误,这虽然能终止该会话,但是不能释放相关资源。

SQL> alter system kill session '51,252'immediate;

System altered.

SQL> selectsid,serial#,server,paddr,process from v$session where username='SCOTT';

SID SERIAL# SERVER PADDR PROCESS

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

21 536 DEDICATED 0000000091892190 19652

Kill一个进程只需要执行如下操作:

SQL> selectsid,serial#,server,paddr,process from v$session where username='SCOTT';

SID SERIAL# SERVER PADDR PROCESS

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

21 536 DEDICATED 0000000091892190 19652

27 1094 DEDICATED 000000009188D050 21629

 

SQL> select spid from v$process whereaddr='000000009188D050';

SPID

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

21632

SQL> ho kill -9 21632

SQL> select sid,serial#,server,paddr,process from v$session whereusername='SCOTT';

SID SERIAL# SERVER PADDR PROCESS

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

21 536 DEDICATED 0000000091892190 19652

27 1094 DEDICATED 000000009188D050 21629

虽然进程被kill了,但是没有退出去,还是能查到,退出之后就查不到了。

http://docs.oracle.com/cd/E11882_01/server.112/e40540/process.htm#CNCPT9840

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn