准备工作
1)查看系统版本、内核参数
more /etc/redhat-release
more /etc/redflag-release
uname -a
2)查看当前系统是否配置了HugePages。在下面的查询中,HugePages的几个相关值都为0,表明当前未配值HugePages,其次可以看到该版本的大页大小为2MB:
grep Huge /proc/meminfo
AnonHugePages: 460800 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
3)修改用户的memlock限制。可以通过修改/etc/security/limits.conf配值文件来修改用户的memlock限制,该参数的值通常设置为略小于当前已安装的系统内存大小,比如,当前系统的内存大小为64GB,可以进行如下设置:
* soft memlock 60397977
* hard memlock 60397977
单位 kB
--16G
* soft memlock 16777216
* hard memlock 16777216
* soft memlock 33554432
* hard memlock 33554432
33554432 --32G
cat >> /etc/security/limits.conf << "EOF"
#256G
* soft memlock 536870912
* hard memlock 536870912
EOF
#确认
[root@predata ~]# cat /etc/security/limits.conf | grep -i memlock
# - memlock - max locked-in-memory address space (KB)
* soft memlock 268435456
* hard memlock 268435456
交换分区
df -h /dev/shm
调整方法:修改/etc/fstab
[root@rhel64 ~]# vi /etc/fstab 修改对应/dev/shm 项 defaults,size=2500M
--128G
tmpfs /dev/shm tmpfs defaults,size=131072M 0 0
[root@rhel64 ~]# cat /etc/fstab | grep shm
#重新挂载
[root@rhel64 ~]# mount -o remount /dev/shm
--新增交换分区
增加交换分区文件及大小
dd if=/dev/zero of=/swap bs=1024M count=32
设置交换文件
mkswap /swap
启用交换区文件
swapon /swap
配置开机自动挂载
vi /etc/fstab
/swap swap swap defaults 0 0
[root@dale dev]# grep SwapTotal /proc/meminfo | awk '{print $2}'
8388604
安装依赖
#检查
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \
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 | grep 'not installed' |column -t
yum install compat-libcap1 compat-libstdc++-33 elfutils-libelf-devel fontconfig-devel glibc-devel ksh libaio-devel libXrender-devel libstdc++-devel -y
修改防火墙 主机名
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
vi /etc/sysconfig/network
NOZEROCONF=yes
HOSTNAME=db01
hostnamectl set-hostname db01
vim /etc/hosts
10.10.0.72 db01
创建用户和组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle
修改密码
[root@jeames ~]# passwd oracleace
磁盘划分
创建工作目录
mkdir -p /oracle/app/oracle
chown -R oracle:oinstall /oracle/
chmod -R 775 /oracle/app/oracle
chown -R oracle:oinstall /oradata
chmod -R 775 /oradata
chown -R oracle:oinstall /arch
chmod -R 775 /arch
chown -R oracle:oinstall /oraback
chmod -R 775 /oraback
oracle 环境变量
# /home/oracle/.bash_profile
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.bak
cat >> /home/oracle/.bash_profile << "EOF"
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=cndb
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
EOF
source /home/oracle/.bash_profile
##========================================================================
# /etc/profile
cp /etc/profile /etc/profile.bak
cat >> /etc/profile << "EOF"
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF
source /etc/profile
#-------------------------------------------------
修改内核、资源限制
#/etc/pam.d/login
cat >> /etc/pam.d/login << "EOF"
session required pam_limits.so
EOF
su - root
# /etc/sysctl.conf
cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >> /etc/sysctl.conf << "EOF"
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
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
net.ipv4.ip_local_port_range = 9000 65500
EOF
sysctl --system
# /etc/security/limits.conf
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cat >> /etc/security/limits.conf << "EOF"
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
上传解压
su - oracle
[oracle@32131 ~]# mkdir -p /oracle/app/oracle/product/19.0.0/dbhome_1
exit
su - oracle
[oracle@oel19c ~]$ cd $ORACLE_HOME
[oracle@jeames dbhome_1]# unzip LINUX.X64_193000_db_home.zip
安装
su - oracle
#安装
export DISPLAY=10.10.0.126:0.0
./runInstaller
netca
dbca
特别注意:
1、contol file 调整双份镜像,不要放在一个路径,防止丢失,一般数据盘一份,归档盘一份。
2、online log file 如果没有全 ssd 环境,建议 redo 放在 ssd 上做 4Kredo,大大提升写速率,另外可以做镜像,防止数据丢失。
3、数据块大小设置,如果做数仓,数据块设置 16K-32K。建库的时候注意,可以大大提升读速率。
4、默认表空间设置,system,user,sysaux 设置 20G aotoextend off。
5、快速恢复区设置,看数据体量,建议 400G 以上,快速恢复区设置一定要设置大小,不让数据库起不来。(坑)
6、归档单独设置空间,默认快速恢复区。
7、字符集设置,设置 UTF8,一般不设置 GBK, 会导致异体字、生僻字乱码(像:卫健委,住建局,会有一些生僻字),如果设置了 GBK 存放生僻字,建议使用 nvarchar2 类型。
如果做数据迁移,GBK 占用 2 个字符,UTF8 占用 3 个字符,会牵涉到字段大小调整。