CentOs7 内网环境下离线安装Oracle

目录

0、配置要求

1、关闭防火墙

2、关闭selinux

3、安装各类依赖

4、创建Oracle用户

5、配置内核参数与资源限制

6、修改系统配置

7、创建 oracle 目录

9、创建安装脚本

10、安装

11、相关问题与解决方案

(1)bash: sqlplus: command not found

(2)runinstaller: line 97 /db/database/install/.oui: cannot execute binary file

(3)Insufficient disk space on this volume for the selected Oracle home.

(4)bash: lsnrctl: command not found

(5)ORA-01031: insufficient privileges

(6)ORA-00205:error in identifying control file, check alert log for more info


本文详细介绍了如何在内外环境下,在CentOs上离线安装Oracle。

0、配置要求

        我设置的 CPU 为 4核,内存为 4G,硬盘位 40G。

        像内存和CPU核数调整比较方便,存在试错空间;硬盘的空间需要设置的高些,我第一次设置的 20G,安装过程会报错空间不足,而且之后解决过程也很繁琐,好在我的 centos 是刚安装的,我直接重装系统了。

1、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2、关闭selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  
setenforce 0

3、安装各类依赖

rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc 
glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel 
libXi libXtst make sysstat unixODBC unixODBC-devel

        由于是无网环境,安装较为复杂,可以先不进行这一步,先安装oracle,之后缺依赖会报错的,到时候缺啥补啥我在安装过程中只安装了GCC就满足了所有需求(新安装的centos)。下附离线的gcc安装包:

gcc与g++离线安装包-Linux文档类资源-CSDN文库https://download.csdn.net/download/qq_37437983/85445027

4、创建Oracle用户

        需进入 root 用户进行创建

su
groupadd -g 502 oinstall
groupadd -g 503 dba
groupadd -g 504 oper
groupadd -g 505 asmadmin
useradd -u 502 -g oinstall -G oinstall,dba,asmadmin,oper -s /bin/bash -m oracle

        设置 oracle 用户的密码

passwd oracle

5、配置内核参数与资源限制

        vi /etc/sysctl.conf。注意这只是官方要求的最低要求,可根据需要进行增大。

fs.aio-max-nr = 1048576
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
# 使参数生效
sysctl -p

6、修改系统配置

        vi /etc/security/limits.conf 

oracle          soft      nproc   2047
oracle          hard      nproc   16384
oracle          soft      nofile  1024
oracle          hard      nofile  65536
oracle          soft      stack   10240

7、创建 oracle 目录

        创建根目录需要注意权限的问题,最简单的是在linux根目录重新开一个分支。如下所示:

# Oracle 根目录
mkdir -p /Oracle
# 用户oracle赋权读写这个文件夹
chown -R oracle:oinstall /Oracle
# 安装目录
mkdir -p /Oracle/oracle

        将Oracle的两个压缩包解压到/Oracle目录,解压后的目录结构如下:

8、修改环境变量

        修改 Root 环境变量

        vi /etc/profile

export ORACLE_BASE=/Oracle/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/dbname
export ORACLE_SID=ORACLE
export ORACLE_UNQNAME=ORACLE
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib

        使环境变量生效:source /etc/profile

        --------------------------------------     

        修改 oracle 账户环境变量

         vi /home/oracle/.bash_profile

export ORACLE_BASE=/Oracle/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/dbname
export ORACLE_SID=ORACLE
export ORACLE_UNQNAME=ORACLE
export NLS_LANG=.AL32UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib

        使环境变量生效:source ~/.bash_profile

9、创建安装脚本

        在压缩包解压后的 database 目录下新建安装脚本:vi install.sh

        之所以需要创建安装脚本存放安装参数,而不是使用 /response/db_install.rsp 文件,是因为安装过程中会报如下错误:

        The given response file /data1/database/response/myinstall.rsp is not valid.

        这个错误貌似需要在 db_install.rsp 中登录 oracle 的账号密码才可解决。

        以下的脚本需要注意 Oracle 路径 

./runInstaller -silent \
oracle.install.option=INSTALL_DB_AND_CONFIG \
ORACLE_HOSTNAME=localhost \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/Oracle/oraInventory \
SELECTED_LANGUAGES=en \
ORACLE_HOME=/Oracle/oracle/product/11.2.0.3/dbname \
ORACLE_BASE=/Oracle/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=oper \
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE \
oracle.install.db.config.starterdb.globalDBName=prod \
oracle.install.db.config.starterdb.SID=ORACLE \
oracle.install.db.config.starterdb.characterSet=AL32UTF8 \
oracle.install.db.config.starterdb.memoryOption=true \
oracle.install.db.config.starterdb.memoryLimit=1024 \
oracle.install.db.config.starterdb.installExampleSchemas=false \
oracle.install.db.config.starterdb.password.ALL=Root_root123 \
oracle.install.db.config.starterdb.control=DB_CONTROL \
oracle.install.db.config.starterdb.automatedBackup.enable=false \
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE \
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/Oracle/oracle/data \
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/Oracle/oracle/fast_recovery_area \
oracle.install.db.config.starterdb.automatedBackup.enable=false \
DECLINE_SECURITY_UPDATES=true

10、安装

        执行安装脚本后,中途可能会报错,此时可以根据提示的日志位置,去查看日志,并进行解决。如果之前没有安装依赖,会在这里报错,可以去日志里看看缺啥。反正我安装了 GCC 之后就不再报错了。对了,如果磁盘啥的空间不足也会在这里报错。

        日志文件中需要关注 WARNING 和 FATAL

        时间稍长,精心等待。若安装成功,则会显示如下: 

11、相关问题与解决方案

(1)bash: sqlplus: command not found

        在 oracle 用户中无法运行 sqlplus。sqlplus是位于 $ORACLE_HOME/bin 目录下的可执行文件。有如下两个方向排查问题:

        a. 查看 oracle 用户下的 $ORACLE_HOME 环境变量路径是否正确。本次安装过程中该路径地址为:

[oracle@localhost home]$ echo $ORACLE_HOME
/Oracle/oracle/product/11.2.0.3/dbname
[oracle@localhost home]$ echo $ORACLE_BASE/
/Oracle/oracle/

        b.  添加 sqlplus 执行文件软连接到 /usr/bin 中(root 用户下)

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

(2)runinstaller: line 97 /db/database/install/.oui: cannot execute binary file

        权限问题,不要将 oracle 的安装目录放在子目录中,即使将 oracle 用户对该目录赋权了,oracle用户也没有权限通过父目录找到子目录。具体做法参考 第七节 目录的创建。

(3)Insufficient disk space on this volume for the selected Oracle home.

        额,没解决,重装系统了。如果对自己有信心,且时间充足,可以尝试解决。其实思路也不难,增加centos主机额外的磁盘,之后进行分区扩展磁盘空间(但我没成功,系统直接崩了,也没想细想,不如重装系统快些,主要也还是我的centos上啥也没有,嘿嘿)

        参考:Linux_虚拟机增加一块新磁盘并设置磁盘挂载_大数据面试宝典的博客-CSDN博客_linux虚拟机新加一块硬盘https://blog.csdn.net/weixin_43893397/article/details/102599330

(4)bash: lsnrctl: command not found

        解决方法同(1)

(5)ORA-01031: insufficient privileges

        原因:无权限。正常本地登陆的时候应该不需要授权的,检查sqlnet.ora文件,文件路径为$ORACLE_HOME/network/admin/sqlnet.ora。在linux下,在 SQLNET.AUTHENTICATION_SERVICES 的值设置为ALL,或者不设置的情况下,OS验证才能成功;ORA-01031: insufficient privileges问题解决办法 - 博客 - 编程圈 (bianchengquan.com)https://www.bianchengquan.com/article/192189.html

(6)ORA-00205:error in identifying control file, check alert log for more info

        该错误是在 startup 数据库的时候报错。通过查看日志发现如下报错。

Additional information: 8
Additional information: 13763
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/Oracle/oracle/oradata/oracle/control01.ctl'
ORA-27086: unable to lock file - already in use
Linux-x86_64 Error: 11: Resource temporarily unavailable

         日志显示控制文件正在被使用中。网上找的方法五花八门。我想到的时直接杀死正在使用该文件的进程。

[root@localhost ~]# lsof /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/502/gvfs
      Output information may be incomplete.
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
oracle  13759 oracle  257u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  13761 oracle  257u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  13763 oracle  257uW  REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  13769 oracle  259u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  13818 oracle  258u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  13892 oracle  258u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  15913 oracle  258u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  15949 oracle  259u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
oracle  16187 oracle  260u   REG  253,0  9748480 110019869 /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
[root@localhost ~]# kill -9 13759
[root@localhost ~]# lsof /Oracle/oracle/fast_recovery_area/oracle/control02.ctl
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/502/gvfs
      Output information may be incomplete.
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要出家当道士

打赏是不可能,这辈子都不可能

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值