当前位置:数据库 > Oracle >>

UNIX 和 WINDOWS2000 上的 ORACLE 的差异

答案:
 

 

Ian Adam,          SAIC Ltd

David Stien,       SAIC Ltd

翻译:Fenng       

 

摘要

ORACLE是广为人知的Unix硬件平台上的领先的数据库系统。ORACLE用户和管理员因此熟悉Unix平台上的ORACLE架构以及它上面的工具和技巧,并从他们的数据库得到最大的收益。相反,Windows上的ORACLE架构就不那么的被广为了解。这篇文章从一个DBA的角度考察了两个操作系统之间的关键的异同点。

 

简介

在看了几本令人失望的这方面的书之后,我们写了这篇文章。那些书的通病是试图做太多的事情--在细节上讲述Windows和ORACLE。我们的这篇文章假定读者熟悉Unix平台上的ORACLE DBA的工作。因此本文将分析两个平台上的ORACLE的关键的差异而不是从头教你ORACLE的技巧。我们不想把它作为你的一份详尽的指导或者是手册的替代品,事实上它可能鼓励你阅读一些手册。作为数据库服务器平台,它只会涉及一些Unix和Windows上相关的优点,这就是本文的目的。

 

范例

这个例子使用linux上的ORACLE 8i,实例名字叫作eighti。Windows 2000上面的ORACLE 8i的实例名字叫作atei。

 

客户端对ORACLE的访问

当客户端连接到ORACLE时,通常的来说ORACLE服务器的平台与客户端的应用无关。这实际上很难说清。 ORACLE DBA 和系统管理人员更关心操作系统平台,他们有的时候会基于需求(如运行时间和可扩展性)选择平台。 更通常的情况下,他们接受(或是接手)给定的平台并学习从中得到最大受益。

 

关于WINDOWS 2000

值得一提的是Windows 2000是从Windows NT升级而来。在这两个操作系统之间有很多的相似点,Windows 2000 也有些新的特性。微软从NT4.0的升级途径见下表。

 

两个系统间有很多相似点:

-------------------------------------------------------------------------------------

NT 4.0                                                     Windows 2000

-------------------------------------------------------------------------------------

NT 4.0 Workstation                                  Windows 2000 Professional

NT 4.0 Server                                         Windows 2000 Server

NT 4.0 Enterprise Edition                        Windows 2000 Advanced server

Unix                                                         Windows 2000 Datacenter server

-------------------------------------------------------------------------------------

 

 

ORACLE后台进程

下面这句话对于用过ORACLE的人来说是会很熟悉的:"每一个运行着的ORACLE数据库都对应一个ORACLE实例,当一个数据库在数据库服务器(不考虑机器的类型)上启动的时候,ORACLE分配一块叫做System Global Area (SGA)的内存区域并启动一个或者多个ORACLE进程。SGA和ORACLE进程合起来称作ORACLE 实例。"――摘自 ORACLE 8i Concepts [4 L Leverenz, 1999]。处理后台进程是放在首位的,也是不同的操作系统之间最明显的差异。

 

ORACLE在UNIX上的后台进程

任何连接到UNIX的用户都可以很容易的察看ORACLE的后台进程:

 

% ps -ef|grep eighti|grep -v grep

 

oracle8 18451     1  0 16:37:18 ?        0:00 ora_pmon_eighti

oracle8 18453     1  0 16:37:19 ?        0:00 ora_dbw0_eighti

oracle8 18457     1  0 16:37:19 ?        0:04 ora_ckpt_eighti

oracle8 18461     1  0 16:37:19 ?        0:00 ora_reco_eighti

oracle8 18455     1  0 16:37:19 ?        0:02 ora_lgwr_eighti

oracle8 18459     1  0 16:37:19 ?        0:01 ora_smon_eighti

oracle8 19168 19167  0 16:43:46 ?        0:00 oracleeighti

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

 

最后一行的ORACLE进程与一个SQL*Plus会话相关,其他的进程都是后台进程。在ORACLE中我们可以通过输入SQL*Plus会话察看这些进程:

 

SELECT sid, spid, osuser, s.program

FROM v$process p, v$session s WHERE p.addr=s.paddr;

 

         SID SPID    OSUSER             PROGRAM

    -------------------------------------------------------------------

         1 18451     oracle8              oracle@saic02 (PMON)

         2 18453     oracle8              oracle@saic02 (DBW0)

         3 18455     oracle8              oracle@saic02 (LGWR)

         4 18457     oracle8              oracle@saic02 (CKPT)

         5 18459     oracle8              oracle@saic02 (SMON)

         6 18461     oracle8              oracle@saic02 (RECO)

         7 19168     oracle8              sqlplus@saic02(TNS V1-V3)

7 rows selected.

 

每一个后台进程都有一行,还有一行信息是与SQL*Plus会话相关的,SPID对应相应的UNIX进程号。

 

 

在WINDOWS2000上的ORACLE后台进程

回到WINDOWS上,从操作系统中察看后台进程有些困难。从任务管理器中可能会看到运行着的应用(任务管理器的察看方法:在任务栏点击右键选择"任务管理器")。在服务器上ORAC

LE可以是可用的,运行着的应用却是不可见的。进程表的确显示一个进程叫做ORACLE.EXE,

察看alert log 显示ORACLE的所有后台进程都是启动的:

 

PMON started with pid=2

DBW0 started with pid=3

LGWR started with pid=4

CKPT started with pid=5

SMON started with pid=6

RECO started with pid=7

 

要看实际的后台进程,需要运行额外的软件,例如,进程察看器。该软件可以从Windows

2000 CD 中得到(Windows NT 的话可以从资源包中得到)。

 

在Windows 2000上,ORACLE实例是作为一个单一的Windows 2000进程(ORACLE.EXE)实现的。这个进程包括实例所需要实现的每个任务的线程。

因此一个线程对应每个

上一个:UNIX和WINDOWS2000上的ORACLE的差异 PartIII
下一个:ORA-03113错误分析

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,