但是当你在shell中使用su -命令切换了用户,并试图运行一个GUI应用程序时,X Window系统将报告显示失败,失败的原因是新用户下DISPLAY变量没有设置。执行
export DISPLAY=:0.0
设置好DISPLAY变量后,启动GUI程序还是失败,失败的原因在于X Window图形系统的C/S架构机制。
本地显示屏由系统最开始登录的用户所拥有,当其它用户下的GUI应用程序向X Server请求使用该显示屏资源时,将不被授权,导致显示失败。这时需要以显示屏所有者用户执行xhost命令来授权本机的其它用户使用本地显示屏资源。
xhost是Linux系统用来控制X Window系统服务端访问权限的命令。
xhost [+|-] Name
+|-表示添加或删除某主机的访问权限,Name表示添加或删除的主机名称,可以是IP地址。
xhost 将显示访问X服务器的当前主机名,并显示一条消息表明访问是否已启用;
xhost + 将使所有主机的所有用户都能访问X服务器,即访问控制不起作用;
xhost + local将使本地的所有用户都能过访问X服务器;
xhost + IP 将是IP上的所有用户都能访问X服务器;
xhost + root:user@domain 将使domain上的root用户能够访问X服务器。
在启动OUI安装之前,还有一些准备工作需要完成。
Oracle不能以系统的root用户安装,必须新建另外一个专门用于安装Oracle的系统用户,该用户是Oracle软件的所有者,Oracle建议创建一个名为oracle的用户,并创建一个oracle用户归属的Oracle安装用户组(oinstall),oinstall组的成员将拥有OracleInventory目录的所有权限。
OracleInventory是用于Oracle用来管理所有Oracle产品组件安装与卸载的一套配置文件,OUI通过它来实现众多Oracle产品组件的安装与卸载,通过它OUI可以在同一台机器上同时安装多个Oracle10gR2数据库系统,或者多个不同版本的Oracle数据库系统,或者Oracle的多个产品组件,多个数据库系统之间或者多个Oracle产品组件之间通过不同的安装路径(OracleHome目录)来相互区分。/etc/oraInst.loc配置文件中存储了已创建的OracleInventory目录和oinstall用户组。
另外还需要创建OSDBA用户组和OSOPER用户组(可选),OSDBA用户组是数据库管理员群组,该用户组的成员都拥有数据库的SYSDBA权限,Oracle建议OSDBA群组名为dba,OSOPER用户组是数据库操作员(使用者)群组,该用户组的成员都拥有数据库的SYSOPER权限,默认OSDBA组成员也拥有SYSOPER权限,Oracle建议OSOPER群组名为oper。
Oracle所有者用户oracle必须同时为oinstall、dba和oper组的成员,且oinstall组为第一群组。
同时Oracle安装中还有几个概念需要清楚,OracleBaseDirectory、OracleHomeDirectory和OracleInventoryDirectory。
OracleBaseDirectory是Oracle安装的顶级目录,OralceHomeDiretory和OracleInventoryDirectory默认都是以OracleBaseDirectory为相对路径进行扩展的,该目录中可安装多个Oracle产品组件(例如Oracle数据库系统、Oracle客户端),不同的Oracle安装可以使用不同的OracleBaseDirectory,也可以使用同一个OracleBaseDirectory,但是同一机器上不同用户的Oracle安装必须使用不同的OracleBaseDirectory。
OracleHomeDirectory是具体的Oracle产品组件的安装目录,不同的Oracle产品组件、相同Oracle产品组件的不同版本必须安装在不同的OracleHomeDirectory。OracleHomeDirectory的配置信息存放在/etc/oratab中。
OracleInventoryDirectory就是存放OralceInventory所有配置信息的目录。
下面是一组常见的Oracle各目录路径:
OracleBaseDirectory:/opt/oracle
OracleInventoryDirectory:${OracleBaseDirectory}/oraInventory
OracleHomeDirectory:${OracleBaseDirectory}/product/10.2.0/db_1
好了,现在我们创建好一个属于root群组的oracle安装用户oracle(可以通过执行id oracle来检查oracle用户是否已经存在),OracleInventory群组、OSDBA群组、OSOPER群组都为root群组。
执行
xhost +
su - oracle;
export DISPLAY=:0.0
进入Oracle安装目录,执行
./runInstaller
启动OUI界面。
根据Oralce提供的文档,Oralce10gR2只支持在
Enterprise Linux AS/ES 3.0 (Update 4 or later)
Linux 4.0
Linux Enterprise Server 9.0 with SP 2 or later
Asianux 1.0
Asianux 2.0
等操作系统上进行安装,可以通过执行
cat /etc/issue
来查看具体的操作系统版本信息。
在10SP2上安装会提示操作系统检查不通过,可以通过修改/etc/SuSE-release文件来暂时“欺骗”一下OUI安装程序,以完成Oracle10gR2的安装。
OUI启动后,选择Advanced Installation:
第一次执行OUI安装Oracle产品时,会要求你指定OracleInventory群组和OracleInventoryDirectory,取root群组和/opt/oracle/oraInventory目录:
选择安装Enterprise Edition:
OracleHomeDirectory设置为/opt/oracle/oracle/product/10.2.0/db_1:
选择只安装Oracle数据库系统,不创建Oracle数据库实例:
OSDBA、OSOPER设置为root群组:
选择安装,安装完成之后需要在shell中以root用户手工执行两个脚本:
至此,Oracle10gR2安装完成,不要忘了将/etc/-release文件修改回来。
安装完Oracle数据库系统后,需要手工设置ORACLE_HOME,ORACLE_SID等环境变量(这些安装Oracle的时候默认都是不会自动设置的),另外为了方便使用sqlplus等Oracle工具,最好将${ORACLE_HOME}/bin手工加入到数据库用户的PATH中(这在安装Oracle的时候默认也不会自动添加)。