CentOS7静默安装Oracle12c

oracle12c 下载链接

# oracle 12.1.0.2.0 版本是下边俩包
V46095-01_1of2.zip
V46095-01_2of2.zip

# oracle 12.2.0.2.0 版本是下边俩包
V46096-01_1of2.zip
V46096-01_2of2.zip

# oracle 客户端软件包是下边这个包
V46097-01.zip

# 安装说明文档(简版)是下边这个文件
centos7_install_oracle12c.html

1、基础环境

ami信息

CentOS-7-2111-20220408.x86_64

2、系统配置部分

2.1、修改主机名

#切换到root
sudo su -

#设置时区
timedatectl set-timezone Asia/Shanghai

#hostnamectl set-hostname oracle12c

2.2、添加本机解析

echo "$(hostname -I || hostname -i) oracle12c" >> /etc/hosts

2.3、关闭selinux

vi /etc/selinux/config

SELINUX=disabled --修改

2.4、安装依赖包

yum -y install wget unzip binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33i686 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

2.5、检查是否安装成功

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

2.6、配置swap

# count后面的值根据机器内存大小进行设置,oracle官方建议内存大于16G设置为16G,但是设置16G在进行软件安装时的条件检查时提示交换空间不足,故此设置为20

dd if=/dev/zero of=/swapfile bs=1G count=20
mkswap /swapfile
chmod 600 /swapfile
swapon /swapfile
echo "swapon /swapfile" >> /etc/rc.local ; chmod +x /etc/rc.d/rc.local

#检查swap
free -m

2.7、调整系统内核参数

# kernel.shmall : 机器内存/4096
# kernel.shmmax: 机器内存的3/4
# (256GB内存的 kernel.shmall =67108864, kernel.shmmax =206158430208)


vi /etc/sysctl.conf
#异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.aio-max-nr = 1048576
#打开的文件句柄的最大数量,防止文件描述符耗尽的问题
fs.file-max = 6815744
#共享内存总量 页为单位,机器内存除以4K所得
kernel.shmall = 67108864
#SEMMSL: 每个信号集的最大信号数量 SEMMNS:用于控制整个 Linux 系统中信号的最大数 SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量 SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量
kernel.shmmax = 206158430208
kernel.shmmni = 4096
kernel.sem = 250 32000 100 200
#用于向外连接的端口范围
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

2.8、重新加载内核配置

sysctl -p

2.9、使用pam_limites认证模块

vi /etc/pam.d/login

#在内容末尾添加以下两行数据
session required /lib/security/pam_limits.so
session required pam_limits.so

2.10、编辑limits.conf配置

vi /etc/security/limits.conf

#单用户可使用的进程数量
oracle soft nproc 2047
oracle hard nproc 16384
#用户可打开的文件数量
oracle soft nofile 1024
oracle hard nofile 65536
#堆栈设置
oracle soft stack 10240
oracle hard stack 10240

2.11、编辑profile文件

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

#使配置生效
source /etc/profile

3、用户及安装目录配置

3.1、创建oracle用户

# 1.创建oinstall和dba组
groupadd oinstall
groupadd dba

# 2.创建oracle用户
useradd -g oinstall -G dba oracle

# 3.设置oracle密码
passwd oracle

# 4.查看创建结果
id oracle

3.2、创建目录

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

4、配置oracle用户

4.1、切换到oracle用户下

su - oracle

4.2、oracle 用户环境配置

vi ~/.bash_profile

#添加
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12/db_1
export ORACLE_SID=DBUIS
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LANG='zh_CN.gbk'
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export NLS_DATE_FORMAT='DD-MON-RR'

#使配置生效
source ~/.bash_profile

5、上传数据库压缩包

5.1、创建一个文件夹

mkdir oradb
cd oradb

5.2、下载文件到oradb文件夹

wget https://download.wfc.center/%E6%95%B0%E6%8D%AE%E5%BA%93/oracle/12c/V46095-01_1of2.zip
wget https://download.wfc.center/%E6%95%B0%E6%8D%AE%E5%BA%93/oracle/12c/V46095-01_2of2.zip

5.3、解压

unzip \*.zip

5.4、复制相应的模板

mkdir /home/oracle/etc
cp /home/oracle/oradb/database/response/* /home/oracle/etc/
#这里的cp指令路径要根据上个步骤,解压压缩版的路径灵活变通。

#退出到root
exit

#将文件上传至/home/centos目录下,复制文件到 /home/oracle/etc/ 下,覆盖文件
cp /home/centos/*.rsp /home/oracle/etc/

#设置权限
chown -R oracle:oinstall /home/oracle/etc
chmod 700 /home/oracle/etc/*.rsp

5.5、静默安装文件配置

#切换到oracle用户
su - oracle

5.6、编辑/home/oracle/etc/db_install.rsp(5.4中已上传文件,可不做此步骤)

vi /home/oracle/etc/db_install.rsp

#文件内容修改
oracle.install.option=INSTALL_DB_SWONLY // 安装类型
UNIX_GROUP_NAME=oinstall             // 安装组
INVENTORY_LOCATION=/u01/app/oraInventory //INVENTORY目录(不填就是默认值)
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/12/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE     // 企业版本
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.BACKUPDBA_GROUP=oinstall
oracle.install.db.DGDBA_GROUP=oinstall
oracle.install.db.KMDBA_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型
oracle.install.db.config.starterdb.globalDBName=DBUIS
oracle.install.db.config.starterdb.SID=DBUIS
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryLimit=8192 //自动管理内存的内存(M)
oracle.install.db.config.starterdb.password.ALL=123456@a //设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true

6、开始安装

6.1、对database文件夹赋权

chmod -R 775 ~/oradb/database

6.2、执行文件db_install.rsp

cd ~/oradb/database
./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp

6.3、切换到root执行命令

#退回到root用户
exit

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/12/db_1/root.sh

#切换到oracle用户
su - oracle

6.4、配置监听

#启动监听
netca /silent /responsefile /home/oracle/etc/netca.rsp

#查看监听状态
lsnrctl status

6.5、静默建库配置文件修改 (5.4中已上传文件,可不做此步骤)

vi /home/oracle/etc/dbca.rsp

RESPONSEFILE_VERSION=12.1.0
GDBNAME=DBUIS
DATABASECONFIGTYPE=SI
SID=DBUIS
CREATEASCONTAINERDATABASE=false
NUMBEROFPDBS=1
PDBNAME=DBUIS
TEMPLATENAME=General_Purpose.dbc
EMEXPRESSPORT=5500
OMSPORT=0
CHARACTERSET=ZHS16GBK
LISTENERS=LISTENER
MEMORYPERCENTAGE=40
AUTOMATICMEMORYMANAGEMENT=FALSE
TOTALMEMORY=8192

6.6、创建数据库实例,使用 dbca 命令

(dbca是oracle命令,如果提示命令找不到,检查环境变量)

dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp

6.7、检查oracle进程状态

ps -ef | grep ora_ | grep -v grep

lsnrctl status

7、连接测试

7.1、修改数据库参数

# 对照RDS ORACLE12的参数组内有值的参数,对自建数据库进行修改
# 部分参数需要使用 scope=spfile 需在数据库重启后生效

alter system set archive_lag_target=300;

alter system set audit_trail=NONE  scope=spfile;

alter system set db_block_checking=MEDIUM;

alter system set db_recovery_file_dest_size=1073741824;

alter system set dml_locks=132352  scope=spfile;

alter system set filesystemio_options=setall scope=spfile;

alter system set log_buffer=501040K  scope=spfile;

alter system set pga_aggregate_limit=64543972K ;

alter system set pga_aggregate_target=32271986K;

alter system set processes=20000 scope=spfile;

alter system set  recyclebin=off scope=spfile;

alter system set result_cache_max_size=969952K;

alter system set sessions=30080  scope=spfile;

alter system set  sga_max_size=185G scope=spfile;

alter system set  sga_target=185G scope=spfile;

alter system set shared_pool_reserved_size=1G  scope=spfile;

alter system set shared_servers=0 ;

alter system set  standby_file_management=AUTO scope=spfile;

alter system set transactions=33088 scope=spfile;

alter system set db_file_multiblock_read_count=128 ;

alter system set db_create_file_dest='/u01/app/oracle' ;

alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' ;

alter system set parallel_max_servers=2560 ;

alter system set parallel_min_servers=256 ;

alter system set parallel_servers_target=1024 ;

7.2、修改数据库表空间默认类型

SELECT * FROM database_properties WHERE property_name='DEFAULT_TBS_TYPE';
ALTER DATABASE SET DEFAULT bigfile TABLESPACE;

7.3、重启数据库

sqlplus / as sysdba 

#关闭数据库
shutdown abort

#启动数据库
startup 

#若启动数据库时报以下错误
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/12/db_1/dbs/initdbuis.ora’
需将/u01/app/oracle/admin/ DBUIS/pfile下init.ora.xxxxxxxx文件复制到 /u01/app/oracle/product/12/db_1/dbs/initdbuis.ora

cp /u01/app/oracle/admin/DBUIS/pfile/init.ora.* /u01/app/oracle/product/12/db_1/dbs/initdbuis.ora 

#若报以下错误:

ORA-27125: unable to create shared memory segment
Linux-x86_64 Error: 28: No space left on device
Additional information: 3760
Additional information: 4278190080

需要修改2.8步骤 /etc/sysctl.conf 中 kernel.shmall 参数,将其设置为内存数/4096

#若出现以下错误

ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates

image-20220621205903346

需要修改2.8步骤 /etc/sysctl.conf 中 kernel.sem参数

kernel.sem =5010 641280 5010 128

7.4、创建oracle 用户

sqlplus / as sysdba 
#创建用户
CREATE USER GUOKUN IDENTIFIED BY "1234QWER";

#授权
grant connect,resource,dba to GUOKUN;

7.5、使用Navicat连接oracle

image-20220621210007332