• 欢迎光临~

oracle数据库安装centos 7

开发技术 开发技术 2022-09-30 次浏览

0、查看Swap分区空间

不能小于2G

grep SwapTotal /proc/meminfo

free -g

备注:
单位:k m g

1、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2、关闭selinux

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

setenforce
0

3、安装各类依赖

yum -y install binutils* compat-libcap1* compat-libstdc++* gcc* gcc-c++* glibc* glibc-devel* ksh* libaio* libaio-devel* libgcc* libstdc++* libstdc++-devel* libXi* libXtst* make* sysstat* elfutils* unixODBC* unzip lrzsz

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

下附离线的gcc安装包:

gcc离线安装包下载地址:https://ftp.gnu.org/gnu/gcc/

4、修改CentOS系统标识 (由于Oracle默认不支持CentOS)

vim /etc/redhat-release

4.1、删除CentOS Linux release 7.9.2009 (Core)(快捷键dd),改成redhat-7

​​​​​​​redhat-7

 

5、创建Oracle用户

需进入 root 用户进行创建

创建用户组:
单实例默认创建oinstall和dba即可,rac数据库需要全部创建

  创建安装oracle程序用户组 
  groupadd oinstall 

  创建DBA用户组
  groupadd dba

 groupadd oper
groupadd asmdba

groupadd asmoper
groupadd asmadmin
创建用户:
创建oracle用户,所属大组为oinstall,附属组为dba,oper,asmdba,并指定家目录为/home/oracle(可以不用指定,默认即可)

  创建用户oracle 并加入到dba组、oinstall组
  useradd -g oinstall -G dba,asmdba,oper -d /home/oracle oracle
  id oracle
  passwd oracle

创建grid用户:
在rac数据库中用到

---useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
---id grid
---passwd grid
设置 oracle 用户的密码:
passwd oracle

 

参数:

groupadd [-g gid [-o]] [-r] [-f] groupname

-g:指定新建工作组的id;除非使用-o参数不然该值必须是唯一,不可相同。数值不可为负。预设为最小不得小于500而逐次增加。0~999传统上是保留给系统帐号使用。

-r:创建系统工作组,系统工作组的组ID小于500。此参数是用来建立系统帐号。UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号。

-K:覆盖配置文件“/ect/login.defs”;

-o:允许添加组ID号不唯一的工作组。

-f: 新增一个已经存在的群组帐号,系统会出现错误讯息然后结束groupadd。如果是这样的情况,不会新增这个群组(如果是这个情况下,系统不会再新增一次),也可同时加上-g选项当你加上一个gid,此时gid就不用是唯一值,可不加-o参数,建好群组后会显结果。

eg:

groupadd -g 507 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd -u 502 -g oinstall -G oinstall,dba,asmadmin,oper -s /bin/bash -m 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

---或者执行命令添加----------------
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 68719476736" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65000" >> /etc/sysctl.conf
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max=1048576" >> /etc/sysctl.conf


# 使参数生效 sysctl
-p

6、修改系统配置

修改/etc/security/limits.conf文件
在末尾添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

---或者执行命令添加------
echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
echo "oracle soft stack 10240" >> /etc/security/limits.conf

7、创建 oracle 目录

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

# Oracle 根目录
mkdir -p /Oracle
# 用户oracle赋权读写这个文件夹
chown -R oracle:oinstall /Oracle
# 安装目录
mkdir -p /Oracle/oracle
将Oracle的两个压缩包解压到/Oracle目录,解压后的目录结构如下:

  oracle数据库安装目录:mkdir -p /Oracle/oracle

  oracle数据库配置文件目录:mkdir -p /Oracle/oraInventory

  oracle数据库软件包解压目录:mkdir -p /Oracle/database

 

  设置目录所有者为oinstall用户组的oracle用户:

         chown -R oracle:oinstall /Oracle/oracle

  再输入:chown -R oracle:oinstall /Oracle/oraInventory

  再输入:chown -R oracle:oinstall /Oracle/database

 

oracle数据库安装centos 7

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



参数:

        export ORACLE_BASE=/Oracle/oracle     #oracle数据库安装目录

        export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/dbname

        export ORACLE_SID=ORACLE                #oracle启动数据库实例名

      export ORACLE_UNQNAME=ORACLE
      export NLS_LANG=.AL32UTF8
      export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib

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

 

程序员灯塔
转载请注明原文链接:oracle数据库安装centos 7
喜欢 (0)