前言 Oracle 9i数据库系统可算是近几年来Oracle公司一项杀手级的产品,其功能与应用面之广,连研究Oracle多年的我在第一次接触到产品规格时也不禁吓了一跳!突然间一大堆的技术文件与白皮书排山倒海而来,一时之间还不知道该从何着手。所以我花了几个月的时间在各种平台上进行环境测试以及新功能研究,并将手边的资料大致整理了一下,希望在未来的专栏内容中都能陆续介绍给各位Linuxer杂志的忠实读者。 在这里有一点要先跟读者致歉:之前我曾经写过数篇有关Oracle 8i数据库管理的文章,因为自己工作实在太忙(这可能只是我的借口!),加上Oracle 9i已经released。所以我决定先暂时停掉该部分的专栏,专心整理Oracle 9i的相关资料。也非常谢谢这段期间来信鼓励以及给予建议的读者朋友们,在能力允许的范围内,我将会尽最大的努力为大家整理最新的Oracle技术资料。当然除了数据库管理技术之外,未来我也会应读者要求,加入利用Java设计Oracle 9i数据库应用的文章,请大家继续给予批评指导! Oracle试用软件之取得方式 因为Oracle 9i在Linux平台上正式通过认证的只有SuSE Linux (7.1与7.2),所以我就利用SuSE Linux 7.1 Professional版本为平台做为示范。Oracle数据库则是使用Oracle 9i Enterprise Edition for Linux Intel release 1(9.0.1)。 大家一定觉得非常奇怪,为什么Redhat Linux没有经过Oracle 9i认证?说实在的,这点我也不清楚!据Redhat的说法好象是来不及将最新版本交给Oracle作认证与测试,所以…….。不过Redhat已经在日前正式提出新闻稿表示在未来新的Oracle版本一定会大力支持了(可能是被骂到受不了吧!?),请大家拭目以待啰。 相信有许多人对于Oracle 9i已经垂涎许久了。我先为各位说明如何进行安装前的准备动作。除了Linux操作系统之外,大家最关心的应该是如何”取得”Oracle 9i软件?关于这点我在二月份的专栏已经说明过,各位可以到Oracle Technology Network(OTN)网站注册成为OTN会员,一但您成为OTN的正式会员,就可以下载任何Oracle最新的技术文件以及软件。但是要注意的是所有下载的软件其授权方式为”程序开发者授权”(Developer License),虽然具备完整版的功能,但是您只能运用于开发测试或是进行评估,可不能进行商业用途! OTN网址为:http://otn.oracle.com 图一:Oracle Technology Network
如果您尚未注册,就赶快点选首页右上角的【Membership】图标注册一个 新帐号吧!成功注册之后再回到OTN首页,点选左边【Software】下的【Downloads】,就可以点选您要下载的Oracle试用软件。 图二:Oracle软件下载区 请您在签署”程序开发授权同意书”(Oracle Technology Network Development License Agreement)之后请直接下载Oracle 9i Enterprise Edition for Linux。Oracle 9i安装程序共有三个档案,分别是Linux9i_Disk1.cpio.gz、Linux9i_Disk2.cpio.gz、Linux9i_Disk3.cpio.gz。因为这三个档案都是压缩档,您可以参考下列步骤进行解压缩:
>gunzip Linux9i_Disk1.cpio.gz >gunzip Linux9i_Disk2.cpio.gz >gunzip Linux9i_Disk3.cpio.gz
>cpio –idmv <Linux9i_Disk1.cpio >cpio –idmv <Linux9i_Disk2.cpio >cpio –idmv <Linux9i_Disk3.cpio
注:如果您觉得这样的下载方式不太方便的话,OTN网站还提供了软件订阅服务,不过这项服务因为系统维护的关系,大概在12月左右才会再上线,请自行注意网站上的讯息! 安装时之系统需求
注:Oracle 9i安装程序Oracle Universal Installer在执行安装动作时会使用/tmp作为资料暂存目录。如果/tmp目录之剩余空间不足,建议您设定TMP或是TMPDIR等环境变量,指向具有足够空间之目录即可。但是该目录必须开放可写入之权限。 安装Oracle 9i之前置处理动作
下载地址:ftp://ftp.suse.com/pub/suse/i386/supplementary/commercial/Oracle/orarun9i.rpm
下载地址: http://java.sun.com/j2se/1.3/download-linux.html
之前有安装过Oracle 8i for Linux的读者应该记得,安装之前必须先在Linux操作系统下新增一个名为oracle之使用者帐户,以及一个oracle DBA所专用的群组。但是SuSE Linux 7.1版在操作系统安装完毕时预设就有一个oracle帐户,甚至连群组(名称为oinstall)都已经设定好了!(只差在不知道oracle帐户的密码是什么!如果有读者知道的话也请发个mail告诉我)所以建议您先利用root身分更改oracle使用者之密码,以免以后需要用oracle帐户登入时不知道密码。更改密码的方式如下: > passwd oracle
这个步骤大概是各位觉得比较奇怪的部分,在此也先做个说明: 因为安装Oracle 9i时,必须先设定相关的环境变量以及Shared memory组态。说实在的,这些工作还真的相当繁琐!所以SuSE公司就提供了这个rpm档,执行之后会自动将大部分的组态设定完成(这点是我最欣赏SuSE的地方,希望R公司也能多多学习!) 。当然您也可以依实际需要再作必要的调整。 请您利用root身分执行以下指令: > rpm –Uvh orarun9i.rpm
执行之后会在操作系统加入以下两个档案,分别是
设定ORACLE_HOME、ORACLE_BASE、ORACLE_SID…等环境变量。
设定Shared memory之各参数值。 这些档案您都可以依照实际环境再予以修改,但如果您是第一次安装的读者建议您还是尽量使用预设的设定较好。 图三:/etc/profile.d/oracle.sh档案内容 图四:/etc/rc.config.d/oracle.rc.config之档案内容。
注1:在/etc/profile.d/oracle.sh所设定的Oracle_SID名称为orcl,如果不想使用这个名字的话,可以在更改掉档案的只读属性之后予以修改。例如我将ORACLE_SID更改成ora901。
注2:最重要的Shared Memory参数为SHMMAX,建议的设定值为(物理内存的一半)。例如我安装用的服务器内存为512MB,则SHMMAX可设为256MB,换算方式如下: 256 MB = (1MB=1048576 bytes) *256= 268435456 bytes
在Sun网站上提供下载的JDK for Linux有两种格式,一种是.bin档,另一种是.rpm檔。安装的方式分别如下:
> chmod a+x j2sdk-1_3_1-linux-i386.bin
> ./j2sdk-1_3_1-linux-i386.bin
> chmod a+x j2sdk-1_3_1-linux-i386-rpm.bin > ./j2sdk-1_3_1-linux-i386-rpm.bin 执行之后会在目前工作目录下产生一个jdk-1.3.1.i386.rpm档案。
> rpm –iv jdk-1.3.1.i386.rpm 当您完成以上几项准备工作之后。接下来就可以正式开始安装Oracle 9i了。
使用Oracle Universal Installer进行安装 当您完成所有前置准备动作后,请利用oracle帐户重新登入系统。建议您执行env指令确认所有环境变量是否设定无误: # env 接下来请切换至Oracle 9i第一片所在目录以执行安装程序,我是利用光盘片安装,执行安装程序的方式为: # ./cdrom/runInstaller (/cdrom 为光驱mount之目录名称) 注:如果您也是利用光盘安装,请不要切换至/cdrom目录下才执行runInstaller,原因容后说明。
Oracle Universal Installer安装程序顺利激活之后,您可以看到如下图五之画面: 图五:激活Oracle Universal Installer 2.0.1 跳过欢迎画面后就可以开始正式的安装啰! Step1:设定Oracle Inventory之位置 首先您必须指定Oracle Inventory之所在目录。Oracle Inventory是用来记录所有安装过的Oracle产品清单,如果没有特殊的需求就请依照预设的目录/opt/oracle/oraInventory即可。 图六:设定Oracle Inventory之所在目录。 Step2:设定可更新Oracle软件之操作系统群组 在这里所设定的群组是用来更新Oracle软件所用,如果您决定只让root使用者具备更新Oracle软件的权利,就不要指定任何群组名称。 因为SuSE Linux安装完毕就自动将oracle帐户加至oinstall群组,所以Unix Group Name字段就先显示了oinstall,按下【Next】继续吧!
图七:设定可更新Oracle软件之操作系统群组。
Step3:建立Oracle Inventory Oracle Universal Installer已准备一个建立Oracle Inventory所用的orainstRoot.sh档案(位置是在/tmp/orainstRoot.sh),不过这个档案需利用root身分执行。此时您可以再开启一个终端机窗口来执行该档案,如图九所示。待执行完毕再回到如图 八的窗口按下【Continue】。 图八:执行orainstRoot.sh之提示窗口。
图九:执行orainstRoot.sh建立Oracle Inventory目录。
Step4:指定Oracle安装程序来源与目的地所在目录 Oracle Home为Oracle数据库系统所在之主要目录。因为在/etc/profile.d/oracle.sh内已设定ORACLE_HOME为/opt/oracle/product/9.0.1,所以下方Destination的Path字段会出现ORACLE_HOME之设定值。这里也不需要做变更。 图十:指定Oracle安装程序来源与目的地所在目录
Step5:选择欲安装的Oracle 9i产品种类 这里请勾选【Oracle 9i Database 9.0.1.0.0】,按下【Next】。 图十一:选择欲安装的Oracle 9i产品种类。 Step6:选择Oracle 9i数据库版本 如果您是第一次安装Oracle数据库系统,建议您选择【Enterprise Edition】或是【Standard Edition】。而已有安装经验的读者则可以选择【Custom】方式自行决定要安装的套件。 图十二:选择Oracle 9i数据库版本。
Step7:决定数据库基本组态 假定您上一个步骤是选择Enterprise Edition或是Standard Edition,则会出现Database Configuration的窗口。您可以依照Oracle数据库的实际用途选择最佳的组态。举例来说,如果是为了建置资料仓储所用的线上分析环境,则您可以选择使用【Data Warehouse】选项。这里我们先选择一般用途【General Purpose】。
图十三:决定数据库基本组态。
Step8:设定Oracle数据库之识别资料 Oracle数据库从8i以后的版本都是使用Global Database Name唯一识别每一个Oracle数据库。建议您设定数据库的名称为Oracle SID名称.网域名称。例如我将Oracle SID设定为ora901,数据库名称就可设为ora901.uuu.com.tw。 图十四:设定Oracle SID与数据库名称。 Step9:指定数据库所使用的字符集。 字符集(Character Set)是建立Oracle数据库时最重要的一项设定,如果设定错误的话,很可能无法正常存取中文资料喔!预设的字符集为WE8ISO8859P1,您可以由下方第三个选项的下拉式选单点选可存放中文字的 ”Traditional Chinese.ZHT16BIG5”字符集。 图十五:设定数据库所使用之字符集。 Step10:设定JDK之目录位置 最后一个设定动作是指定JDK的安装目录。请设定为您实际安装JDK的目录位置。 图十六:设定JDK之目录位置。
按下【Next】之后,Oracle Universal Installer会显示等下要安装的Oracle 9i产品摘要,确认无误之后按下【Install】就会开始档案复制与安装动作了。 图十七:要安装的Oracle产品摘要。
依照您所使用的硬件环境不同,安装的时间可能需要数十分钟,甚至一、两个钟头。麻烦的是中途还需更换光盘片,所以只能在旁边看杂志啰!
过了一会儿以后画面上将会跳出一个窗口,提醒您放入Oracle 9i的第二片安装程序光盘。如果您是从硬盘的解压缩后的资料来源所安装,则只要切换至第二片安装程序所在目录即可。但如果是从光盘片安装的读者们可能会发现此时光驱无法退片!?这时候请参考下列步骤更换光盘片:
> unmount /cdrom
> mount /cdrom 然后就可以继续安装动作了! 图十八:安装程序正在进行档案复制动作。
注:也许某些读者会发现一个问题:在执行umount指令之后却收到”device is busy”的讯息,无法卸载光驱以及更换光盘片!还记得在执行runInstaller时,我有提醒各位不要在/cdrom下执行吗?如果您切换至/cdrom下才执行runInstaller,这时光驱会被系统锁定,无法umount。除非您可以找出是哪一个process锁住光驱,利用root身分将其kill掉!否则………只好重来一次啰!!
Step11:系统安装后的组态设定 等到安装程序将所有档案复制到系统之后,安装程序会再度要求您以root身分执行root.sh程序 (位于 ORACLE_HOME 所指向的目录下,如/opt/oracle/product/9.0.1)。 图十九:进行系统环境设定之提示窗口。 图二十:利用root身分执行root.sh程序。
此时您可以在另一个终端机窗口执行root.sh (注意身分需切换为root)。该程序会询问您bin目录之位置,如果与默认值相同的话请直接按下【Enter】键,否则需输入正确的bin目录位置。执行root.sh之后再回到图十九的窗口内按下【OK】即可继续后续的设定工作。
Step12:执行Oracle数据库组态工具 系统安装的最后一个阶段会自动执行数据库组态工具程序,其中包含两个特殊的辅助精灵:Oracle网络设定辅助精灵(Oracle Net Configuration Assistant)与Oracle数据库建置辅助精灵(Oracle Database Configuration Assistant)。 图二十一:执行Oracle数据库组态工具。 第一个自动执行的是Oracle网络设定辅助精灵,您可以藉由本精灵组态Oracle数据库服务器所监听的Oracle Instance、网络服务名称(Net Service Name)以及透过网络管理其它Oracle 9i数据库之相关设定。因为我们是第一次安装Oracle 9i,所以您可以先按下【Cancel】取消本精灵的执行,往后如果需要进行相关设定,再执行netca指令就可以激活该程序。 本精灵的执行,往后如果需要进行相关设定,再执行netca指令就可以激活该程序。 图二十二:Oracle网络设定辅助精灵欢迎画面。
第二个步骤会在port 7777安装Oracle Web Server。完毕之后会激活最重要的Oracle数据库建置组态精灵(Oracle Database Configuration Assistant,简称DBCA)。这个步骤是必要的,因为目前Oracle Universal Installer只在您的系统中安装了Oracle 9i数据库服务器,尚未建置任何Oracle数据库!(感觉有点像是建置了一间图书馆,可是却里面没有任何书籍!这间图书馆能用吗?) 所以必须藉由DBCA协助我们建置第一个Oracle 9i数据库。当然了,DBCA并不是建立Oracle数据库的唯一方法,往后我会详细为大家介绍Oracle 9i数据库内部运作的原理,到时候再介绍其它建立Oracle数据库的方法以及相关注意事项。 利用Oracle Database Configuration Assistant建立Oracle 9i数据库 DBCA精灵激活之后会出现如下图之欢迎画面,请按下【Next】继续。 图二十三:Oracle Database Configuration Assistant欢迎画面。
Oracle数据库建置组态精灵主要提供三项数据库的管理工作,分别是数据库建立与删除,以及更改数据库组态设定。而Oracle 9i的DBCA还加入一项新功能:数据库模板管理功能(Manage Templates)。 这里请选择第一项【Create Database】。 图二十四:选定DBCA所要执行的工作。
Tips:数据库模板管理功能 在Oracle 9i数据库系统内,您可以利用”数据库模板管理功能”简化您的数据库管理工作。例如您可以将Oracle数据库设定储存为XML文件格式之模板档案(template),优点如下:
DBCA提供三种预设的模板文件:
图二十五:选择建立数据库需之模板文件。 建议第一次安装之读者选择【General Purpose】选项。 表一、二、三、四、五则整理出【General Purpose】选项中各参数之系统默认值,供各位读者参考。 表一:一般性参数之默认值
表二:起始参数(Initialization parameter)之默认值
表三:数据库档案相关之参数默认值
表四:控制文件之参数默认值
表五:重置交易纪录文件群组之参数默认值
如果您已经熟悉如何设定各数据库参数,不想使用以上三种模板建立数据库的话。可利用第四个选项【New Database】自行设定所有Oracle数据库参数。但如果您对于这方面不是很有经验的话,建议您尽量不要使用该选项建立数据库!
表六、七、八、九、十、十一则整理出【New Database】选项中各参数之系统默认值,供各位读者作为设定时之参考:
表六:一般性参数之默认值
表七:起始参数(Initialization parameter)之默认值
表八:控制文件之参数默认值
表九:表格空间之参数默认值
表十:数据库档案相关之参数默认值 表十一:重置交易纪录文件群组之参数默认值
也许大家会觉得很奇怪,为什么还要指定一次数据库的识别资料,在安装时Step8不是设定过一次了吗?因为一台Oracle数据库服务器允许您建置多个Oracle数据库,所以您每次执行DBCA指令激活Oracle数据库建置组态精灵时,精灵都会询问您新数据库的识别资料。这里请您确认输入的资料与Step8所输入的资料一致即可。 图二十六:确认新数据库之识别资料。
Oracle 9i数据库针对客户端的联机处理分为两种模式:
图二十七:决定数据库之运作模式。 因为是测试用环境,所以请先选择【Dedicated Server Mode】。
因为起始参数设定的优劣将会直接影响数据库之执行效能,除非您了解各参数之意义与设定方式,否则尽量不要随意更动其设定值。请直接按下【Next】进行下一步骤。 图二十八:设定数据库起始参数。
在Database Storage窗口的左半部会以树状图列出目前数据库设定下各档案的存放位置。如果您想自行更改档案储存位置,可按下右下角的【File Location Variables】按钮进行调整。 图二十九:确认数据文件存放位置。
最后您可以将DBCA所做的设定储存为一个新的数据库模板,以便未来建立新数据库时可以参考。方式是勾选【Save as a Database Templates】选项,然后在【Name】字段中输入新的模板名称。 图三十:选择是否建立新的数据库模板。
在图三十的窗口中按下【Finish】按钮后会出现如图三十一之窗口,提醒您系统中的某些重置交易纪录文件会在数据库建立时被覆写。此时无须理会此项警告,按下【Yes】即可。 图三十一:DBCA之警告讯息。
DBCA最后会将所有数据库的组态设定值整理出一张清单,按下【OK】后DBCA就会开始建置新数据库。 图三十二:确认所有数据库组态设定。
当出现图三十三之窗口时就算大功告成了!请先记下SYS与SYSTEM这两个系统管理预设帐号之密码,分别为change_on_install与manager。为了数据库安全性考量,请记得在登入数据库之后更改这两个帐号之密码。按下【Exit】后就可以结束Oracle Universal Installer安装程序了。 图三十三:数据库建置完毕之提示窗口。 测试安装后之Oracle 9i数据库 好不容易将Oracle 9i数据库系统安装完毕,接下来就来验收一下成果吧! 此时您可以利用Oracle数据库的客户端工具SQL*Plus登入Oracle数据库,方式是在操作系统下执行sqlplus指令:
> sqlplus 激活SQL*Plus后,您可以利用系统提供的使用者帐号scott(密码为tiger)登入Oracle数据库。然后试着执行以下指令查询数据库内的emp表格: SQL> select empno,ename,sal from emp;
图三十四:利用SQL*Plus登入Oracle数据库。 后记 不晓得大家是否可以顺利跟随我所说明的各项步骤完成Oracle 9i的安装?也许有部分的读者已感觉到有点吃不消了!事实上,Oracle数据库系统在众家数据库中真的算是相当复杂的,不仅是安装系统的步骤繁琐,数据库的管理技术更是博大精深!不过也因为如此,学会Oracle数据库之后身价真的是不同凡响喔! 从下一期开始,我将从基本的Oracle数据库使用方式开始介绍,正式带领各位进入Oracle 9i的世界,我们下次见! 作者简介 何致億,专长为Oracle、SQL Server 等大型数据库系统管理,资料仓储规划建置,以及数据库应用程序系统开发。拥有 MCSD、MCDBA,Oracle OCP,RHCE,SCJP,Borland JBuilder Product Certified等十余项国际认证。目前正致力于Oracle9i应用系统开发,并负责Oracle9i系列书籍中文化与Oracle Press技术校稿工作。他同时也是美商 Oracle 與 Sun Microsystems公司原厂认证讲师。您可以透过hochihyi@ms64.hinet.net与他联系。 |