oracle连接方式简述

oracle连接分为,专用服务器连接和共享服务器连接模式。

专用服务器连接就是,进来一个session,oracle就产生一个进程(或线程),专门处理这个session,session注销时,这个进程或(线程)也就消失了。

共享服务器连接就是,oracle建立一个进程(或线程)池,这些进程/线程将由所有会话共享。session的请求和应答处理,在进程/线程池里不是原路返回的,由不同进程/线程处理?

按照我的理解流程图如下:

PS:这里写进程(或线程)是因为oracle在不同平台上拥有不同的平台特性,比如在Linux平台它是多进程模型,但在windows平台它是单进程多线程模型。

这两种连接方法,服务器上的监听器(listener)进程会以不同的方式工作,这些监听器进程负责建立与服务器的物理连接。

专用服务器连接模式下,监听器收到一个请求,数据库生成一个进程,监听器将连接交给这个进程,客户端和数据库直接连接。

共享服务器连接模式下,监听器收到请求后,返回给客户端调度器的端口,客户端与调度器直接连接。

在用dbca建立实例时,会选择是dedicated server mode还是shared server mode。

oracle中空值讨论

在oracle里,空值是一个特殊的值,其它数据库可能空值可以等于空值,但oracle里是不行的,空值是“未知”的。

例子:

select * from dual where null = null; --结果为空
select * from dual where null <> null; --结果为空
select * from dual where null is null; --结果为X
select * from dual where null is not null; --结果为空

从结果中可以看出,null和null既不是相等,也不是不相等。
当null is null时,返回ture,结果为X。
当null is not null时,返回false,所以结果为空。

使用以下方法处理空值:
1、case语句或decode语句用is null或is not null判断。
2、COALESCE(Expr1, Expr2, … , Exprn) 返回参数中第一个非空的表达式的值
3、NVL(Expr1,Expr2) 如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值
4、NVL2(Expr1,Expr2,Expr3) 如果Expr1为NULL,返回Expr3的值,否则返回Expr2的值
5、NULLIF(Expr1,Expr2) 如果Expr1和Expr2的值相等,返回NULL,否则返回Expr1的值

春捂牢记“8157”

“8”是信号,当昼夜温差超过8℃时,要注意防寒保暖,不能过早脱下厚外套。

“15”是指标,当气温低于15℃时要捂,超过就要适当减衣,否则易诱发“春火”。

“7”是适应期,即使气温达到15℃,还要捂7天,体弱者需捂14天,使人体慢慢适应环境变化。