redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决
写在前面:
环境建议:VM 15.5,因为15.5修复了诸多bug,可以在安装过程中省去不少麻烦
添加新的虚拟机安装redhat7.7
准备redhat7.7的安装包...百度云不让上传噢噢噢噢,这里放上iso的名字:rhel-server-7.7-x86_64-dvd.iso
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文件内容如下
[163] name=163 baseurl=http://mirrors.163.com/centos/7/os/x86_64/ gpgcheck=0 enabled=1
这里要注意的是,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++-33 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++-33 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
执行 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 = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.tcp_wmem = 262144 262144 262144 net.ipv4.tcp_rmem = 4194304 4194304 4194304
执行命令: /sbin/sysctl -p
使参数生效。
2. 修改文件/etc/security/limits.conf vim /etc/security/limits.conf
文件内容如下:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 134217728 oracle soft memlock 134217728
(四)创建Oracle的安装目录(root用户)
mkdir -p /u01/app/ chown -R oracle:oinstall /u01/app/ chmod -R 775 /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.0/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(提示没有填写邮箱)
(2)选择“Create and configure a database”,点击“Next”
(3)选择“Desktop Class”,点击“Next”
(4)在配置页面上,输入管理员密码,比如“password”,点击“Next”
(5)验证先决条件
(6)预检查通常会报很多fail
关于swap空间不足,可以采用以下方式修复
1、使用dd命令创建一个swap分区 2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000 3、格式化刚才创建的分区 4、# mkswap /home/swap 5、再使用swapon命令把这个文件分区变成swap分区 6、#swapon /home/swap 7、(关闭SWAP分区的命令为:#swapoff /home/swap) 8、再用free -m 查看已经扩容的了swap分区。 9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab 10、在文件末尾加上 /home/swap swap swap default 0 0 11、这样就算重启系统,swap分区也不用手动挂载了 12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo "swapon /home/swap" >> /etc/inittab 13、然后在看 vi 看下 /etc/inittab 14、最后一行是swapon /home/swap,这样就万事大吉了。
其他的诸如黄框框中的错误,采用(一)依赖安装中的方式进行修复,由于本机是64位,对于i386的包可以予以忽略
修复需要的安装包之后,如部分i386的没有安装,就直接点击右上角的ignore All 进行下一步即可
(七).显示的安装进度信息:
进行到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.0/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.0/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
命令
打开tnsnames.ora进行进一步的修改
orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )
==========================================================================
配置listener.ora
直接键入 netca
命令
协议选择TCP之后一路下一步即可。
打开listener.ora进行进一步的修改
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /u01/app/oracle
(十)测试监听命令
lsnrctl stop
lsnrctl start
在这个过程中,可能一般会报错,错误为:
Service "orcl" has 1 instance(s). Instance "orcl", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
此时采用如下方式进行修复:
(1)设置主机hosts映射,root下更改 vi /etc/hosts
使用hostname命令查看主机名
(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 口令已更改 已连接。
测试一下:
恭喜!!!所有操作已完成。。。
前后折腾了两三天,特此记录,以备后用