- 浏览: 495599 次
- 性别:
- 来自: OnePiece
文章分类
- 全部博客 (196)
- --------- 基础----------- (0)
- java 碎碎念 (12)
- java 并行编程 (11)
- java I/O (6)
- java Charset & Encoding (2)
- spring学习笔记 (8)
- 正则表达式 (5)
- web前端-javascript (11)
- web前端-jQuery (7)
- web前端-碎碎念 (1)
- mybatis (0)
- 数据库-通用 (8)
- 数据库-oracle (20)
- nosql-redis (11)
- nosql-mongoDB (1)
- xml (2)
- log4j (2)
- uml (3)
- web services: soap/wsdl (6)
- soa-tuscany (2)
- linux (6)
- ----------修养----------- (0)
- 深入理解java虚拟机 (7)
- java 设计模式 (9)
- 数据结构和算法 (2)
- 读书笔记--代码整洁之道 (2)
- 计算机基础 (1)
- -----------践行---------- (0)
- 重构(refactor) (7)
- jvm-诊断 (4)
- 数据库-让oracle跑得更快 (7)
- Nginx (6)
- ehcache (2)
- 短信开发 (1)
- Servlet+Filter+Listener (2)
- 运维 (6)
- 问题记录 (38)
- 杂七杂八 (12)
最新评论
-
zhanggang807:
第二种方法比较好
<spring> 定时任务每次都执行两次的问题,慎用new ClassPathXmlApplicationContext() -
assasszt:
谢谢分享,很清楚的讲明了原理。
字符集与字符编码简介 -
su0nils000:
难得的笔记
<进阶-2> 打造高效正则表达式 -
足至迹留:
mini188 写道用MD5来解决碰撞是不是也是可行的呢?个人 ...
Hash简介 -
mini188:
用MD5来解决碰撞是不是也是可行的呢?
Hash简介
本系列主要参考《Oracle Database 9i/10g/11g编程艺术》第二版 -Thomas kyte著
书中有段话:
通常解决问题有简单方案和复杂方案,而选择后者居多,这并不是故意,只是出于无知。
此书推荐
1.oracle体系结构概述
1.1 定义数据库和实例
在oracle领域中有两个词很容易混淆,这就是“实例”instance和“数据库”database。作为oracle术语,这两个词定义如下:
数据库:物理操作系统文件或磁盘的集合。使用oracle的自动存储管理(Automatic Storage Management, ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
实例:一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的,非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。有点程序和进程的关系。
这两个词有时可以互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上准确地讲,实例在其整个生存期中最多能装载和打开一个数据库。
实例就是一组操作系统进程以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件,临时文件,重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。
1.2 SGA和后台进程
下图以最简单的形式展示了Oracle实例和数据库。Oracle有一个很大的内存块,称为系统全局区(SGA),在这里他会做以下工作:
1. 维护所有进程需要访问的多种内部数据结构;
2. 缓存磁盘上的数据,另外重做数据写至磁盘之前先在这里缓存;
3. 保存已解析的sql计划等等。
Oracle有一组附加到SGA的进程,附加机制因操作系统而异。在Unix环境中,这些进程会物理地附加到一个很大的共享内存段,这是操作系统中分配的一个内存块,可以由多个进程并发地访问(通常要使用shmget()和shmat())。在windows中,这些进程只是使用C调用(malloc())来分配内存,因为他们实际上是一个大进程中的线程,所以会共享相同的虚拟内存空间。
Oracle还有一组供数据库进程/线程读写的文件(只允许Oracle进程读写这些文件)。这些文件保存了所有的表数据、索引、临时空间、重做日志等。
1.3 连接oracle
Oracle服务器处理请求有两种最常见的方式,分别是专用服务器(dedicated server)连接和共享服务器(shared server)连接。要想登陆数据库并在数据库中真正做事情,必须先连接,下面会说明建立连接时客户端和服务器会发生什么。
1.3.1 专用服务器
按最常用的配置连接Oracle,如下图所示:
登录时,Oracle总会为客户创建一个新的进程。这通常称为专用服务器配置,因为这个服务器进程会在客户的会话生存期中专门为客户服务。对于每个会话,都会出现一个新的专用服务器,会话与专用服务器之间存在一对一的映射。按照定义,这个专用服务器不是实例的一部分。连接数据库的程序会通过某种网络通道(如socket)与这个专用服务器直接通信,并由这个服务器进程接收和执行sql。如果必要,他会读取数据文件,并在数据库的缓存中查找需要的数据。
1.3.2 共享服务器
Oracle还可以接受另一种方式的连接,这称为共享服务器(shared server)。如果采用这种方式,就不会对每条用户连接创建另外的线程或新的unix进程。
在共享服务器中, Oracle使用一个"共享进程”池为大量用户提供服务。 共享服务器实际上就是一种连接池机制。利用共享服务器,我们不必为10000个数据库会活创建10 000个专用服务器(这样进程或线程就太多了) .而只需建立很少的一部分进程/线程,顾名思义,这些进/线程将由所有会话共享。这样Oracle 就能让更多的用户与数据库连接,否则很难连接更多用户。采用共享服务器模式.共享进程通常与数据库一同启动,使用ps 命令可以看到这个进程.
共享服务器连接和专用服务器连接之间有一个重大区别。 与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通信。之所以不能与共享服务器直接对话,原因就在于这个服务带进程是共享的。为了共享在这些进程,还需要另外一种机制.通过这种机制才能与服务器进程"对话”. Oracle 使用一个或一组称为调度程序(dispatcher, 也称分派程序)的进程。客户进程通过网络与一个调度程序进程通信。这个调度程序进程将客户的请求放入SGA 中的请求队列(这也越SGA 的用途之一) . 第一个空闲的共享服务器会得到这个请求,并进行处理(例如,请求可能是update T set x=x+5 where Y = 2)。完成这个命令后,共享服务器会把响应放在原调度程序(即接收请求的调度程序)的响应队列中。 调度程序进程一直在监听这个队列,发现有结果后,就会把结果传给客户。从概念上讲,共享服务器请求的流程如下图所示:
1.3.3 服务器模式的选择(此部分至1.3.6小节参考http://www.itpub.net/thread-1714191-1-1.html)
1. 合适选用共享服务器的情景:
(1)前台客户端数量比较多。
(2)服务器内存限制比较大。
用户若在一些老的服务器上部署Oracle数据库的话,因为其主板对内存的升级有所限制,所以,为了得到一个不错的数据库性能,往往采用共享服务器模式。如此,即时同时访问数据库的用户有所增加,其内存也不会有多大的影响。可以大大的降低内存的压力。
2.某些特定功能要求采用共享服务器模式。
比较典型的,如Oracle数据库服务器的连接共享、连接集中与负载均衡技术等等。他们必须在共享模式下才能够运行。
负载均衡用来在群集环境下实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并行处理以及均分负载,还能够实现数据库在故障时的容错和无断点恢复。所以,在一些对于性能与稳定性要求比较高的应用场景中,如银行中,往往都会采用负载均衡技术。此时,数据库管理员在配置数据库的时候,就需要考虑采用共享服务器模式。
3. 共享服务器好处
(1、减少操作系统进程/线程数
在一个有上千用户的系统上,如果操作系统力图管理数千个进程,可能很快就崩溃了。如果使用共享模式,可以有效的管理活动的部分用户,效率大大提高,操作系统可以避免了上下文切换。
(2、刻意的限制并发度
如果并发数过大,到一定程度,即使用户量再增加,每秒中完成的相应事物也不会增加。吞吐量到达一定峰值后会下降。利用共享服务器,可以把系统并发度限制到合理的数量上。
(3、减少系统所需的内存
可以减少所需内存量,但是在自动PAG内存管理以后,意义不是很大。
1.3.4 服务器模式的设置
1. 启用专用服务器
dedicated servers不需要专门的设置,这个是oracle的默认选项。
2. 启用共享服务器
要切换到共享模式,可以使用以下步骤:
A.设置初始化参数 SHARED_SERVERS 大于0,可以使用alter system命令动态的设置也可以在spfile里面修改初始化参数SHARED_SERVERS 的值大于0,然后shutdown oracle,然后restart oracle 即可启动共享模式,其他的共享服务器参数可以不用设置
参考语句:
alter system set shared_servers = 1 scope=both ;
alter system set max_shared_servers = 5 scope=both ;
B.设置dispatchers 参数,可以采用下面的方法设置:
alter system set dispatchers="(PROTOCOL=TCP) (SERVICE=yzdbXDB)(SERVICE=yzdb)";
前面表示的是协议,后面的service 分别指定要采用共享服务器模式的服务名称。oracle文档上说该步骤不是必须做的,但是我在实际中发现如果只是设置了shared_server参数,而把dispatches参数设置为空的话,不能启动共享服务器,使用上面的模式指定只启动某个服务的共享模式,如果要设置所有服务都使用共享模式,则设置为:
alter system set dispatchers='(PROTOCOL=TCP)';
C.在客户端的tnsnames.ora 的tns设置中,在 CONNECT_DATA 设置一项中增加 (server=shared )一项,即可使用共享服务器连接。
如果服务器端没有启动共享服务器模式,而客户端使用shared方式连接的话,会出现错误提示:
“ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄”;
关闭调度进程:
首先要查询到DISPATCHERS的NAME: SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
1.3.5 判断数据库使用的连接模式
1. 查看当前数据库服务器的连接模式
查看当前数据库服务器的运行情况有一下几种办法:
A.从v$session里面查看:
SQL> select distinct server from v$session ;
SQL>
SERVER
---------
DEDICATED
NONE
SQL>
如果显示的除了dedicated,还有NONE,则说明当前启动了共享服务器,并且server为none的会话正使用共享服务器连接,
同时,如果只显示有dedicated,则不能说明服务器就一定工作在专用服务器下面,此时只能说明有可能启动了共享模式,但是无连接。
可以使用下面的语句查询采用共享服务器的会话信息:
select saddr,program ,server from v$session;
SQL> /
SADDR PROGRAM SERVER
-------- ------------------------------------------------ ---------
296FB24C plsqldev.exe NONE
296FFD1C [email=oracle@B851]oracle @B851[/email] (q001) DEDICATED
29705AA0 [email=oracle@B851]oracle @B851[/email] (q000) DEDICATED
B.查询视图:
在网上有的资料上说只要查询下面三个视图,有记录则说明启动了共享模式,经过验证,具体情况如下:
select * from v$shared_server; ---有记录,且STATUS字段为WAIT(COMMON),则说明启动共享;
status为TERMINATED或者无记录,则说明没有启动共享服务器
select * from v$dispatcher; --有无记录都不能说明启动共享服务器,只能说明是配置了dispatchers参数
select * from V$CIRCUIT ; --有记录说明当前有使用共享模式的连接,无记录则不能判定服务器模式
2. 客户端建立的连接模式
A.当服务器采用专用服务器模式时,客户端只能使用专用模式连接,也就是在connect_data数据中只能使用 server=dedicated。
B.当服务器采用共享服务器模式时,客户端可以选择建立共享还是专用连接,connection,只要在 connect_data 中指定server=dedicated or server=shared
大多数情况下我们更倾向或习惯专用模式,两种模式下,对sga等分配都会有不同,所以如果转换成mts模式,别忘了sga也是需要调整的。最典型的是 mts模式需要较大的large_pool_size。如果真想转换还是仔细看看oracle关于mts的文档。共享连接只是把连接SESSION信息放 在LARGE POOL,所以LARGE POOL要大一些。而专用连接的SESION信息放在PGA。
1.3.6 禁用共享服务器模式
禁用的实验:
alter system set shared_servers = 0 ;
alter system set max_shared_servers = 0 ;
在已经建立共享模式的客户端执行查询,一直处于等待,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL COMMON
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL> select program,saddr,server,status from v$session
where saddr in ('296F8CE4','296FB24C');
PROGRAM SADDR SERVER STATUS
------------------------------------------------ -------- --------- --------
plsqldev.exe 296F8CE4 NONE INACTIVE
plsqldev.exe 296FB24C NONE INACTIVE
2 rows selected.SQL> 恢复参数值:
SQL>
alter system set shared_servers = 1;
System altered.
SQL> alter system set max_shared_servers = 5;
System altered.
SQL>
前台的查询恢复正常,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL NONE
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL>
书中有段话:
通常解决问题有简单方案和复杂方案,而选择后者居多,这并不是故意,只是出于无知。
此书推荐
引用
“针对不同数据库写不同的程序,而不是写一个可随意移植到不同数据库的程序,代价高而且不能充分利用不同数据库的特性。”
这与通常使用通用ORM框架不同,实际上一般也就是小型程序才完全采用ORM框架。
1.oracle体系结构概述
1.1 定义数据库和实例
在oracle领域中有两个词很容易混淆,这就是“实例”instance和“数据库”database。作为oracle术语,这两个词定义如下:
数据库:物理操作系统文件或磁盘的集合。使用oracle的自动存储管理(Automatic Storage Management, ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
实例:一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的,非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。有点程序和进程的关系。
这两个词有时可以互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上准确地讲,实例在其整个生存期中最多能装载和打开一个数据库。
实例就是一组操作系统进程以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件,临时文件,重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。
1.2 SGA和后台进程
下图以最简单的形式展示了Oracle实例和数据库。Oracle有一个很大的内存块,称为系统全局区(SGA),在这里他会做以下工作:
1. 维护所有进程需要访问的多种内部数据结构;
2. 缓存磁盘上的数据,另外重做数据写至磁盘之前先在这里缓存;
3. 保存已解析的sql计划等等。
Oracle有一组附加到SGA的进程,附加机制因操作系统而异。在Unix环境中,这些进程会物理地附加到一个很大的共享内存段,这是操作系统中分配的一个内存块,可以由多个进程并发地访问(通常要使用shmget()和shmat())。在windows中,这些进程只是使用C调用(malloc())来分配内存,因为他们实际上是一个大进程中的线程,所以会共享相同的虚拟内存空间。
Oracle还有一组供数据库进程/线程读写的文件(只允许Oracle进程读写这些文件)。这些文件保存了所有的表数据、索引、临时空间、重做日志等。
1.3 连接oracle
Oracle服务器处理请求有两种最常见的方式,分别是专用服务器(dedicated server)连接和共享服务器(shared server)连接。要想登陆数据库并在数据库中真正做事情,必须先连接,下面会说明建立连接时客户端和服务器会发生什么。
1.3.1 专用服务器
按最常用的配置连接Oracle,如下图所示:
登录时,Oracle总会为客户创建一个新的进程。这通常称为专用服务器配置,因为这个服务器进程会在客户的会话生存期中专门为客户服务。对于每个会话,都会出现一个新的专用服务器,会话与专用服务器之间存在一对一的映射。按照定义,这个专用服务器不是实例的一部分。连接数据库的程序会通过某种网络通道(如socket)与这个专用服务器直接通信,并由这个服务器进程接收和执行sql。如果必要,他会读取数据文件,并在数据库的缓存中查找需要的数据。
1.3.2 共享服务器
Oracle还可以接受另一种方式的连接,这称为共享服务器(shared server)。如果采用这种方式,就不会对每条用户连接创建另外的线程或新的unix进程。
在共享服务器中, Oracle使用一个"共享进程”池为大量用户提供服务。 共享服务器实际上就是一种连接池机制。利用共享服务器,我们不必为10000个数据库会活创建10 000个专用服务器(这样进程或线程就太多了) .而只需建立很少的一部分进程/线程,顾名思义,这些进/线程将由所有会话共享。这样Oracle 就能让更多的用户与数据库连接,否则很难连接更多用户。采用共享服务器模式.共享进程通常与数据库一同启动,使用ps 命令可以看到这个进程.
共享服务器连接和专用服务器连接之间有一个重大区别。 与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通信。之所以不能与共享服务器直接对话,原因就在于这个服务带进程是共享的。为了共享在这些进程,还需要另外一种机制.通过这种机制才能与服务器进程"对话”. Oracle 使用一个或一组称为调度程序(dispatcher, 也称分派程序)的进程。客户进程通过网络与一个调度程序进程通信。这个调度程序进程将客户的请求放入SGA 中的请求队列(这也越SGA 的用途之一) . 第一个空闲的共享服务器会得到这个请求,并进行处理(例如,请求可能是update T set x=x+5 where Y = 2)。完成这个命令后,共享服务器会把响应放在原调度程序(即接收请求的调度程序)的响应队列中。 调度程序进程一直在监听这个队列,发现有结果后,就会把结果传给客户。从概念上讲,共享服务器请求的流程如下图所示:
1.3.3 服务器模式的选择(此部分至1.3.6小节参考http://www.itpub.net/thread-1714191-1-1.html)
1. 合适选用共享服务器的情景:
(1)前台客户端数量比较多。
(2)服务器内存限制比较大。
用户若在一些老的服务器上部署Oracle数据库的话,因为其主板对内存的升级有所限制,所以,为了得到一个不错的数据库性能,往往采用共享服务器模式。如此,即时同时访问数据库的用户有所增加,其内存也不会有多大的影响。可以大大的降低内存的压力。
2.某些特定功能要求采用共享服务器模式。
比较典型的,如Oracle数据库服务器的连接共享、连接集中与负载均衡技术等等。他们必须在共享模式下才能够运行。
负载均衡用来在群集环境下实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并行处理以及均分负载,还能够实现数据库在故障时的容错和无断点恢复。所以,在一些对于性能与稳定性要求比较高的应用场景中,如银行中,往往都会采用负载均衡技术。此时,数据库管理员在配置数据库的时候,就需要考虑采用共享服务器模式。
3. 共享服务器好处
(1、减少操作系统进程/线程数
在一个有上千用户的系统上,如果操作系统力图管理数千个进程,可能很快就崩溃了。如果使用共享模式,可以有效的管理活动的部分用户,效率大大提高,操作系统可以避免了上下文切换。
(2、刻意的限制并发度
如果并发数过大,到一定程度,即使用户量再增加,每秒中完成的相应事物也不会增加。吞吐量到达一定峰值后会下降。利用共享服务器,可以把系统并发度限制到合理的数量上。
(3、减少系统所需的内存
可以减少所需内存量,但是在自动PAG内存管理以后,意义不是很大。
1.3.4 服务器模式的设置
1. 启用专用服务器
dedicated servers不需要专门的设置,这个是oracle的默认选项。
2. 启用共享服务器
要切换到共享模式,可以使用以下步骤:
A.设置初始化参数 SHARED_SERVERS 大于0,可以使用alter system命令动态的设置也可以在spfile里面修改初始化参数SHARED_SERVERS 的值大于0,然后shutdown oracle,然后restart oracle 即可启动共享模式,其他的共享服务器参数可以不用设置
参考语句:
alter system set shared_servers = 1 scope=both ;
alter system set max_shared_servers = 5 scope=both ;
B.设置dispatchers 参数,可以采用下面的方法设置:
alter system set dispatchers="(PROTOCOL=TCP) (SERVICE=yzdbXDB)(SERVICE=yzdb)";
前面表示的是协议,后面的service 分别指定要采用共享服务器模式的服务名称。oracle文档上说该步骤不是必须做的,但是我在实际中发现如果只是设置了shared_server参数,而把dispatches参数设置为空的话,不能启动共享服务器,使用上面的模式指定只启动某个服务的共享模式,如果要设置所有服务都使用共享模式,则设置为:
alter system set dispatchers='(PROTOCOL=TCP)';
C.在客户端的tnsnames.ora 的tns设置中,在 CONNECT_DATA 设置一项中增加 (server=shared )一项,即可使用共享服务器连接。
如果服务器端没有启动共享服务器模式,而客户端使用shared方式连接的话,会出现错误提示:
“ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄”;
关闭调度进程:
首先要查询到DISPATCHERS的NAME: SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
1.3.5 判断数据库使用的连接模式
1. 查看当前数据库服务器的连接模式
查看当前数据库服务器的运行情况有一下几种办法:
A.从v$session里面查看:
SQL> select distinct server from v$session ;
SQL>
SERVER
---------
DEDICATED
NONE
SQL>
如果显示的除了dedicated,还有NONE,则说明当前启动了共享服务器,并且server为none的会话正使用共享服务器连接,
同时,如果只显示有dedicated,则不能说明服务器就一定工作在专用服务器下面,此时只能说明有可能启动了共享模式,但是无连接。
可以使用下面的语句查询采用共享服务器的会话信息:
select saddr,program ,server from v$session;
SQL> /
SADDR PROGRAM SERVER
-------- ------------------------------------------------ ---------
296FB24C plsqldev.exe NONE
296FFD1C [email=oracle@B851]oracle @B851[/email] (q001) DEDICATED
29705AA0 [email=oracle@B851]oracle @B851[/email] (q000) DEDICATED
B.查询视图:
在网上有的资料上说只要查询下面三个视图,有记录则说明启动了共享模式,经过验证,具体情况如下:
select * from v$shared_server; ---有记录,且STATUS字段为WAIT(COMMON),则说明启动共享;
status为TERMINATED或者无记录,则说明没有启动共享服务器
select * from v$dispatcher; --有无记录都不能说明启动共享服务器,只能说明是配置了dispatchers参数
select * from V$CIRCUIT ; --有记录说明当前有使用共享模式的连接,无记录则不能判定服务器模式
2. 客户端建立的连接模式
A.当服务器采用专用服务器模式时,客户端只能使用专用模式连接,也就是在connect_data数据中只能使用 server=dedicated。
B.当服务器采用共享服务器模式时,客户端可以选择建立共享还是专用连接,connection,只要在 connect_data 中指定server=dedicated or server=shared
大多数情况下我们更倾向或习惯专用模式,两种模式下,对sga等分配都会有不同,所以如果转换成mts模式,别忘了sga也是需要调整的。最典型的是 mts模式需要较大的large_pool_size。如果真想转换还是仔细看看oracle关于mts的文档。共享连接只是把连接SESSION信息放 在LARGE POOL,所以LARGE POOL要大一些。而专用连接的SESION信息放在PGA。
1.3.6 禁用共享服务器模式
禁用的实验:
alter system set shared_servers = 0 ;
alter system set max_shared_servers = 0 ;
在已经建立共享模式的客户端执行查询,一直处于等待,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL COMMON
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL> select program,saddr,server,status from v$session
where saddr in ('296F8CE4','296FB24C');
PROGRAM SADDR SERVER STATUS
------------------------------------------------ -------- --------- --------
plsqldev.exe 296F8CE4 NONE INACTIVE
plsqldev.exe 296FB24C NONE INACTIVE
2 rows selected.SQL> 恢复参数值:
SQL>
alter system set shared_servers = 1;
System altered.
SQL> alter system set max_shared_servers = 5;
System altered.
SQL>
前台的查询恢复正常,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL NONE
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL>
发表评论
-
<让oracle跑得更快-7> AWR性能报告
2015-03-01 22:45 2132AWR是oracle 10g下提供的一 ... -
<让oracle跑得更快-6> 绑定变量
2015-02-28 21:52 1249变量绑定是OLTP系统中一 ... -
<让oracle跑得更快-5> 执行计划
2015-02-28 21:48 1291如果要分析某条(不是整体性能,后面还会讲到awr报告,会再次说 ... -
<让oracle跑得更快-4> 优化器(optimizer)
2015-02-27 21:27 2056Oracle数据库中优化器(o ... -
<让oracle跑得更快-3> latch和等待
2015-02-27 21:18 1170经常有人把latch造成的 ... -
<让oracle跑得更快-2> 锁和阻塞
2015-02-26 22:24 11672.1 锁和阻塞 首先,注意区别并发(concurrency) ... -
<让oracle跑得更快-1> 引起数据库性能问题的因素
2015-02-26 22:04 1544此《让oracle跑得更快》 ... -
OLTP(联机事务处理)和OLAP(联机分析处理) 【转】
2015-02-12 14:13 1248做数据库优化时,一定要先了解数据库支撑的应用特点,不同类型的应 ... -
<oracle优化>(url收藏)
2015-02-11 22:18 8231. CBO & RBO Rule Based Opt ... -
<oracle-11> 数据类型
2015-02-08 20:06 2555选择一个正确的数据类 ... -
<oracle-10> 索引
2015-02-01 21:19 2036索引是应用设计和开发的一个重要方面。如果有太多的索引,修改(插 ... -
<oracle-9> 数据库表
2015-01-30 15:44 13209.1 表类型 Oracle主要有 ... -
<oracle-8> redo和undo
2015-01-26 22:23 1654本章介绍oracle数据库中 ... -
<oracle-7> 事务
2015-01-26 11:07 1551事务(transaction)是数 ... -
<oracle-6> 并发多版本控制
2015-01-12 21:17 14656.1 什么是并发控制 并 ... -
<oracle-5> 锁(lock)和闩(latch)
2015-01-07 21:11 2765开发多用户、数据库驱动的应用时,最大的难点之一是:一方面要力争 ... -
<oracle-4> oracle进程
2015-01-06 23:02 1403Oracle中的各个进程要完成某个特定的任务或一组任务,每个进 ... -
<oracle-3> 内存结构
2015-01-05 22:20 1554这一篇主要讨论oracle的3 ... -
<oracle-2> oracle文件
2014-12-22 20:57 1139与oracle实例相关的文件只有下面几种: 参数文件(para ...
相关推荐
24.授权体系结构 190 24.1当局 190 24.2预调用处理 191 24.2.1 AccessDecisionManager 191 24.2.2基于投票的AccessDecisionManager实现 192 RoleVoter 193 AuthenticatedVoter 194 自定义选民 194 24.3调用处理后 ...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
ORACLE 10G入门与实践 Part1~Part5<br/><br/>目录:<br/>第1章 Oracle数据库10g概述 <br/>1-1 数据库和信息管理<br/>1-2 Oracle 10g服务器<br/>1-3 Oracle数据库体系结构<br/>1-4 Oracle数据库特性<br/>1-5 安装...
本文将深入探讨Oracle体系结构的各个关键组成部分。 首先,我们关注物理结构,这是Oracle数据库在磁盘上的实际存储形式。主要包含以下几个部分: 1. **数据文件**:数据文件是Oracle数据库中最基本的存储单元,...
<br>Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 <br>Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 <br>Chapter 2, Data Blocks, Extents, and Segments...
oracle的体系结构、实例启动关闭、数据字典、事务管理等
<br>Chapter 1, Introduction to the Oracle Database 第 1 章,Oracle 数据库简介 <br>Part II Oracle Database Architecture 第二部分 Oracle 数据库体系结构 <br>Chapter 2, Data Blocks, Extents, and Segments...
#### 一、Oracle体系结构概述 Oracle数据库的体系结构主要包括几个关键部分:数据库实例(Instance)和数据库文件(Database Files)。其中,数据库实例由内存结构(Memory Structures)和后台进程(Background ...
Oracle数据库体系结构概述 Oracle数据库的体系结构主要包括以下几个方面: - **实例**:一个运行中的Oracle数据库环境称为实例。每个实例都有自己的内存结构和进程。 - **数据库文件**:包括数据文件、控制文件和...
#### 四、Oracle体系结构详解 - **Oracle10g体系结构**:理解Oracle10g的体系结构对于深入学习和使用该数据库系统至关重要。主要包括以下几个方面: - **数据库实例**:一个数据库实例由内存结构和进程组成,是...
Oracle 11g体系结构深入剖析和运维管理(一)资源目录:【】1_Oracle学习前奏【】2_Oracle软件安装准备工作【】3_Oracle软件安装和数据库的创建【】4_Oracle数据库及相关软件的启动和关闭【】5_计算机工作机制概述【】...
JavaEE的体系结构分为三个层次:表示层、中间层和数据层。表示层通常包括HTML、JavaScript和Ajax,用于用户交互;中间层主要涉及Servlet、JSTL、JavaBean和各种框架如Struts,负责业务逻辑处理;数据层则通过JDBC和...
学习Oracle体系结构不仅需要数据库理论、编程语言和操作系统知识,还要求积极的学习态度和动力。理解Oracle的体系结构对于数据库管理员、开发人员和IT专业人士来说至关重要,因为它有助于优化性能、确保数据安全和...
Oracle体系结构是理解其高效运行和管理的关键。本篇将深入探讨Oracle的体系结构及其主要组成部分。 首先,Oracle数据库的核心是数据库本身,它是一个数据的集合,包含在一个或多个物理文件中。数据库分为物理结构和...
Oracle数据库的体系结构非常复杂,本总结只是对其中的一些关键概念和组件进行了概述。实际上,每个部分都可以展开深入讨论,并涵盖更多的细节。对于希望深入掌握Oracle数据库体系结构的读者来说,需要进一步学习和...
Oracle体系结构概述.pptx
Oracle概述和体系结构.pptx