centos7安装oracle参考

oracle数据库官方文档

一、检查环境

[root@node82 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

验证处理器体系结构与要安装的Oracle软件版本相匹配。如果看不到预期的输出,则无法在该系统上安装软件。
检查内存和交换分区
free -m 或者free -g
在这里插入图片描述
注意:如果部署 oralce 数据库,还要确保有 swap 分区,且空间大于 128M。

二、数据库安装

2.1数据库版本

(企业版):Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
安装包见附件压缩包名称如下:在这里插入图片描述

2.2参数修改

2.2.1 limits.conf 文件修改
修改用户的 SHELL 的限制,修改/etc/security/limits.conf 文件
输入命令 vi /etc/security/limits.conf i 键进入编辑模式增加以下内容(建议直接复制)

limits.conf工作原理
  limits.conf是 pam_limits.so的 配置文件,然后/etc/pam.d/下的应用程序调用pam_***.so模块。譬如说,当用户 访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。

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

2.2.2 Linux服务器安全策略配置-PAM身份验证模块-login 文件修改

输入命令:vi /etc/pam.d/login,i 键进入编辑模式,将下列内容加入该文件末
尾。

session required /lib64/security/pam_limits.so
session required pam_limits.so 

2.2.3 sysctl.conf 文件修改
修改内核参数。输入命令: vi /etc/sysctl.conf ,i 键进入编辑模式,将下列内容加入该文件:

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576 

刷新输入:

#sysctl -p

** 2.2.4 /etc/profile 文件修改 **
限制进程数。输入命令:vi /etc/profile,i 键进入编辑模式,将下列内容加入该文件。

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
 ulimit -p 16384
 ulimit -n 65536
else
 ulimit -u 16384 -n 65536
fi
fi 

三、安装准备

3.1 完善依赖包
不同的版本请参考官方文档

sudo yum -y install binutils compat-libstdc++ elfutils-libelf
elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc
glibc-common glibc-devel glibc-headers kernel-headers libaio libaio-devel
libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC
unixODBC-devel compat-libstdc++-33.x86_64 ksh

如果检查 compat-libstdc++ 一直没有安装
解决方法:sudo yum list all |grep “compat-libstdc++”
在这里插入图片描述
**3.2 创建用户和组 **
创建相关用户和组,作为软件安装和支持组的拥有者。
创建 Oracle 用户和密码,输入如下命令:

 groupadd dba
 groupadd oinstall
 useradd oracle -g oinstall -G dba ##使Oracle用户同时属于这两个组
 passwd oracle 

然后会让你输入密码,密码任意输入 2 次,但必须保持一致,回车确认。
tips:Linux查看用户的属组groups <user1> <user2> <user3>

3.3 创建数据库软件目录
创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注
意磁盘空间即可,输入如下命令:

mkdir -p /home/oracle/app/{oracle,oraInventory,oradata}

3.4 更改目录属组
更改目录属主为 Oracle 用户所有,输入命令:

chown -R oracle:oinstall /home/oracle/app

3.5 配置环境变量
配置 oracle 用户的环境变量,首先,切换到新创建的 oracle 用户下,输入:su - oracle ,然后直接再输入 : vi .bash_profile i 键进入编辑模式,将下列内容加入该文件末尾。

export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib 

四、安装过程

4.1 解压包
首先将下载的 Oracle 安装包复制到 linux 中:

sudo yum -y install unzip --安装解压包(可忽略)
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip 

解压完成后 cd 进入其解压后的目录 database,使用 ls 命令也可以查看解压后 database 所包含的文件

cd database

4.2 复制响应模板文件
Oracle 用户登入,su - oracle,输入如下命令:

mkdir etc
cp /home/oracle/database/response/* /home/oracle/etc/ 

**4.3 设置响应文件权限 **
切换到 root 用户,su - root,输入如下命令:

chown -R oracle.dba /home/oracle/etc
chmod 700 /home/oracle/etc/*.rsp 

**4.4 静默安装 oracle 软件 **
切换回 oracle 用户,su - oracle
修 改 安 装 Oracle 软 件 的 响 应 文 件 /home/oracle/etc/db_install.rsp
/home/oracle/app 可以改成自定义的数据目录,输入如下命令:

vi /home/oracle/etc/db_install.rsp

要修改的参数如下:

oracle.install.option=INSTALL_DB_SWONLY //29 行 安装类型
ORACLE_HOSTNAME=localdomain //37 行 主机名称,通过 hostname 命令获得
UNIX_GROUP_NAME=oinstall//42 行 安装组
INVENTORY_LOCATION=/home/oracle/app/oraInventory //47 行 INVENTORY 目
录
SELECTED_LANGUAGES=en,zh_CN,zh_TW //78 行 选择语言
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 //83 行
oracle_home 和上面配置环境变量里的目录保持一致
ORACLE_BASE=/home/oracle/app/oracle //88 行 oracle_base,和 INVENTORY 目
录要同级
oracle.install.db.InstallEdition=EE //99 行 oracle 版本,EE 为企业版
oracle.install.db.DBA_GROUP=dba //142 行 dba 用户组
oracle.install.db.OPER_GROUP=oinstall //147 行 oper 用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //160 行 数据
库类型
oracle.install.db.config.starterdb.globalDBName=orcl //165 行
globalDBName
oracle.install.db.config.starterdb.SID=orcl //170 行 SID
oracle.install.db.config.starterdb.characterSet=ZHS16GBK//指定字符集
oracle.install.db.config.starterdb.installExampleSchemas=false// 是 否
载入模板示例
oracle.install.db.config.starterdb.enableSecuritySettings=true// 是 否
启用安全设置
oracle.install.db.config.starterdb.memoryLimit=512 //192/200 行 自动管
理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=LINKCLD_ORCL //23 行设
定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true //385 行 设置安全更新 

在 oracle 用户下,su - oracle 切换到 database 目录下 cd database,输入如下命令:

./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp

开始安装,安装中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果
出现[FATAL],则安装程序已经停止了。执行直到出现如下页面:

The following configuration scripts need to be executed as the "root"
user.
#!/bin/sh
#Root scripts to run
/home/oracle/app/oraInventory/orainstRoot.sh
/home/oracle/app/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window 
2. 2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software. 

新开一个窗口,切换到 root 用户,su - root
然后执行以上两个脚本,命令如下:

sh /home/oracle/app/oraInventory/orainstRoot.sh
sh /home/oracle/app/product/11.2.0/db_1/root.sh

脚本执行完成后,回到以上界面,按回车键
4.5 增加 oracle 用户的环境变量
在 oracle 用户下,su - oracle,编辑文档,输入如下命令:vi ~/.bash_profile
键 i 进入编辑模式,在最后直接增加以下内容:

export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data 

输入如下命令使以上的设置生效:

source /home/oracle/.bash_profile

4.6 配置静默网络
Oracle 用户下,su - oracle,输入如下命令:

$ORACLE_HOME/bin/netca /silent /responseFile
/home/oracle/etc/netca.rsp
##配置静默监听程序

如果报如下错:

UnsatisfiedLinkError exception loading native library: njni11 java.lang.UnsatisfiedLinkError:
/home/oracle/app/oracle/product/11.2.0/db_1/lib/libnjni11.so: libclntsh.so.11.1: cannle: No such file or directory 

解决方法:

cp /home/oracle/app/oracle/product/11.2.0/db_1/inventory/Scripts/ext/lib/libcl
ntsh.so.11.1 /home/oracle/app/oracle/product/11.2.0/db_1/lib

再次执行如下命令:

netca /silent /responseFile /home/oracle/etc/netca.rsp

提示如下:

Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0 

输入如下命令查看:

ss -antp|grep 1521

4.7 修改静默安装配置
修改仅安装数据库的响应文件,输入如下命令:

vi /home/oracle/etc/dbca.rsp

修改下列参数:

GDBNAME="orcl.localdomain " //78 行 全局数据库的名字=SID+主机域名
SID="orcl" //149 行 SID
CHARACTERSET="ZHS16GBK" //415 行 编码
NATIONALCHARACTERSET="AL16UTF16" //425 行 编码
DATAFILEDESTINATION = /home/oracle/app/oradata //356 行 

**4.8 进行静默安装数据库 **
Oracle 用户下,su - oracle 输入如下命令回车:

$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp

执行完以上命令之后,屏幕会变成白板,其实此时是输入 oracle 的 sys 和 system
的密码,输入两次,然后会显示执行的百分比进度同 时 会 提 示 : oracle 的 日 志 文 件 是/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log然后检查并修改 oracle 命令的权限(6751),如果权限不对,输入如下命令修改:

chmod 6751 $ORACLE_HOME/bin/oracle

4.9 建库后实例检查
启动监听端口,输入如下命令:lsnrctl start
建库后实例检查,输入如下命令:

ps -ef | grep ora | grep -v grep | wc -l
ps -ef | grep ora | grep -v grep
ps -ef|grep oracle|egrep -v "bash|su|grep|ps" 

检查到 sqlplus 进程才算正常,可以配置下面的服务文件

oracle 3695 3413 0 14:46 pts/1 00:00:00 sqlplus
oracle 11082 1 0 15:19 ? 00:00:00 /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr LISTENER -inherit 

建库后监听状态检查,输入如下命令:lsnrctl status

五、开机启动

5.1 配置修改
切换到 root 用户,su – root,输入如下命令:

vi /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart 

将下列内容加入该文件:

ORACLE_HOME_LISTNER=$ORACLE_HOME //在 65 行添加

保存退出后输入如下命令:

vi /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbshut 

将下列内容加入该文件:

ORACLE_HOME_LISTNER=$ORACLE_HOME //在 39 行添加

保存后退出,接着输入:vi /etc/oratab把末尾的 N 改成 Y,如下:

orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y

5.2 创建启动文件
修改文件配置,切换到 root 用户,su – root,输入如下命令:
vi /etc/rc.d/init.d/oracled
以下内容粘贴到新文件中,ORACLE_HOME=自己安装的目录

#! /bin/bash
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database
Management System.
#
# processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_USER=oracle
case "$1" in
'start')
 if [ -f $LOCKFILE ]; then
 echo $0 already running.
 exit 1
 fi 
 echo -n $"Starting Oracle Database:"
 su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
 su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
 ##su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
 touch $LOCKFILE
 ;;
'stop')
 if [ ! -f $LOCKFILE ]; then
 echo $0 already stopping.
 exit 1
 fi
 echo -n $"Stopping Oracle Database:"
 su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
 su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
 ##su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
 rm -f $LOCKFILE
 ;;
'restart')
 $0 stop
 $0 start
 ;;
'status')
 if [ -f $LOCKFILE ]; then
 echo $0 started.
 else
 echo $0 stopped.
 fi
 ;; 
 *)
 echo "Usage: $0 [start|stop|status]"
 exit 1
esac
exit 0 

修改权限配置,同样是 root 用户下,su – root,输入如下命令:

chown oracle.dba /etc/init.d/oracled
chmod a+x /etc/init.d/oracled
chkconfig --add oracled
chkconfig oracled on //添加 oracled 服务开机启动 

设置 oracle 用户的 sudo 权限,使用 systemctl 命令管理 oracled 服务,输入如下
命令:chattr -i /etc/sudoers

visudo

i 键进入编辑模式,在该文件的 95 行左右添加一行内容如下:

oracle   ALL=(ALL)   NOPASSWD:  /etc/init.d/oracled,/usr/bin/systemctl * oracled*

oracle 服务的启动关闭重启命令如下:

su - oracle //su – root 也可以
sudo systemctl start oracled
sudo systemctl stop oracled
sudo systemctl restart oracled 
作者:嘟嘟噜~
本文版权归作者和博客园共有,转载时必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/xujint/p/14415537.html