前期准备
系统 CENTOS-7 64位 1804版本
ORACLE版本 :linux.x64_11gR2_database
检查依赖
```powershell
rpm -q \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel
```
或者
rpm -q binutils compat-libcap1 vsftpd gcc gcc-c++ glibc-devel glibc elfutils-libelf-devel compat-libcap1 libaio-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC unixODBC-devel
## 安装缺失的依赖
```powershell
yum install
//离线安装
rpm -ivh *.rpm
//强制安装
rpm -ivh --replacefiles --force --nodeps *.rpm
```
## 添加用户及用户组
```powershell
groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
```
## 设置oracle用户密码
```powershell
passwd oracle 设置密码
```
## 配置hosts文件
127.0.0.1 oracle
## 配置内核参数
vi /etc/sysctl.conf
```powershell
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.shmmax = 536870912
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=1048586
```
*更新配置 sysctl -p
## 设置oracle用户的shell权限
文件 /etc/security/limits.conf
新增内容
```powershell
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
```
文件 /etc/pam.d/login
新增内容
```powershell
session required /lib64/security/pam_limits.so
session required pam_limits.so
```
文件 /etc/profile
新增内容
```powershell
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
```
## 创建安装目录
```powershell
mkdir -p /opt/oracle/app/oracle/product/11.2.0
mkdir /opt/oracle/app/oracle/oradata
mkdir /opt/oracle/app/inventory
mkdir /opt/oracle/app/oracle/fast_recovery_area
chown -R oracle:oinstall /opt/oracle/app/oracle
chmod -R 775 /opt/oracle/app/oracle/
```
## 配置oracle用户变量
切换到oracle用户 su – oracle
修改文件 vi ~/.bash_profile
新增内容
```powershell
umask 022
export ORACLE_HOSTNAME=dbserver
export ORACLE_BASE=/opt/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=orcl
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
```
重启 解压安装包到 /opt/oracle/
//界面安装,为了避免后期安装弹窗不出现采用以下命令进行安装
./runInstaller -jreLoc /usr/lib/jvm/jre-1.8.0
## 设置开机启动
```powershell
vi /etc/oratab
```
修改 N为Y
```powershell
orcl:/opt/oracle/app/oracle/product/11.2.0:Y
```
```powershell
vi /opt/oracle/app/oracle/product/11.2.0/bin/dbstart
```
```powershell
ORACLE_HOME_LISTNER=$ORACLE_HOME
```
```python
vi /opt/oracle/app/oracle/product/11.2.0/bin/dbshut
```
```powershell
ORACLE_HOME_LISTNER=$ORACLE_HOME
```
新增服务
新增文件:vi /etc/rc.d/init.d/oracled
```powershell
#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
# processname: oracled. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/oracle
ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/
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
```
创建服务 :
chkconfig --add oracled
服务自启动
systemctl enable oracle
## 配置tmpfs大小
新增或调整
```powershell
mount -t tmpfs shmfs -o size=4096M /dev/shm
```
```powershell
vi /etc/fstab
```
新增记录
```powershell
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0
```
# 手动启动数据库
1.启动监听
```powershell
lsnrctl start
```
2.启动库
```powershell
sqlplus / as sysdba
conn / as sysdba
startup
```
注 安装时使用32位oracle存在监听无法启动的问题,网上查找资料未能解决
-----安装过程中出现的问题:
//监视器配置至少必须显示256种颜色
root:xhost +
oracle:export DISPLAY=:0.0
//centos关闭防火墙
命令 查看是否运行 systemctl status firewalld.service
命令 进行关闭防火墙 systemctl stop firewalld.service
命令 永久关闭防火墙 systemctl disable firewalld.service
//在oracle用户下输入:sqlplus
抛出bash: sqlplus: command not found
解决办法:
在root用户下输入如下命令:
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
//在Linux CentOS7 中安装oracle 11g数据库过程中弹出错误:
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/app/oraInventory/logs/installActions2020-01-02_11-43-42AM.log' for details.
修改文件/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk,将
ctxhx: $(CTXHXOBJ)$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
改为:
ctxhx: $(CTXHXOBJ)-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
点击重试后后面会报 ins_emagent 文件错
修改/home/oracle/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk文件,将
$(MK_EMAGENT_NMECTL)
改为:
$(MK_EMAGENT_NMECTL) -lnnz11