转-oracle在WINDOWS和UNIX(LI...

Linux在我看来和UNIX几乎是一样的东西,ORACLE应该也是这样的,否则就应该有专门的文章或者章节介绍了.
因为差不多,所以可以认为这也是ORACLE在WINDOWS下和linux下的区别.
从后文可以看到,这里涉及到大量的操作系统术语,例如进程,线程,裸设备等等,所以需要能够安装一个很好的ORACLE,是需要比较好的操作系统知识的。
闲话少说,步入正题.
本章节列出WINDOWS下的ORACLE和Unix(linux)下ORACLE的主要不同地方.对于O需要从UNIX平台迁移到WINDOWS平台的RACLE数据库开发人员和管理人员而言,这些信息有助于理解WINDOWS中和ORACLE数据库相关的特性。
本章节包含了这些要点:
■ 自动启动和关闭
■ 后台进程和批处理任务
■ 诊断以及调优工具
■ 直接写入磁盘
■ 动态链接库(DLLS)
■ 热备份
■ 初始化参数:多个数据库写入程序(MULTIPLE DATABASE WRITERS)
■ 安装账户和组
■ 安装
■ 内存资源
■ MTS (microsoft Transaction Server)
■ 多个oracle home以及OFA
■ 进程和线程
■ RAW分区
■ 服务
1)自动启动和关闭
在UNIX平台,要自动启动一个实例,需要分布在不同的目录的多个文件和脚本。其它的脚本在计算机关闭的时候运行,这样就能允许诸如ORACLE数据库之类的应用程序顺利关闭。
在WINDOWS中,如果要自动启动,只要把注册表参数ORA_SID_AUTOSTART设置为TRUE即可,这个方面有ORACLE数据库的工具,例如ORADIM.在CMD的模式下输入以下命令:
C:\>ORADIM OPTIONS
如果要把监听程序设置自动的,只要把相关服务的启动类型设置为AUTOMATIC(自动)即可。
为了在WINDOWS下自动关闭,设置注册表参数ORA_SHUTDOWN和ORA_SID_SHUTDOWN的值来使得为相关的ORACLESERVICESID服务停止并关闭。通过设置注册表键ORA_SID_SHUTDOWNTYPE的值来控制关闭的模式(默认的是i或者immediate).
2)后台进程和批处理任务
UNIX提供了复杂和精密的控制机制来管理后台服务以及批处理任务。
WINDOWS使用AT命令或者MICROSOFT RESOURCE KIT中提供GUI版本AT。
3)诊断和调优工具
在Unix下,象sar和vmstat这样的工具是可以用来监视ORACLE后台环境以及后台进程(SHADOW PROCESSES).但是这些工具并不是集成在ORACLE数据库中的。
而WINDOWS下的性能工具包括了ORACLE COUNTERS(ORACLE性能计数器),任务管理器,控制面板,事件查看器,用户管理器,以及MMC(MICROSOFT MANAGEMENT CONSOLE-微软管理控制台)(只有2000以后才有)。(注,从原文看,这个文档部分内容还不是很新,或者是更新不到位)。
以上这些工具,我们都非常熟悉,相信没有几个人没有用过windows的,故不再详细介绍。
4)直接写入磁盘
无论在WINDOWS还是UNIX下,都可以通过跳过文件系统的缓存,从而把数据直接写入到磁盘。
在UNIX下,ORACLE使用O_SYNC标志来跳过缓存,这个标志的名称和UNIX端口有关。
在WINDOWS下,ORACLE完全越过文件系统缓存。(有疑问,WINDOWS下总是采取直接写入方式吗?)
5)动态链接库
UNIX上的动态链接库类似于WINDOWS下的DLL.目标文件和文档库被链接起来以便产生ORACLE可执行程序。在执行了诸如打补丁的操作后,重新链接是有必要的。
在WINDOWS下,ORACLE DLLS作为可执行和运行的一个部分,并相对的较小。不支持用户的重新链接,但是可执行的映像是可以通过ORASTACK来修改的.(意思是可以用ORASTACK来修改几个主要的ORACLE执行程序的堆栈)。
在WINDOWS下,当使用一个大的SGA或者支持成千上万的连接的情况时, 通过修改可执行的映像文件,可以减少出现用完虚拟内存的情况。无论如何,ORACLE建议我们应该在OSS(ORACLE SUPPORT SERVICES:oracle支持服务)指导下执行这个操作。
6)热备份
一个热备份(手动)相当于备份一个处理离线备份模式的表空间。
UNIX下的备份策略如下:设置表空间为离线模式,把文件拷贝到备份区域,取消表空间的备份模式。
WINDOWS支持同样的备份策略,但是我们不能使用普通的WINDOWS工具来拷贝文件(真的吗?),而应该是使用OCOPY把打开的库文件复制到另外一个区域。然后使用一个工具把文件拷贝到磁带上。
7)初始化参数:多个库写入程序
在UNIX下,我们可以通过初始化参数DB_WRITERS来设置多个数据库写入进程。多个写入过程能起到作用,例如如果一个UNIX端口并不支持异步的I/O。
DB_WRITERS在WINDOWS下是可以受到支持的,但通常并不是必须的,因为WINDOWS有自己的异步I/O机制。
8)安装账户和用户组
在unix下,需要使用到DBA用户组的概念。ROOT账户是不能用来安装ORACLE数据库的。一个独立的ORALCE 数据库账户是必须手工创建的。
在WINDOWS下,必须用ADMINISTRATORS中的用户来安装数据库。这个用户名称会被自动地加入WINDOWS本地组:ORA_DBA(具有SYSDBA权限)。这个用户被允许以CONNECT /AS SYSDBA的方式登录数据库(不要输入密码)。
密码文件存储在ORACLE_bASE\ORACLE_HOME\DATABASE目录下,并且一pwdSID.ora的方式命名。
9) 安装
下面的手工安装任务全部是UNIX下的,WINDOWS不需要:
■ 设置环境变量
■ 为数据库管理员创建一个DBA组。
■ 为运行ORACLE UNIVERSAL INSTALLER的用户创建一个组
■ 创建一个用户安装以及升级ORACLE数据库的用户
10)内存资源
UNIX默认内核提供的资源通常是无法满足大的ORACLE实例的。共享内存段的最大值以及最大量信号可能是太低的(相对ORACLE所推荐的)。
在WINDOWS下,IPC(内部过程传输)只需要更小的资源,因为ORACLE RDBS是基于线程的,而不是进程的。这些资源,包括了共享内存和信号,而且用户是不能调整的。
(关于semaphore就将就翻译为信号,或者信号机制,大概是同步或者异步机制所需要的)。
11)MTS
UNIX不支持MTS.
oracle8以后,WINDOWS也就支持MTS了。使用支持MTS的oracle服务,我们基于COM/COM+的基础上开发并发布引用程序。MTS服务器能够协调为ORACLE数据库编写的程序的事务。
12)多个ORACLE home和OFA
所谓OFA即 optimal flexible architecture 的英文简写,中文的意思是最佳灵活结构。
OFA的目的在于把所有的ORACLE软件放在一个ORACLE_HOME(虚拟)目录下,并在这个目录内扩展数据库文件,而这些文件是可以在不同的磁盘上。OFA在UNIX和WINDOWS上的实现是一样的,主子目录和文件名称在两个操作系统上是一样的。WINDOWS和UNIX在OFA方面主要的不同在于:OFA目录树顶层命名和变量定义。
在UNIX上,ORACLE_BASE是和一个用户环境关联的。ORACLE_HOME和ORACLE_SID必须在系统级别设置或者是在用户的登录脚本中设置。UNIX支持符号链接(symboliclinks)。虽然看起来,所有的东西都在一个硬盘驱动器的一个目录下,但是文件确是可以在不同的驱动器中(这些文件可以是符号链接的或者使用特定目录(看起来所在)作为装载点。
在WINDOWS下,ORACLE_BASE是定义在注册表中的(例如,在键HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0)。ORACLE_HOME和ORACLE_SID是也是定义在注册表中定义的。象UNIX那样的符号链接是不支持的,虽然微软已经声明有意向在将来支持这个特性。
13)进程和线程
在UNIX下,ORACLE数据库使用一个进程来一个后台任务(如dbw0,lgwr共享服务器进分配器,共享服务器)。每个数据库的专项(特定)连接都会导致另外一个操作系统的进程产生,这个操作系统的进程代表了一个ORACLE数据库的会话(SESSION)。
在WINDOWS,每个后台进程都是作为一个单独而大的进程内的线程来执行的。对于每个ORACLE数据库实例或者系统标识,都有对应的进程。例如,UNIX下一个实例中的100个数据库进程在WINDOWS下是一个进程内的一百个线程。
所有的ORACLE数据库的后台,专项服务器,客户端进程都是ORACLE数据库WINDOWS进程的线程,所有的线程共享资源。多线程的结果是高效的,允许用更小的负载进行快速的上下文切换(线程环境切换).
为了查看进程或者终端独立的线程,使用oracle administration assistant for windows 。选择开始->程序->oracle-home_Name->configuration and Migration tools>administration assistant for windows.右键点击SID,并选择PROCESS INFORMATION.
14)裸分区
表空间的数据文件可以存放在文件系统也可以是在raw partitions(裸分区)。
所谓裸分区就是具有最低存取级别的磁盘分区。
UNIX支持裸分区(逻辑驱动器)。对于磁盘的个数没有限制。(不是很明白,有个可以参考的地方http://www.hackhome.com/InfoView/Article_165627_2.html)。
WINDOWS使用A-Z来标识逻辑启动器,但是使用了裸分区,我们可以跳过驱动的限制,并可以把磁盘分割为更小的部分。
使用windows磁盘管理器来创建一个扩展分区。一个扩展分区对应的裸空间可以被分配为许多的存储数据文件的逻辑分区。
通过允许我们定义大量的逻辑分区,我们可以在一个扩展分区避免了4个分区的限制,这些定义的逻辑分区可以提供给ORACLE数据库使用。逻辑分区可通过分配SYMBOLIC LINK(符号链接)来释放占用的驱动符。
在WINDOWS VISTA,通过选择"new simple volume"可以创建主分区和扩展分区上的驱动盘。如果要创建一个裸设备,那么选择"DO NOT ASSIGN A DRIVE LETTER OR DRIVE PATH".如果要装载一个裸设备,需要分配并移除一个磁盘驱动符号。不要使用跨区卷和条带卷(有关内容请参看http://waringid.blog.51cto.com/65148/53307),这两个选项会把一个卷转化为动态磁盘.ASM(automatic storage management)不支持动态磁盘。
----------------------------------------
注意:oracle RAC环境中,共享的数据文件需要使用裸分区,这在windows下也可以实现。
ORACLE RAC 在WINDOWS XP上不能运行。
----------------------------------------
15)服务
WINDOWS的服务类似于UNIX的守护程序。
ORACLE数据库以OracleServiceSID的方式把一个实例注册一个为服务。一旦服务创建了,即使没有用户登录也会运行。
在默认情况下,服务使用系统账户运行,可以通过控制面板修改运行的账号。
DAEMON就不说了。
Tags: 

延伸阅读

最新评论

发表评论