CentOS 7.X 静默安装Oracle 12C数据库

时间:2021-09-22 21:39:40

环境

System : CentOS 7.x

jrxxfwb-zrgldb://> uname -a
Linux jrxxfwb-zrgldb 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

SELINUX: 关闭

FIREWALL:关闭

systemctl stop firewalld.service --关闭防火墙
systemctl disable firewalld.service -- 禁止防火墙开机启动
systemctl status firewalld.service  -- 查看防火墙状态


操作步骤

A、环境准备

B、用户组创建

C、修改系统内核参数

D、修改用户配置

E、数据库应用安装

F、数据库初始化

A、环境准备

1、选择Oracle安装包,直接去官网选择自己需要的版本(需要注册oracle账号),如果下载不了的话也可以联系我度盘共享。

地址:https://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html

本次使用的版本下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-linux-download-2240591.html

CentOS 7.X 静默安装Oracle 12C数据库


2、使用root用户登录,进行系统基础环境准备。

执行以下命令:

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

静待系统进行软件更新安装,成功后如下:

CentOS 7.X 静默安装Oracle 12C数据库

执行检查命令:

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

CentOS 7.X 静默安装Oracle 12C数据库

5

B、用户组创建

1、创建 oinstall 和 dba 组

zrgldb:/root/> groupadd oinstall
zrgldb:/root/> groupadd dba

2、创建 oracle 用户,设置密码

jrxxfwb-zrgldb:/root/> useradd -g oinstall -G dba oracle
jrxxfwb-zrgldb:/root/> passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

3、查看用户 id oracle

zrgldb:/root/> id oracle
uid=1004(oracle) gid=1004(oinstall) groups=1004(oinstall),1005(dba)


C、修改系统内核参数

1、修改系统配置: vi /etc/sysctl.conf ,增加如下内容:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
# shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873
# 因为本机是32G内存,所以shmmax 是 32*1024*1024*1024*90% = 30,923,764,531,shmall 是 30,923,764,531/4096 = 7,549,747
kernel.shmmax = 30923764531
kernel.shmall = 7549747
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

结果如下:

CentOS 7.X 静默安装Oracle 12C数据库


2、使配置生效:  sysctl -p

CentOS 7.X 静默安装Oracle 12C数据库


D、修改用户配置

1、修改用户限制。

打开文件:  vi  /etc/security/limits.conf

在文件末尾添加如下6行内容:

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

最终结果如图:

CentOS 7.X 静默安装Oracle 12C数据库


2、修改用户登录库文件引用

打开系统文件: vi /etc/pam.d/login

在文件末尾添加如下2行内容:

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

最终结果如图:

CentOS 7.X 静默安装Oracle 12C数据库


3、修改用户登录环境变量

打开系统文件: vi /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

最终结果如图:

CentOS 7.X 静默安装Oracle 12C数据库

退出编辑状态,使修改的文件生效:

source /etc/profile


4、创建安装目录,配置安装目录权限。

mkdir -p /usr/app/
chown -R oracle:oinstall /usr/app/
chmod -R 775 /usr/app/


5、配置 Oracle 用户环境变量

切换用户: su – oracle

编辑环境变量: vi .bash_profile

新增配置如下:

export ORACLE_BASE=/usr/app/oracle
export ORACLE_SID=orcl
export PS1=`uname -n`':$PWD/> '

CentOS 7.X 静默安装Oracle 12C数据库

生效配置文件: source .bash_profile

E、数据库应用安装

1、使用 oracle 用户,创建数据库安装配置文件夹 etc 。

zrgldb://> su - oracle
zrgldb:/home/oracle/> mkdir etc


2、上传安装文件到 oracle 用户目录下,并解压文件。

执行命令:

zrgldb:/home/oracle/> unzip linuxamd64_12102_database_1of2.zip
zrgldb:/home/oracle/> unzip linuxamd64_12102_database_2of2.zip

解压完成会在用户目录下出现一个 database 文件夹,如下:

CentOS 7.X 静默安装Oracle 12C数据库


3、复制 Oracle配置文件到 etc 目录下,并修改配置文件权限

zrgldb:/home/oracle/> cp  ./database/response/* ./etc/
zrgldb:/home/oracle/> chmod 700 ./etc/*.rsp

复制后的etc目录文件如下:

CentOS 7.X 静默安装Oracle 12C数据库


4、修改静默安装配置文件 db_install.rsp

vi ./etc/db_install.rsp

CentOS 7.X 静默安装Oracle 12C数据库CentOS 7.X 静默安装Oracle 12C数据库
# 修改文件配置
#-------------------------------------------------------------------------------
# Specify the installation option.
# It can be one of the following:
#   - INSTALL_DB_SWONLY
#   - INSTALL_DB_AND_CONFIG
#   - UPGRADE_DB
#-------------------------------------------------------------------------------
oracle.install.option=INSTALL_DB_SWONLY

#-------------------------------------------------------------------------------
# Specify the Unix group to be set for the inventory directory.
#-------------------------------------------------------------------------------
UNIX_GROUP_NAME=oinstall

#-------------------------------------------------------------------------------
# Specify the location which holds the inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
INVENTORY_LOCATION=/usr/app/oracle/oraInventory

# Specify value as the following to select all the languages.
# Example : SELECTED_LANGUAGES=all_langs
#-------------------------------------------------------------------------------
SELECTED_LANGUAGES=en,zh_CN

#-------------------------------------------------------------------------------
# Specify the complete path of the Oracle Home.
#-------------------------------------------------------------------------------
ORACLE_HOME=/usr/app/oracle/product/12/db_1

#-------------------------------------------------------------------------------
# Specify the complete path of the Oracle Base.
#-------------------------------------------------------------------------------
ORACLE_BASE=/usr/app/oracle

#-------------------------------------------------------------------------------
# Specify the installation edition of the component.
#
# The value should contain only one of these choices.
#   - EE     : Enterprise Edition

#-------------------------------------------------------------------------------
oracle.install.db.InstallEdition=EE

#------------------------------------------------------------------------------
# The DBA_GROUP is the OS group which is to be granted OSDBA privileges.
#-------------------------------------------------------------------------------
oracle.install.db.DBA_GROUP=dba

#------------------------------------------------------------------------------
# The OPER_GROUP is the OS group which is to be granted OSOPER privileges.
# The value to be specified for OSOPER group is optional.
#------------------------------------------------------------------------------
oracle.install.db.OPER_GROUP=oinstall

#------------------------------------------------------------------------------
# The BACKUPDBA_GROUP is the OS group which is to be granted OSBACKUPDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.BACKUPDBA_GROUP=oinstall

#------------------------------------------------------------------------------
# The DGDBA_GROUP is the OS group which is to be granted OSDGDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.DGDBA_GROUP=oinstall

#------------------------------------------------------------------------------
# The KMDBA_GROUP is the OS group which is to be granted OSKMDBA privileges.
#------------------------------------------------------------------------------
oracle.install.db.KMDBA_GROUP=oinstall

#-------------------------------------------------------------------------------
# Specify the type of database to create.
# It can be one of the following:
#   - GENERAL_PURPOSE
#   - DATA_WAREHOUSE
# GENERAL_PURPOSE: A starter database designed for general purpose use or transaction-heavy applications.
# DATA_WAREHOUSE : A starter database optimized for data warehousing applications.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

#-------------------------------------------------------------------------------
# Specify the Starter Database Global Database Name.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.globalDBName=orcl

#-------------------------------------------------------------------------------
# Specify the Starter Database SID.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.SID=orcl

#-------------------------------------------------------------------------------
# Specify the Starter Database character set.
#
#  One of the following
#  AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2,
#  EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257,
#  BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6,
#  AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8,
#  IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE,
#  KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950,
#  ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.characterSet=AL32UTF8

#------------------------------------------------------------------------------
# This variable should be set to true if Automatic Memory Management
# in Database is desired.
# If Automatic Memory Management is not desired, and memory allocation
# is to be done manually, then set it to false.
#------------------------------------------------------------------------------
oracle.install.db.config.starterdb.memoryOption=true

#------------------------------------------------------------------------------
# This variable holds the password that is to be used for all schemas in the
# starter database.
#-------------------------------------------------------------------------------
oracle.install.db.config.starterdb.password.ALL=oracle

#------------------------------------------------------------------------------
# Specify whether to enable the user to set the password for
# My Oracle Support credentials. The value can be either true or false.
# If left blank it will be assumed to be false.
#
# Example    : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
#------------------------------------------------------------------------------
SECURITY_UPDATES_VIA_MYORACLESUPPORT=true

#------------------------------------------------------------------------------
# Specify whether user doesn't want to configure Security Updates.
# The value for this variable should be true if you don't want to configure
# Security Updates, false otherwise.
#
# The value can be either true or false. If left blank it will be assumed
# to be false.
#
# Example    : DECLINE_SECURITY_UPDATES=false
#------------------------------------------------------------------------------
DECLINE_SECURITY_UPDATES=true
Look这里


5、开始安装,执行 db_install.rsp

zrgldb:/home/oracle/> ./database/runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 44203 MB    Passed
Checking swap space: 0 MB available, 150 MB required.    Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

Continue? (y/n) [n]

报错了。我直接输入 n退出了,当然输入 y 也可能安装成功,避免失败,我还是把问题解决一下。如果没报错直接进行安装操作,跳过以下步骤。

一、是没有swap空间

① 检查一下系统的 swap 文件

zrgldb:/home/oracle/>  swapon –s
swapon: stat failed –s: No such file or directory

说明系统不存在swap

② 切换 root 用户,创建swap文件

zrgldb:/root/> dd if=/dev/zero of=/swapfile bs=1024 count=512k
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 1.49301 s, 360 MB/s

③ 格式化并激活 Swap 文件

zrgldb:/root/> mkswap /swapfile
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=ea40b04c-238c-41b1-8f83-7d36b8b7fd66

zrgldb:/root/> swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.

④ 再次检查系统的 Swap 文件

zrgldb:/root/> swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file    524284  0       -1

⑤ 配置机器重启自动挂载Swap,修改 fstab 配置:vi  /etc/fstab

添加一行

/swapfile          swap            swap    defaults        0 0

⑥ 赋予 Swap 文件权限

zrgldb://> chmod 600 /swapfile
zrgldb://> chown root:root /swapfile


切换到 oracle 用户 ,再次执行本部操作的数据库安装命令:

zrgldb:/home/oracle/> ./database/runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 43690 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 511 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-08-01_03-16-16PM. Please wait ...


You can find the log of this install session at:
  /usr/app/oracle/oraInventory/logs/installActions2019-08-01_03-20-39PM.log
The installation of Oracle Database 12c was successful.
Please check '/usr/app/oracle/oraInventory/logs/silentInstall2019-08-01_03-20-39PM.log' for more details.

As a root user, execute the following script(s):
         1. /usr/app/oracle/oraInventory/orainstRoot.sh
         2. /usr/app/oracle/product/12/db_1/root.sh


Successfully Setup Software.

等待结果,这样安装就成功完成了。

6、切换 root 用户,修改数据库配置

zrgldb://> /usr/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /usr/app/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /usr/app/oracle/oraInventory to oinstall.
The execution of the script is complete.
jrxxfwb-zrgldb://> /usr/app/oracle/product/12/db_1/root.sh
Check /usr/app/oracle/product/12/db_1/install/root_jrxxfwb-zrgldb_2019-08-01_15-29-54.log for the output of root script


F、数据库初始化

1、使用 oracle 用户登录,修改用户环境变量

export ORACLE_BASE=/usr/app/oracle
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/usr/app/oracle/product/12/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

使环境变量生效,执行命令:source .bash_profile


2、配置监听程序

zrgldb:/home/oracle/> netca /silent /responsefile /home/oracle/etc/netca.rsp


3、启动监听

zrgldb:/home/oracle/> lsnrctl start
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 01-8月 -2019 15:47:15
Copyright (c) 1991, 2014, Oracle.  All rights reserved.


4、静默建库文件修改,打开 dbca.rsp 文件。

vi ./etc/dbca.rsp

#-----------------------------------------------------------------------------
# Name          : SID
# Datatype      : String
# Description   : System identifier (SID) of the database
# Valid values  : Check Oracle12c Administrator's Guide
# Default value : <db_name> specified in GDBNAME
# Mandatory     : No
#-----------------------------------------------------------------------------
SID = "orcl"

#-----------------------------------------------------------------------------
# Name          : CHARACTERSET
# Datatype      : String
# Description   : Character set of the database
# Valid values  : Check Oracle12c National Language Support Guide
# Default value : "US7ASCII"
# Mandatory     : NO
#-----------------------------------------------------------------------------
CHARACTERSET = "AL32UTF8"

#-----------------------------------------------------------------------------
# Name          : LISTENERS
# Datatype      : String
# Description   : Specifies list of listeners to register the database with.
#                 By default the database is configured for all the listeners specified in the
#                 $ORACLE_HOME/network/admin/listener.ora
# Valid values  : The list should be comma separated like "listener1,listener2".
# Mandatory     : NO
#-----------------------------------------------------------------------------
LISTENERS = "LISTENERS"


5、执行静默建库

zrgldb:/home/oracle/>  dbca -silent -createDatabase  -responseFile  /home/oracle/etc/dbca.rsp
输入 SYS 用户口令:
 
输入 SYSTEM 用户口令:

复制数据库文件
1% 已完成
3% 已完成
11% 已完成
18% 已完成
26% 已完成
37% 已完成
正在创建并启动 Oracle 实例
40% 已完成
45% 已完成
50% 已完成
55% 已完成
56% 已完成
60% 已完成
62% 已完成
正在进行数据库创建
66% 已完成
70% 已完成
73% 已完成
85% 已完成
96% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/usr/app/oracle/cfgtoollogs/dbca/orcl/orcl.log"。

建库完成了。


6、创建数据库应用用户并授权。

zrgldb:/home/oracle/> sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 星期四 8月 1 16:45:33 2019

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> create user starring identified by starring;

用户已创建。

SQL> grant connect,resource,dba to starring;

授权成功。