redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

写在前面:

环境建议:VM 15.5,因为15.5修复了诸多bug,可以在安装过程中省去不少麻烦

添加新的虚拟机安装redhat7.7

准备redhat7.7的安装包...百度云不让上传噢噢噢噢,这里放上iso的名字:rhel-server-7.7-x86_64-dvd.iso

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat安装完毕可能是没有图像界面的,这是因为VM自动选择了简易安装,安装图形界面的方法参考:

https://www.cnblogs.com/renzmin/p/12057667.html

配置好linux虚拟机了,接下来就可以开始安装ORACLE了.....

(1)首先,你得有ORACLE的安装包,这里附上linux oracle 64位的百度云链接

链接:https://pan.baidu.com/s/1bIR9R-JWVDhs2xXR2umZbg
提取码:8bzf

链接:https://pan.baidu.com/s/1vTabCeNGdLVwOgzyr0v-2A
提取码:82bx

(2)配置yum源

因为后边安装oracle过程中,需要导入相应的依赖包。yum是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装.

这里主要配置163yum源和epel源。完成后,后续可以通过yum install 命令安装依赖

a:配置163yum源

  • 进入源管理目录 cd /etc/yum.repos.d
  • 新建一个163.repo文件 vim 163.repo
  • 163.repo文件内容如下
[]
name=
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=
enabled=

这里要注意的是,baseurl这一项,你要到http://mirrors.163.com/centos这里,去找到你对应的redhat版本的目录,然后点os、再点x86_64(一般都有),然后用你地址栏上显示的网址替换上面的baseurl就行了

b:配置epel源

运行 rpm -vih https://dl.fedoraproject.org/pub/epel/7Server/x86_64/Packages/e/epel-release-7-12.noarch.rpm

注意,我的redhat是7server,所以如果你的版本不是7server,那你要到http://dl.fedoraproject.org/pub/epel找到你对应版本的rpm包,然后用上面的命令下载,这条命令的作用就是在/etc/yum.repos.d目录下生成epel源。

(3)关闭防火墙

//临时关闭防火墙,重启后会重新自动打开
systemctl restart firewalld
//检查防火墙状态
firewall-cmd --state
firewall-cmd --list-all
//Disable firewall
systemctl stop firewalld.service
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
//Enable firewall
systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld

建议直接关闭,否则在oracle执行到95%时会卡死

============================================================================================================================================================================

下面正式开始安装ORACLE:

(一):依赖库安装

yum install -y compat-libstdc++- elfutils-libelf-devel gcc gcc-c++ glibc-devel
yum install -y ksh libaio-devel numactl-devel
yum install -y unixODBC unixODBC-devel oracleasm oracleasmlib oracleasm-support

安装完成执行以下,以检查所需的软件包是否都安装完毕:

rpm -q binutils compat-libstdc++- elfutils-libelf elfutils-libelf-devel
rpm -q gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers
rpm -q ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat

如有提示XXXX not install

以package compat-libstdc++-33 is not installed为例

执行 yum list | grep compat-libstdc

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

执行 yum install compat-libstdc++-33.x86_64即可

(二)创建Oracle用户组和用户账号(root用户)

    # groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle

执行时去掉#

(三)配置内核参数(root用户)

1.修改文件/etc/sysctl.conf vim /etc/sysctl.conf

内容如下:

fs.file-max = 

kernel.shmall = 

kernel.shmmax = 

kernel.shmmni = 

kernel.sem =    

net.ipv4.ip_local_port_range =  

net.core.rmem_default = 

net.core.rmem_max = 

net.core.wmem_default = 

net.core.wmem_max = 

net.ipv4.tcp_wmem =   

 net.ipv4.tcp_rmem =   

执行命令: /sbin/sysctl -p 使参数生效。

2. 修改文件/etc/security/limits.conf vim /etc/security/limits.conf
文件内容如下:

oracle              soft    nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
oracle soft stack
oracle hard stack
oracle hard memlock
oracle soft memlock

(四)创建Oracle的安装目录(root用户)

mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R /u01/app/

(五)编辑Oracle用户环境(Oracle用户)

在root用户下输入 su oracle 进入oracle用户环境

编辑.bash_profile文件 vim /home/oracle/.bash_profile
.bash_profile文件内容如下:

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
#For Oracle
export DISPLAY=:0.0
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2./dbhome_1;
export ORACLE_SID=orcl;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;

重新启动Linux,选择oracle用户环境的时候,系统会根据环境变量进行配置,后边的oracle命令才能正常执行。
输入 echo $ORACLE_HOME 查看环境变量是否配置成功,如果正常输出了配置的路径,则成功,如果输出为空白,可以在本次手动执行 source /home/oracle/.bash_profile 执行环境变量的加载。但是仅在当前终端窗口有效。
(六)安装ORACLE数据库(oracle用户)

电脑重启完之后,当前为Oracle用户,

1.首先cd到包含oracle文件的盘,

解压缩:

unzip linux.x64_11gR2_database_1of2
unzip linux.x64_11gR2_database_2of2

利用unzip命令解压缩的时候,出现-bash: unzip: command not found的错误。
unzip——命令没有找到,其原因肯定是没有安装unzip。利用一句命令就可以解决了。

yum install -y unzip zip

2.键入vncserver 如果提示command not found,则在root用户下使用 yum install tigervnc-server -y进行安装

3.执行 ./runInstaller 进入安装界面

(1).取消沟-----下一步------yes(提示没有填写邮箱)

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(2)选择“Create and configure a database”,点击“Next”

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(3)选择“Desktop Class”,点击“Next”

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(4)在配置页面上,输入管理员密码,比如“password”,点击“Next”

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(5)验证先决条件

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(6)预检查通常会报很多fail

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

关于swap空间不足,可以采用以下方式修复

、使用dd命令创建一个swap分区

          、#dd if=/dev/zero of=/home/swap bs= count=

          、格式化刚才创建的分区

          、# mkswap /home/swap

          、再使用swapon命令把这个文件分区变成swap分区

          、#swapon /home/swap

          、(关闭SWAP分区的命令为:#swapoff /home/swap)

          、再用free -m 查看已经扩容的了swap分区。

          、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab

          、在文件末尾加上 /home/swap swap swap default  

          、这样就算重启系统,swap分区也不用手动挂载了

          、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令  #echo   "swapon  /home/swap" >> /etc/inittab 

          、然后在看 vi 看下 /etc/inittab

          、最后一行是swapon  /home/swap,这样就万事大吉了。

 

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

其他的诸如黄框框中的错误,采用(一)依赖安装中的方式进行修复,由于本机是64位,对于i386的包可以予以忽略

修复需要的安装包之后,如部分i386的没有安装,就直接点击右上角的ignore All 进行下一步即可

(七).显示的安装进度信息:

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

进行到68%时会报两个错误

第一个:Error in invoking target 'install' of makefile '/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/home/oracle/oraInventory/logs/installActions2014-05-21_02-20-57PM.log' for details.

解决方案:

编辑创建脚本:

# Fix ctx/lib/ins_ctx.mk

ORACLE_HOME=/u01/app/oracle/product/11.2./db_1

cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h> asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
}
__EOF__ if [[ -e "${ORACLE_HOME}/ctx/lib/ins_ctx.mk" ]]; then
sed -i -e 's/\$(INSO_LINK)/\$(INSO_LINK) -Wl,--wrap=memcpy_wrap \$(ORACLE_HOME)\/ctx\/lib\/memcpy_wrap.o/g' ${ORACLE_HOME}/ctx/lib/ins_ctx.mk
gcc -c /tmp/memcpy_wrap.c -o ${ORACLE_HOME}/ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
fi

运行脚本 并点击retry

下载路径及傻瓜式操作步骤下载链接:

第二个:Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/u01/app/oraInventory/logs/installActions2015-04-23_01-23-30PM.log' for details.

解决方案:

编辑创建脚本:

# Fix sysman/lib/ins_emagent.mk

ORACLE_SRC_INSTALL_DIR=/media/sf_uxora_share/database
cd ${ORACLE_SRC_INSTALL_DIR}/stage/Components jar_file=
for i_file in $( ls ./oracle.sysman.agent/*/1/DataFiles/filegroup*.jar ); do
unzip -l ${i_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
[[ $? -eq 0 ]] && jar_file=${i_file} && break
done unzip ${jar_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
if [[ $? -eq 0 ]]; then
sed -i -e 's/\$(MK_EMAGENT_NMECTL)/\$(MK_EMAGENT_NMECTL) -lnnz11/g' sysman/lib/ins_emagent.mk
jar -uvf ${jar_file} sysman/lib/ins_emagent.mk
fi

运行脚本 并点击retry

下载路径及傻瓜式操作步骤下载链接:

第三个:执行以上两个脚本时会出现的问题

解决linux的-bash: ./xx: Permission denied

-bash: ./xx.sh: Permission denied
解决:
chmod 777 xx.sh

Linux chmod +755和chmod +777 各是什么意思呢?

755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。

(八)安装最后步骤按提示在root用户下执行脚本.

cd /u01/app/oraInventory/
sh orainstRoot.sh
cd /u01/app/oracle/product/11.2./dbhome_1/
sh root.sh

最后点击OK即可,

至此完成了oracle的安装,以下开始配置监听器等,

==================================================================================================================================================================================

写在前面:

首先将安装完成后生成的listener.ra及tnsname.ora改个名字(不要删除,建议重命名为init_XXXX.ora),这样做的目的是后续需要使用netca自己根据需要配置这两个文件

(九)oracle安装成功后需要配置监听器,直接键入 netca命令,如果提示bash:netca:command not found ,手工执行source /home/oracle/.bash_profile,就可以进入配置监听器的用户界面了,根据需要配置监听器。

首先配置tnsnames.name

直接键入 netca命令

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

打开tnsnames.ora进行进一步的修改

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = ))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

==========================================================================

配置listener.ora

直接键入 netca命令

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

协议选择TCP之后一路下一步即可。

打开listener.ora进行进一步的修改

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2./dbhome_1)
(SID_NAME = orcl)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = ))
)
) ADR_BASE_LISTENER = /u01/app/oracle

(十)测试监听命令

lsnrctl stop
lsnrctl start

在这个过程中,可能一般会报错,错误为:

Service "orcl" has  instance(s).
Instance "orcl", status UNKNOWN, has handler(s) for this service...
The command completed successfully

此时采用如下方式进行修复:

(1)设置主机hosts映射,root下更改 vi /etc/hosts

使用hostname命令查看主机名

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

(2)执行以下命令,注册数据实例

[oracle@localhost ~]$ sqlplus / as sysdba
SQL>shutdown immediate
SQL> startup
SQL> alter system register;
SQL> quit

(3)查看结果

 lsnrctl status

输出:
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 13-MAY-2014 10:19:18

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.121)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                13-MAY-2014 10:13:32
Uptime                    0 days 0 hr. 5 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/gpdb/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.121)(PORT=1521)))
Services Summary...
Service "orcl" has 2 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

说明已经修复好了哦,至此所有配置已经完结。

==============================================================================================================================================================================

以下进行测试

#sqlplus / as sysdba
//输出: SQL*Plus: Release 11.2.0.1.0 Production on Fri Dec 20 00:52:02 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

执行:

SQL>select * from tab;

若有一大堆输入,则说明是正确的啦

以下,对安装时默认锁定的用户进行解锁,例如将scott用户解锁,密码设置为11,

具体操作步骤如下:
C:> sqlplus
请输入用户名:sys
输入口令:sys as sysdba //注意:在口令这里输入的密码后面必须要跟上 as sysdba 才可以。
SQL> alter user scott account unlock;
用户已更改.
SQL> commit;
提交完成.
SQL> conn scott/tiger
更改scott口令
新口令:tiger
重新键入新口令:tiger
口令已更改
已连接。
测试一下:

redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

恭喜!!!所有操作已完成。。。

前后折腾了两三天,特此记录,以备后用

上一篇:js generator


下一篇:IDC:2014年的十大 IT 趋势