安装介质#
操作系统包
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
oracle安装介质
LINUX.X64_193000_db_home.zip
补丁
p6880880_190000_Linux-x86-64.zip
p37260974_190000_Linux-x86-64.zip
p37102264_190000_Linux-x86-64.zip
操作系统设置#
关闭防火墙#
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state关闭selinux#
setenforce 0
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sestatus配置Yum源#
有网络的条件配置清华源
sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009|g" \
-e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009|g" \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo没有网络的,配置本地源
mount -o loop /tmp/CentOS-7-x86_64-DVD-2207-02.iso /mnt
cat >> /etc/yum.repos.d/local.repo << "EOF"
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
yum clean all
yum makecache安装依赖包#
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
psmisc --skip-broken
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm配置hosts文件#
hostnamectl set-hostname oracle19c
cat >> /etc/hosts << "EOF"
192.168.17.26 oracle19c
EOF配置sysctl.conf#
cat >> /etc/sysctl.conf << "EOF"
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
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
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF
/sbin/sysctl -p配置limits.conf和pam.d#
cat >> /etc/security/limits.conf << "EOF"
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
EOF
cat >> /etc/pam.d/login << "EOF"
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF配置 avahi-deamon#
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl disable avahi-daemon.socket
##关闭 NOZEROCONF
cat <<EOF >>/etc/sysconfig/network
NOZEROCONF=yes
EOF关闭透明大页和 numa#
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
vi /etc/rc.d/rc.local
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
chmod +x /etc/rc.d/rc.local创建用户#
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle
echo "oracle"|passwd --stdin oracle
id oracle创建目录#
mkdir -p /u01/app/oracle/product/19.3.0/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01安装Oracle软件#
环境变量设置#
su - oracle
cat >> /home/oracle/.bash_profile << "EOF"
#Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=oracle19c; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
export PATH=$PATH:$ORACLE_HOME/OPatch
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF安装Oracle软件#
软件上传解压#
chown -R oracle.oinstall /soft
su - oracle
cd /soft
unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME配置响应文件#
cat >> /soft/db_install.rsp << "EOF"
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/oracle
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=false
oracle.install.db.rootconfig.configMethod=
EOF解压OPatch和(DB Release Updates)RU补丁包#
cd /soft
unzip -o -q /soft/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
unzip -q p37260974_190000_Linux-x86-64.zip静默安装 Oracle 软件#
cd $ORACLE_HOME
./runInstaller -silent -force -responseFile /soft/db_install.rsp -ignorePrereq -waitForCompletion -applyRU /soft/37260974安装完后需要切换到
root用户下执行以下root.sh脚本
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/db_1/root.sh静默创建监听#
netca -silent -responsefile /u01/app/oracle/product/19.3.0/db_1/assistants/netca/netca.rsp静默创建数据库实例#
dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase \
-templateName General_Purpose.dbc -responseFile NO_VALUE \
-databaseConfigType SINGLE \
-gdbname orcl -sid orcl \
-createAsContainerDatabase FALSE \
-sysPassword oracle -systemPassword oracle -dbsnmpPassword oracle \
-datafileDestination '/u01/app/oracle/oradata' -recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \
-storageType FS \
-characterset ZHS16GBK -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-totalMemory 2048 \
-redoLogFileSize 1024 \
-databaseType OLTP \
-emConfiguration NONE最佳参数实践#
注意:参数最佳实践适用于 12c 及以上版本,个别参数在 11g 中可能没有;另外每个公司均有自己生产实践过的参数,以下仅供参考
alter system set db_files=2048 scope=spfile sid='*';
alter system set event='10949 trace name context forever,level 1','28401 trace name context forever,level 1','10503 trace name context forever, level 4000' scope=spfile sid='*';
alter system set parallel_degree_policy=manual scope=spfile sid='*';
alter system set parallel_force_local=TRUE scope=spfile sid='*';
alter system set parallel_max_servers=128 scope=spfile sid='*';
alter system set audit_trail=none scope=spfile sid='*';
alter system set deferred_segment_creation=false scope=spfile sid='*';
alter system set archive_lag_target=1800 scope=spfile sid='*';
alter system set db_block_checking=MEDIUM scope=spfile sid='*';
alter system set db_block_checksum=FULL scope=spfile sid='*';
alter system set db_lost_write_protect=TYPICAL scope=spfile sid='*';
alter system set db_writer_processes=8 scope=spfile sid='*';
alter system set enable_ddl_logging=true scope=spfile sid='*';
alter system set max_dump_file_size=102400000 scope=spfile sid='*';
alter system set max_idle_blocker_time=15 scope=spfile sid='*';
alter system set optimizer_adaptive_plans=false scope=spfile sid='*';
alter system set optimizer_adaptive_statistics=false scope=spfile sid='*';
alter system set undo_retention=86400 scope=spfile sid='*';
alter system set processes=6000 scope=spfile sid='*';
alter system set control_file_record_keep_time=60 scope=spfile sid='*';
alter system set "_optim_peek_user_binds"=FALSE scope=spfile sid='*';
alter system set "_cursor_obsolete_threshold"=100 scope=spfile sid='*';
alter system set "_px_use_large_pool" = true scope=spfile sid='*';
alter system set "_clusterwide_global_transactions" = false scope=spfile sid='*';
alter system set "_rollback_segment_count"=500 scope=spfile sid='*';
alter system set "_cleanup_rollback_entries" = 10000 scope=spfile sid='*';
alter system set "_optimizer_use_feedback" = false scope=spfile sid='*';
alter system set "_undo_autotune" = false scope=spfile sid='*';
alter system set "_ash_size" = 254M scope=spfile sid='*';
alter system set "_optimizer_extended_cursor_sharing_rel"=none scope=spfile sid='*';
alter system set "_optimizer_extended_cursor_sharing"=none scope=spfile sid='*';
alter system set "_optimizer_adaptive_cursor_sharing"=false scope=spfile sid='*';
alter system set "_gc_policy_time"=0 scope=spfile;
alter system set "_gc_undo_affinity"=FALSE scope=spfile;
--close inmemory
alter system set inmemory_size=0 scope=spfile;
alter system set inmemory_query=disable scope=spfile;
----内存参数调整参考
alter system set sga_max_size=40G scope=spfile;
alter system set db_cache_size=25G scope=spfile;
alter system set shared_pool_size=8G scope=spfile;
alter system set java_pool_size=1G scope=spfile;
alter system set large_pool_size=1G scope=spfile;
alter system set pga_aggregate_target=10G scope=spfile;
alter system set pga_aggregate_limit=20G scope=spfile sid='*';
--------------------------------------------------------
ALTER PROFILE DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED;
exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>40*24*60);
BEGIN
DBMS_AUTO_TASK_ADMIN.disable(
client_name => 'auto space advisor',
operation => NULL,
window_name => NULL);
END;
/
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL);
END;
/
select client_name,status from DBA_AUTOTASK_CLIENT;
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
select JOB_NAME, ENABLED, STATE from dba_scheduler_jobs where owner = 'ORACLE_OCM';