最近关心了iphone的news, 感觉, 这个东西很伟大, 很佩服jobs
我的view, iphone的技术: OSX 是最关键的, 其次是用户感受, 其次是美观.
另外, 对于他的应用前景, 目前还不好说, 只能说, 这是一个新物种...
特别是看了slashdot的评论, 有人破了他的口令, 觉得这个毫无价值的news
基本上, iphone=ipod+video+wifi+internet+..., 最后才是phone, 很多扩展的空间...
osx, 口令是可以改的嘛, 真是的...
Wednesday, July 4, 2007
oracle性能, 复杂就是好的吗?
原文:
DML性能低下,其中最严重的原因之一是无用索引的存在。所有SQL的插入,更新和删除操作在它们需要在每一行数据被改变时修改大量索引的时候会变得更慢。
许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引。虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引。过度分配索引会严重影响关键Oracle 数据表的性能。
在Oracle9i出现以前,没有办法确定SQL查询没有使用的索引。让我们看看Oracle9i提供了什么样的方法让你找到这些索引并删除它们。
过程是相当简单的。Oracle9i有一个工具能够让你使用ALTER INDEX命令监视索引的使用。然后你可以查找这些没有使用的索引并从数据库里删除它们。
个人以为:
oacle的性能, 基本分为查询性能, 和事务性能, 这是两种不同的算法机制,...
实际上, oracle的性能是个性化的, 换句话说, 对相关业务的类型有关的, 是比较有讲究的, 这个10年前, 在看oracle7的随机EN文资料就有描述, 其性能是同数据库安装时候的配置有关的,这是大的环境, 其次, 每个表的数据增长(insert)和变化(UPDATE和delete)直接影响了其性能, 这个效果是随着时间和数据量的增长有很大关系的, 同时, 也同session的数目有很大关系, 所以, 数据库的性能优化是灵活的, 需要有一个工具, 跟踪数据库的运行响应时间和其状态, p=f(状态, 数据指标), 曾经使用过一个很特别的数据库健康/性能监控工具, 非常详细描述了数据库的运行状态和评估健康指标, 当然, 健康是如何定义的呢? :-) 这个工具本人在广东电信安装配置过很多, 将数据库调整到非常好的运行状态, 需要对应用 类型宏观, 和数据库驻留/配置的微观环境有比较深刻的认识, 不是考个OCP就能玩的转的东东...需要情景/场景/事件的考验...包括故障发生时, 如何使oracle start...
宏观: 指业务的交易类型
微观: 指数据库的安装配置, 物理配置和逻辑配置, 特别是对oracle数据文件族, 这里有很多技 巧.甚至细到, 表的column, row级别... 一个好的sql语句可以大幅度提高业务响应时间, 而相反, 一个差的sql语句, 甚至可以使数据库block在那里...
实际上, 说来说去, 就是如何使ORACLE响应一个session的资源最少, 响应时间最短, 是一种动态的平衡, 是一种方法论的表现...
另外, 最好是程序, 数据分离. 这是一个很讲究的东西, 曾经在见过一个从来不用update语句的厉害家伙, 思路很独特, 真正是高手. 其次, 数据库的业务存储结构要不断调整, 这个需要个环境, 调整数据库的存储配置, 抽出数据, 使数据同存储结构分离, 这个考验你真正的功夫, 书本是不会写的, 每次调整/rebuild, 都可以避免碎片, 大幅度提高数据库的性能...不是随便写个sql语句的事情...
DML性能低下,其中最严重的原因之一是无用索引的存在。所有SQL的插入,更新和删除操作在它们需要在每一行数据被改变时修改大量索引的时候会变得更慢。
许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引。虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引。过度分配索引会严重影响关键Oracle 数据表的性能。
在Oracle9i出现以前,没有办法确定SQL查询没有使用的索引。让我们看看Oracle9i提供了什么样的方法让你找到这些索引并删除它们。
过程是相当简单的。Oracle9i有一个工具能够让你使用ALTER INDEX命令监视索引的使用。然后你可以查找这些没有使用的索引并从数据库里删除它们。
个人以为:
oacle的性能, 基本分为查询性能, 和事务性能, 这是两种不同的算法机制,...
实际上, oracle的性能是个性化的, 换句话说, 对相关业务的类型有关的, 是比较有讲究的, 这个10年前, 在看oracle7的随机EN文资料就有描述, 其性能是同数据库安装时候的配置有关的,这是大的环境, 其次, 每个表的数据增长(insert)和变化(UPDATE和delete)直接影响了其性能, 这个效果是随着时间和数据量的增长有很大关系的, 同时, 也同session的数目有很大关系, 所以, 数据库的性能优化是灵活的, 需要有一个工具, 跟踪数据库的运行响应时间和其状态, p=f(状态, 数据指标), 曾经使用过一个很特别的数据库健康/性能监控工具, 非常详细描述了数据库的运行状态和评估健康指标, 当然, 健康是如何定义的呢? :-) 这个工具本人在广东电信安装配置过很多, 将数据库调整到非常好的运行状态, 需要对
宏观: 指业务的交易类型
微观: 指数据库的安装配置, 物理配置和逻辑配置, 特别是对oracle数据文件族, 这里有很多技 巧.甚至细到, 表的column, row级别... 一个好的sql语句可以大幅度提高业务响应时间, 而相反, 一个差的sql语句, 甚至可以使数据库block在那里...
实际上, 说来说去, 就是如何使ORACLE响应一个session的资源最少, 响应时间最短, 是一种动态的平衡, 是一种方法论的表现...
另外, 最好是程序, 数据分离. 这是一个很讲究的东西, 曾经在见过一个从来不用update语句的厉害家伙, 思路很独特, 真正是高手. 其次, 数据库的业务存储结构要不断调整, 这个需要个环境, 调整数据库的存储配置, 抽出数据, 使数据同存储结构分离, 这个考验你真正的功夫, 书本是不会写的, 每次调整/rebuild, 都可以避免碎片, 大幅度提高数据库的性能...不是随便写个sql语句的事情...
ORACLE 进程结构
感悟: oracle
独特的oracle进程结构, 我感觉不是偶然的, 是同其SQL语句的机制有关, oracle的sql语句, 过程化的PL/SQL语句, 光标cursor操作, 感觉, 其颗粒度是没有SYBASE细的, 感觉, 如果ORACLE基于T-SQL, 那么其数据库后台结构不应该这么复杂, 换句话说, 感觉T-SQL是比PL/SQL, SQL先进的,
如果ORACLE支持T-SQL, 那么会是什么效果... 本人自我感觉, 对oracle的INSIDE理解是很深刻的, 包括其数据库的数据文件族, 理解这个文件族, 是真正理解ORACLE的根本, 理解了这个, 一切都很自然...
进程结构:
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序;
LGWR 日志写入程序;
CKPT 检查点;
SMON 系统监控;
PMON 进程监控;
ARCH 归档;
RECO 恢复;
LCKn 封锁;
Dnnn 调度进程;
Snnn 服务器。
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没有查到未用的缓冲区,它停止查找并通知DBWR进行写。出现超时(每次3秒),DBWR 将通知本身。当出现检查点时,LGWR将通知DBWR.在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK- WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DBWR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK- WRITE-BATCH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANSACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDSERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是 ORACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。
独特的oracle进程结构, 我感觉不是偶然的, 是同其SQL语句的机制有关, oracle的sql语句, 过程化的PL/SQL语句, 光标cursor操作, 感觉, 其颗粒度是没有SYBASE细的, 感觉, 如果ORACLE基于T-SQL, 那么其数据库后台结构不应该这么复杂, 换句话说, 感觉T-SQL是比PL/SQL, SQL先进的,
如果ORACLE支持T-SQL, 那么会是什么效果... 本人自我感觉, 对oracle的INSIDE理解是很深刻的, 包括其数据库的数据文件族, 理解这个文件族, 是真正理解ORACLE的根本, 理解了这个, 一切都很自然...
进程结构:
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序;
LGWR 日志写入程序;
CKPT 检查点;
SMON 系统监控;
PMON 进程监控;
ARCH 归档;
RECO 恢复;
LCKn 封锁;
Dnnn 调度进程;
Snnn 服务器。
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没有查到未用的缓冲区,它停止查找并通知DBWR进行写。出现超时(每次3秒),DBWR 将通知本身。当出现检查点时,LGWR将通知DBWR.在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK- WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DBWR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK- WRITE-BATCH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANSACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDSERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是 ORACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。
ORACLE 进程结构
感悟: oracle
独特的oracle进程结构, 我感觉不是偶然的, 是同其SQL语句的机制有关, oracle的sql语句, 过程化的PL/SQL语句, 光标cursor操作, 感觉, 其颗粒度
进程结构:
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序;
LGWR 日志写入程序;
CKPT 检查点;
SMON 系统监控;
PMON 进程监控;
ARCH 归档;
RECO 恢复;
LCKn 封锁;
Dnnn 调度进程;
Snnn 服务器。
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没有查到未用的缓冲区,它停止查找并通知DBWR进行写。出现超时(每次3秒),DBWR 将通知本身。当出现检查点时,LGWR将通知DBWR.在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK- WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DBWR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK- WRITE-BATCH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANSACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDSERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是 ORACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。
独特的oracle进程结构, 我感觉不是偶然的, 是同其SQL语句的机制有关, oracle的sql语句, 过程化的PL/SQL语句, 光标cursor操作, 感觉, 其颗粒度
进程结构:
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序;
LGWR 日志写入程序;
CKPT 检查点;
SMON 系统监控;
PMON 进程监控;
ARCH 归档;
RECO 恢复;
LCKn 封锁;
Dnnn 调度进程;
Snnn 服务器。
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没有查到未用的缓冲区,它停止查找并通知DBWR进行写。出现超时(每次3秒),DBWR 将通知本身。当出现检查点时,LGWR将通知DBWR.在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK- WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DBWR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK- WRITE-BATCH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANSACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER PROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDSERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是 ORACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。
ORACLE的感想
ORACLE的感悟:
1992-1995年之间, 那时ORACLE是什么, 很多人都不知道, 我们在上海船舶研究所开始培训oracle 5 和unix, 都是N年之前的事情, 那时, 软件都是从美国带回来的, 非常神秘, 象武林秘笈一样. 资料也只有英文版的随机资料, unix+oracle的安装, 大概需要一天时间, 都是软盘. 到了1996年, 又有在UNIX上接触sybase. 对比了两个数据库. 感觉, 对oracle来说, 基本上卖的是一个数据库和一个开发包/LIB(OCI, PRO*C) 那时, 使用SQL*FORMS 3开发企业ERP/业务管理系统, 而sybase凭借PB风光了很多时间. 记得所有报表都是使用pro*c写的, 写的view和报表估计有500个以上. 这也打下了SQL的基础, 甚至至今, 都记忆尤新. 那时, 使用ORACLE 从5, 6, 7三个版本都是熟悉, 包括UNIX, 甚至修改过COMPAQ服务器的设备驱动程序, 安装UNIX/SCO ..., 对于数据库ORACLE的维护, 特别是那 ALTER DATABASE命令, 玩于掌中... 甚至HP 9000小型机都可以拆开来PK.
从国家企业出来后, 这样的环境很难接触到, 同ORACLE越来越远, 实在可惜. 不过那时, 应用程序发展很差, 布线一个点都可以有700多甚至更多的价格, ... 看到一篇oracle的文章,
copy下来, 看看,... 回忆起以前的开发岁月..., 不过也想, oracle究竟是靠什么呢? sybase就不行吗?
现在看来, oracle在应用方面, 开发工具方面还是比较差些, 所以收购了几个应用产品厂家, 打包来卖...oracle其实并布神秘, 很普通, 如果你静下来感悟他的engine原理, 至于程序开发, 就是一个程序一个程序写, 慢慢就没有兴趣了, ... 不过一个匠才...
ORACLE 后台进程:
1. ORACLE实例的进程结构和内存结构
1) 进程结构
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使
用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACL
E进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用户ORACLE)是一种数据库系统,一个进程执行全部ORAC
LE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代
码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行O
RACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分
,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用
程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一
个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,
而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可
降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一
个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(
该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为
后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORAC
LE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序
LGWR 日志写入程序
CKPT 检查点
SMON 系统监控
PMON 进程监控
ARCH 归档
RECO 恢复
LCKn 封锁
Dnnn 调度进程
Snnn 服务器
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个OR
ACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主
要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储
区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的
缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用
的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中
的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写
入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度
时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH
的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没
有查到未用的缓冲区,它停止查找并通知DBWR进行写。
出现超时(每次3秒),DBWR 将通知本身。
当出现检查点时,LGWR将通知DBWR
在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数
DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DB
WR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目
的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新
的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BAT
CH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲
区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘
,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志
缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输
出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或
不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,
服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日
志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写
出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入
日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入
数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢
复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检
查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统
性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许
多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写
入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,
即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在
具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程
有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释
放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障
的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和
服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布
式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式
事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处
理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服
务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连
接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANS
ACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为
ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1
……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER P
ROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDS
ERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用
户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客
户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进
程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程
序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版
本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用
连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是OR
ACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启
动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个
调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果
是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度
进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),
网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器
建立一个专用服务器进程,建立一种合适的连接。
2)、ORACLE内存结构
ORACLE在内存存储下列信息:
执行的程序代码。
连接的会话信息
程序执行期间所需数据和共享的信息
存储在外存储上的缓冲信息。
ORACLE具有下列基本的内存结构:
软件代码区
系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池.
程序全局区,包括栈区和数据区.
排序区
软件代码区
用于存储正在执行的或可以执行的程序代码。
软件区是只读,可安装成共享或非共享。ORACLE系统程序是可共享的,以致多个
ORACLE用户可存取它,而不需要在内存有多个副本。用户程序可以共享也可以不
共享。
系统全局区
为一组由ORACLE分配的共享的内存结构,可包含一个数据库实例的数据或控制信
息。如果多个用户同时连接到同一实例时,在实例的SGA中数据可为多个用户所共
享,所以又称为共享全局区。当实例起动时,SGA的存储自动地被分配;当实例关
闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可自动地被分配
;当实例关闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可使
用其SGA中的信息,但仅仅有几个进程可写入信息。在SGA中存储信息将内存划分
成几个区:数据库缓冲存储区、日志缓冲区、共享池、请求和响应队列、数据字
典存储区和其它各种信息。
程序全局区
PGA是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全局区(P
ROCESS GLOBAL AREA)。
排序区
排序需要内存空间,ORACLE利用该内存排序数据,这部分空间称为排序区。排序
区存在于请求排序的用户进程的内存中,该空间的大小为适就排序数据量的大小
,可增长,但受初始化参数SORT-AREA-SIZER所限制。
1992-1995年之间, 那时ORACLE是什么, 很多人都不知道, 我们在上海船舶研究所开始培训oracle 5 和unix, 都是N年之前的事情, 那时, 软件都是从美国带回来的, 非常神秘, 象武林秘笈一样. 资料也只有英文版的随机资料, unix+oracle的安装, 大概需要一天时间, 都是软盘. 到了1996年, 又有在UNIX上接触sybase. 对比了两个数据库. 感觉, 对oracle来说, 基本上卖的是一个数据库和一个开发包/LIB(OCI, PRO*C) 那时, 使用SQL*FORMS 3开发企业ERP/业务管理系统, 而sybase凭借PB风光了很多时间. 记得所有报表都是使用pro*c写的, 写的view和报表估计有500个以上. 这也打下了SQL的基础, 甚至至今, 都记忆尤新. 那时, 使用ORACLE 从5, 6, 7三个版本都是熟悉, 包括UNIX, 甚至修改过COMPAQ服务器的设备驱动程序, 安装UNIX/SCO ..., 对于数据库ORACLE的维护, 特别是那 ALTER DATABASE命令, 玩于掌中... 甚至HP 9000小型机都可以拆开来PK.
从国家企业出来后, 这样的环境很难接触到, 同ORACLE越来越远, 实在可惜. 不过那时, 应用程序发展很差, 布线一个点都可以有700多甚至更多的价格, ... 看到一篇oracle的文章,
copy下来, 看看,... 回忆起以前的开发岁月..., 不过也想, oracle究竟是靠什么呢? sybase就不行吗?
现在看来, oracle在应用方面, 开发工具方面还是比较差些, 所以收购了几个应用产品厂家, 打包来卖...oracle其实并布神秘, 很普通, 如果你静下来感悟他的engine原理, 至于程序开发, 就是一个程序一个程序写, 慢慢就没有兴趣了, ... 不过一个匠才...
ORACLE 后台进程:
1. ORACLE实例的进程结构和内存结构
1) 进程结构
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使
用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACL
E进程的体系结构设计使性能最大。
ORACLE实例有两种类型:单进程实例和多进程实例。
单进程ORACLE(又称单用户ORACLE)是一种数据库系统,一个进程执行全部ORAC
LE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代
码和用户的数据库应用是单个进程执行。
在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行O
RACLE 。
多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分
,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用
程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一
个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于
处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行,
而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可
降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过一
个分离服务器进程与ORACLE通信。它可执行下列任务:
对应用所发出的SQL语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(
该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为
后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个ORAC
LE实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:
DBWR 数据库写入程序
LGWR 日志写入程序
CKPT 检查点
SMON 系统监控
PMON 进程监控
ARCH 归档
RECO 恢复
LCKn 封锁
Dnnn 调度进程
Snnn 服务器
每个后台进程与ORACLE数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个OR
ACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主
要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储
区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的
缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用
的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
ORACLE采用LRU(LEAST RECENTLY USED)算法(最近最少使用算法)保持内存中
的数据块是最近使用的,使I/O最小。在下列情况预示DBWR 要将弄脏的缓冲区写
入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度
时,该服务进程将通知DBWR进行写。该临界长度是为参数DB-BLOCK-WRITE-BATCH
的值的一半。
当一个服务器进程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT缓冲区时,没
有查到未用的缓冲区,它停止查找并通知DBWR进行写。
出现超时(每次3秒),DBWR 将通知本身。
当出现检查点时,LGWR将通知DBWR
在前两种情况下,DBWR将弄脏表中的块写入磁盘,每次可写的块数由初始化参数
DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区,DB
WR从LUR表中查找另外一个弄脏缓冲区。
如果DBWR在三秒内未活动,则出现超时。在这种情况下DBWR对LRU表查找指定数目
的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,DBWR查找一个新
的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BAT
CH的值的二倍。如果数据库空运转,DBWR最终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲
区写入磁盘。
在有些平台上,一个实例可有多个DBWR。在这样的实例中,一些块可写入一磁盘
,另一些块可写入其它磁盘。参数DB-WRITERS控制DBWR进程个数。
LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志
缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输
出,LGWR输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的1/3已满时将日志缓冲区输出。
当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或
不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后,
服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得很快,可确保日
志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR在一个事务提交前就将日志项写
出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE使用快速提交机制,当用户发出COMMIT语句时,一个COMMIT记录立即放入
日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入
数据文件。当一事务提交时,被赋给一个系统修改号(SCN),它同事务日志项一
起记录在日志中。由于SCN记录在日志中,以致在并行服务器选项配置情况下,恢
复操作可以同步。
CKPT进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检
查点。在通常的情况下,该任务由LGWR执行。然而,如果检查点明显地降低系统
性能时,可使CKPT进程运行,将原来由LGWR进程执行的检查点的工作分离出来,
由CKPT进程实现。对于许多应用情况,CKPT进程是不必要的。只有当数据库有许
多数据文件,LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写
入磁盘,该工作是由DBWR完成的。
初始化参数CHECKPOINT-PROCESS控制CKPT进程的使能或使不能。缺省时为FALSE,
即为使不能。
SMON进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在
具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程
有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
PMON进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释
放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障
的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和
服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。
PMON有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。
RECO进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布
式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式
事务的其它数据库中,RECO自动地解决所有的悬而不决的事务。任何相应于已处
理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。
当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信,如果远程服
务器是不可用或者网络连接不能建立时,RECO自动地在一个时间间隔之后再次连
接。
RECO后台进程仅当在允许分布式事务的系统中出现,而且DISTRIBUTED – TRANS
ACTIONS参数是大于0。
ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为
ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
LCKn进程:是在具有并行服务器选件环境下使用,可多至10个进程(LCK0,LCK1
……,LCK9),用于实例间的封锁。
Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVER P
ROCESS)。没有调度进程时,每个用户进程需要一个专用服务进程(DEDICATEDS
ERVER PROCESS)。对于多线索服务器(MULTI-THREADED SERVER)可支持多个用
户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客
户_服务器环境中。
在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进
程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程
序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版
本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用
连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度
进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是OR
ACLE实例的组成部分,它是处理与ORACLE有关的网络进程的组成部分。在实例启
动时,该网络接收器被打开,为用户连接到ORACLE建立一通信路径,然后每一个
调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连
接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果
是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度
进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户),
网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器
建立一个专用服务器进程,建立一种合适的连接。
2)、ORACLE内存结构
ORACLE在内存存储下列信息:
执行的程序代码。
连接的会话信息
程序执行期间所需数据和共享的信息
存储在外存储上的缓冲信息。
ORACLE具有下列基本的内存结构:
软件代码区
系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池.
程序全局区,包括栈区和数据区.
排序区
软件代码区
用于存储正在执行的或可以执行的程序代码。
软件区是只读,可安装成共享或非共享。ORACLE系统程序是可共享的,以致多个
ORACLE用户可存取它,而不需要在内存有多个副本。用户程序可以共享也可以不
共享。
系统全局区
为一组由ORACLE分配的共享的内存结构,可包含一个数据库实例的数据或控制信
息。如果多个用户同时连接到同一实例时,在实例的SGA中数据可为多个用户所共
享,所以又称为共享全局区。当实例起动时,SGA的存储自动地被分配;当实例关
闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可自动地被分配
;当实例关闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可使
用其SGA中的信息,但仅仅有几个进程可写入信息。在SGA中存储信息将内存划分
成几个区:数据库缓冲存储区、日志缓冲区、共享池、请求和响应队列、数据字
典存储区和其它各种信息。
程序全局区
PGA是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全局区(P
ROCESS GLOBAL AREA)。
排序区
排序需要内存空间,ORACLE利用该内存排序数据,这部分空间称为排序区。排序
区存在于请求排序的用户进程的内存中,该空间的大小为适就排序数据量的大小
,可增长,但受初始化参数SORT-AREA-SIZER所限制。
Tuesday, July 3, 2007
JOBS 厉害
2005年, loglogic 美国同事, jian zhen(www.zhen.org) 和chima 来中国使用powerbook G4 12INCH和palm手机, 我感觉到了美国文化的魅力, 感觉APPLE的style, 以及palm手机的方便, 看到一篇关于JOBS风格的文章, 知道MS也投资apple, copy/paste如下:
这个世界上最酷的企业家,正成为商界最重要的“教育家”
“你我的回忆,比前方的道路还漫长”。
5月底,当史蒂夫·乔布斯和比尔·盖茨坐在一起,他引用了甲壳虫乐队的歌词总结过去。这的确令人感伤:到2007年6月5日,苹果公司距离其推出第一台苹果II电脑已有30年,而乔布斯也已经52岁。
即使最具想像力的奇幻小说,也很难像乔布斯和苹果电脑所经历的那样富有戏剧性:这个有阿拉伯血统的工薪家庭养子,早年大学辍学,成为一个信奉佛教的素食主义者,并在之后数度改变了高科技产业的命运。
1984年,他推出了世界上首部具有图形界面的商用个人电脑McIntosh(多数人已经遗忘,第一代Macintosh的名字曾被有意拼错),并意托科幻小说《1984》拍摄了广告,成为历史上最富黑客精神的广告作品;在游说百事可乐公司的约翰·斯库利加盟苹果时,他提给对方的问题,“你想卖一辈子糖水,还是想改变世界?”,成为了过去30年里最著名的招聘语。
30岁时被赶出自己创办的公司,42岁重新成为苹果的主人。乔布斯开始了一段更为奇妙的“第二人生”:他推出了果冻一样的电脑、冰块似的音乐播放器(你一定知道它叫什么),让这家几乎破产的公司教会全世界设计的价值,并改变了我们听音乐的方式;他偶然投资的数字图像技术公司皮克斯,最终成为迪斯尼以来最成功的动画制作公司;甚至,他在一次手术中战胜了癌症……
试着将乔布斯的个人传奇淡化,你会得到另外一个故事。苹果的历史,展示了一家公司如何获得创新基因,又如何破坏了它们。它展现了一种高级的创新技巧:一家公司怎样可以通过一系列创新产品从濒临死亡状态变为全世界的宠儿。
某种程度上,乔布斯和苹果所做、所经历的,也许是近代商业史上最有趣、也最具启发性的商业案例。网讯创始人朱敏在对本刊讲述大公司只有通过“内部革命”才能保持创新时,引用了乔布斯开发McIntosh时的案例:他把一个开发团队封闭在一个独立的办公楼中,将他们命名为“海盗”,以此塑造与公司其他“正规海军”对立的情绪,最终开发出一款与当时苹果的开发思路截然不同的产品。而红杉资本创始合伙人沈南鹏也从不讳言乔布斯是他最欣赏的商人,因为对方“总能领先其他人一两年看到一个新市场的崛起”。
以下,为《环球企业家》总结的三则“乔布斯课程”。
失败的价值
在最近的一次公开演讲上,乔布斯说苹果公司现在有“三条业务线”和一个“业余爱好”。前者包括电脑、以iPod和iTunes为核心的音乐业务以及手机。而今年3月面市的Apple TV则属后者。
那些观看过乔布斯演讲的人,普遍相信Apple TV是一款颇为创新的产品。据乔布斯演示,它可以通过无线网络连接个人电脑,播放其中的电影、电视剧和音乐。理论上,这不仅强化了电视和电脑的功能互补,也能够进一步促进数字媒体的发行。
但公允言之,现在的Apple TV并不可能取得iPod式的成功。当前版本的Apple TV不能直接从网络上购买电影,而且,虽然它只能应用于高清电视,但用户能够从网络上买到的电影和电视剧,都还不具备高清分辨率,这就弱化了其视效。甚至,它没有配置DVD光驱,这也极大束缚了它作为数字家庭入口的能力。
而在一些细节上,苹果的处理也差强人意。比如,Apple TV一个有趣的功能是“屏幕保护”:用户可以将自己的数码照片以幻灯片方式随意展现在电视上。但问题是:虽然Apple TV能够和多台电脑无线连接,调用它们的音乐库,但它只能从一台电脑上调取照片。此种设计缺陷,也充分证明了苹果公司尚不能清除判断每个功能对于用户的价值,以及相匹配的产品需求。
Apple TV将成为苹果近年来少见的一次失败产品?
远未到结论时刻。在多数人乐于相信苹果是一家懂得如何发明出完美产品的时候,人们其实忽视了,苹果始终保持着持续改进的风格。
比如至今总销量已经超过一亿部的iPod,就是一款成就于无数挫败之上的产品。2001年底,苹果推出的第一款iPod实则并不具备热销的条件:它只有5 个小时的续航时间,无法应用于Windows系统,甚至其最重要的功能随机播放音乐(shuffle),也被隐藏到几层菜单之下。因此,在iPod推出的第一年,它只卖出了10万台。
乔布斯没有因为这一糟糕成绩否决这款产品——关于他是如何判断产品价值的,后面我们会有更为详细的阐释——围绕iPod,苹果做出了很多改进努力:开发出一款足够好用的音乐管理软件iTunes、构建网上音乐商店、降低iPod能量消耗以提升其续航时间、与Windows系统实现兼容……苹果似乎始终能够很清晰地看到这款产品的问题,并非常有针对性的予以解决,这最终促成了iPod奇迹:2004年起,第四代版本的iPod和iPod mini的推出,让其年销量达到826万部,一举成为了21世纪的Walkman。
我们甚至可以做出一个较为极端的结论:苹果是一家在失败中强大起来的公司。它的每一款成功产品几乎都奠基于一款失败产品:苹果II之前有苹果I、McIntosh前有Lisa、Macintosh的操作系统OS X之前有NeXT……换个角度,也可以说苹果是最敢于自我革命的公司,它从来没有停留于任何一款单一成功的产品。
同样,个人层面,乔布斯也在教训里实现了“进化”。自1980年代初期即开始追踪苹果的分析师Tim Bajarin认为,正是在被迫离开苹果公司的岁月里,乔布斯从一个纯粹的理想主义者,变成了一个在战略上的现实主义者,并保持着自己在技术、设计和营销方面的完美主义。正因此,他在回到苹果后,首先向盖茨发出邀请,让微软投资于资金紧缺的苹果公司。而从2006年起,他又让苹果电脑使用英特尔公司的芯片,并开发出在苹果电脑上应用Windows上的软件——年轻时,乔布斯曾认为微软和英特尔的产品是“邪恶的”。
公司政治的失败也教会了他很多东西。这个曾经年轻气盛的硅谷金童,在1997年回归苹果后,一直小心翼翼的担任着“过渡CEO”的角色,直到2000年,苹果业绩稳定,关于他的评价进入良性循环,他才将“过渡”两字去掉。
领先市场12个月的思考
众所周知,乔布斯并非技术天才,即使在创业初期,他也没有像盖茨一样扮演编程高手。某种程度上,乔布斯甚至是反技术的,他曾经表示:“我愿意用自己享受的一切高科技,换取与苏格拉底共度一下午的机会。”
但多年的行业经验让他形成了一套行之有效的产品判断方法:他首先是个独立思考的人,其次是一个苛刻的遴选者。
曾任苹果销售总监的David Sobotta如此回忆2002年春天,他和乔布斯在一起开会时的经历:他所负责的美国国家健康学会的技术负责人,曾希望说服乔布斯去开发一款类似Tablet PC的平板电脑。因为之前并未知会乔布斯相关话题,David Sobotta称,这应该是乔布斯之前思考的一次偶然流露。
乔布斯拒绝了对方的要求,并讲述了自己的看法:首先,这不是一个大市场。尽管包括惠普、宏基在内的PC业巨头试图打开这一市场,甚至盖茨在当年大胆预言,平板电脑将在五年内成为美国最畅销的电脑,但乔布斯非常明确的看到:相对于每年销量两亿台的个人电脑市场,平板电脑以万台为计量单位年销量并不足取。
而在对方的进一步恳请下,乔布斯又从其他几个层面对这一市场进行了阐述。因为平板电脑主要是针对专业人士的,比如美术及医疗领域的用户,它就可能遇到几种技术瓶颈:其一,没有任何无线网络能够足够快的在平板电脑上传输专业图象。其二,平板电脑的显示达不到专业需求标准。
他总结说,苹果公司更乐于去定义一个新市场,而不是参与到众多公司为一款前景难料的产品制造生存空间的战争中去。而且,如果为美国国家健康学会这种机构开发产品,意味着重大的责任,但这种责任对于苹果来说是难以承担的。
随后,健康学会的人又建议他去开发黑莓一类的产品。对此,乔布斯的回答是:这是另一个细分市场。他明确看到了电脑和电话的融合将是一个潮流,但黑莓不是这个趋势的一部分。
由此,乔布斯非常认真的揭开了他对未来手机的预期:一款可以装在衣服口袋里,并比电脑、手机独立存在时都更好的产品。
这整段对话,详尽显示了乔布斯对新市场的思考方式:他首先会思考新产品所在的,是一个大众市场还是细分市场?这个市场可能会有多大?然后他会问:是否有一些技术阻碍了一个细分市场成为大众产品?以及,未来的技术发展对这个市场是促进还是毁灭?最后一个问题是:如果做出这样一款产品,它能否创造新的价值?
不妨用这个判断方法模拟一下iPod诞生前乔布斯的思考:针对第一个问题,索尼的Walkman早已证明音乐播放是个规模惊人的大众市场。接下来, Napster们的迅速兴起,说明数字音乐这种新技术的空间广阔,这也进一步意味着,数字音乐需要一种足够优秀的播放器作为载体。此外,也并不难想到,手机功能的提升,很可能给纯粹的音乐播放器带来巨大威胁,所以,苹果不能止步于iPod的成功。
正如我们前面所涉及的,苹果是一家善于自我更新的公司。而它对于既有产品的改善,一定程度上也来自于这种前瞻式思维。
2007年5月底,Apple TV做出了最近的一次重要升级:与YouTube展开合作。以短期效果计,这是一次无效合作。可想而知,在高清电视上观看YouTube上图像模糊的短片,是一件令人难以忍受的事情。但它的长期价值是显而易见的:随着互联网基础设施的改善,YouTube上所承载的信息变为高清版本并非遥不可及。到那时,Apple TV就拥有了一个极佳的内容源。
环境创造者
据美国一本专业刊物统计,2006年高科技企业的研发投入排行中,苹果仅以7.15亿美元列第15位,这约为排名榜首的微软的1/9,甚至少于赛门铁克、雅虎和CA公司。
是否有些不可思议?世界上最优秀的创新公司——过去几年中,无论在BusinessWeek还是Wired杂志的创新公司排行榜上,苹果都和Google盘踞在前两名的位置,只是偶尔变化排名——研发投入并不巨大。
如果对苹果足够熟悉,你会知道,这是一家极为擅长借助外部智慧的公司:McIntosh率先使用的鼠标、iPhone所使用的Mutli-Touch技术都来自于其他公司,甚至iPod的最初开发工作也是外包完成的。
自身研发投入相对有限、广为使用外部研发成果,为什么苹果依然被视为全世界的创新榜样?
唯一的答案是:苹果清楚什么是最需要自身开发的。在2004年的一次访谈中,乔布斯坦言:“我总想拥有或控制我们所做的所有事的核心技术。”
至少在过去10年里,这家以生产精美硬件产品的公司,其核心技术集中于软件领域。1997年,乔布斯将苹果的产品线从几十条变为四条,且明确表示,苹果只要在台式机和笔记本电脑、高端和低端四个领域推出相对应的一流机器就够生存。在缩短产品线同时,他大肆招募软件领域的人才——看到了电脑与家用电器的融合前景,让他深知,软件将成为未来所有产品的共同“灵魂”。正是这十年的积累,让苹果有能力为iPod、Apple TV和iPhone赋予灵魂。
在扮演战略观察者同时,乔布斯还将自己塑造为“一个质量标杆”,因为“很多人并不知道如何适应那种追求卓越的环境”。在接受美国TIME杂志采访时,乔布斯说:所有公司都能做出接近完美的模型,但很少有公司能做出品质优良的产品,因为在产品开发过程中,技术、设计等部门会以“做不来”为由,进行缩水处理。这时候就需要一个铁腕领导者将“no”变成“yes”。
因此,即使那些他参与不多的产品,也会因为他的最终审核而提升水准。比如,乔布斯要求外部供应商和苹果相关人士开会的时间都定成周五,这样他就能周末把新产品带回家里,然后在周一给出系列新要求:比如用户选一首歌不能超过3次按键,菜单转换速度的提升,甚至其他人所不能理解的不能设置开关键……
在与乔布斯的合作中,很多人并不能立刻理解、认同他的要求,但很多人承认,乔布斯的压力让他们做了一些超越自己能力的成果。这就是我们这个时代最伟大的创新主义者的独特才能:不是去创造产品,而是创造一个开发一流产品的环境。
这个世界上最酷的企业家,正成为商界最重要的“教育家”
“你我的回忆,比前方的道路还漫长”。
5月底,当史蒂夫·乔布斯和比尔·盖茨坐在一起,他引用了甲壳虫乐队的歌词总结过去。这的确令人感伤:到2007年6月5日,苹果公司距离其推出第一台苹果II电脑已有30年,而乔布斯也已经52岁。
即使最具想像力的奇幻小说,也很难像乔布斯和苹果电脑所经历的那样富有戏剧性:这个有阿拉伯血统的工薪家庭养子,早年大学辍学,成为一个信奉佛教的素食主义者,并在之后数度改变了高科技产业的命运。
1984年,他推出了世界上首部具有图形界面的商用个人电脑McIntosh(多数人已经遗忘,第一代Macintosh的名字曾被有意拼错),并意托科幻小说《1984》拍摄了广告,成为历史上最富黑客精神的广告作品;在游说百事可乐公司的约翰·斯库利加盟苹果时,他提给对方的问题,“你想卖一辈子糖水,还是想改变世界?”,成为了过去30年里最著名的招聘语。
30岁时被赶出自己创办的公司,42岁重新成为苹果的主人。乔布斯开始了一段更为奇妙的“第二人生”:他推出了果冻一样的电脑、冰块似的音乐播放器(你一定知道它叫什么),让这家几乎破产的公司教会全世界设计的价值,并改变了我们听音乐的方式;他偶然投资的数字图像技术公司皮克斯,最终成为迪斯尼以来最成功的动画制作公司;甚至,他在一次手术中战胜了癌症……
试着将乔布斯的个人传奇淡化,你会得到另外一个故事。苹果的历史,展示了一家公司如何获得创新基因,又如何破坏了它们。它展现了一种高级的创新技巧:一家公司怎样可以通过一系列创新产品从濒临死亡状态变为全世界的宠儿。
某种程度上,乔布斯和苹果所做、所经历的,也许是近代商业史上最有趣、也最具启发性的商业案例。网讯创始人朱敏在对本刊讲述大公司只有通过“内部革命”才能保持创新时,引用了乔布斯开发McIntosh时的案例:他把一个开发团队封闭在一个独立的办公楼中,将他们命名为“海盗”,以此塑造与公司其他“正规海军”对立的情绪,最终开发出一款与当时苹果的开发思路截然不同的产品。而红杉资本创始合伙人沈南鹏也从不讳言乔布斯是他最欣赏的商人,因为对方“总能领先其他人一两年看到一个新市场的崛起”。
以下,为《环球企业家》总结的三则“乔布斯课程”。
失败的价值
在最近的一次公开演讲上,乔布斯说苹果公司现在有“三条业务线”和一个“业余爱好”。前者包括电脑、以iPod和iTunes为核心的音乐业务以及手机。而今年3月面市的Apple TV则属后者。
那些观看过乔布斯演讲的人,普遍相信Apple TV是一款颇为创新的产品。据乔布斯演示,它可以通过无线网络连接个人电脑,播放其中的电影、电视剧和音乐。理论上,这不仅强化了电视和电脑的功能互补,也能够进一步促进数字媒体的发行。
但公允言之,现在的Apple TV并不可能取得iPod式的成功。当前版本的Apple TV不能直接从网络上购买电影,而且,虽然它只能应用于高清电视,但用户能够从网络上买到的电影和电视剧,都还不具备高清分辨率,这就弱化了其视效。甚至,它没有配置DVD光驱,这也极大束缚了它作为数字家庭入口的能力。
而在一些细节上,苹果的处理也差强人意。比如,Apple TV一个有趣的功能是“屏幕保护”:用户可以将自己的数码照片以幻灯片方式随意展现在电视上。但问题是:虽然Apple TV能够和多台电脑无线连接,调用它们的音乐库,但它只能从一台电脑上调取照片。此种设计缺陷,也充分证明了苹果公司尚不能清除判断每个功能对于用户的价值,以及相匹配的产品需求。
Apple TV将成为苹果近年来少见的一次失败产品?
远未到结论时刻。在多数人乐于相信苹果是一家懂得如何发明出完美产品的时候,人们其实忽视了,苹果始终保持着持续改进的风格。
比如至今总销量已经超过一亿部的iPod,就是一款成就于无数挫败之上的产品。2001年底,苹果推出的第一款iPod实则并不具备热销的条件:它只有5 个小时的续航时间,无法应用于Windows系统,甚至其最重要的功能随机播放音乐(shuffle),也被隐藏到几层菜单之下。因此,在iPod推出的第一年,它只卖出了10万台。
乔布斯没有因为这一糟糕成绩否决这款产品——关于他是如何判断产品价值的,后面我们会有更为详细的阐释——围绕iPod,苹果做出了很多改进努力:开发出一款足够好用的音乐管理软件iTunes、构建网上音乐商店、降低iPod能量消耗以提升其续航时间、与Windows系统实现兼容……苹果似乎始终能够很清晰地看到这款产品的问题,并非常有针对性的予以解决,这最终促成了iPod奇迹:2004年起,第四代版本的iPod和iPod mini的推出,让其年销量达到826万部,一举成为了21世纪的Walkman。
我们甚至可以做出一个较为极端的结论:苹果是一家在失败中强大起来的公司。它的每一款成功产品几乎都奠基于一款失败产品:苹果II之前有苹果I、McIntosh前有Lisa、Macintosh的操作系统OS X之前有NeXT……换个角度,也可以说苹果是最敢于自我革命的公司,它从来没有停留于任何一款单一成功的产品。
同样,个人层面,乔布斯也在教训里实现了“进化”。自1980年代初期即开始追踪苹果的分析师Tim Bajarin认为,正是在被迫离开苹果公司的岁月里,乔布斯从一个纯粹的理想主义者,变成了一个在战略上的现实主义者,并保持着自己在技术、设计和营销方面的完美主义。正因此,他在回到苹果后,首先向盖茨发出邀请,让微软投资于资金紧缺的苹果公司。而从2006年起,他又让苹果电脑使用英特尔公司的芯片,并开发出在苹果电脑上应用Windows上的软件——年轻时,乔布斯曾认为微软和英特尔的产品是“邪恶的”。
公司政治的失败也教会了他很多东西。这个曾经年轻气盛的硅谷金童,在1997年回归苹果后,一直小心翼翼的担任着“过渡CEO”的角色,直到2000年,苹果业绩稳定,关于他的评价进入良性循环,他才将“过渡”两字去掉。
领先市场12个月的思考
众所周知,乔布斯并非技术天才,即使在创业初期,他也没有像盖茨一样扮演编程高手。某种程度上,乔布斯甚至是反技术的,他曾经表示:“我愿意用自己享受的一切高科技,换取与苏格拉底共度一下午的机会。”
但多年的行业经验让他形成了一套行之有效的产品判断方法:他首先是个独立思考的人,其次是一个苛刻的遴选者。
曾任苹果销售总监的David Sobotta如此回忆2002年春天,他和乔布斯在一起开会时的经历:他所负责的美国国家健康学会的技术负责人,曾希望说服乔布斯去开发一款类似Tablet PC的平板电脑。因为之前并未知会乔布斯相关话题,David Sobotta称,这应该是乔布斯之前思考的一次偶然流露。
乔布斯拒绝了对方的要求,并讲述了自己的看法:首先,这不是一个大市场。尽管包括惠普、宏基在内的PC业巨头试图打开这一市场,甚至盖茨在当年大胆预言,平板电脑将在五年内成为美国最畅销的电脑,但乔布斯非常明确的看到:相对于每年销量两亿台的个人电脑市场,平板电脑以万台为计量单位年销量并不足取。
而在对方的进一步恳请下,乔布斯又从其他几个层面对这一市场进行了阐述。因为平板电脑主要是针对专业人士的,比如美术及医疗领域的用户,它就可能遇到几种技术瓶颈:其一,没有任何无线网络能够足够快的在平板电脑上传输专业图象。其二,平板电脑的显示达不到专业需求标准。
他总结说,苹果公司更乐于去定义一个新市场,而不是参与到众多公司为一款前景难料的产品制造生存空间的战争中去。而且,如果为美国国家健康学会这种机构开发产品,意味着重大的责任,但这种责任对于苹果来说是难以承担的。
随后,健康学会的人又建议他去开发黑莓一类的产品。对此,乔布斯的回答是:这是另一个细分市场。他明确看到了电脑和电话的融合将是一个潮流,但黑莓不是这个趋势的一部分。
由此,乔布斯非常认真的揭开了他对未来手机的预期:一款可以装在衣服口袋里,并比电脑、手机独立存在时都更好的产品。
这整段对话,详尽显示了乔布斯对新市场的思考方式:他首先会思考新产品所在的,是一个大众市场还是细分市场?这个市场可能会有多大?然后他会问:是否有一些技术阻碍了一个细分市场成为大众产品?以及,未来的技术发展对这个市场是促进还是毁灭?最后一个问题是:如果做出这样一款产品,它能否创造新的价值?
不妨用这个判断方法模拟一下iPod诞生前乔布斯的思考:针对第一个问题,索尼的Walkman早已证明音乐播放是个规模惊人的大众市场。接下来, Napster们的迅速兴起,说明数字音乐这种新技术的空间广阔,这也进一步意味着,数字音乐需要一种足够优秀的播放器作为载体。此外,也并不难想到,手机功能的提升,很可能给纯粹的音乐播放器带来巨大威胁,所以,苹果不能止步于iPod的成功。
正如我们前面所涉及的,苹果是一家善于自我更新的公司。而它对于既有产品的改善,一定程度上也来自于这种前瞻式思维。
2007年5月底,Apple TV做出了最近的一次重要升级:与YouTube展开合作。以短期效果计,这是一次无效合作。可想而知,在高清电视上观看YouTube上图像模糊的短片,是一件令人难以忍受的事情。但它的长期价值是显而易见的:随着互联网基础设施的改善,YouTube上所承载的信息变为高清版本并非遥不可及。到那时,Apple TV就拥有了一个极佳的内容源。
环境创造者
据美国一本专业刊物统计,2006年高科技企业的研发投入排行中,苹果仅以7.15亿美元列第15位,这约为排名榜首的微软的1/9,甚至少于赛门铁克、雅虎和CA公司。
是否有些不可思议?世界上最优秀的创新公司——过去几年中,无论在BusinessWeek还是Wired杂志的创新公司排行榜上,苹果都和Google盘踞在前两名的位置,只是偶尔变化排名——研发投入并不巨大。
如果对苹果足够熟悉,你会知道,这是一家极为擅长借助外部智慧的公司:McIntosh率先使用的鼠标、iPhone所使用的Mutli-Touch技术都来自于其他公司,甚至iPod的最初开发工作也是外包完成的。
自身研发投入相对有限、广为使用外部研发成果,为什么苹果依然被视为全世界的创新榜样?
唯一的答案是:苹果清楚什么是最需要自身开发的。在2004年的一次访谈中,乔布斯坦言:“我总想拥有或控制我们所做的所有事的核心技术。”
至少在过去10年里,这家以生产精美硬件产品的公司,其核心技术集中于软件领域。1997年,乔布斯将苹果的产品线从几十条变为四条,且明确表示,苹果只要在台式机和笔记本电脑、高端和低端四个领域推出相对应的一流机器就够生存。在缩短产品线同时,他大肆招募软件领域的人才——看到了电脑与家用电器的融合前景,让他深知,软件将成为未来所有产品的共同“灵魂”。正是这十年的积累,让苹果有能力为iPod、Apple TV和iPhone赋予灵魂。
在扮演战略观察者同时,乔布斯还将自己塑造为“一个质量标杆”,因为“很多人并不知道如何适应那种追求卓越的环境”。在接受美国TIME杂志采访时,乔布斯说:所有公司都能做出接近完美的模型,但很少有公司能做出品质优良的产品,因为在产品开发过程中,技术、设计等部门会以“做不来”为由,进行缩水处理。这时候就需要一个铁腕领导者将“no”变成“yes”。
因此,即使那些他参与不多的产品,也会因为他的最终审核而提升水准。比如,乔布斯要求外部供应商和苹果相关人士开会的时间都定成周五,这样他就能周末把新产品带回家里,然后在周一给出系列新要求:比如用户选一首歌不能超过3次按键,菜单转换速度的提升,甚至其他人所不能理解的不能设置开关键……
在与乔布斯的合作中,很多人并不能立刻理解、认同他的要求,但很多人承认,乔布斯的压力让他们做了一些超越自己能力的成果。这就是我们这个时代最伟大的创新主义者的独特才能:不是去创造产品,而是创造一个开发一流产品的环境。
Monday, July 2, 2007
网管创新#loglogic
新兴企业挑战复杂网管套件统治地位的强烈欲望,已经掀起了新的一轮投资热潮,不少风险投资机构对这一领域表现出了浓厚的兴趣。
目前,投资者最感兴趣的是那些制造网络监视和故障查询产品的企业。主要原因是,很多用户现在既想实现精细化的网络管理,但又不愿意支付像CA Unicenter、IBM Tivoli和HP OpenView等顶级网管产品的高昂费用和专业管理人员成本。
Cittio、Splunk和GroundWork Open Source Solutions这三家新兴企业在过去的13个月中,总共拿到了3500万美元的风险投资。而另外一家名为LogLogic的公司也将很快宣布其第三轮融资的结果,该公司已经在2004年9月得到了高达1300万美元的投资。这些公司吸引投资凭借的是其新一代网络管理工具的创新性和敏捷性,这些工具最终将成为大公司管理工具的有益补充。
重要性继续凸显
美国Bain Capital 公司风险投资管理总监Benjamin Nye指出,从广义上讲,网络管理的市场份额高达35亿美元。随着网络的物理分布变得越来越广,设备的数量越来越多,网络管理的重要性已经超过了以往任何时候。
Nye说:“今天,企业普遍处在异构化、分布式的生存状态中。无论您的企业规模是大还是小,只要您运行着关键任务网络,您就必须对网络中不同的设备进行管理。企业对网络的依赖程度已经变得越来越高。”
2005年2月,Bain公司向Network Intelligence公司投资了1200万美元,后者主要销售应用于安全和遵从性领域的网络事件监控和报告软件。
另外的一些投资商认为,要想管理网络中日渐增长的复杂性,管理工具应当变得更加简单易用。曾经在CA公司担任过营销副总裁的Marc Sokol,目前是风险投资企业JK&B Capital公司的合伙人。尽管他拥有深厚的技术背景,但他并没有急于向新兴的网络监视企业投资,而是等待并观察了达六年之久。
他说:“这是因为当时那些大厂商的产品仍然统治着整个市场。但今天这个庞大的市场已经发生了翻天覆地的变化,出于种种原因,许多客户都不再考虑这些大厂商的产品,有些用户可能认为大厂商的产品授权费用过高,或者是实施成本太高,而有些用户只是觉得自己并不真的需要那么多的特性。”
今年3月底,JK&B向Cittio公司注入了800万美元的资金,后者是一家网络监视和网络运营软件供应商,其产品名为WatchTower。今年1月,JK&B还向Splunk投入了1000万美元的资金。Splunk创建的是一种搜索引擎,可以对日志进行分析,帮助用户查找系统中的故障。
Sokol说,Cittio突破了传统的网络管理模式,提供了一种关键的网络监视功能。而这种产品的价格相对便宜,并且可以更方便地与第三方产品进行集成。Sokol认为,现在应当把各种网络管理组件分离开来。因为随着SOA和“异步JavaScript + XML”用户接口的出现,用户即使不购买那些多合一的产品也能自行集成各种管理功能。
方法的改进
虽然Cittio和其他公司都可以提供优化的网络监视手段,但一些企业仍然有些迟疑,害怕将赌注押在这些新产品上,尤其是涉及到保证网络正常运行的关键任务。
RedMonk公司的分析师James Governor认为:“这一直就是新兴厂商面临的巨大挑战。”为了跨越这个障碍,他们需要与那些具备一定客户资源的较大厂商结为伙伴,让大厂商帮助它们介绍客户,并在某种程度上为自己提供担保。要么就像Cittio那样,把精力集中在一个细分市场。
Governor说:“Cittio曾经明确表示,不会像大厂商那样提供所有功能,他们正在努力在某一方面做得更加出色。”
当然,也有一些企业用户愿意尝试新的产品,以便用更合理的价格获取自己真正需要的特性。美国国家公园保护协会就选择了Cittio的 WatchTower。这家非赢利组织的IT主管Caterina Luppi说,有了这种工具,自己的IT部门能够迅速找到网络中的故障点。
Luppi说:“我们过去什么工具都没用过,因此产生了很多问题。用户成了我们的报警系统,只有当用户提出投诉后,我们才会发现有什么东西不对劲。”
该协会拥有大约85名网络用户,使用的IT产品来自不同的厂商。Luppi选择Cittio WatchTower的原因是该工具让网络管理员实现了对网络管理对象的单点监视。
她说,Cittio工具的价格相对便宜,这对于非赢利机构是非常重要的。据悉,WatchTower的价格为每节点200~400美元,根据管理节点数量的不同,价格也会有所变化。
此外,其他一些新兴厂商的网络监视和网络故障查找工具也开始在市场上获得突破。Splunk的网络管理方案旨在帮助IT人员实现真正的“大海捞针”,该公司声称自2005年8月正式发布其搜索引擎以来,下载人数已经达到了35000次。这家公司的Splunk Professional搜索软件可以对IT系统、设备和应用生成的所有日志和其他数据进行过滤,使管理人员能够更快地找到并修正问题。这种软件的年授权价格为2500美元。
LogLogic最近也推出了自己的“日志管理智能平台”。这种平台可以从企业中所有的硬件和软件上捕捉网络故障。该公司称,这种产品以设备的形式提供给用户,允许用户对数据进行分析和存储,并生成相应的报告,满足遵从性和风险管理等多种用途。LogLogic 法规遵从套件的起始价格为1万美元。
“掘金”日志数据
虽然RedMonk公司的Governor并不认为日志管理是网络管理的一部分,但他相信,LogLogic和Splunk等公司的产品将使日志数据变得更有价值,能够为网络的管理者提供更大的帮助。
Governor说:“网络管理通常是一种实时过程,而日志管理是在事实发生之后的管理行为。它更多地是了解已经发生的情况,并对其加以分析。这些新兴厂商为日志管理赋予了更多的实时功能,提高了日志管理的价值。因此,日志管理已经在很大程度上从安全管理的子集转变为一项应用管理功能。”
另外,GroundWork Open Source Solutions也对自己的产品进行了新定位,其价格远远低于商业软件产品。该公司表示,GroundWork Monitor Professional是一种基于开放源代码的组件,其中包括Nagios、RRDTool 和MySQL。它可以为客户提供一个集中管理界面,使客户能够更高效地监视应用、数据库、服务器和网络设备等。
GroundWork Monitor Professional的年授权价格约为1.6万美元,而且据该公司称,已经有“上百家企业”安装了这种软件。
目前,投资者最感兴趣的是那些制造网络监视和故障查询产品的企业。主要原因是,很多用户现在既想实现精细化的网络管理,但又不愿意支付像CA Unicenter、IBM Tivoli和HP OpenView等顶级网管产品的高昂费用和专业管理人员成本。
Cittio、Splunk和GroundWork Open Source Solutions这三家新兴企业在过去的13个月中,总共拿到了3500万美元的风险投资。而另外一家名为LogLogic的公司也将很快宣布其第三轮融资的结果,该公司已经在2004年9月得到了高达1300万美元的投资。这些公司吸引投资凭借的是其新一代网络管理工具的创新性和敏捷性,这些工具最终将成为大公司管理工具的有益补充。
重要性继续凸显
美国Bain Capital 公司风险投资管理总监Benjamin Nye指出,从广义上讲,网络管理的市场份额高达35亿美元。随着网络的物理分布变得越来越广,设备的数量越来越多,网络管理的重要性已经超过了以往任何时候。
Nye说:“今天,企业普遍处在异构化、分布式的生存状态中。无论您的企业规模是大还是小,只要您运行着关键任务网络,您就必须对网络中不同的设备进行管理。企业对网络的依赖程度已经变得越来越高。”
2005年2月,Bain公司向Network Intelligence公司投资了1200万美元,后者主要销售应用于安全和遵从性领域的网络事件监控和报告软件。
另外的一些投资商认为,要想管理网络中日渐增长的复杂性,管理工具应当变得更加简单易用。曾经在CA公司担任过营销副总裁的Marc Sokol,目前是风险投资企业JK&B Capital公司的合伙人。尽管他拥有深厚的技术背景,但他并没有急于向新兴的网络监视企业投资,而是等待并观察了达六年之久。
他说:“这是因为当时那些大厂商的产品仍然统治着整个市场。但今天这个庞大的市场已经发生了翻天覆地的变化,出于种种原因,许多客户都不再考虑这些大厂商的产品,有些用户可能认为大厂商的产品授权费用过高,或者是实施成本太高,而有些用户只是觉得自己并不真的需要那么多的特性。”
今年3月底,JK&B向Cittio公司注入了800万美元的资金,后者是一家网络监视和网络运营软件供应商,其产品名为WatchTower。今年1月,JK&B还向Splunk投入了1000万美元的资金。Splunk创建的是一种搜索引擎,可以对日志进行分析,帮助用户查找系统中的故障。
Sokol说,Cittio突破了传统的网络管理模式,提供了一种关键的网络监视功能。而这种产品的价格相对便宜,并且可以更方便地与第三方产品进行集成。Sokol认为,现在应当把各种网络管理组件分离开来。因为随着SOA和“异步JavaScript + XML”用户接口的出现,用户即使不购买那些多合一的产品也能自行集成各种管理功能。
方法的改进
虽然Cittio和其他公司都可以提供优化的网络监视手段,但一些企业仍然有些迟疑,害怕将赌注押在这些新产品上,尤其是涉及到保证网络正常运行的关键任务。
RedMonk公司的分析师James Governor认为:“这一直就是新兴厂商面临的巨大挑战。”为了跨越这个障碍,他们需要与那些具备一定客户资源的较大厂商结为伙伴,让大厂商帮助它们介绍客户,并在某种程度上为自己提供担保。要么就像Cittio那样,把精力集中在一个细分市场。
Governor说:“Cittio曾经明确表示,不会像大厂商那样提供所有功能,他们正在努力在某一方面做得更加出色。”
当然,也有一些企业用户愿意尝试新的产品,以便用更合理的价格获取自己真正需要的特性。美国国家公园保护协会就选择了Cittio的 WatchTower。这家非赢利组织的IT主管Caterina Luppi说,有了这种工具,自己的IT部门能够迅速找到网络中的故障点。
Luppi说:“我们过去什么工具都没用过,因此产生了很多问题。用户成了我们的报警系统,只有当用户提出投诉后,我们才会发现有什么东西不对劲。”
该协会拥有大约85名网络用户,使用的IT产品来自不同的厂商。Luppi选择Cittio WatchTower的原因是该工具让网络管理员实现了对网络管理对象的单点监视。
她说,Cittio工具的价格相对便宜,这对于非赢利机构是非常重要的。据悉,WatchTower的价格为每节点200~400美元,根据管理节点数量的不同,价格也会有所变化。
此外,其他一些新兴厂商的网络监视和网络故障查找工具也开始在市场上获得突破。Splunk的网络管理方案旨在帮助IT人员实现真正的“大海捞针”,该公司声称自2005年8月正式发布其搜索引擎以来,下载人数已经达到了35000次。这家公司的Splunk Professional搜索软件可以对IT系统、设备和应用生成的所有日志和其他数据进行过滤,使管理人员能够更快地找到并修正问题。这种软件的年授权价格为2500美元。
LogLogic最近也推出了自己的“日志管理智能平台”。这种平台可以从企业中所有的硬件和软件上捕捉网络故障。该公司称,这种产品以设备的形式提供给用户,允许用户对数据进行分析和存储,并生成相应的报告,满足遵从性和风险管理等多种用途。LogLogic 法规遵从套件的起始价格为1万美元。
“掘金”日志数据
虽然RedMonk公司的Governor并不认为日志管理是网络管理的一部分,但他相信,LogLogic和Splunk等公司的产品将使日志数据变得更有价值,能够为网络的管理者提供更大的帮助。
Governor说:“网络管理通常是一种实时过程,而日志管理是在事实发生之后的管理行为。它更多地是了解已经发生的情况,并对其加以分析。这些新兴厂商为日志管理赋予了更多的实时功能,提高了日志管理的价值。因此,日志管理已经在很大程度上从安全管理的子集转变为一项应用管理功能。”
另外,GroundWork Open Source Solutions也对自己的产品进行了新定位,其价格远远低于商业软件产品。该公司表示,GroundWork Monitor Professional是一种基于开放源代码的组件,其中包括Nagios、RRDTool 和MySQL。它可以为客户提供一个集中管理界面,使客户能够更高效地监视应用、数据库、服务器和网络设备等。
GroundWork Monitor Professional的年授权价格约为1.6万美元,而且据该公司称,已经有“上百家企业”安装了这种软件。
Subscribe to:
Comments (Atom)




一台internet上的LX2000