컴퓨터 지식 네트워크 - 컴퓨터 구성 - 오라클 세션과 프로세스의 차이점 및 분석

오라클 세션과 프로세스의 차이점 및 분석

세션과 프로세스의 차이점:

접속, 세션 및 프로세스를 연결합니다.

각 SQL 로그인을 연결이라고 하며 각 연결은 하나 이상의 세션을 생성할 수 있습니다. 데이터베이스가 전용 서버 모드에서 실행 중인 경우

세션당 하나의 서버 프로세스에 해당합니다. 데이터베이스가 서버 공유 모드에서 실행 중인 경우 하나의 서버 프로세스가 여러 세션에 서비스를 제공할 수 있습니다.

회화와 과정의 관계, 톰은 책에서 아주 분명하게 썼다.

한 프로세스에 0,/kloc-0 개 이상의 세션이 있을 수 있습니다.

세션은 이 프로세스나 그 프로세스에도 존재할 수 있습니다.

오라클 세션 및 프로세스 연구

사용 방법:

먼저 v$session 및 v$process 의 주요 필드 속성을 살펴봅니다.

V$session(sid, 일련 번호, paddr, 사용자 이름, 상태, 시스템, 터미널, sql_hash_value, sql_address,,,)

V$process (주소, spid,,,)

V$session 의 paddr 은 v$process 의 addr 에 해당합니다. 즉, session 은 데이터베이스 호스트의 프로세스 주소에 해당합니다.

여기서 세션에서 실행 중인 SQL 문을 찾아야 합니다. 이 시점에서 다음 명령문을 질의할 수 있습니다.

Sql_text 를 선택합니다

시작 v $ sqltext _ with _ newlines

Where (hash_value, address) in (select SQL _ hash _ value, SQL _ address from v $ session where sid Sid) 주소, 항목 수를 기준으로 정렬합니다.

세션을 수동으로 죽여야 하는 경우 다음 질의와 같이' alter system kill session”SID, serial #' immediate' 를 사용할 수 있으며 세션 상태는 killed 로 표시되고 세션의 해당 프로세스 주소는 동일한 가상 주소를 가리킵니다

SQL & gtselect sid, serial#, paddr, status from v$session 여기서 username =' SHIYIHAI

SID 일련 번호 PADDR 상태

----

23414409 c000000b2b ADB 28 비활성

24514374 c00000b2 bab748 비활성

SQL> 즉시 시스템 종료 세션 변경' 234, 14409';

시스템이 바뀌었다

SQL & gtselect sid, serial#, paddr, status from v$session 여기서 username =' SHIYIHAI

SID 일련 번호 PADDR 상태

----

23414409 c00000b 2c750b8 이 사망했다

24514374 c00000b2 bab748 비활성

SQL> 즉시 시스템 종료 세션 변경' 245, 14374';

시스템이 바뀌었다

SQL & gtselect sid, serial#, paddr, status from v$session 여기서 username =' SHIYIHAI

SID 일련 번호 PADDR 상태

----

23414409 c00000b 2c750b8 이 사망했다

24514374 c00000b 2c750b8 이 사망했다

SQL>

우리는 이미 살해된 세션이 즉시 자원을 확보할 수 없는 경우가 많다는 것을 알고 있다. 우리는 OS 에서 상응하는 과정을 죽여야 한다. 그러나 세션의 paddr 이 가상 주소로 변경되었기 때문에 v $ 프로세스를 연결할 수 없으며 프로세스의 spid 프로세스 번호를 찾을 수 없습니다. 이 시점에서 다음 질의를 실행할 수 있습니다.

SQL> 사용자 이름, 상태 선택,

2 x.ADDR, x.KSLLAPSC, x.KSLLAPSN, x.KSLLASPO, x.KSLLID 1R, x.KSLLRTYP

3 디코딩 (bitand(x. ksupflg, 2), 0, null, 1)

4 x$ksupr x, v$session s 에서

5 여기서 s.paddr(+)=x.addr 입니다

6 과 bitand(ksspaflg, 1)! =0

7 과 s.status 가 비어 있습니다.

사용자 이름 상태 addr ksllapsc ksllapsn ksllaspo ksl lid1r ksllrtyp decode (bitand (X. ksupflg, 2), 0,

-------

C0000000B2B58D08 0 0 0 0

C000000b2b a4688 298 9 46690

C000000b2 bab748116 4675197ev

C000000b2 badb28116 4675197ev

SQL>

또는 다음 명령문을 질의합니다.

SQL> v$process p 에서 p.addr 을 선택합니다. 여기서 PID<& gt 1

2 빼기

3 v$session s 에서 s.paddr 을 선택합니다

주소

--

C0000000B2BA4688

C0000000B2BAB748

C0000000B2BADB28

SQL>

질의 결과에서 종료된 세션에 해당하는 프로세스 주소를 찾을 수 있습니다. 그런 다음 다음 질의와 같이 프로세스 주소를 통해 해당 프로세스 번호를 질의할 수 있습니다.

Sql> select spid from v $ process where addrin ('c000000b2 bab748',' c00000b2 badb28');

SPID

--

130 13

130 15

마지막으로 운영 체제에서' kill -9 130 13' 과' kill-9130/kloc-'를 실행합니다

上篇: SWF 유형 게임에서 진행 상황을 저장할 수 있나요? 下篇: 웹소켓의 경로는 무엇을 의미하나요?
관련 내용