2009年5月6日星期三

在windows server 2003上配置DHCP服务器

一、DHCP常用术语
作用域:作用域是一个网络中的所有可分配的IP地址的连续范围。作用域主要用来定义网络中单一的物理子网的IP地址范围。作用域是服务器用来管理分配给网络客户的IP地址的主要手段。
超级作用域:超级作用域是一组作用域的集合,它用来实现同一物理子网中包含多个逻辑IP子网。超级作用域只包含一个成员作用域或子作用域的列表。超级作用域并不用于设置具体的范围。子作用域的各种属性需要单独设置。
排除范围:排除范围是不用于分配的IP地址序列。它保证在这个序列中的IP地址不会被DHCP服务器分配给客户机。
地址池:在用户定义了DHCP范围及排除范围后,剩余的地址组成了一个地址池,地址池中的地址可以动态地分配给网络中的客户机使用。
租约期:租约期是DHCP服务器指定的时间长度,在这个时间范围内客户机可以使用所获得的IP地址。当客户机获得IP地址时,租约被激活。在租约到期前客户机需要更新IP地址的租约,当租约过期或从服务器上删除则租约停止。
保留地址:用户可以利用保留地址创建一个永久的地址租约。保留地址保证子网中的指定硬件设备始终使用同一个IP地址。
选项类型:选项类型是DHCP服务器给DHCP工作站分配服务租约时分配的其他客户配置参数(不仅仅是分配IP地址)。经常使用的选项包括默认网关的IP地址,WINS服务器及DNS服务器的IP地址。DHCP管理器允许设置应用于服务器上所有范围的默认选项。大多数选项都是通过RFC2132预先设定好的。但用户可以根据需要利用DHCP管理器定义及添加自定义选项类型。
选项类:选项类是服务器进一步分级管理提供给客户的选项类型的一种手段。当服务器上添加一个选项类,该选项类的客户可以在配置时使用特殊的选项类型。在WINDOWS2000以上的版本中,客户机在与服务器对话时也能够声明类ID,而对于早期的DHCP客户机不支持类ID。选项类包括两种类型:服务商类和客户类。

二、DHCP工作原理
如果客户机被设置成从DHCP服务器获得IP地址,客户机利用机器上的DHCP客户服务来配置它的IP地址和其他配置信息。DHCP客户机使用两种不同的方法与服务器进行通信并获得配置信息。
1、第一次启动登录网络时的初始化租约过程。当DHCP客户机启动登录网络时: DHCP客户机在本地子网中首先发送DCHP discover(DHCP租约)信息,此信息以广播的形式发送,因为客户机现在不知道DHCP服务器的IP地址。 DHCP服务器收到DHCP客户机广播的DHCP discover信息后,它向DHCP客户机发送DHCP offer(DHCP 租约提供)信息,其中包括一个可租用的IP地址。 注:如果没有DHCP服务器对客户机的请求作出反应,则客户机无法获得IP地址,初始化失败。客户机从微软保留的B类网段169.254.0.0中挑选一个IP地址作为自己的IP地址,子网掩码为255.255.0.0。DHCP客户机利用ARP广播来确认自己所挑选的IP地址是否已背网络上的其他设备使用,如该IP地址已经被使用,则客户机再挑选另一个IP地址重新测试,最多可以重试10个IP地址。如果客户机挑选的169.254.0.0网段中的IP地址未被其他设备使用则它将这个地址分配给网卡使用。但客户机将在后台每隔5分钟发送4次DHCP discover信息,直到它收到DHCP offer 信息。 一旦客户机收到DHCP offer信息,它发送DHCP租约选择信息到服务器表示它将使用服务器所提供的IP地址。 DHCP服务器在收到DHCP租约选择信息后,即发送DHCP positive(DHCP 确认)信息,以确定此租约成立,且此信息中还包含其他DHCP选项信息。 客户机收到确认信息后,利用其中的信息配置它的TCP/IP属性,并加入到网络中。 注:当客户机请求的是一个无效的或重复的IP地址,则DHCP服务器会发送DHCP negative(DHCP拒绝)信息,客户机收到DHCP negative信息后,初始化失败。(客户机也可以主动发起请求,要求使用某一IP配置信息,而不用等待服务器分配给客户机IP配置信息。)
2、DHCP客户机更新租约的过程。客户机重新启动或租期到达50%时,客户机都需要更新租约,过程如下: 如果在启动客户机时租约仍然有效,客户机直接向提供租约的服务器发送请求,要求更新及延长现有地址的租约。 如果DHCP服务器收到请求,它发送DHCP确认信息给客户机,更新客户机的租约。 如果客户机无法与提供租约的服务器取得联系,则客户机尝试PING在租约中设置的默认网关。如果成功的PING到默认网关,则客户机认为它仍然在同一个网络中,它将继续使用现有的租约。在租期达到50%时,它在后台继续尝试更新租约,客户机一直等到租期到达87.5%时,客户机进入一种重新申请的状态,它向网络上所有的DHCP服务器广播DHCP discover 请求以更新现有的地址租约。如果无法成功的PING到默认网关,则客户机认为它已经被移动到一个没有DHCP服务的网络中,客户机则利用前面所说的自动分配IP的功能给自己分配一个IP地址,并继续会每隔5分钟发送4次DHCP discover信息。 如果有服务器响应客户机的请求,那么客户机使用该服务器提供的地址信息更新现有的租约。 如果租约过期或无法与其他服务器通信,客户机将无法使用现有的地址租约。 客户机返回到初始启动状态,利用前面所述的步骤重新获取IP地址租约
注:如果客户机正常关机时,会释放DHCP租约,非正常关机,是不会发送释放消息的。
3、DHCP/BOOTP中继代理 如果DHCP服务器与客户机分别位于不同的网段上,则用户的路由器必须符合RFC1542的规定,即必须具备DHCP/BOOTP Relay Agent(DHCP 中继)的功能。 Relay Agent 中继代理是一个把某种类型的信息从一个网段转播到另一个网段的小程序。DHCP Relay Agent是一个硬件或程序,它能够把DHCP/BOOTP广播信息从一个网段转播到另一个网段上。 工作过程: DHCP客户机在子网上广播DHCP discover消息,广播是将消息以UDP数据包的形式通过67端口发出的。 当中继代理接收到这个消息后,它检查包含在这个消息报头中的源IP地址,如果IP地址为0.0.0.0则中继代理用接收到广播的接口的IP地址替换它,然后将其转发到DHCP服务器所在的子网A上。 当在子网A中的DHCP服务器收到这个消息后,它开始检查消息中的网关IP地址是否包含在DHCP范围内,从而决定它是否可以提供IP地址租约。 如果DHCP服务器含有多个DHCP范围,消息中的网关IP地址被用来确定从哪个DHCP范围中挑选IP地址并提供给客户机。 DHCP服务器将它所提供的IP地址租约(DHCP offer)直接发送给中继代理,中继代理将这个租约利用广播的形式转发给DHCP客户机。
注意:如果为了提高容错性而在同一网段上使用两台DHCP服务器,在分配IP地址范围时要注意考虑到DHCP服务器平衡使用的因素,一般采用80/20的规则,即将所有可用的IP地址范围按8:2的比率分开,一台DHCP服务器提供80%的IP地址租约,另一台提供其他20%的IP地址租约。

例如:服务器 分配的地址范围 排除的地址范围服务器1 192.168.111.1~192.168.111.254 192.168.111.201~192.168.111.254服务器2 192.168.111.1~192.168.111.254 192.168.111.1~192.168.111.200
注意:在设置保留地址时,注意MAC地址的填写格式是数值之间没有任何分隔符。注意:如果在设置保留地址时,网络上有多台DHCP服务器存在,用户需要在其他服务器中将此保留地址 排除,以便其他客户机可以获得保留地址。
注意:WINSERVER2003的DHCP服务器中用户可以针对不同的对象设置选项,用户针对的对象包括默认服务器选项、作用域选项、类选项、保留客户选项。 服务器选项:这些选项的设置映像DHCP控制台窗口下该服务器下所有的作用域中的客户和类选项。 作用域选项:这些选项的设置,只影响该作用域下的地址租约 类选项:这些选项的设置,只影响被指定使用该DHCP类ID的客户机 保留客户选项:这些选项的设置只影响指定的保留客户。 它们的优先级: 保留客户选项>类选项>作用域选项>服务器选项

2009年3月30日星期一

database and instance startup and shutdown

oracle数据库在运行期间总存在一个与之对应的实例。当用户在服务器上启动数据库时,oracle将为数据库分配被称为系统全局区SGA的内存区,并启动一个或多个oracle进程。SGA与oracle进程被统称为oracle实例。构成实例的内存区及进程负责对数据库进行管理,并为用户提供服务。
当一个实例启动后,oracle将令此实例与指定的数据库共同工作。当数据库与实例关联后被称为已挂载的数据库(mounted database)。已挂载的数据库可以被打开(open),供授权用户访问。
在同一个服务器上可以同时运行多个实例,每个实例和一个与之相关的数据库共同工作。在应用了RAC的大型集群系统(cluster system)中,一个数据库可以挂载到多个实例上。
只有DBA能够执行启动实例及打开数据库的操作。当数据库处于打开状态时,DBA还能够执行停止(shutdown)操作令数据库进入关闭状态。当数据库处于关闭状态后,其中的数据不能被访问。
oracle将赋予满足以下条件的用户 管理员权限:
1、用户的操作系统权限,允许他以管理员的身份连接数据库
2、用户被授予了SYSDBA或SYSOPER权限,且数据库使用密码文件(password file)来对数据库管理员进行验证
当用户以SYSDBA权限连接数据库时,其所处的方案(schema)由SYS用户所有。而用户以SYSOPER权限连接数据库时,将处于public schema,SYSOPER权限是SYSDBA权限的一个子集。

在启动实例时,oracle需要读取初始化参数文件(initialization parameter file)或服务器参数文件(server parameter file)。这两个文件包含了一组供实例及数据库使用的配置参数。服务器参数文件能够持续地(persistent)存储系统的初始化参数。在实例运行期间对初始化参数所做的修改能够保存到服务器参数文件中,供下次实例启动时使用。
绝大多数的初始化参数的作用可以被分为以下三类:1、用于命名的参数,例如为文件命名
2、用于设限的参数,例如设定一个最大值
3、用于设定容量的参数,例如设定SGA的大小,这种参数被称为变量参数(variable parameter)
而其他的初始化参数则用于进行以下设定:
1、实例启动后与那个数据库共同工作
2、SGA中的内存结构能够使用多少内存
3、重做日志用完后进行何种操作
4、数据库控制文件的存储位置及文件名
5、数据库的撤销表空间名称

DBA可以通过调整变量参数(variable parameter)的值来提高数据库系统的性能。有些初始化参数可以在实例运行时使用ALTER SESSION或ALTER SYSTEM 语句动态地修改。如果没有使用服务器参数文件(server parameter file, spfile),使用ALTER SYSTEM语句对初始化参数的修改只对当前实例有效。管理员必须手工修改初始化参数文件(initialization parameter file)才能使这些修改在下次实例启动时仍然有效。我们可以使用DBCA自动创建一个初始化参数文件。

启动数据库并使其可以为所有用户提供服务需要三个步骤:
1、启动实例
2、挂载(mount)数据库
3、打开(open)数据库
我们可以通过SQL*PLUS的STARTUP语句或企业管理器(Enterprise Manager)来执行这三个步骤。

在Oracle启动实例时,首先需要从服务器参数文件或初始化参数文件中读取初始化参数,之后创建存储数据库信息的共享内存区SGA,最后创建后台进程。此时,构成实例的内存区及进程还没有和数据库产生关联。
管理员可以使实例以限制模式(restrited mode)启动,也可以将当前运行的实例切换到限制模式。运行在限制模式下的实例只允许具有RESTRICTED SESSION系统权限的用户连接到数据库

Oracle将数据库挂载(mount)到实例,以便实例和数据库共同工作。在挂载数据库时,实例首先需要找到并打开数据库控制文件(control file)。控制文件的名称及位置信息记录在参数文件的CONTROL_FILES参数中。接着oracle将读取控制文件获取数据库的数据文件(datafile)名及重做日志文件(redo log file)名。
此时,数据库还没有被打开,只有DBA才能访问数据库。当数据库处于挂载状态时,管理员可以进行维护操作。此时数据库的常规操作都是被禁止的。
spfile是实例的参数文件,control file是数据库的参数文件

备用数据库(standby database)是一个与主数据库(primary database)完全相同的副本,他能在发生灾难时保证系统的持续可用性(availablity)。备用数据库永远处于恢复模式(recovery mode)。为了构造一个备用数据库,DBA必须使用ALTER DATABASE语句使一个数据库以备份模式(standby mode)挂载,并将主数据库中产生的归档重做日志(archived redo log)加载到此数据库中。用户可以将一个备份数据库以只读模式(read-only mode)打开,作为临时的报表查询数据库。备份数据库不能以可读写状态(read/write mode)打开。

克隆数据库(clone database)是专供按时间点(point-in-time recovery)表空间功能使用的数据库副本。当用户按时间点恢复表空间时,需要将克隆数据库挂载(mount)并将其中的表空间恢复到期望的时间,之后将克隆数据库中被恢复的表孔吉爱你的元数据及数据文件复制到主数据库(primary database)

将已挂载的数据库打开就可以使此数据库正常工作。当管理员打开数据库时,oracle将打开所有联机的数据文件(datafile)及重做日志文件。如果数据库上次停止时某个表空间处于脱机状态,那么打开数据库时此表空间及相关的数据文件将依旧处于脱机状态。如果oracle在打开数据库时找不到所需的数据文件或重做日志文件,系统将返回错误信息。管理员必须从备份中恢复损坏或缺失的文件后,才能打开数据库。
如果数据库上次关闭时发生了异常情况(DBA终止了数据库实例或出现电源故障等),oracle将在数据库再次打开时自动地执行恢复操作。

当DBA打开数据库时,实例将请求一个或多个撤销表空间(undo tablespace)。DBA在实例启动时通过UNDO_MANAGEMENT初始化参数决定数据库运行于自动撤销管理模式(automatic undo management mode)或手工撤销管理模式(manual undo management mode)。可选的参数值为AUTO或MANUAL。当此值为AUTO时,实例将运行在自动撤销管理模式下。参数模式为MANUAL。
1、如果用户正使用撤销表空间(undo tablespace),那么数据库就运行在自动撤销管理模式下。oracle 建议采用此模式
2、如果用户正使用回滚段(rollback segment)管理撤销空间,那么数据库运行手工撤销管理模式下

DBA能够以只读模式打开数据库,防止数据被用户事务修改。在只读模式下,只有只读事务才能访问数据库,只读事务不能向数据文件及重做日志文件写入信息。
在只读模式下,其他文件(例如控制文件、操作系统监控文件audit trail、跟踪文件trace file 及告警日志alert log)依然可以被写入。用于排序操作的临时表空间依然可用。但是用户不能在只读模式下将永久表空间(permanent tablespace)脱机。作业队列(job queue)在只读模式下无法使用。
在只读模式下,依旧可以执行数据库恢复,也可以执行改变数据库状态的操作(只要此类操作不产生重做数据即可)。例如,在只读模式下:
1、可以令数据文件联机或脱机
2、可以恢复脱机的数据文件与表空间
3、控制文件可以用于记录数据库状态变化

关闭一个数据库及相关实例需要三个步骤:
1、关闭数据库
2、卸载数据库
3、停止实例

当DBA关闭数据库时,oracle将SGA内的数据库数据及恢复数据分别写入数据文件及重做日志文件。之后,oracle关闭所有联机的数据文件及重做日志文件。(脱机表空间的脱机数据文件已经处于关闭状态,当用户再次打开数据库时,脱机的表空间及其中的数据文件将保持脱机状态)此时数据库已经处于关闭状态,不能执行一般操作。在数据库已经关闭但仍然挂载时,控制文件还是处于打开状态。
在紧急情况下,DBA可以终止一个处于打开状态的数据库的实例,以便立即关闭(close)并完全停止(shutdown)一个数据库。这个过程很快,因为将SGA区内各缓存的数据写入磁盘的步骤被省略了。数据库重新打开时oracle将自动执行恢复操作。

当数据库被关闭后,oracle将卸载数据库,使之与实例分离。此时,实例依旧存在于计算机的内存中。数据库被卸载后,oracle将关闭数据库的控制文件。

停止实例是停止数据库的最后一个步骤,当DBA停止实例时,SGA将被从内存中清除,后台进程将被终止。
在异常情况下,可能出现实例停止(shutdown)不完全的情况:内存中可能依然存在未被清除的内存结构,或者某些后台进程未被终止。如果系统中存在未被完全清除的实例,此实例再次启动时将会出错。在此种情况下,DBA可以采用两种方法强制启动实例,第一种方法是彻底清除之前的实例(removing the remnants of the previous instance) 并启动新实例。第二种方法就是在SQL*PLUS或企业管理器中执行SHUTDOWN ABORT语句。

2009年3月28日星期六

进程结构process architecture

每个连接到Oracle的用户需要运行两个模块才能访问Oracle实例:
1、应用程序或Oracle工具:数据库用户需要运行数据库应用程序(如一个预编译的程序)或Oracle工具(例如SQL*PLUS),向Oracle数据库服务器提交SQL语句。
2、Oracle数据库服务器模块:为用户提供服务的Oracle数据库程序,负责解释执行应用程序提交的SQL语句。
这两种模式都是以进程的形式运行的。

Oracle系统中的各种进程可以被分为两大类:
1、执行应用程序或Oracle工具代码的用户进程(user process)
2、执行Oracle数据库服务器代码的Oracle进程(oracle process)。其中包括服务进程(server process)和后台进程(background process)。

当用户运行一个应用程序或oracle工具时,Oracle将创建一个用户进程(user process)来运行用户的应用程序。

连接(connection)与会话(session)这两个概念均与用户进程(user process)密切相关,但两者有有不同的含义:
连接是用户进程和oracle实例间的通信通道(communication pathway)。这个通信通道是通过进程间的通信机制(interprocess communication mechanisms)(在同一个计算机上运行用户进程和oracle进程)或网络软件(network software)(当数据库应用程序与oracle服务器运行在不同的计算机上时,就需要通过网络来通信)建立的。
会话是用户通过用户进程与oracle实例建立的连接(这里的连接与上面的连接不同,主要指用户和数据库间的联系)。Oracle数据库中的同一个用户可以同时创建多个会话。
当系统没有运行在共享服务模式下时,oracle为每个用户会话创建一个服务进程(server process)。而当系统运行在共享服务模式下时,多个用户会话可以共享同一个服务进程。

Oracle进程主要分为两种:服务进程(server process)和后台进程(background process)

服务进程:oracle需要创建服务进程(server process)来处理连接到实例的用户进程提交的请求。当应用程序与oracle服务器运行在同一计算机时,某些用户进程可以和服务进程合并为一个进程,以便减少系统开销。但是当应用程序与oracle服务器运行在不同的计算机时,用户进程必须通过一个服务进程与oracle通信。
为用户应用程序创建的服务进程(或用户/服务进程合并后的服务进程部分)可以完成以下工作:
1、解析、运行应用程序提交的SQL语句
2、如果数据在SGA中不存在,则将所需的数据块从磁盘上的数据文件读入SGA的数据缓存区(shared database buffer)
3、以应用程序能理解的形式返回SQL语句的执行结果

后台进程:为了实现为多用户提供服务且保证系统性能,在一个多进程oracle系统(multiprocess oracle system)中,存在多个被称为后台进程的oracle进程。
一个Oracle实例中可以包含多种后台进程,这些进程不一定全部出现在实例中。系统中运行的后台进程数量众多,用户可以通过V$BGPROCESS视图查询关于后台进程的信息。Oracle实例中可能运行的常见后台进程有:
数据写入进程DBWn
日志写入进程LGWR
检查点进程CKPT
系统监控进程SMON
进程监控进程PMON
恢复进程RECO
作业队列进程
归档进程ARCn
队列监控进程QMNn
1、数据写入进程DBWn
数据写入进程(database writer process)的功能是将数据缓存区的内容写入数据文件。DBWn负责将数据缓冲区(database buffer cache)内修改过的缓存区(即dirty buffer)写入磁盘。当系统中数据修改操作比较频繁时,DBA可以配置额外的数据写入进程(DBW1到DBW9及DBWa到DBWj)来提高数据写入的性能。
注意:buffer 与cache的区别
注意:在单处理器系统(uniprocessor system)中,额外的数据写入进程并不能提高系统性能。

2、日志写入进程LGWR
日志写入进程(log writer process)负责对重做日志进行管理,一一将重做日志缓冲区(redo log buffer)内的数据写入磁盘上的重做日志文件中。LGWR进程将上次写入之后进入缓冲区的所有重做条目(redo entry)写入磁盘中。
注:重做日志缓冲区是一个循环使用的缓冲区(circular buffer)。LGWR进程将重做日志缓冲区一组连续的缓冲区写入磁盘。LGWR进程写入的内容有:
提交记录(commit record)(当用户进程提交一个事务时的提交记录)
重做日志缓冲区
注:当发生下列情况下,LGWR也会将重做日志写入磁盘:
每三秒写入一次;当重做日志缓冲区的使用容量超过总容量的三分之一;当DBWn进程向磁盘写入脏缓冲区时(且相关的重做日志还没有写入磁盘)

3、检查点进程CKPT
当一个检查点事件发生时,oracle需要更新所有数据文件的文件头来记录检查点事件的详细信息。这个工作是由CKPT进程来完成的。但是将数据块写入数据文件的不是CKPT进程,而是DBWn进程。

4、系统监控进程SMON
实例启动时如有需要,系统监控进程(system monitor process)将负责进行恢复(recovery)工作。此外SMON还负责清除系统中不再使用的临时段(temporary segment),以及为数据字典管理的表空间(dictionary managed tablespace)合并相邻的可用空间扩展(extent)。在实例恢复过程中,如果由于文件读取错误活所需文件爱你处于脱机状态而导致某些异常终止的事务未被恢复,SMON将在表空间活文件恢复联机状态后再次恢复这些事务。SMON将定期检查系统中是否存在问题。系统内的其他进程需要服务时也能够调用SMON进程。

5、进程监控进程(PMON)
当一个用户进程失败后,进程监控进程(process monitor process)将对其进行恢复。PMON进程将清除相关的数据缓冲区(database buffer cache)并释放被此用户进程所使用的资源。
PMON进程会周期性的对调度器(dispatcher)和服务进程(server process)进行检查,重新启动停止运行的进程(不包括oracle有意停止的进程)。PMON进程还负责将实例和调度器进程的信息注册到网络监听器(network listener)
同SMON一样,PMON进程也会定期地检查系统中是否有问题需要处理,当系统内的其他进程需要服务时也能够调用PMON进程。

6、恢复进程RECO
恢复进程(recovery process)是在分布式数据库环境(distributed database configuration)中自动地解决分布式事务(distributed transaction)错误的后台进程。一个节点(node)上的RECO进程能够连接到出现了不可信的分布式事务(in-doubt distributed transaction)的数据库。当RECO进程重新连接到与不可信的事务相关的数据库后,它将负责对此事务进行处理,并从相关数据库的活动事务表(pending transaction table)中移除和此事务有关的数据。
如果RECO进程无法连接到远程数据库,她将在一定时间间隔后尝试再次连接。每次重新连接间的时间间隔会以指数级的方式增长。只有实例允许分布式事务时才会启动RECO进程。实例中不会限制并发的分布式事务的数量。

7、作业队列进程
作业队列进程(job queue process)的功能是进行批处理(batch processing)。这种进程用于运行用户的作业(job)。这种进程能够提供作业调度服务(schedular service),在oracle实例中调度PL/SQL语句及存储过程。用户只需提供作业的开始时间及调度间隔,作业队列进程就能够按用户的设定调度作业。
作业队列进程可以被动态管理,这样用户需要时就能够使用更多的作业队列进程。当一个作业队列进程进入空闲状态(idle)后,其使用的资源将被释放。

8、归档进程ARCn
归档进程(archiver process)发生在日志切换(log switch)时将重做日志文件复制到指定的存储设备中。只有当数据库运行在ARCHIVELOG模式下,切自动归档功能被开启时,系统才会启动ARCn进程。
一个oracle实例中,最多可以运行10个ARCn进程(0-9)。如果当前所有的ARCn进程不能满足工作负载的需要,LGWR进程会启动新的ARCn进程。当LGWR进程启动新的ARCn进程时,告警日志(alter log)会进行记录(但是最多只能运行10个ARC进程)。

9、队列监控进程QMNn
队列监控进程(queue monitor process)是提供oracle工作流高级队列(oracle streams advanced queuing)使用的可选的进程,用于监控消息队列。队列监控进程和作业队列进程(job queue process)与其他oracle后台进程的区别在于,这两类进程出错不会导致整个实例出错。

2009年2月24日星期二

RPM常用命令

RPM是一个很强大的包管理工具,能被用来建立、安装、查询、检查、升级、或者删除独立的软件包。包一般有两种,一种包含可以直接安装的被封装了的软件的二进制文件;一种包含源码以及编译成二进制包的必须的编译方法(recipe 制作法)
下面这些基本模式必须被选择:
1、查询:Query;2、检查:Verify;3、签名检查:Signature Check;4、安装/升级/刷新:Install/Upgrade/Freshen;5、卸载:Uinstall 6、初始化数据库Initialize Database;7、 重建数据库Rebuild Database;8、 放弃 Resign; 9、添加签名Add Signature; 10、设置所有者和组Set Owners/Groups;11、显示查询标签 Show Querytags;12、显示配置 Show Configuration。
一、如何安装或升级一个安装包
1、rpm -i package.rpm
这里的-i安装参数,package.rpm是你要安装的RPM。我们还可以增加参数,比如:
rpm -ivh package.rpm,其中-v指的是详细信息(verbose 详细的),-h指的是哈希标记。它会在解包的过程中在屏幕上输出#,然后安装这个包。我们可以可以使用--percent取代-h。
2、rpm -Uvh new-package.rpm
注意:这里的-U升级选项,只是简单的删除旧的包,安装新的包。-Uvh也可以用于安装包,如果这个包不存在,那么会在系统中安装新的包。
3、rpm -Uvh --oldpackage Samba-old-version.rpm
这里的--oldpackage选项,表示Samba包是一个比较已经安装的包要旧。这个命令会移除已经安装好的包,然后安装这个比较旧的包。
二、如何移除一个包,查询相关联的包
1、rpm -e package
-e是个擦除参数,会将包package.rpm移除。
2、rpm -q --whatrequires kernel
这里例子中,会输出依存于kernel的包
三、查询一个已经安装了的包
1、rpm -q yum
这里的-q参数,表示我们在运行一个查询。如果这个yum包已经被安装,那么上面这个命令会返回一个true(Shell变量$?=0),也可以使用带版本号的全名:
rpm -q yum-2.0.4-2
2、rpm -qa
使用-a,来查询系统中已经安装了的所有包,通过管道符,可以查询某个包是否被安装:
rpm -qa grep -i python
grep命令中的-i选项,表示大小写不敏感。
3、rpm -qpi vnc-server-4.0-0.beta4.3.2.i386.rpm
其中-p参数表示查询的是一个RPM包,-i用来表示查询模式,这里代表info。
四、列出安装包依存的包
1、rpm -qpR package.rpm
-R参数代表Requires。-p表示查询的是一个包
2、rpm -qR kernel
查询一个已经安装了的包,R代表requires。
五、查找某个目录是由哪个包创建的
1、rpm -qf /usr/bin/smbmount
这个命令经常用在查询某个程序是那个RPM包的一部分,或者当我们只知道需要的文件或程序,但是不知道包是哪个的时候。
六、列出RPM包将要安装的文件
1、rpm -ql cpp
这个命令用来查询被安装了的包cpp中的内容。-l表示列表list。
2、rpm -qpl cpp-3.3.2-1.i386.rpm
-p表示查询的是一个RPM包。
七、模拟运行某个RPM命令的时候,会发生什么
rpm -ivh --test new-kernel.rpm
可以为某个命令添加--test,来测试运行这个命令时会发生什么。当我们要进行危险的(critical)升级或安装时,可以用这个来查看在安装的过程中会发生什么问题。
通过使用上面的命令,我们可以发现在安装新内核的过程中会发生什么问题(比如空间的可用性、依赖性问题等)。如果什么都没发生,可以尝试添加-w参数。如果所有都没有问题,我们能够看到Preparing这样的输出。
八、安装一个新的内核,同时保留已经被安装的旧的那个
rpm -Uvh --repackage new-kernel.rpm
其中--repackage是一个备份选项,这样我们就可以重新安装在升级进程中,被移除的旧版本的包。上面的命令就是升级内核,并且将现在已经安装的内核进行备份。
备份通常存在/var/spool/repackage目录下,如果新安装的内核有问题,我们可以使用下面的命令,将内核恢复到以前的版本:
rpm -Uvh --oldpackage /var/spool/repackage/old-kernel.rpm
注:--repackage用来将包进行备份,常用在当我们要升级或移除一个包的时候。例如下面的例子:
rpm -Uvh --repackage new-package.rpm
rpm -e --repacakage new-package.rpm
备份包通常保存在/var/spool/repackage目录下。然后我们可以使用下面的命令来进行恢复旧版本:
rpm -Uvh --oldpackage /var/spool/repackage/old-package.rpm
九、从一个SRPM中使用rpmbuild命令创建一个RPM包
当我们想在一个默认的包中,进行自定义的一些修改的时候(比如编译参数、文件路径、版本等)特别有用。为了做到这些,我们首先安装想使用的RPM的源码。这些文件一般以src.rpm结尾。
安装了以后,我们可以对这些.spec文件做一些修改。然后开始建造RPM包。注意:任何在.spec文件上的改变或错误都会影响整个建造进程。要对多个%define条目进行注意,甚至也要留意那些以#注释掉的注释部分(代码中的这些变得可用)。文件.spec通常在/usr/src/redhat/SPECS目录中。
使用命令:
rpmbuild -ba path/to/package.spec
上面的命令会在目录/usr/src/redhat/RPMS/arch中创建RPM包,这里的arch会根据系统和建造进程配置的不同而不同。如果一切顺利,我们就可以安装这个被生成的包了。

2009年2月21日星期六

Linux下,安装oracle 10gR2的准备工作(二)

六、配置内核参数
具体需要的参数参见:http://download.oracle.com/docs/cd/B19306_01/install.102/b15660/pre_install.htm#sthref264
输入命令查看内核参数的值:/sbin/sysctl -a
如果内核参数的值与要求的值不通,可以使用下面的方法来进行修改:
使用文本编辑器,创建或编辑/etc/sysctl.conf,对相应的值进行修改。
注:如果当前值比要求的值要大,那就使用较大的值
当我们指定了/etc/sysctl.conf文件中参数的值,重启系统后,该值仍然存在(they persist)
为oracle用户设定shell限制
为了提高系统中软件的性能,我们必须为oracle用户增加shell限制:
最大数量的打开文件说明词(the maxmum number of open file discriptors),在limits.conf文件中的条目(item)是nofile,硬限制(hard limit)是65536
对某一个用户的最大可用进程数(maximum number of processes available to a single user),在limits.conf文件中的条目是nproc,硬限制为16384
为了增加这些shell限制:
将下面这几行添加到/etc/security/limits.conf文件中:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在/etc/pam.d/login文件中,添加或修改以下行:
session required /lib/security/pam_limits.so
session required pam_limits.so
根据oracle用户的默认shell,将下面的内容,添加进默认的shell启动文件:
添加进文件/etc/profile
fi [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh"]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

七、确定需要的软件目录
1、oracle基础目录(oracle base directory)
oracle基础目录是oracle软件安装的最高级的目录,类似在WINDOWS环境下的C:/ORACEL目录,在linux环境下,建议使用跟下面这个类似的目录:
/mount_point/app/oracle_sw_owner
在这个例子中:
mount_point是将要包含oracle软件的文件系统的挂载点目录
oracle_sw_owner是oracle软件拥有者的系统用户名,例如oracle
注:women可以为多个安装使用同一个oracle基础目录,或者我们可以为每个安装创建单独的目录。但是如果在同一个系统中,使用不同的用户名进行安装,每个用户必须创建单独的oracle基础目录。下面的例子可以同时存在同一系统中:
/u01/app/oracle
/u01/app/orauser
/opt/oracle/app/oracle
注:不管我们是创建一个oracle基础目录还是使用一个已经存在的,我们必须将ORACLE_BASE环境变量的值设定为该目录的完全路径。
2、oracle存盘目录(oracle inventory directory)
oracle存盘目录(oraInventory)存储了系统中安装的所有软件的目录,它被所有oracle软件共享,所有oracle软件都会请求这个 目录。第一次安装时,OUI会提示指定这个目录,oracle建议使用路径:oracle_base/oraInventory
OUI会为自动创建我们指定的目录,并为它分配正确的用户、组和权限。
注:所有的oracle软件都会依赖这个目录,应该经常备份这个目录。此外除非已经完全删除了所有oracle软件,否则不要删除这个目录
3、oracle主目录(oracle home directory)
oracle主目录,是我们选择安装某个oracle产品的目录。我们必须将不同的oracle产品或者相同oracle产品的不同版本安装到不同的目录 中。当我们运行OUI的时候,它会提示我们指定一个目录。这个目录必须是oracle基础目录的子目录。oracle要求我们使用类似下面的目录作为 oracle主目录:oracle_base/product/10.2.0/db_1
OUI会创建我们指定的目录,并且为其设置正确的用户、组、权限。
注:在安装的过程中,我们不能将一个已经分配了权限的已经存在的目录,作为oracle的主目录。如果我们这么做了,在安装的过程中,会由于用户所有权限的问题发生错误。

八、确认或创建oracle基础目录
我们可以选择创建一个oracle基础目录,即使其他oracle基础目录已经存在
1、确认一个已经存在的oracle基础目录
已经存在的oracle基础目录可能不是我们建议的目录,如果确认有一个已经存在的oracle存盘目录或者oracle主目录,我们就可以使用下面的方法确认到oracle的基础目录:
确认一个已经存在的oracle存盘目录,输入下面的命令来查看oraInst.loc文件的内容:
more /var/opt/oracle/oraInst.loc
如果oraInst.loc文件存在,那么这个命令的输出类似下面:
inventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall
inventory_loc参数指定了oracle存盘目录(oraInventory),oraInventory目录的父目录就是一个典型的oacle基础目录。在这个例子中,/u01/app/oracle就是一个基础目录。
确定已经存在的oracle主目录
输入下列命令来查看oratab文件的内容:
more /etc/oratab
如果oratab文件存在,它还包含类似下面的这些行:
*:/u03/app/oracle/product/10.2.0/db_1:N
*:/opt/orauser/infra_904:N
*:/oracle/9.2.0:N
每一行的目录路径指定了一个oracle主目录。如果某个你想使用的oracle软件拥有者的名字,在某个目录路径的末尾,那这个路径就是一个可用的路径。如果我们打算以oracle用户进行安装,那么我们可以使用下面这两个目录中的一个:
/u03/app/oracle
/oracle
注:如果可能,选择类似第一个的路径(/u03/app/oracle),这个符合规范。
在决定使用一个已经存在的oracle基础目录进行安装以前,必须确认它满足以下条件:
它不应该与操作系统在同一个文件系统中
它必须有足够的磁盘空间:如果基础目录只安装软件文件,它至少应该有3G;如果这个目录同时装有软件文件和数据文件,那么要求至少为4G。
注:在生产数据库中,不建议将数据文件和软件文件装到通一个目录下。
使用命令:df -h oracle_base_path,来查看文件系统中的剩余空间。
如果我们想使用一个已经存在的oracle基础目录,我们可以配置oracle的用户环境,并将ORACLE_BASE环境变量的值指向我们选择的目录。
如果oracle基础目录不存在,我们想创建一个,那么按照下面的介绍。
2、创建一个oracle基础目录
在创建以前,首先要确认有足够的磁盘空间,具体需求按照上面所述。
确认合适的文件系统:
使用df -h 命令查看每个被挂在的文件系统上的剩余磁盘空间
找到一个有合适空闲空间的文件系统,这个文件系统必须是一个本地的文件系统或者一个集群文件系统或者是一个在一个被确认(certified)NAS设备上的NFS文件系统。
记录你想使用的文件系统的挂载点的名字。
创建oracle基础目录,指定正确的拥有者,并且赋予合适的权限:
使用下面的命令来创建要求的子目录,并且确定合适的拥有者、组、以及权限:
mkdir -p /mount_point/app/oracle_sw_owner
chown -R oracle:oinstall /mount_point/app/oracle_sw_owner
chmod -R 755 /mount_point/app/oracle_sw_owner
例如:指定挂载点为/u01,oracle软件的所有者的用户名为oracle,那么我们建议的目录路径为:/u01/app/oracle
然后当配置oracle的用户环境变量时,将ORACLE_BASE环境变量指向我们创建的oracle基础目录。

九、选择数据库文件和恢复文件的存储选项
oracle数据库文件包括:数据文件、控制文件、重做日志文件、服务器参数文件和密码文件
对所有的安装而言,我们必须为数据库文件选择存储选项。如果我们想使用为安装使用自动备份功能,那么我们还必须为我们想使用的恢复文件(即flash recovery area),不必为每个文件类型使用相同的存储选项(即可以使用相同的,也可以使用不同的)。
数据库文件支持的存储选项有:文件系统(file system)、自动存储管理(automatic storage management)、裸设备(raw device)
恢复文件支持的存储选项有:文件系统、自动存储管理,但是不支持裸设备
选择存储选项时的建议:
我们可以为每个文件类型选择它所支持的储存选项的任意组合
oracle建议我们为数据库文件和恢复文件选择自动存储管理

十、为数据库文件和恢复文件创建目录
1、选择文件系统来放置数据库文件
如果选择将数据库文件放到文件系统中:
OUI建议的默认路径是oracle基础目录的子目录,为了提高可用性和可靠性,建议使用一个做过RAID的设备。
如果想使用多个文件系统,那么需要为连接到数据库的每个单独的物理磁盘选择文件系统
如果想在安装过程中创建一个预配置的数据库,那么我们选择的这个文件系统必须至少有1.2GB的剩余空间。对生产数据库而言,必须根据实际需要选择空间的大小,以满足实际需要
为了优化性能,我们选择的文件系统必须在一个只被数据库使用的物理设备上。
此外,还必须保证oracle用户拥有对这个目录的写权限。
2、选择文件系统来放置恢复文件
只有在安装过程中启用了自动备份,我们才必须为恢复文件选择一个存储区域。
为了防止由于磁盘的损坏导致数据库文件和恢复文件都不可用,我们建议将数据库文件和恢复文件放到不通的物理磁盘上。
我们选择的文件系统必须有至少2GB的空余磁盘。
这个磁盘空间需求,是为flash 恢复区域分配的默认磁盘限额,是由DB_RECOVERY_FILE_DEST_SIZE初始化参数指定的。
如果你选择自定义安装类型或者增强型数据库配置选项,那么我们可以指定不同的磁盘配额值。在创建了数据库以后,我们可以使用oracle企业管理网格控制活数据库控制指定不同的值。
OUI为flash恢复区域分配的默认路径,建议选择oracle基础目录的子目录,在生产环境下不应该选择默认路径。
oracle用户必须有向我们指定的路径中写文件的权限。
3、创建需要的目录
为数据库文件和恢复文件,在单独的文件系统上创建目录,最好是在oracle 基础目录下:
使用df -h命令来查看每个被挂载的文件系统的剩余磁盘空间
对数据库文件而言,可以选择一个至少有1.2GB剩余磁盘空间的单独的文件系统,或者选择几个文件系统,这几个文件系统的剩余磁盘空间的总和为1.2GB。
对恢复文件而言,选择一个至少2.4GB剩余空间的文件系统。
如果想在一个文件系统中,安装不止一种类型的文件,那么将这些需要的磁盘空间加起来(即需要1.2G+2.4G)
记录我们想使用的文件系统的目录的挂载点
输入类似下面的命令,来创建需要的子目录,并为其设置合适的用户、组、以及权限:
数据库文件目录:
mkdir /mount_point/oradata
chown oracle:oinstall /mount_point/oradata
chmod 775 /mount_point/oradata
恢复文件目录(flash recovery area):
mkdir /mount_point/flash_recovry_area
chown oracle:oinstall /mount_point/flash_recovery_area
chmod 775 /mount_point/flash_recovery_area