摘要
ORACLE是广为人知的Unix硬件平台上的领先的数据库系统ORACLE用户和管理员因此熟悉Unix平台上的ORACLE架构以及它上面的工具和技巧并从他们的数据库得到最大的收益相反Windows上的ORACLE架构就不那么的被广为了解这篇文章从一个DBA的角度考察了两个操作系统之间的关键的异同点
简介
在看了几本令人失望的这方面的书之后我们写了这篇文章那些书的通病是试图做太多的事情--在细节上讲述Windows和ORACLE我们的这篇文章假定读者熟悉Unix平台上的ORACLE DBA的工作因此本文将分析两个平台上的ORACLE的关键的差异而不是从头教你ORACLE的技巧我们不想把它作为你的一份详尽的指导或者是手册的替代品事实上它可能鼓励你阅读一些手册作为数据库服务器平台它只会涉及一些Unix和Windows上相关的优点这就是本文的目的
范例
这个例子使用linux上的ORACLE i实例名字叫作eightiWindows 上面的ORACLE i的实例名字叫作atei
客户端对ORACLE的访问
当客户端连接到ORACLE时通常的来说ORACLE服务器的平台与客户端的应用无关这实际上很难说清 ORACLE DBA 和系统管理人员更关心操作系统平台他们有的时候会基于需求(如运行时间和可扩展性)选择平台 更通常的情况下他们接受(或是接手)给定的平台并学习从中得到最大受益
关于WINDOWS
值得一提的是Windows 是从Windows NT升级而来在这两个操作系统之间有很多的相似点Windows 也有些新的特性微软从NT的升级途径见下表
两个系统间有很多相似点
NT Windows
NT Workstation Windows Professional
NT Server Windows Server
NT Enterprise Edition Windows Advanced server
Unix Windows Datacenter server
ORACLE后台进程
下面这句话对于用过ORACLE的人来说是会很熟悉的每一个运行着的ORACLE数据库都对应一个ORACLE实例当一个数据库在数据库服务器(不考虑机器的类型)上启动的时候ORACLE分配一块叫做System Global Area (SGA)的内存区域并启动一个或者多个ORACLE进程SGA和ORACLE进程合起来称作ORACLE 实例――摘自 ORACLE i Concepts [ L Leverenz ]处理后台进程是放在首位的也是不同的操作系统之间最明显的差异
ORACLE在UNIX上的后台进程
任何连接到UNIX的用户都可以很容易的察看ORACLE的后台进程
% ps ef|grep eighti|grep v grep
oracle :: ? : ora_pmon_eighti
oracle :: ? : ora_dbw_eighti
oracle :: ? : ora_ckpt_eighti
oracle :: ? : ora_reco_eighti
oracle :: ? : ora_lgwr_eighti
oracle :: ? : ora_smon_eighti
oracle :: ? : oracleeighti
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
最后一行的ORACLE进程与一个SQL*Plus会话相关其他的进程都是后台进程在ORACLE中我们可以通过输入SQL*Plus会话察看这些进程
SELECT sid spid osuser sprogram
FROM v$process p v$session s WHERE paddr=spaddr
SID SPID OSUSER PROGRAM
oracle oracle@saic (PMON)
oracle oracle@saic (DBW)
oracle oracle@saic (LGWR)
oracle oracle@saic (CKPT)
oracle oracle@saic (SMON)
oracle oracle@saic (RECO)
oracle sqlplus@saic(TNS VV)
rows selected
每一个后台进程都有一行还有一行信息是与SQL*Plus会话相关的SPID对应相应的UNIX进程号
在WINDOWS上的ORACLE后台进程
回到WINDOWS上从操作系统中察看后台进程有些困难从任务管理器中可能会看到运行着的应用(任务管理器的察看方法在任务栏点击右键选择任务管理器)在服务器上ORACLE可以是可用的运行着的应用却是不可见的进程表的确显示一个进程叫做ORACLEEXE察看alert log 显示ORACLE的所有后台进程都是启动的
PMON started with pid=
DBW started with pid=
LGWR started with pid=
CKPT started with pid=
SMON started with pid=
RECO started with pid=
要看实际的后台进程需要运行额外的软件例如进程察看器该软件可以从Windows
CD 中得到(Windows NT 的话可以从资源包中得到)
在Windows 上ORACLE实例是作为一个单一的Windows 进程(ORACLEEXE)实现的这个进程包括实例所需要实现的每个任务的线程
因此一个线程对应每个ORACLE 后台进程ORACLEEXE进程作为一个服务运行可以从控制面板的服务中察看到 ORACLEServiceSID其他的服务也可以这样控制
这允许ORACLE在没有用户登录服务器的时候也持续的运行对于共享主处理器资源的所有的进程来说ORACLE能够达到高速低负荷的上下文切换
在Unix下显示ORACLE中的进程我们也可以通过输入简单的SQL语句来达到为了显示PID列SQL语句做了些轻微的改动要注意PID匹配警告日志中报告的值
(未完待续)