这一章会逐步的讲解ORACLE 11g R2的安装,以及在安装过程中碰到的一些问题。我的安装环境如下:
OS: Cent OS 6.2;
Oracle 11g R2;
VMWare 7;
1. create oracle user
安装oracle不能在root用户下,需要create一个user作为dba并且安装oracle
首先create oracle需要的一些usergroup:
Oracle Inventory group
root> /usr/sbin/groupadd oinstall
Database Administrators Group
root> /usr/sbin/groupadd dba
Database Operation Group
root> /usr/sbin/groupadd oper
然后create user,并且修改user的密码。
root> /usr/sbin/useradd –g oinstall –G dba,oper oracle
root> passwd oracle
create完user后可以使用id命令查看刚刚create的user
root> id oracle
2. 安装oracle
这一步需要先转到oracle用户:
root> su – oracle
1)首先解压安装文件。
如果VMWare没有安装VMTools的话是不能直接把安装文件共享到VM中,你可以先安装好VMTools再进行copy。
但是,如果你跟我一样安装VMTools失败了的话,可以使用另一种办法,那就是把安装文件制作成ISO文件,再加载到VM的光驱中。
cd到光驱位置:
oracle> cd /media
将安装文件copy到home目录下:
oracle> cp ./linux_11g_database_1of2.zip ~/
oracle> cp ./linux_11g_database_2of2.zip ~/
解压:
oracle> unzip linux_11g_database_1of2.zip
oracle> unzip linux_11g_database_2of2.zip
unzip会将安装文件解压到当前目录的database文件夹下。
然后cd到解压后的database目录下,执行runInstaller。
oracle> cd ./database
oracle> ./runInstaller
执行runInsstaller后如无意外,图形界面就是出来,然后一跟Next就可以完成oracle的安装了。
3. 设置环境变量
oracle安装完成后,执行任何command都会提示command not found。
这是因为oracle的环境变量没有设置,linux从已经有的PATH路径下找不到oracle的command。以下命令来设置oracle需要的一些环境变量。
root> vi /etc/profile
添加如下内容:
export ORACLE_BASE=/myoracle/app
export ORACLE_HOME=/myoracle/app/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
添加完以上内容以后,查看PATH环境变量(echo $PATH)可以看到,$ORACLE_HOME/bin目录已经在了linux的PATH变量中,执行oracle的command时linux也会搜索这个目录去寻找command的执行文件了。
安装问题:
在安装的前一部分会有一个系统检查可能会出现以下问题:
>>>Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed<<<<
解决办法:
在root下执行以下命令即可以解决:xhost +
“/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory”
这是由于在64-bit的OS运行32-bit的程序里可能会出现的问题。使用yum安装32-bit的glibc。
oracle> sudo yum install glibc.i686
VM硬盘空间不够;
有一些VM默认硬盘空间可能不能满足oracle 11g R2的要求,那就需要我们手动添加一个hard disk。
首先,在VM settings里面添加一个空间足够的Hard Disk。
启动VM。
首先要找到新添加的硬盘,然后再格式化,最后Mount上。
root> fdisk –l 查看linux目前所有的硬盘,找到没有分区的那个硬盘,我的VM中没有分区的硬盘为/dev/hdb
首先对新硬盘进行格式化:
root> fdisk /dev/hdb
此处输入n表示new一个分区
此处需要选择分区的类型,是主分区还是辅助分区,我选择的是p(主分区)。
选择了主分区以后会让你再选择分区编号,也就是跟在硬盘名称后面的数字(比如选择1,则分区名为/dev/hdb1)
接下来的步骤直接回车使用默认值就OK了。
完成分区以后再执行命令 [root> fdisk –l]可以看到硬盘/dev/hdb已经进行了分区:
分区完成后,需要对分区再进行格式化,只有格式化了的分区才能进行挂载,linux才可以使用它。格式化硬盘分区命令如下:
root> mkfs –t ext3 /dev/hdb1
以上工作全都完成以后就可以对新硬盘进行挂载。
首先创建一个路径用于挂载新硬盘:
root> mkdir /hdb1
root> mount /dev/hdb1 /hdb1
由于我们会将oracle安装在这个新硬盘上,所以必需合oracle用户有这个挂载的权限,
root> chown oracle /hdb1
重启以后需要重新挂载,如果想重启后仍然使挂载有效,则需要添加一条记录到/etc/fstab.
root> vi /etc/fstab
在最后添加如下记录:
/dev/sdb1 /www ext3 defaults 1 2
(格式说明:/dev/sdb1 代表哪个分区 ext3是该分区的格式 defaults 是挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async) ,1是使用dump是否要记录,0是不要。 2是开机时检查的顺序,是boot系统文件就为1,其他文件系统都为2,如不要检查就为0)
至此,我们就会有足够的空间来安装oracle了,只要我们在安装oracle的过程中选择安装在/hdb1目录下。
环境变量都设置好了,但是执行sqlplus时还是提示找不到命令(command not found).
oracle> sqlplus /nolog
bash: sqlplus: command not found
执行如下命令则可以解决:
root> ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
[root@dg1 ~]# su - oracle
[oracle@dg1 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
Oracle can not be started, ORA-00845
Oracle 11g的Linux版本在修改了MEMORY_TARGET或者SGA_TARGET后启动可能会报错:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小:
[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 4089416 0 4089416 0% /dev/shm
Oracle在metalink的文档:Doc ID: Note:460506.1中进行了说明。解决这个问题只有两个方法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的大小。
修改/dev/shm的大小可以通过修改/etc/fstab来实现:
[root@enterprice64 ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=10240M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
~
~
"/etc/fstab" 13L, 965C written
[root@enterprice64 ~]# umount /dev/shm
[root@enterprice64 ~]# mount /dev/shm
[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 10485760 0 10485760 0% /dev/shm
[root@enterprice64 ~]# su - oracle
[oracle@enterprice64 ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Tue Oct 23 15:42:42 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 4743446528 bytes
Fixed Size 2143824 bytes
Variable Size 3892316592 bytes
Database Buffers 805306368 bytes
Redo Buffers 43679744 bytes
Database mounted.
Database opened.
修改/etc/fstab,重新mount /dev/shm,然后就可以启动数据库了。