一. 安装规划
– oralce官方建议安装使用 Oracle Linux
备注:
1、OS内存至少8G
2、安装OS和数据库前需要对下载好的安装包进行MD5值校验,检查其完整性
- 19c数据库软件下载
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c
二. 系统配置
2.1. 设置机器名称(按需)
hostnamectl set-hostname oracle-db
2.2. 配置hosts文件
echo "10.18.140.28 oracle-db" >> /etc/hosts
2.3. 创建用户和组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,asmadmin,asmoper,oper oracle
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba grid
echo oracle123.. | passwd --stdin oracle
2.4. 创建安装目录(磁盘挂载略)
mkdir -p /data/app/oracle
mkdir -p /data/app/oracle/product/19.3.0/dbhome_1
mkdir -p /data/app/oraInventory
mkdir -p /data/app/oracle/flash_recovery_area
chown -R oracle:oinstall /data/
chmod -R 775 /data/
2.5 配置grid和oracle用户的环境变量文件
oracle用户:
cat >> /home/oracle/.bash_profile <<"EOF"
umask 022
export ORACLE_SID=AFC
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_PATH=.:$ORACLE_BASE/dba_scripts/sql:$ORACLE_HOME/rdbms/admin
export SQLPATH=$ORACLE_HOME/sqlplus/admin
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export NLS_LANG="AMERICAN_CHINA.ZHS16GBK"
alias sas='sqlplus / as sysdba'
EOF
2.6 . 禁用selinux
手工修改/etc/selinux/config的SELINUX=disabled,或使用下面命令:
sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config
重启才能生效,校验:
getenforce
Disabled
2.7、配置内核参数
2.7.1、修改/etc/sysctl.conf文件
shmall、shmmax参数要根据实际内存数进行调整,不然安装会有问题,静态安装很容易忽略
---------------------------------------shmall-------------------------------------
一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),
当内存为 12G 时, kernel.shmall = 3145728
当内存为 16G 时, kernel.shmall = 4194304
当内次为 32G 时, kernel.shmall = 8388608
当内存为 64G 时, kernel.shmall = 16777216
当内存为 128G 时, kernel.shmall = 33554432
--------------------------------shmmax------------------------------------------
64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。
内存为 12G 时,该值为 12102410241024-1 = 12884901887
内存为 16G 时,该值为 16102410241024-1 = 17179869183
内存为 32G 时,该值为 32102410241024-1 = 34359738367
内存为 64G 时,该值为 64102410241024-1 = 68719476735
cat >> /etc/sysctl.conf <<"EOF"
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.shmmni = 4096
kernel.shmall = 4194304
kernel.shmmax = 17179869183
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
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.panic_on_oops = 1
kernel.watchdog_thresh=30
EOF
# 生效
sysctl -p
2.7.2、修改/etc/security/limits.conf文件
echo "grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 8145728
oracle soft memlock 8145728
root soft nproc 2047 " >> /etc/security/limits.conf
2.7.3、修改/etc/pam.d/login文件
echo "session required pam_limits.so" >> /etc/pam.d/login
2.7.4、修改/etc/profile文件
cat >> /etc/profile << "EOF"
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
2.8、将NOZEROCONF=yes添加到/etc/sysconfig/network文件中
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network
2.9、禁用透明大页
参考:https://www.xmmup.com/linux-biaozhundayehetoumingdaye.html
cat >> /etc/rc.local <<"EOF"
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
sh /etc/rc.local
cat /sys/kernel/mm/transparent_hugepage/defrag
cat /sys/kernel/mm/transparent_hugepage/enabled
2.10 防火墙开放
## 最简单就是关闭防火墙,如果防火墙打开则开放1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
三. 数据库软件包准备
3.1 上传软件包
[root@oracle-db afcadmin ~]$ ll
总用量 2995584
-rw-r----- 1 afcadmin afcadmin 3059705302 9月 13 09:35 LINUX.X64_193000_db_home.zip
[root@oracle-db afcadmin ~]$ md5sum LINUX.X64_193000_db_home.zip
1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip
## 3.2 解压软件包
unzip LINUX.X64_193000_db_home.zip -d /data/app/oracle/product/19.3.0/dbhome_1
chown -R oracle.oinstall /data/app/oracle/product/19.3.0/dbhome_1/
四.安装前预检查
4.1 安装依赖
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat
4.2 安装依赖
cat >check.sh<<"EOF"
#!/bin/bash
for n in binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel \
gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio \
libaio-devel libgcc libgcc libstdc++ libstdc++-devel make sysstat ;do
rpm -q $n >> /dev/null
if [ "$?" = 0 ];then
echo "$n already installed"
else
echo "$n should be installed"
yum -y install $n >> /dev/null
if [ "$?" = 0 ];then
echo "$n has been installed successfully!"
else echo "installed error"
fi
fi
done
EOF
sh check.sh
五. 安装数据库软
5.1. 安装数据库软件
– 需要输入root账号的密码,执行脚本
su - oracle
/data/app/oracle/product/19.3.0/dbhome_1/runInstaller -silent -force -noconfig -ignorePrereq \
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/data/app/oraInventory \
ORACLE_BASE=/data/app/oracle \
ORACLE_HOME=/data/app/oracle/product/19.3.0/dbhome_1 \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
oracle.install.db.rootconfig.executeRootScript=true \
oracle.install.db.rootconfig.configMethod=ROOT
六.配置监听
6.1 配置监听
su - oracle
cat >/data/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora <<EOF
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = AFC)
(SID_NAME = AFC)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle-db )(PORT = 1521))
)
)
ADR_BASE_LISTENER = /data/app/oracle
EOF
6.2 启动监听
su - oracle
lsnrctl start
七. 创建实例
7.1 创建实例
FS 文件系统,不适应ASM
CDB和非CDB只能选择一种模式
– 创建非CDB模式
– 根据实际修改信息 如: sid,pass ,totalMemory等
su - oracle
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname orcl19c -sid AFC \
-createAsContainerDatabase FALSE \
-pdbAdminPassword oracle12334 \
-sysPassword oracle12334 -systemPassword oracle12334 \
-datafileDestination '/data/app/oracle/oradata' \
-recoveryAreaDestination '/data/app/oracle/flash_recovery_area' \
-redoLogFileSize 50 \
-storageType FS \
-characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-totalMemory 32768 \
-databaseType OLTP \
-emConfiguration NONE
– cdb 模式
su - oracle
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname orcl19c -sid AFC \
-createAsContainerDatabase TRUE \
-numberOfPDBs 1 \
-pdbName orclpdb2 \
-pdbAdminPassword oracle12334 \
-sysPassword oracle12334 -systemPassword oracle12334 \
-datafileDestination '/data/app/oracle/oradata' \
-recoveryAreaDestination '/data/app/oracle/flash_recovery_area' \
-redoLogFileSize 50 \
-storageType FS \
-characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-totalMemory 2048 \
-databaseType OLTP \
-emConfiguration NONE
– 以上19c 安装完成