CentOs7 内网环境下离线安装Oracle
Posted 我要出家当道士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOs7 内网环境下离线安装Oracle相关的知识,希望对你有一定的参考价值。
目录
(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上啥也没有,嘿嘿)
(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.
以上是关于CentOs7 内网环境下离线安装Oracle的主要内容,如果未能解决你的问题,请参考以下文章