我一直特别喜欢Linux 系统,也喜欢在Linux 下完成一些项目开发,以前一直有想法在Linux 系统上装Oracle 数据库,以前在网上找到的安装步骤很繁琐,所以我就放弃了,但是自己还是不死心,最近这几天我还是按照网上所教的步骤,一步一步的安装下来了,但是在安装过程中发现网上的文档步骤上存在错误(当然也可能是系统和软件不同导致的安装步骤不同),特别是一些技术人员在自己的博客中转载别人的文章,所以网上看到的文档几乎都是一摸一样,所以我想把自己的安装过程详细的记录下来,算作是自己的学习心得,同时也分享给大家:
一、 系统软件版本:(由于系统和软件的不同版本可能导致安装步骤,文件配置不同,所以我只介绍我所采用的版本安装过程)
软件:
Linux 版本:[ 红帽企业Linux.5.4].rhel-server-5.4-i386-dvd.iso
Oracle 版本:linux_11gR1_database.zip
我是采用Vmware 虚拟机软件为载体,将Linux 系统安装在虚拟机上,这样的好处是可以在一台电脑上运行多个系统,模拟系统之间远程连接,对于学习很有帮助。当然,对于如何在虚拟机上安装Linux 系统,在此不做详细的介绍。
二、 准备安装环境
(1) 创建必要的目录和组(以root用户登陆,用户帐户将称为 oracle,而组将称为 oinstall 和 dba。)
命令如下:
#mkdir -p /home/u01/oracle// 创建目录
#groupadd dba// 创建dba 用户组
#groupadd oinstall// 创建Oracle 安装用户组
#useradd oracle// 创建oracle 用户
#chown -g oinstall -G dba /home/u01/oracle oracle// 将oracle 用户添加到dba 和oinstall 组中
#passwd oracle // 设置密码
#chown -R oracle:oinstall /home/u01 把u01 目录赋予oracle 用户oinstall 组
(2) 安装和更新必要的软件包
注意:Linux 的软件包之间有的存在依赖关系,所以有些软件包之间安装一定要有顺序,否则会提示错误,导致安装失败,我下面列出的软件包安装顺序是经过我的试验的,网上的文档存在错误,大多在这里,一般是安装顺序不对,导致安装失败。
安装顺序:(这些软件包在Linux 系统镜像文件中都可以找到:光盘镜像中server 文件夹中都可以找到)
binutils-2.17.50.0.6-12.el5.i386.rpm
compat-libstdc++-33-3.2.3-61.i386.rpm
elfutils-libelf-0.137-3.el5.i386.rpm
elfutils-libelf-devel-0.137-3.el5.i386.rpm
kernel-headers-2.6.18-164.el5.i386.rpm
glibc-headers-2.5-42.i386.rpm
glibc-devel-2.5-42.i386.rpm
libgomp-4.4.0-6.el5.i386.rpm
gcc-4.1.2-46.el5.i386.rpm
libstdc++-devel-4.1.2-46.el5.i386.rpm
gcc-c++-4.1.2-46.el5.i386.rpm
glibc-common-2.5-42.i386.rpm
glibc-2.5-42.i686.rpm
libaio-0.3.106-3.2.i386.rpm
libaio-devel-0.3.106-3.2.i386.rpm
libgcc-4.1.2-46.el5.i386.rpm
libstdc++-4.1.2-46.el5.i386.rpm
make-3.81-3.el5.i386.rpm
sysstat-7.0.2-3.el5.i386.rpm
unixODBC-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm
(注意:在oracle 官方给出的安装需求文档,有些rpm 包没有提到,但是这些包可能是其他一些必须包所依赖的包,也必须要安装才可以。另外,对于不同版本的redhat 镜像系统,rpm 包版本可能不同,但是一定是这些名称的包。还有,Linux 安装光盘中有两个glibc-2.5-42 包一个是i386.rpm 另一个是i686.rpm ,安装时安装i686.rpm i386.rpm 会与其他包产生冲突,导致安装失败。)
(3) 设置linux内核打开修改/etc/sysctl.conf,在最后加入以下内容:
(vi /etc/sysctl.conf 打开, 加完以后安 ESC +:+w 保存,ESC + : + q 退出)
kernel.shmall = 268435456
kernel.sem=1055 32000 100 128
kernel.shmmax=2147483648
kernel.shmall = 2097152
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.core.optmem_max = 65535
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 262144
fs.file-max = 6553600
net.ipv4.ip_local_port_range = 1024 65000
注意:结束后#sbin/sysctl -p 执行一下,使系统生效
(4) 修改 /etc/security/limits.conf,加入内容(修改方法同上)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
(5 )修改/etc/profile, 加入内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
注意:在进行完这步操作之后,有些时候会出现一些小错误,错误现象是我们使用su命令在root和oracle用户之间切换时会提示下列错误:
-bash: [oracle: command not found
-bash: [root: command not found
解决这个问题很简单:在修改profile文件时第一行、第二行中
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
中括号与内容之间一定要有空格,如果没有空格,会提示上面的错误的。
例如if [$USER = "oracle"]; then
if [$SHELL = "/bin/ksh"]; then
和上面比较一下,错误很明显的。
(6)编辑 /etc/pam.d/login
添加以下行:
session required /lib/security/pam_limits.so
session required pam_limits.so
以上六步的完成均是在root用户登录下,下面将用户切换到oracle用户
使用命令#su – oracle切换用户
打开 v .bash_profile 加入(/home/oracle)
ORACLE_BASE=/home/oracle/app
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.1.0/db_1
ORACLE_SID=orcl(设定SID名称,一般为数据库名字)
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
三、进行安装
进入root 用户把你下的linux_11gR1_database.zip 用unzip linux_11gR1_database.zip
解压出来得到database, 把它移动到/home 、u01 目录下
#mv database /home/u01
#chown -R oracle:oinstall /home/u01/database
这时使用oracle 用户登录到Linux 图形用户界面
su oracle 在database 目录下$./runInstaller
(注意:有些文章提示在命令行中执行./runInstaller 会提示如过提示diaplay 变量错误,需要执行#xhost + , #xhost + localhost 两个命令,不过本人安装中没有遇到这个问题。)
在接下来的安装中,我都是采用默认安装的方式,默认装时Linux系统默认将程序安装在/home/oracle目录中
在安装过程中会弹出一个要求执行oraInstRoot.sh 和root.sh 的提示框, 可在命令行窗口中, 以ROOT 用户执行这两个文件,在图形界面打开命令窗口,切换到root 用户,按照提示进入两个文件所在目录,分别执行两个文件 ./oraInstRoot.sh ./root.sh 。在安装的过程中,在安装路径的选择上本来可以更改安装目录,将Oracle 安装在我们新建的目录/home/u01/oracle 下的,但是我在安装时疏忽了这一点,系统进行了默认方式安装,安装路径在/home/oracle/app 但是这并不影响使用。如果有人更改了默认的安装路径,那么在/home/oracle 中./bash_profile 文件中
ORACLE_BASE=/home/oracle/app 、
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.1.0/db_1
中内容要进行相应的修改。
经过一段时间的等待之后,oracle数据库就已经安装完毕了。
四、一些小的错误的修正(注:这些操作均是在oracle用户登陆下完成的。)
(1 )安装完毕之后,我们可以退出Linux 的X-windows 环境了,继续在控制台上以命令行的方式操作,当我们输入sqlplus /nolog 时会提示下面的错误
cannot restore segment prot after reloc: Permission denied
这是SELinux 搞的鬼,解决办法有两个
1. 使用chcon 命令
示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
(注:这种方法本人没有试验,不知道效果。)
2. 禁止掉SELinux
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled
(注:本人采用的是这种解决方法,解决了这个问题。)
(2 )在安装完oracle 之后如果想要使用数据库必须要启动数据库的监听器,一般我们安装完数据库之后就已经建立好了监听器,我们只要启动就可以了,在控制台使用以下命令;
A 、lsnrctl start // 启动监听器命令
B 、lsnrctl stop // 关闭监听器命令
C 、lsnrctl status // 查看监听器的状态
(3 )在使用sqlplus 连接数据库时还有可能出现如下错误:
提示ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
有人说解决这个问题的办法是改sqlnet.ora 将认证方式改为none 也没有用。这一点我试过不好用的,不敢恭维,也许遇到的问题不同吧。我采用的一下方法解决的:输入一下命令
1 、sqlplus /nolog
2 、conn / as sysdba
3 、startup
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com