用户如何与Oracle数据库服务器建立连接

用户要想使用Oracle数据库,首先要与数据库建立连接。针对数据库连接,Oracle提供了两种解决方式:专用连接和共享连接。

大部分情况下,我们使用专用连接方式。对专用连接来说,用户在客户端启动了一个应用程序,比如SQL*Plus,于是就在客户端本地启 动了一个用户进程。与Oracle服务器成功建立连接以后,就会在数据库服务器端生成一个对应的服务器进程,该服务器进程作为用户进程 的代理 进程,也叫影子进程,从而代替客户端去执行各种命令并将结果返回。也就是说,用户在客户端输入的各种命令,都是通过位于客 户端的用 户进程发送到服务器端对应的服务器进程,并由服务器进程代替用户进程去执行具体的命令及返回结果。用户进程是不能直接访 问数据库的 。在专用连接模式下,用户进程与服务器进程一一对应,用户进程一旦终止,服务器进程也随之终止。

另外,我们还有一种连接方式,叫共享连接。在共享连接情况下,DBA可以定义服务器进程的个数。在启动数据库时,Oracle会预先在 实例 中建立指定个数的服务器进程。这时,用户进程不再与服务器进程产生一对一的关系,而是一对多的关系。也就是一个用户进程可以 对应多 个服务器进程,多个服务器进程都可以处理同一个用户发出的不同命令。共享连接比较少见,因此我们不多讨论。以下只要没有特 殊说明, 都是指专用连接。

当用户成功的建立连接以后,会在服务器端生成对应的服务器进程,同时创建一个会话(session)。所谓session就是一段内存空间, 该空 间里记录了用户采用了什么应用程序连接到数据库、客户端机器的名称、以哪个用户名登录等信息。

这里需要解释Oracle中的两个容易混淆的概念:连接(connection)和会话(session)。

所谓连接,指的是物理概念。也就是从客户端到服务器端的通信通道。有以下三种连接类型。

本机登录:直接从数据库所在的服务器上登录到数据库。这时采用内部通信机制进行连接。

C/S模式:客户机和服务器都在同一个局域网内,而终端用户从客户端登录数据库,并借助Oracle的网络组件,通过网络设备与数据 库服 务器建立连接。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

B/S模式:也叫三层模式。客户端不具有Oracle网络组件,通过浏览器与应用服务器建立连接,然后在应用服务器上预先建立的连接 池中 挑选连接通道。

我们以本机登录为例,来看一下用户进程与服务器进程的概念。我们启动SQL*Plus,并登录到数据库实例。

[oracle@book ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 10

13:34:12 2007

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

SQL> connect / as sysdba

Connected.

我们到操作系统里查询该进程(假设当前只有一个用户在使用sqlplus命令登录数据库)。

[oracle@book ~]$ ps -ef|grep sqlplus

oracle    3036  2841  0 13:27 pts/1    00:00:00

sqlplus

oracle    3070  3041  0 13:29 pts/2    00:00:00

grep sqlplus

可以看到sqlplus进程的进程号为3036,该进程就是我们启动的进程,也就是用户进程。继续查询:

[oracle@book ~]$ ps -ef|grep 3036

oracle    3036  2841  0 13:27 pts/1    00:00:00

sqlplus

oracle    3037  3036  0 13:27          00:00:00

oracleora10g

(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle    3074  3041  0 13:29 pts/2    00:00:00 grep 3036

可以看到3036号进程衍生出了一个进程,也就是3037号进程,这个进程就是Oracle为用户进程(进程号为3036)创建的服务器进程。从 该服 务器进程的描述信息中可以看到, LOCAL=YES表明该进程由于与数据库本身在同一个服务器上运行的另一个进程而启动,也就是本机 登录。 PROTOCOL=beq说明采用的是bequeath协议登录,而不是采用tcp协议。

一旦用户与数据库服务器建立连接,就可以发出各种命令,开始使用Oracle数据库了。

时间: 2024-11-01 11:02:27

用户如何与Oracle数据库服务器建立连接的相关文章

数据库连接失败:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)

问题描述 <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

已成功与服务器建立连接但是在登录过程中发生错误的解决

  已成功与服务器建立连接,但是在登录过程中发生错误的解决方案 数据库一打开就提示 已成功与服务器建立连接,但是在登录过程中发生错误的解决方案 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程.) 解决办法: 1.应该是服务器上没有开启管道支持,看到网上有人有同样问题,远程桌面进SQL Server服务器上试一下: 打开'程序'-'所有程序'-'Microsoft SQL Server 2005 '-'配置工具'-'SQL Server 配置管理器',在弹

VS2010连接数据库:已成功与服务器建立连接,但是在登录过程中发生异常

问题描述 VS2010连接数据库:已成功与服务器建立连接,但是在登录过程中发生异常 数据库确定没问题,服务器数据库其他人也可以连接正常使用,但是,我的VS2010连接的时候出现了这样的提示... 解决方案 看错误是超时 了,难道网络速度太慢了? 解决方案二: ssl握手错误,超时了 解决方案三: 先用你自己电脑连接对方sqlserver看有没有问题吧

php-android APP 实现微信登录,并同PHP服务器建立连接通信 (悬赏10C币)

问题描述 android APP 实现微信登录,并同PHP服务器建立连接通信 (悬赏10C币) 大家好,最近要要做一个APP同PHP服务器通信的系统,APP端通过微信登录, 同时需要APP同PHP服务器进行连接,通信,实现将APP端登录的微信用户的 相关信息.数据保存到PHP服务器,以便下次APP登录可以获取到这些信息. 我的想法如下: APP端微信登录过程不需要和我的PHP服务器通信, 一旦微信登录成功,就同 PHP服务器建立连接,建立连接的过程,需要用我们自己定义的一个用户名和密码 来建立连

sqlserver2008r2-已成功与服务器建立连接,但是在登录前的握手期间发生错误。

问题描述 已成功与服务器建立连接,但是在登录前的握手期间发生错误. 前几天装的sqlServer数据库,一直没用,今天用的时候的时候登陆不上,错误提示如下: 已成功与服务器建立连接,但是在登录前的握手期间发生错误. (provider: SSL 提供程序, error: 0 - 无法解密指定的数据. ) (.Net SqlClient Data Provider) 解决方案 服务器和客户端安装了证书吗?

已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)

之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确.)" (System.Data.SqlClient.SqlException)捕获到一个 System.Data.SqlClient.SqlException: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Pro

SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案_MsSql

最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS下运行的时候,IIS crash.之前的连接是没问题的,后网上找了资料,根据牛人所说的方案解决了. 1. Exception message 已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确.) ---> System.ComponentModel.Win32Except

查看oracle数据库服务器的名字

原文:查看oracle数据库服务器的名字   windows 中   1. select name from v$database ;   直接运行就可以查看了, 2.查看tnsnames.ora 的连接,有个SID,SID就是服务名了   1.查看oracle的安装目录,方法是查看注册表:如:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME REG_SZ E:\ORACLE\ORA92 得到了oracle的安装目录一般来讲,如果服务器在安装时采用的是

对Outlook 2010进行自动答复设置时提示无法与服务器建立连接

最近在对Outlook 2010进行自动答复设置时,提示无法与服务器建立连接,当时感觉非常地奇怪,白天还好好地,回家邮件收发也正常,登录OWA查看可以正常收发邮件正常,配置外出提醒也是正常的,检查Exchange Server 服务器日志也是正常的,这是为什么呢? 于是开始尝试删除outlook 2010配置文件,想看看是否是由于配置文件导致的. 删除配置文件后,重新配置,新的问题又出现了,提示找不到Exchange Server 服务器,如下图提示: 尝试手动重新输入Exchange Serv