想在Linux系统把Oralce安装好,确实是个不小的挑战,最起码的,首先要对Linux系统有所了解,不说多的,简单的一些配置文件和常用命令总要知道,要不真不知道如何下手。今天按书本的启示,和网上别人写的文章还有Oralce官方的帮助感觉都对我帮助甚微啊。。。不过感觉最后还是在QQ群和百度的帮助下,当然书本和那些文章都起到了作用,终于把Oracle安装好了。
所以在这里,我准备把安装步骤详细点写清,网上看了半天,都只会说,有代码的,象对Linux了解不深的根本看不明白,好象看他们写的东西都是高手看的一样,都高手了,还用得着天天百度嘛。。。
1、最优灵活体系结构(Optimal Flexible Architecture,简称OFA)
我所理解的OFA其实就是一种Oracle的一种规范。其意义就是用一种统一的给文件和文件夹的规则,和文件存放目录的规则做一个约定。这样,我们不管是安装多个版本的Oracle Database也好,因为目录规范,命名规范,这样软件不会冲突,方便管理,文件也方便查找,好处大大的有。
在Linux/Unix平台上,建议遵循的OFA的命名模式包含下列内容:
- 使用通用串常量和变量值的组合来命名所有装载点,这个组合的形式为/pm ,其中p 是一个串常量,m 是一个变量值。例如:/u01、/u02、/ora01、/ora02都是不错的选择。
- 在装载点之内,采用形式 /pm /h /u /product/v 命名安装Oracle软件的目录,其中/pm 是如前所说的装载点,h 是指示用途的标准目录名(如app、db、home),u 是目录拥有者的名称,product是一个字面值,v 指定目录中安装的Oracle产品的版本。例如:操作系统用户oracle拥有的Oracle 10G数据库的位置可以为/ora01/db/oracle/product/10.2.0,Oracle 8I数据库的位置则为/ora02/db/oracle/product/8.1.7。
- 在目录结构之内可以创建一个admin目录,并且在目录内创建存储Oracle所使用的特定文件类型的其他子目录。目录完整路径名为/pm /h /admin/d /a ,其中admin是字面值,d 是数据库的系统标识符(System Identifier,简称SID),a 是用于存储特定管理文件类型的子目录。常见的有:
子目录名 用途 示例 adhoc 存储数据库专用的SQL和PL/SQL脚本 /ora01/db/admin/ocp10g/adhoc arch 存储已归档的重做日志文件 /ora01/db/admin/ocp10g/arch adump 存储审计文件的目录(需要首先设置AUDIT_FILE_DEST)参数 /ora01/db/admin/ocp10g/adump bdump 存储后台进程跟踪文件与警告日志文件。使用BACKGROUND_DUMP_DEST参数进行设置 /ora01/db/admin/ocp10g/bdump cdump 存储核心堆积文件。使用CORE_DUMP_DEST参数进行设置 /ora01/db/admin/ocp10g/cdump create 存储用于创建数据库的脚本。在创建新的数据库时,DBCA将创建数据库的脚本设置在这个目录中 /ora01/db/admin/ocp10g/create exp 建议存储使用Export实用程序或Oracle Data Pump创建的数据库导出文件的目录 /ora01/db/admin/ocp10g/exp logbook 存储数据库历史与状态日志文件 /ora01/db/admin/ocp10g/logbook pfile 用于启动数据库的参数文件被放置在这个目录中 /ora01/db/admin/ocp10g/pfile udump 存储用户进程跟踪文件。使用USER_DUMP_DEST参数进行设置 /ora01/db/admin/ocp10g/udump
Oracle数据文件的根是一个形式为/pm /q/d 的字典,其中/pm 是装载点,q是一个字面值,这个字面值包含Oracle数据库结构的字典(例如:oradta、oracle),d 则是数据库的名称。例如:/ora01/oradata/ocp10g和/u01/oracle/mydb都是正确的形式。
Oracle数据库文件的推荐命名的约定:
子目录名 用途 命名约定 控制文件 用于存储与数据库、数据库文件及其状态相关的信息 推荐为control.ctl或controlnn .ctl,其中nn 是一个数字(例如control01.ctl) 重做日志文件 在数据库数据发生变化时存储这些变化的记录 推荐为redonn .log,其中nn 是一个数字(例如redo01.log) 数据文件 存储数据库数据 推荐为tablespacenamenn .dbf,其中tablespacename 是Oracle数据库逻辑存储结构的名称,nn 是一个数据(例如system01.dbf、undo01.dbf)
2、使用Oracle Universal Installer 安装Oracle
现在要开始我们的重点了,就是Linux下Oracle Database的安装,我所应用的操作系统平台为Red Hat Enterprise Linux AS 5,如果不会的请参考本博“本地硬盘安装Red Hat Enterprise Linux AS 5”。
2.1、验证系统要求
这个不想多说和多做,有个自己感觉还不错的电脑就OK了,硬是要搞个256M的内存来安装个Oracle我也无语。
# grep MemTotal /proc/meminfo MemTotal: 961480 kB # grep SwapTotal /proc/meminfo SwapTotal: 2031608 kB |
Oracle官方要求所需最小 RAM 为 512MB,而所需最小交换空间为 1GB。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 10g 软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。要检查系统上的可用磁盘空间,运行以下命令:
# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 71G 5.2G 62G 8% / /dev/hdb1 99M 12M 82M 13% /boot tmpfs 471M 0 471M 0% /dev/shm |
好了,我的硬件当然是OK拉。
2.2、创建用户帐户和用户组
# groupadd oinstall # groupadd dba # useradd -m -g oinstall -G dba oracle # id oracle uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba) |
设置帐户oracle的密码:
# passwd oracle Changing password for user oracle. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. |
2.3、创建Oracle Database安装目录
# mkdir -p /ora01/db/oracle # mkdir -p /ora02/oradata # chown -R oracle:oinstall /ora01/db/oracle /ora02/oradata # chmod -R 775 /ora01/db/oracle /ora02/oradata |
2.4、配置Linux内核参数
Oracle Database 10G 需要以下所示的内核参数设置。其中给出的是最小值,因此如果您的系统使用的值较大,则不要更改它。
需要的参数最少值为:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
首先,我们不用急着改,先查看一下吧。
# sysctl -a | grep shm kernel.shmmni = 4096 kernel.shmall = 268435456 kernel.shmmax = 4294967295 # sysctl -a | grep sem kernel.sem = 250 32000 32 128 # sysctl -a | grep file-max fs.file-max = 92438 # sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 |
还行吧,都比较大呢。电脑好,没办法。
2.5、oracle用户的环境变量
要使用 Oracle 产品,应该或必须设置几个环境变量。对于数据库服务器,建议设置以下环境变量:
ORACLE_BASE
ORACLE_HOME
ORACLE_SID
PATH如果您在同一服务器上安装了多个 Oracle 产品或数据库,则 ORACLE_HOME、ORACLE_SID 和 PATH 变量可能会更改。ORACLE_BASE 变量不应更改,并可以在需要时在您的登录配置文件中设置它。
(哎,Linux会一点,又不是很厉害,环境变量这东西又是安装Oracle的一个重点,教程、书本,网文都没写清怎么搞,郁闷,当然拉,也是自己的水平问题,但写的那些根本就不合适初学者了嘛。搞的我研究半天,看我写的多清楚。)
以下操作,以oracle的身份登录Linux操作(请注意前面的#已经换成了$)。
$ vi .bash_profile |
进入编辑模式中,按 I 键进行编辑操作,在适当部分加入环境变量。
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs ORACLE_BASE=/ora01/db/oracle; export ORACLE_BASE ORACLE_SID=ocp; export ORACLE_SID ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db export ORACLE_HOME PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin; export PATH |
改完以后,按ESC键,退出编辑模式,再输入 :wq(保存退出)
2.6、安装Oracle
终于到达这一步了,真辛苦,首先要做的是把Oracle Database 10G放到Linux系统上面来,这不用教了吧,很多种方法,可以用远程连接软件发送压缩包过来,可以用U盘、移动硬盘、双硬盘的方式直接Copy到Linux电脑上(Fat32格式应该是直接能挂载,NTFS格式不能挂载的请参考本博“Linux下挂载NTFS格式分区”)
Oracle 的官方下载地址:http://www.oracle.com/technology/global/cn/software/products/database/index.html
好了,开始安装吧(让我们把安装文件放在/DB文件夹里吧),不过,这又有个小问题(当然不是大问题拉),因为Oracle Database虽说是跨平台的数据库,但真正由Oracle官方认证过的系统却没几个,所以当我们直接进入安装目录安装的时候就会发现:
$ cd /DB $ ./runInstaller 正在启动 Oracle Universal Installer... 正在检查安装程序要求... 检查操作系统版本: 必须是redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2 未通过 <<<< 正在退出 Oracle Universal Installer。您可以在 /home/oracle/oraInventory/logs/installActions2008-09-13_03-30-02AM.log 中找到本次会话的日志 |
这里我们有2种解决方式:
第一种最快的,最方便的,就是多打几个字母的方法,呵呵,加参数。
$ ./runInstaller -ignoreSysPrereqs |
第二种方法,修改参数文件,让它认为我们的系统是认证系统。
$ cd /DB/install $ vi oraparam.ini |
编辑方法前面说过了,我们找到
[Certified Versions] Linux=redhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2 |
在中间把我们的系统版本加进去,就OK了。
[Certified Versions] Linux=redhat-3,redhat-5, SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2 |
哦,My God!又出问题,安装Oracle真是很艰难啊。
Oracle的安装界面好不容易是出来了,可连个字都没有(有的人说个是口口口,而我没发生这种情况,我的是空白),辛苦啊,改英文吧,用英文起码还能看到个字母在上面。(ITPUT论坛里也有牛人们把中文搞出来了,不过过程之复杂,我想也是一定的,再说学Oracle看点英文也不算什么,加油吧!)
于是,我们这样设置:
$ LANG="en_US" $ ./runInstaller |
终于OK,虽然说是洋文的安装界面,但辛苦这久,终于是出来东西了,让我们好好享受,这Next,Next带来的快感吧。这里我没办法做到Linux下的截图,放上Windows的载图。(这图是中文的,正好对着Linux下的英文翻译)。
这里我们选高级安装。
默认的,企业版。
上面写的是Windows的路径,Linux下可不是这样,如果环境变量先前配置好的话,在这会自动写上的(/ora01/db/oracle/product/10.2.0/db)
安装条件检查,前面如果一直是按步骤来的话,一般是不会出问题的,如果有问题,检查下前面哪里没搞好吧。
在安装Oracle的时候就创建一个数据库吧。我们选第一个。
接受默认值 Create a starter database 和 General Purpose 。
环境变量的SID配置的话,这里就会自己写上去,选择下面的 Create database with sample schemas 。
Use Database Control for Database Manangement 。
选择File System ,我们特意建了一个/ora02/oradata存放数据库文件。
Do not enable Automated backups 。
设置密码,选下面的,可以给所有的设置一个统一的密码,方便管理。
摘要列表,这些都是要准备安装的,点击Install之后开始。
OK,到这里可以暂时放松一下了。(为什么是暂时。。。因为还有工作要做。)
2.7、执行脚本
安装全是自动化,真方便,到最后时刻会有个窗口弹出,大堆英文,不过意思很明白,叫你以root身份登录,并执行2个脚本orainstRoot.sh和Root.sh(别人和我的版本不同吗?为什么到处都是说只执行一个orainstRoot.sh)。
$ su 口令: # cd /ora01/db/oracle/oraInventory/ # ./orainstRoot.sh Changing permissions of /ora01/db/oracle/oraInventory to 770. Changing groupname of /ora01/db/oracle/oraInventory to oinstall. The execution of the script is complete # /ora01/db/oracle/oracle/product/10.2.0/db/ # ./root.sh Running Oracle10 root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /ora01/db/oracle/oracle/product/10.2.0/db Enter the full pathname of the local bin directory: [/usr/local/bin]: |
说明:
orainstRoot.sh 给oracle安装文件夹读写权限的
root.sh 设置环境变量
OK,到这一步,根本上Oracle 10G的安装过程基本结束了,最后一步时,记下摘要中显示的 URL,单击 Exit。
感觉我写的还是很明白吧?中间的要怎么安装起码都很明显表示出来了,应该算是不错的教程了。如果还有不明白的,这里给大家一个Oracle官方的中文文档(感觉我的其实还好些,呵呵)
Oracle 官方中文安装文档:http://www.oracle.com/technology/global/cn/pub/articles/smiley_10gdb_install.html