oracle数据库:体系结构概述_笔记3
.3.2共享服务器http://www.52ij.com/jishu/5144.htmloracle数据库:体系结构概述_笔记2
Oracle还可以接受另一种方式的连接,这称为共享服务器(shared server)。如果采用这种方式,就不会对每条用户连接创建另外的线程或新的Unix进程。在共享服务器中,Oracle使用一个“共享进程”池为大量用户提供服务。共享服务器实际上就是一种连接池机制。利用共享服务器,我们不必为10000个数据库会话创建10000个专用服务器,而只需建立很少的一部分进程/线程,顾名思义,这些进程/线程将由所有会话共享。这样Oracle就能让更多的用户与数据库连接,否则很难连接更多用户。如果让机器管理10000个进程,这个负载肯定会把它压垮,但是管理100个或者1000个进程还是可以的。采用共享服务器模式,共享进程通常与数据库一同启动,使用ps命令可以看到这个进程。共享服务器连接和专用服务器连接之间有一个重大区别,与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通信。之所以不能与共享服务器直接对话,原因就在于这个服务器进程是共享的。为了共享这些进程,还需要另外一种机制,通过这种机制才能与服务器进程"对话"。为此,Oracle使用了一个或一组称为调度程序(dispatcher,也称分派程序)的进程。客户进程通过网络与一个调度程序进程通信。这个调度程序进程将客户的请求放入SGA中的请求队列(这也是SGA的用途之一)。第一个空闲的共享服务器会得到这个请求,并进行处理。完成这个命令后,共享服务器会响应放在原调度程序(即接收请求的调度程序)的响应队列中。调度程序进程一直在监听这个队列,发现有结果后,就会把结果传给客户。
2.3.3TCP连接的基本原理在网络环境中,我们会在服务器上运行一个称为TNS监听器的进程。就是这个监听器进程能让我们与数据库物理连接。我们会在服务器上运行一个称为TNS监听器的进程。就是这个监听器进程能让我们与数据库物理连接。当它收到入站连接请求时,它会使用自己的配置文件检查这个请求,可能会拒绝请求(例如,因为没有这样的数据库,或者可能我们的IP地址受到限制,不允许连接这个主机),也可能会接受请求,并真正建立连接。
如果建立一条专用服务器连接,监听器进程就会为我们创建一个专用服务器。在Unix上,这是通过fork()和exec()系统调用做到的(在Unix中,要在初始化之后创建新进程,唯一的办法就是通过fork())。这个新的专用服务器进程继承了监听器建立的连接,现在就与数据库物理地连接上了。在Windows上,监听器进程请求数据库进程为连接创建一个新线程。一旦创建了这个线程,客户就会“重定向”到该线程,相应地就能建立物理连接。
但如果我们发出共享服务器连接请求,监听器的表现则会有所不同。监听器进程知道实例中运行了哪些调度程序。接收到连接请求后,监听器会从可用的调度程序池中选择一个调度程序进程。监听器会向客户返回连接信息,其中说明了客户如何与调度程序进程连接;如果可能的话,还可以把连接“转发”给调度程序进程。监听器发回连接信息后,它的工作就结束了,因为监听器一直在特定主机的特定商品上运行,而调度程序会在服务器上随意指派的端口上接受连接。监听器要知道调度程序指定的这些随机端口号,并为我们选择一个调度程序。客户再与监听器断开连接,并与调度程序直接连接。现在就与数据库有了一个物理连接。
172.16.40.252上
[oracle@vcenteroracle admin]$ more listener.ora SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME = vcenter) (SID_NAME = vcenter)(ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/db_1))) LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vcenteroracle)(PORT = 1521)))(CONNECT_DATA = (SID = vcenter))) LISTENER =(DESCRIPTION_LIST=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.40.252)(PORT = 1521)))(CONNECT_DATA = (SID = orcl)))ADR_BASE_LISTENER = /home/oracle/app/oracle [oracle@vcenteroracle admin]$ lsnrctl stopLSNRCTL for Linux: Version 11.2.0.3.0 - Production on 30-AUG-2013 19:34:57 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521))) TNS-12541: TNS:no listenerTNS-12560: TNS:protocol adapter errorTNS-00511: No listenerLinux Error: 111: Connection refused[oracle@vcenteroracle admin]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.3.0 - Production on 30-AUG-2013 19:35:02 Copyright (c) 1991, 2011, Oracle. All rights reserved. Starting /home/oracle/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.3.0 - Production System parameter file is /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.oraLog messages written to /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.40.252)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521))) STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.3.0 - ProductionStart Date 30-AUG-2013 19:35:02Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.oraListener Log File /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.40.252)(PORT=1521)))Services Summary...Service "vcenter" has 1 instance(s).Instance "vcenter", status UNKNOWN, has 1 handler(s) for this service...The command completed successfully [oracle@vcenteroracle admin]$ lsrctl statusLSNRCTL for Linux: Version 11.2.0.3.0 - Production on 30-AUG-2013 19:36:23 Copyright (c) 1991, 2011, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521))) STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.3.0 - ProductionStart Date 30-AUG-2013 19:35:02Uptime 0 days 0 hr. 1 min. 21 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /home/oracle/app/oracle/product/11.2.0/db_1/network/admin/listener.oraListener Log File /home/oracle/app/oracle/diag/tnslsnr/vcenteroracle/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.40.252)(PORT=1521)))Services Summary...Service "orcl" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Service "orclXDB" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Service "vcenter" has 1 instance(s).Instance "vcenter", status UNKNOWN, has 1 handler(s) for this service...The command completed successfully[oracle@vcenteroracle admin]$ 172.16.40.230上 [oracle@localhost admin]$ pwd/db/oracle/product/11.1.0/db_1/network/admin[oracle@localhost admin]$ lssamples shrept.lst tnsnames.ora[oracle@localhost admin]$ more tnsnames.ora ORCL= (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl))) vcenter=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=vcenter)))[oracle@localhost admin]$ tnsping 172.16.40.252:1521/orcl 4 TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 30-AUG-2013 19:32:51 Copyright (c) 1997, 2011, Oracle. All rights reserved. Used parameter files: Used HOSTNAME adapter to resolve the alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl))(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.40.252)(PORT=1521)))OK (0 msec)OK (10 msec)OK (0 msec)OK (0 msec)[oracle@localhost admin]$ sqlplus scott/tiger@172.16.40.252/orclSQL*Plus: Release 11.2.0.3.0 Production on Fri Aug 30 19:33:16 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------7369 SMITH CLERK 7902 17-DEC-80 800207499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 307521 WARD SALESMAN 7698 22-FEB-81 1250 500 30EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------7566 JONES MANAGER 7839 02-APR-81 2975207654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 307698 BLAKE MANAGER 7839 01-MAY-81 2850 30EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------7782 CLARK MANAGER 7839 09-JUN-81 2450107788 SCOTT ANALYST 7566 19-APR-87 3000 207839 KING PRESIDENT 17-NOV-81 5000 10EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------7844 TURNER SALESMAN 7698 08-SEP-81 1500 0307876 ADAMS CLERK 7788 23-MAY-87 1100 207900 JAMES CLERK 7698 03-DEC-81 950 30EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------7902 FORD ANALYST 7566 03-DEC-81 3000207934 MILLER CLERK 7782 23-JAN-82 1300 109999 7566 30-AUG-13 5000 1000 10EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ----------DEPTNO----------9998 ququ 7566 30-AUG-13 5000 10001016 rows selected. SQL>
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5145.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
