Oracle 10g的安装步骤和注意事项
的有关信息介绍如下:使用 Oracle Universal Installer (OUI) 安装软件
您能够使用 Oracle Universal Installer (OUI) 安装您的 Oracle 软件。 OUI 是一个 GUI 工具,可以使您查看安装在您的机器上的 Oracle 软件,安装新的 Oracle 软件,并删除您不再需要使用的 Oracle 软件。 按照以下步骤安装 Oracle 软件并创建数据库:
1. 作为管理组小组登录到您的计算机上,此小组有权限安装 Oracle 软件并创建和运行数据库。
2. 将提供给您的数据库 CD 插入光驱。 Autorun 窗口将自动显示。 选择 Install/Deinstall Products. 注意: 如果您从 Oracle 的站点下载软件,请遵循网站上发布的如下指示。
3. Oracle Universal Installer Welcome 窗口出现。 选择 Next 开始安装您的软件
4. 在 UNIX 和 Linux 安装时,Specify Inventory directory and credentials 窗口出现。 输入安装 Oracle 软件的完整目录或接受缺省值。 输入操作系统组名称,此组具有目录写权限。单击 Next.单击 OK.
5. 出现对话框。 打开一个新的终端窗口,以 root登录,按照对话框的指示运行 orainstRoot.sh 脚本。 当脚本完成后,返回到 Oracle Universal Installer 页面并单击 Continue.
6. Specify File Locations 窗口出现。 输入安装 Oracle 软件的完整目录或接受缺省值。单击 Next.
7. Select Installation Type 页面出现。 也选择适合您的环境的企业版或标准版。单击 Next.
8. Installer 将确认您的系统符合安装和配置所选产品的最低需求。 在继续前纠正并报告问题。单击 Next.
9. Select Database Configuration 页面出现。 选择开始数据库的类型为 General Purpose、 Transaction Processing 或 Data Warehouse.单击 Next.
10. Specify Database Configuration Options 页面出现。 在 Database Naming 部分输入 Global Database Name 和 SID. 在 Database Character Set 部分选择字符集。 选择 Create database with Sample Schemas 安装示例模式。单击 Next.
11. Select Database Management Option 页面出现。 选择 Use Database Control for Database Management.单击 Next.
12. Specify Database File Storage Option 页面出现。 选择适合您的环境的 File System、Automatic Storage Management 或Raw Devices .单击 Next.
13. Specify Backup and Recovery Options 页面出现。 选择 Do not enable Automated backups 配置您自己的备份计划。单击 Next.
14. Specify Database Schema Passwords 页面出现。 选择 Use different passwords for these accounts 并输入管理员密码或选择 Use the same password for all the accounts 并输入密码。单击 Next.
15. Summary 页面出现,包含将安装的产品列表。 单击 Install 开始安装。
16. 您将看到进度窗口。
17. 出现 Configuration Assistants 页面出现。 允许 Configuration Assistants 执行。 他们配置您的网络、启动域数据库连接的 Oracle Net Services listener 进程,创建数据库并配置管理工具。
18. 出现显示数据库创建进度条的页面。
19. 当数据库创建完成后,出现包含您的数据库信息的页面。 查看此列表。 如果您想解除或更改数据库帐户的密码,您可以单击页面顶部的 Password Management . 然后单击 OK.
20. 出现对话框。 打开新的终端窗口,以 root登录并运行 root.sh 脚本。 当脚本完成后,返回到 Oracle Universal Installer 页面并单击 OK.
21. End of Installation 页面出现,此页面包含关于 Web 应用程序端口号码的重要信息。
22. 单击 Yes 退出。
23. 您已经完成了 Oracle 软件的安装和数据库的创建。
安装Oracle 10g的注意事项
建立Oracle 用户和dba 组,后来的安装与使用都要用Oracle 用户登录系统,不要用root 用户,也不要用其他用户su Oracle ;
用Oracle用户登录系统,启动x-window,开启一个终端程序。安装之前确定系统的环境变量LC_ALL=c 和 LANG=c ,这样才能使用英文界面安装,就不会出现挤在一起的中文了;
设置环境变量NLS_LANG=simplified chinese_china.ZHS16GBK,切记;
启动Oracle的安装序runInstaller ;
Oracle很大,安装起来很慢,安装系统加上创建一个库,大概需要1-2 个小时;
在Oracle系统的安装过程和数据库建立过程中,各有一个地方要设置语言,千万要注意选择。选用custom安装,有一个charset设置;
装好Oracle后,可以把环境变量改回来LC_ALL=zh_CN和LANG=zh_CN.
3.安装虚拟节点
3.1 创建虚拟节点
VMware安装好以后,进入主界面,我们就可以创建两个虚拟节点。点击File->New Virtual Machine…,在打开的窗口中,在选择所安装的操作系统时,我们选择RedHat Enterprise Linux 3,其他都选择缺省值,点击next,一直到让你输入disk size时,缺省事4G,我们改成8G,最后点击finish。这样就创建好了一个虚拟节点,取名为linux1。同样的方法,我们创建第二个虚拟节点,取名为linux2。
3.2安装linux
创建完两个虚拟节点以后,我们要开始安装linux了。在窗口的左边的Inventory框里,右键节点linux1,选择virtual machine settings…,在弹出的框中,我们选中CD-ROM,然后选择Use ISO Image,并输入相应的linux安装介质的第一个ISO文件的位置,如下图所示。选择ok以后,点击Power->Power On,相当于为节点
加电,剩下的工作与在单PC机器上安装linux过程一样。这里提一点,就是在给磁盘分区时,如果不使用LVM,那么在分区时,/boot给120M,/swap给256M,/给2900M,然后再创建一个/oracle,把剩下的空间都给/oracle。在安装过程中,当提示需要换另外一张盘时,你只要再次进入图一所示界面,更改ISO文件并确定以后,再进入虚拟机,选择提示中的ok即可。同样的方法,我们可以安装好另外一台虚拟机上的linux。
RAC里每个节点都需要两块网卡并使用固定ip,一块作为两个节点互相内部通信用,另外一块作为外部连接用。我们同样的,选择linux1,进入图一界面,选择add按钮,然后选择Ethernet Adapter,然后都选择缺省值并点击next直到结束。这样就为linux1添加了第二块网卡。同样的方法为linux2添加第二块网卡。分别启动两个节点以后,我们在linux为网卡配置ip地址。笔者的配置是linux1的内部通信ip为:134.251.0.140,外部通信ip为:134.251.114.141。而linux2的内部通信ip为:134.251.0.141,外部通信ip为:134.251.114.140。
4.安装共享磁盘
4.1 创建共享磁盘
在VMware里,共享磁盘需要使用plainmaker.exe这个工具来创建。可以到VMware GSX Server的安装目录下找该工具是否存在。如果不存在,则可以到google上搜索。很多站点提供该工具的下载。进入命令提示符,输入下面的命令来创建共享磁盘。
C:>plainmaker D:virtualossharedisk.pln 2048m
该命令运行以后,就会在D:virtualos目录下创建一个名位sharedisk.pln的共享磁盘,大小为2G。
4.2 添加共享磁盘
共享磁盘安装好以后,我们需要把它加入到前面安装好的两台linux虚拟机里。选择linux1,仍然进入到图一所示的界面里,选择左边的add按钮,在弹出的框中,选择Hard Disk,并点击next,选择方式如下面图二
所示,并点击next,输入我们刚才创建的共享磁盘名:D:virtualossharedisk.pln,然后不要点击finish,要点击advanced,选择磁盘为SCSI 1:0。如下图三所示。最后点击finish。这样,我们就为linux1节点添加了共享存储。随后,我们用同样的方法为linux2节点也添加该共享存储。
4.3 配置共享磁盘
把共享存储添加到两个节点以后,还不算完,必须修改两个虚拟机的配置文件。在每个节点所在目录下都存在一个后缀名为vmx的文件,这就是虚拟机的配置文件了,用notepad打开,把下面三行记录添加进去。注意,这三行中的每一行都不能重复,所以仔细检查一下vmx文件,确保这三行记录唯一。每个节点的配置文件都必须添加这三行记录。
disk.locking = FALSE
scsi1.sharedBus = "virtual"
scsi1:0.mode = "persistent"
到这里,我们才算是为两个节点都配置好了共享存储。分别启动两个linux节点以后,进入linux,我们可以使用如下命令来确定两个节点是否都能够找到该存储了。如果提示出有设备,则表示能够识别共享存储。
fdisk –l /dev/sdb5.设置两个节点的互相信任机制
由于RAC的节点之间需要完全无障碍的访问,因此需要设定主机名互相访问以及互相信任机制。注意:以下所有步骤都必须在两台节点上各自完成。
5.1 设置主机名
首先,RAC之间互相不能通过ip来访问,而必须使用主机名来访问,因此需要设定hosts内容。笔者设定的是节点linux1的内部访问主机名为linux1-prv,而外部访问节点名为linux1;节点linux2的内部访问主机名为linux2-prv,而外部访问节点名为linux2。需要将这些信息添加到/etc/hosts文件里去,如下所示。注意,要将127.0.0.1原来所对应的linux1改名为localhost。
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1localhostlocalhost.localdomainlocalhost
134.251.114.140 linux1
134.251.114.141 linux2
134.251.0.140linux1-prv
134.251.0.141linux2-prv
同样的,修改linux2的/etc/hosts文件,也要将127.0.0.1原来所对应的linux2改名为localhost。其他设置与linux1节点一样。设置好以后,在linux1上ping linux2,在linux2上也ping linux1,如果都通的话,说明设置无误。
5.2 设置telnet访问
(1)通常缺省都会安装telnet-client。主要确定是否安装了telnet-server软件。
[root@linux1 root]# rpm –qa | grep telnet (2)如果没有安装,则从AS3安装介质上找到该rpm包,并进行安装。
(3)安装好以后,需要启动telnet服务。输入以下命令,并从弹出的框中选中telnet后确认。
[root@linux1 root]# ntsysv (4)激活telnet服务
[root@linux1 root]# service xinetd restart (5)设置允许root进行telnet登录
[root @linux1 /root]# vi /etc/pam.d/login 将authrequiredpam_securetty.so这一行开头添加#,从而注释该行。
5.3 设置rlogin、rsh
由于在第一个节点上安装oracle软件时,oracle会自动将第一个节点上安装完毕的文件拷贝到第二个节点上,因此需要配置rlogin和rsh以及rcp等。
(1)确定是否安装了rsh-server软件。
[root@linux1 root]# rpm –qa | grep rsh (2)如果没有安装,则从AS3安装介质上找到该rpm包,并进行安装。
(3)安装好以后,需要启动rsh、rlogin、rexec服务。输入以下命令,并从弹出的框中选中rsh、rlogin、rexec后确认。
[root@linux1 root]# ntsysv (4)激活rsh、rlongin服务
[root@linux1 root]# service xinetd restart (5)修改/etc/securetty
[root@linux1 root]# echo "rexec">>/etc/securetty;echo "rlogin">>/etc/securetty;echo "rsh">>/etc/securetty (6)设置允许root进行rsh、rlogin
[root @linux1 /root]# vi /etc/pam.d/rlogin 将authrequiredpam_securetty.so这一行开头添加#,从而注释该行。
(7)在/etc目录下建立hosts.equiv文件,表示两台linux节点互相信任。
[root @linux1 /root]# vi /etc/hosts.equiv 在该文件里添加如下内容:
linux1
linux2
linux1-prv
linux2-prv
(8)在root的$$HOME目录下,建立.rhosts文件。
[root @linux1 /root]# vi .rhosts 在该文件里添加如下内容。这样,root用户就可以直接rlogin、rsh而不用输入密码。
linux1 root
linux2 root
linux1-prv root
linux2-prv root
(9)配置完以后,我们可以测试一下是否成功。
[root @linux1 /root]# rlogin linux2 [root @linux1 /root]# rsh –l root linux2 cat /etc/hosts [root @linux1 /root]# rcp /tmp/testlinux2:/tmp6.修改linux内核参数以及其他相应配置 [root @linux1 /root]# vi /etc/sysctl.conf 在该文件末尾添加如下内容:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
这里,对每个参数值做个简要的解释和说明。
(1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
(3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
(4)sem:该参数表示设置的信号量。
(5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
修改好内核以后,执行下面的命令使新的配置生效。
[root @linux1 /root]# /sbin/sysctl -p 通常,出于性能上的考虑,还需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)。方法如下:
[root @linux1 /root]# vi /etc/security/limits.conf 在该文件里添加如下内容:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
7.配置 hangcheck-timer 内核模块
Oracle9202以前,都是使用watchdog来检查系统是否挂起。从9202以后,oracle使用hangcheck-timer模块。hangcheck-timer模块被加载到内核中,能够定时检查系统是否挂起。有个可配置的参数用来表示多少时间以后系统没响应就认为是挂起。该模块在AS3中是自带的。
使用如下命令检查该模块是否存在:
[root @linux1 /root]# find /lib/modules -name "hangcheck-timer.o" 使用相应的参数加载该模块:
[root @linux1 /root]# /sbin/insmod hangcheck-timer hangcheck_tick=30hangcheck_margin=180 这里解释一下两个参数的含义:
hangcheck_tick:该参数定义了模块启动的间隔时段。其默认值为 60 秒。 Oracle建议将其设置为 30 秒。
hangcheck_margin:该参数定义了多少时间以后系统没响应就认为是挂起。以秒为单位。其默认值为 180秒。Oracle 建议将其设置为 180 秒。
检查该模块是否被成功加载:
[root @linux1 /root]# grep Hangcheck /var/log/messages 为了在linux重启以后,自动加载该模块,可以将加载模块的命令添加到/etc/modules.conf中
[root @linux1 /root]# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modules.conf8.创建oracle用户和dba组
[root @linux1 /root]# groupadd dba [root @linux1 /root]# useradd –g dba oracle [root @linux1 /root]# passwd oracle 创建安装oracle所需要的目录。
[root @linux1 /root]# mkdir –p /oracle/ora9/product/9.2 [root @linux1 /root]# chown –R oracle.dba /oracle/ora9 为oracle用户配置.bashrc文件。
[root @linux1 /root]# su – oracle [oracle@linux1 oracle]$$ vi .bashrc 将以下内容添加到.bashrc文件里。
export LD_ASSUME_KERNEL=2.4.1 export ORACLE_BASE=/oracle/ora9 export ORACLE_HOME=/oracle/ora9/product/9.2 export PATH=$$ORACLE_HOME/bin:$$ORACLE_HOME/Apache/Apache/bin:$$PATH export ORACLE_OWNER=oracleexport ORACLE_SID=rac9i1 export ORACLE_TERM=vt100 export LD_LIBRARY_PATH=$$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:$$LD_LIBRARY_PATH 以上步骤必须在两个节点上分别完成。
注意: 红色部分,在节点linux1上ORACLE_SID=rac9i1,而在节点linux2上则为ORACLE_SID=rac9i2。而蓝色部分,很多资料上只是说LD_LIBRARY_PATH=$$ORACLE_HOME/lib即可。但是经过笔者测试,只写这些是不够的,在下面srvconfig –init时会报错。必须按照上面蓝色部分的内容进行配置。
9.为共享设备划分裸设备
通常,对于RAC,我们都会使用裸设备来存放数据文件等需要共享的数据库文件。这就需要我们对共享存储划分出若干的裸设备,每个裸设备对应一个文件。
9.1 磁盘分区
我们要对共享存储进行分区,该步骤只需要在其中一个节点上完成即可。笔者划分了3个主分区(primary)和一个包含11个分区的扩展分区(extend)。注意,linux上最多只能划分15个分区。超过的部分,linux是无法识别的。对每个分区的规划如下所示:
分区名尺寸存放的文件
/dev/sdb110M用于存放Cluster Manager Quorum文件
/dev/sdb2350M回滚段表空间1:Undotbs1
/dev/sdb3350M回滚段表空间1:Undotbs2
/dev/sdb5500M系统表空间:system
/dev/sdb610MSpfile
/dev/sdb7300M临时表空间:temp
/dev/sdb8300M用户表空间:user和indx,也可以不设置该分区
/dev/sdb910M控制文件:control file
/dev/sdb1010M控制文件:control file
/dev/sdb1120M第一个节点的第一组联机日志文件
/dev/sdb1220M第一个节点的第二组联机日志文件
/dev/sdb1320M第二个节点的第一组联机日志文件
/dev/sdb1420M第二个节点的第二组联机日志文件
/dev/sdb15100MSrvconfig模块所需要的Shared Configuration文件
规划好以后,我们可以开始实际创建这些分区了。进入linux,执行如下命令进入分区界面。
[root @linux1 /root]# fdisk /dev/sdb 首先输入n,然后输入p,再输入1,回车接受缺省值,再输入+10M,这样我们就创建了/dev/sdb1。同样的方法,我们可以创建sdb2和sdb3。再次输入n,然后输入e,回车接受缺省值,再回车接受缺省值,这样,我们就创建了扩展分区sdb4,同时把剩下的空间全都给了sdb4。接下来,我们输入n,然后回车接受缺省值,再输入+500M,这样,我们就创建了sdb5。同样的方法,我们可以把剩下的所有分区都创建出来。
创建完毕以后,输入p,显示我们刚才所创建的所有分区,确认无误以后,输入w,从而保存我们所创建的分区,并更新分区表。
9.2 挂载裸设备
该步骤需要在两个节点分别进行。对裸设备的规划如下:
裸设备文件名挂载的分区存放的文件
/dev/raw/raw1/dev/sdb1Cluster Manager Quorum
/dev/raw/raw2/dev/sdb2Undotbs1
/dev/raw/raw3/dev/sdb3Undotbs2
/dev/raw/raw4/dev/sdb5system
/dev/raw/raw5/dev/sdb6Spfile
/dev/raw/raw6/dev/sdb7temp
/dev/raw/raw7/dev/sdb8user和indx
/dev/raw/raw8/dev/sdb9control file
/dev/raw/raw9/dev/sdb10control file
/dev/raw/raw10/dev/sdb11Log1-thread1
/dev/raw/raw11/dev/sdb12Log2-thread1
/dev/raw/raw12/dev/sdb13Log3-thread2
/dev/raw/raw13/dev/sdb14Log4-thread2
/dev/raw/raw14/dev/sdb15Shared Configuration
确定了裸设备的规划以后,将以下内容添加到/etc/rc.local文件。
raw /dev/raw/raw1 /dev/sdb1# Cluster Manager Quorum
raw /dev/raw/raw2 /dev/sdb2#undotbs1
raw /dev/raw/raw3 /dev/sdb3#undotbs2
raw /dev/raw/raw4 /dev/sdb5#sys01
raw /dev/raw/raw5 /dev/sdb6#spfile
raw /dev/raw/raw6 /dev/sdb7#temp01
raw /dev/raw/raw7 /dev/sdb8#user01&indx01
raw /dev/raw/raw8 /dev/sdb9#ctl1
raw /dev/raw/raw9 /dev/sdb10#ctl2
raw /dev/raw/raw10 /dev/sdb11#log1-thread1
raw /dev/raw/raw11 /dev/sdb12#log2-thread1
raw /dev/raw/raw12 /dev/sdb13#log3-thread2
raw /dev/raw/raw13 /dev/sdb14#log4-thread2
raw /dev/raw/raw14 /dev/sdb15#share configuration file
检查无误后,修改/dev/raw1、/dev/raw/raw2一直到/dev/raw/raw15这15个裸设备文件的宿主为oracle。
[root @linux1 /root]# chown oracle.dba /dev/raw/raw1 [root @linux1 /root]# chown oracle.dba /dev/raw/raw2 。。。。。。。 [root @linux1 /root]# chown oracle.dba /dev/raw/raw15 分别重新启动两个节点。启动完毕以后,运行如下命令确定裸设备的配置情况。
[root @linux1 /root]# raw -aq10.检查安装oracle所需要的linux模块以及补丁
在两个节点上分别确定以下这些rpm包是否都存在。
make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1 compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-gcc-7.3-2.96.122
compat-db-4.0.14-5
compat-libstdc++-devel-7.3-2.96.122
如果没有,则从AS3的安装介质上找到这些包并加以安装。安装好上面这些模块以后,需要打补丁,补丁号为:3006854。可以到oracle官方网站下载该补丁,发送到两个节点上以后,执行:
[root @linux1 /root]# sh rhel3_pre_install.sh
11.安装Oracle Cluster Manager
11.1 生成OCM管理文件
该OCM管理文件必须位于共享存储上,按照我们的规划,应该放在/dev/raw/raw1上。该步骤只需要在其中一个节点上执行即可。
[root @linux1 /root]# su - oracle [oracle@linux1 oracle]$$ dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=102411.2 安装OCM
[oracle@linux1 oracle]$$ su - root [root @linux1 /root]# mv /usr/bin/gcc /usr/bin/gcc323 [root @linux1 /root]# ln -s /usr/bin/gcc296 /usr/bin/gcc [root @linux1 /root]# mv /usr/bin/g++/usr/bin/g++323 [root @linux1 /root]# ln -s /usr/bin/g++296/usr/bin/g++ 检验一下gcc和g++的版本。
[root@linux1 root]# gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux7/2.96/specs gcc version 2.9620000731 (Red Hat Linux 7.32.96-122) [root@linux1 root]# g++-v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux7/2.96/specs gcc version 2.9620000731 (Red Hat Linux 7.32.96-122) 将下载下来的oracle安装介质(笔者下载的是ship_9204_linux_disk1.cpio.gz、ship_9204_linux_disk2.cpio.gz和ship_9204_linux_disk3.cpio.gz)拷贝到其中一个节点上。可以通过ftp拷贝也可以通过samba服务来拷贝。笔者个人倾向samba,很方便。拷贝完毕以后,使用如下命令解压。
[root @linux1 /setup]# gunzip ship_9204_linux_disk1.cpio.gz [root @linux1 /setup]# gunzip ship_9204_linux_disk2.cpio.gz [root @linux1 /setup]# gunzip ship_9204_linux_disk3.cpio.gz [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk1.cpio [root @linux1 /setup]# rm –f ship_9204_linux_disk1.cpio [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk2.cpio [root @linux1 /setup]# rm –f ship_9204_linux_disk2.cpio [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk3.cpio [root @linux1 /setup]# rm –f ship_9204_linux_disk3.cpio 解压完毕,在当前目录下有三个目录:Disk1、Disk2、Disk3。修改宿主信息。
[root @linux1 /setup]# chown –R oracle.dba Disk1 [root @linux1 /setup]# chown –R oracle.dba Disk2 [root @linux1 /setup]# chown –R oracle.dba Disk3 设置xhost +
[root @linux1 /setup]# xhost + 开始安装OCM
[root @linux1 /setup]# su - oracle [oracle@linux1 oracle]$$ /oracle/setup/Disk1/runInstall.sh 在界面上,选择安装oracle cluster manager。点击next,会要求你输入public node,这时你分两行输入linux1和linux2。点击next,会要求你输入private node,这时你分两行输入linux1-prv和linux2-prv。点击next,会要求输入Quorum文件,这时输入/dev/raw/raw1。点击next开始安装cluster manager软件。这个软件很小,安装很快就会结束。
11.3 配置OCM
[oracle@linux1 oracle]$$ cd $$ORACLE_HOME