欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

CentOS7.6静默(无图形化界面)安装Oracle 11g

程序员文章站 2022-06-20 13:16:43
一、准备工作 1.准备CentOS 7 系统环境 由于是使用静默模式(silent)安装的,无需使用图形化界面,我选择了最小安装的服务器版的CentOS 7。安装完成后,只有命令行界面。 2.下载 Oracle 11g (1)Oracle官方网站:http://www.oracle.com/tech ......

一、准备工作

1.准备centos 7 系统环境

由于是使用静默模式(silent)安装的,无需使用图形化界面,我选择了最小安装的服务器版的centos 7。安装完成后,只有命令行界面。

CentOS7.6静默(无图形化界面)安装Oracle 11g

2.下载 oracle 11g

(1)oracle官方网站:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 我的机器安装的是centos7 64位系统,因此下载的oracle版本也是64位的

特别注意:11.2.0.2.0  zlinux64版本的oracle是安装在ibm服务器的,centos 7是无法安装的。

(2)下载完成后,有两个压缩文件

linux.x64_11gr2_database_1of2.zip 和 linux.x64_11gr2_database_2of2.zip

3.通过xftp将压缩文件上传到 /db/

4.安装依赖包,安装依赖包之前,个人建议将yum源修改为aliyun源,下载速度快些,执行如下命令即可:

cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo
yum clean all
yum makecache

5.修改成功后,安装如下依赖包:

yum -y install 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

6.安装完成后显示如下界面

 CentOS7.6静默(无图形化界面)安装Oracle 11g

7.使用如下命令检查依赖是否安装完整

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 | grep "not installed"

8.发现 pdksh 没有安装

CentOS7.6静默(无图形化界面)安装Oracle 11g

9.执行 yum -y install pdksh,发现centos 7 没有相关安装包可用

CentOS7.6静默(无图形化界面)安装Oracle 11g

10.通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/

wget -o /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/centos/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

下载完成后,进入 /tmp/

cd /tmp/
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

11.再次检查依赖包是否安装完整

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 | grep "not installed"

CentOS7.6静默(无图形化界面)安装Oracle 11g

 到此依赖包安装完整

12.添加oracle用户组和用户

groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -g dba,asmdba oracle -d /home/oracle

13.添加完成后,查看oracle用户

id oracle

14.初始化oracle用户的密码

passwd oracle

CentOS7.6静默(无图形化界面)安装Oracle 11g

 说明:密码需输入两次,提示密码强度若不用管,两次一致后会提示设置成功

15.配置hostname(本机ip映射)

vim /etc/hosts
192.168.154.154 centos-oracle

16.测试hostname

ping -c 3 centos-oracle

CentOS7.6静默(无图形化界面)安装Oracle 11g

 17.优化os内核参数,kernel.shmmax 参数设置为物理内存的一半

vim /etc/sysctl.conf
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.shmmax = 1073741824
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

18.使参数生效

sysctl -p

CentOS7.6静默(无图形化界面)安装Oracle 11g

 19.限制oracle用户的shell权限

vim /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
vim /etc/pam.d/login
session  required   /lib64/security/pam_limits.so
session  required   pam_limits.so
vim /etc/profile
if [ $user = "oracle" ]; then
if [ $shell = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

20.创建oracle安装目录

mkdir -p /db/app/oracle/product/11.2.0
mkdir /db/app/oracle/oradata
mkdir /db/app/oracle/inventory
mkdir /db/app/oracle/fast_recovery_area
chown -r oracle:oinstall /db/app/oracle
chmod -r 775 /db/app/oracle

21.配置oracle用户环境变量

su - oracle
vim .bash_profile
umask 022
export oracle_hostname=centos-oracle
export oracle_base=/db/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"

22.以上配置完成后,个人建议重启下系统

reboot

23.解压oracle压缩文件到 /db

cd /db/
unzip linux.x64_11gr2_database_1of2.zip -d /db
unzip linux.x64_11gr2_database_2of2.zip -d /db

24.解压完成后

mkdir /db/etc/
cp /db/database/response/* /db/etc/
vim /db/etc/db_install.rsp
oracle.install.option=install_db_swonly
decline_security_updates=true
unix_group_name=oinstall
inventory_location=/db/app/oracle/inventory
selected_languages=en,zh_cn
oracle_hostname=centos-oracle
oracle_home=/db/app/oracle/product/11.2.0
oracle_base=/db/app/oracle
oracle.install.db.installedition=ee
oracle.install.db.iscustominstall=true
oracle.install.db.dba_group=dba
oracle.install.db.oper_group=dba

 二、开始安装

1.切换到oracle用户

su - oracle
# 先cd到/db/database/目录然后执行
./runinstaller -silent -ignoreprereq -responsefile /db/etc/response/db_install.rsp

2.安装期间可以使用tail命令监看oracle的安装日志

tail -f /db/app/oracle/inventory/logs/installactions2019-09-03_19-48-29pm.log

 安装完成,提示successfully setup software.

3.根据提示完成配置

CentOS7.6静默(无图形化界面)安装Oracle 11g

su root
sh /db/app/oracle/inventory/orainstroot.sh sh /db/app/oracle/product/11.2.0/root.sh

 CentOS7.6静默(无图形化界面)安装Oracle 11g

 4.配置静默监听

CentOS7.6静默(无图形化界面)安装Oracle 11g

su - oracle
netca /silent /responsefile /db/etc/netca.rsp

5.查看监听端口

CentOS7.6静默(无图形化界面)安装Oracle 11g

netstat -tnulp | grep 1521

6.静默创建数据库   totalmemory 设置为总内存的80%

vi /db/etc/dbca.rsp
gdbname = "orcl"
sid = "orcl"
syspassword = "oracle"
systempassword = "oracle"
sysmanpassword = "oracle"
dbsnmppassword = "oracle"
datafiledestination =/db/app/oracle/oradata
recoveryareadestination=/db/app/oracle/fast_recovery_area
characterset = "al32utf8"
totalmemory = "1638"

7.执行静默建库

CentOS7.6静默(无图形化界面)安装Oracle 11g

dbca -silent -responsefile /db/etc/dbca.rsp

8.查看oracle实例进程

CentOS7.6静默(无图形化界面)安装Oracle 11g

ps -ef | grep ora_ | grep -v grep

9.查看监听状态

CentOS7.6静默(无图形化界面)安装Oracle 11g

lsnrctl status

10.切换为oracle用户,登录sqlplus,查看实例状态

su - oracle
sqlplus / as sysdba
select status from v$instance;

注意:此处会报错

CentOS7.6静默(无图形化界面)安装Oracle 11g

  解决办法:输入命令startup

startup

CentOS7.6静默(无图形化界面)安装Oracle 11g

  再次查询即可正常显示

CentOS7.6静默(无图形化界面)安装Oracle 11g

 (1)查看数据库编码

select userenv('language') from dual;

(2)查看数据库版本信息

select * from v$version;

(3)激活scott用户

alter user scott account unlock;
alter user scott identified by tiger;
select username,account_status from all_users;

11.navicat远程连接oracle

(1)开放1521端口

firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload

(2)官方网站http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载 instantclient-basic,解压压缩文件

CentOS7.6静默(无图形化界面)安装Oracle 11g

 (3)下载navicat

http://pan.baidu.com/s/1c2gp9u4

打开navicat,工具→选项

CentOS7.6静默(无图形化界面)安装Oracle 11g

打开oci界面,在右侧oci library一栏中选择instantclient-basic解压目录下的oci.dll,然后点击确定。

CentOS7.6静默(无图形化界面)安装Oracle 11g

重启navicat,点击连接,选中oracle

 CentOS7.6静默(无图形化界面)安装Oracle 11g

ip为oracle服务器的ip地址,服务名为oracle的实例名,可忽略大小写

CentOS7.6静默(无图形化界面)安装Oracle 11g

select instance_name from v$instance;

用户名使用刚激活的scott,密码为tiger,填完以上信息后点击连接测试

 CentOS7.6静默(无图形化界面)安装Oracle 11g

到此navicat远程连接oracle数据库成功

12.设置oracle开机启动

#可能出现的问题oracle ora-12547: tns:lost contact
cd /db/app/oracle/product/11.2.0/bin/
chmod 6751 oracle
vi /db/app/oracle/product/11.2.0/bin/dbstart
# 查找并设置值 oracle_home_listner=$oracle_home vi /db/app/oracle/product/11.2.0/bin/dbshut
#查找并设置值 oracle_home_listner=$oracle_home vi /etc/oratab
# 将n改为y,默认为n orcl:/db/app/oracle/product/11.2.0:y
vi /etc/rc.d/init.d/oracle

(1)注意:默认没有该文件,复制以下内容到打开的白板界面

#! /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: oracle
. /etc/rc.d/init.d/functions
lockfile=/var/lock/subsys/oracle
oracle_home=/db/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

(2)授权

chmod 750 /etc/rc.d/init.d/oracle 

(3)检查一下脚本能否正确执行 

cd /etc/rc.d/init.d 
./oracle start 
./oracle stop 

(4)加入自动启动行列,执行如下命令: 

ln -s /etc/rc.d/init.d/oracle /etc/rc2.d/s61oracle 
ln -s /etc/rc.d/init.d/oracle /etc/rc3.d/s61oracle 
ln -s /etc/rc.d/init.d/oracle /etc/rc4.d/s61oracle 
ln -s /etc/rc.d/init.d/oracle /etc/rc0.d/k61oracle 
ln -s /etc/rc.d/init.d/oracle /etc/rc6.d/k61oracle 
chkconfig --level 234 oracle on 
chkconfig --add oracle

注意:最后一行命令需要oracle服务状态停止时执行有效(./oracle stop)

重启后即可正常连接