目录

1. 系统配置
1.1. 自动创建perl5目录问题
1.2. 关闭numa 和transparent_hugepage
1.3. 关闭RemoveIPC
1.4. 关闭ssh的DNS解析
1.5. 关闭防火墙
1.6. 关闭selinux
1.7. 关闭avahi-daemon服务
1.8. 配置私网IP
1.9. 修改主机名
1.10. yum配置
1.11. 安装rpm包
1.12. 配置系统参数
1.13. 配置hosts文件
1.14. 查看系统时区
1.15. 配置时间同步服务
1.16. 需关闭的服务
1.17. 需打开的服务
1.18. NOZEROCONF
1.19. 启动multipath服务
1.20. 创建用户和组
1.21. 配置用户环境变量
1.22. 解压安装包
1.23. 安装cvuqdisk rpm包
1.24. 重启主机
1.25. 存储配置(使用multipath并使用AFD)
2. 安装grid
3. 创建磁盘组
4. 安装db软件
5. 打19.5的补丁
4.1. 补丁冲突检查
4.2. 检查磁盘空间是否足够
4.3. 以root执行opatchauto打补丁(分别在两个节点执行,不能并行)
4.4. 查看数据库版本
4.5. 处理二节点数据库版本不一致问题
5. 建库及配置
5.1. 创建ASM磁盘组
5.2. dbca建库
5.3. 查看数据库时区
5.4. 检查无效对象
5.5. PDB下AWR设置
5.6. 配置HugePage
5.7. 数据库参数配置
5.8. 设置进程空闲时间限制
5.9. 修改glogin.sql,添加如下内容
5.10. 创建用户和表空间
5.11. ORA-28040
5.12. 限制idle会话时长
01
系统配置
1.1. 自动创建perl5目录问题
该目录删除后,再次登录的时候回自动创建
这和perl-homedir这个rpm包有关
编辑/etc/profile.d/perl-homedir.sh
PERL_HOMEDIR=1
修改为
PERL_HOMEDIR=0
退出系统,重新登录
1.2. 关闭numa 和transparent_hugepage


1.3. 关闭RemoveIPC

1.4. 关闭ssh的DNS解析
Vi /etc/ssh/sshd_config 并重启sshd服务
systemctl restart sshd.service
1.5. 关闭防火墙
systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service |
1.6. 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
# add by xieyunhui 2020-11-10 session required pam_limits.so |
1.7. 关闭avahi-daemon服务
Oracle 12c以下版本RAC与Redhat Linux的avahi-daemon服务的水火不容
systemctl disable avahi-daemon.socket |
1.8. 配置私网IP
1.9. 修改主机名
hostnamectl set-hostname wangzhao # 重启永久生效
1.10. yum配置
[cdrom] name=Local cdrom baseurl=file:///mnt/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release |
1.11. 安装rpm包
# 在OEL和RHEL上,oracle12.2及之后的数据库版本,不再需要编译器gcc、gcc-c++
yum -y install gcc*
yum -y install bc
yum -y install binutils
yum -y install compat-libcap1
yum -y install compat-libstdc++
yum -y install elfutils-libelf
yum -y install elfutils-libelf-devel
yum -y install fontconfig-devel
yum -y install glibc
yum -y install glibc-devel
yum -y install ksh
yum -y install libaio
yum -y install libaio-devel
yum -y install libX11
yum -y install libXau
yum -y install libXi
yum -y install libXtst
yum -y install libXrender
yum -y install libXrender-devel
yum -y install libgcc
yum -y install libstdc++
yum -y install libstdc++-devel
yum -y install libxcb
yum -y install make
yum -y install smartmontools
yum -y install sysstat
yum -y install net-tools
#(for Oracle RAC and Oracle Clusterware)
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
1.12. 配置系统参数
SHMALL参数:设置共享内存总页数。这个值太小有可能导致数据库启动报错。很多人调整系统内核参数的时候只关注SHMMAX参数,而忽略了SHMALL参数的设置。这个值推荐设置为物理内存大小除以分页大小。
# getconf PAGE_SIZE
对于32G的内存,4K分页大小的系统而言,SHMALL的值应该设置为
select 32*1024*1024*1024/4096 from dual; ==8388608
SHMMAX参数:用于定义单个共享内存段的最大值。
64位linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。
内存为12G时,该值为 12*1024*1024*1024-1 =12884901887
内存为16G时,该值为 16*1024*1024*1024-1 =17179869183
内存为32G时,该值为 32*1024*1024*1024-1 =34359738367
内存为64G时,该值为 64*1024*1024*1024-1 =68719476735
内存为128G时,该值为 128*1024*1024*1024-1 =137438953471
hugepage配置
# kernel parameters for 19C installation,add by xieyunhui 2019-12-19 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 net.ipv4.ipfrag_high_thresh = 16777216 net.ipv4.ipfrag_low_thresh = 15728640 vm.min_free_kbytes=409600 vm.vfs_cache_pressure=200 vm.max_map_count=262144 vm.swappiness=40 vm.nr_hugepages = 38788 vm.hugetlb_shm_group=54321 |
[root@dw01 ~]# more /proc/sys/vm/hugetlb_shm_group 0 [root@dw01 ~]# id oracle uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(asmadmin),54324(asmdba),54325(asmoper) 本环境中数据库启动正常,大页也可以正常使用,但是在系统日志中有类似Mar 11 12:12:33 i-q2ghx82t kernel: oracle (3677): Using mlock ulimits for SHM_HUGETLB is deprecated 这样的告警.通过分析,是由于少配置了hugetlb_shm_group参数导致(vm.hugetlb_shm_group 参数设置为有权使用 HugePages 的操作系统组。默认情况下,此参数设置为 0,从而允许所有组使用 HugePages。可以将此参数设置为 Oracle 数据库进程所属的操作系统组,如 oinstall),在本系统中在sysctl.conf中增加vm.hugetlb_shm_group=54321,然后重启系统(测试中,如果只是重启数据库,非系统重启后第一次重启数据库,不会出现该告警),系统日志没有出现相关告警. |
Linux7 需要修改/etc/systemd/system.conf而不是/etc/security/limits.conf
# add by xieyunhui 2019-12-19 oracle soft nofile 65536 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 grid soft nofile 1024 grid hard nofile 65536 grid soft nproc 16384 grid hard nproc 16384 grid soft stack 10240 grid hard stack 32768 grid hard memlock 134217728 grid soft memlock 134217728 |
备注:Memlock在HugePage环境开启,单位为KB。
1.13. 配置hosts文件
1.14. 查看系统时区
ll /etc/localtime
|
1.15. 配置时间同步服务
[root@dw02 ~]# cat /etc/chrony.conf |grep -v ^#|grep -v ^$ server 10.69.89.1 maxchange 500 0 -1 maxslewrate 500 driftfile /var/lib/chrony/drift rtcsync logdir /var/log/chrony |
maxslewrate 500
#makestep 10 3
时间同步最大阀值应设置为500秒,服务器与时间服务器的时间误差超过500秒时应停止同步,在RedHat Enterprise Linux Server 6上ntpd服务将自动退出,在RedHat Enterprise Linux Server 7上chronyd服务将忽略跳过,配置方法如下:
在配置文件/etc/chrony.conf中添加如下内容:
maxchange 500 0 -1
RHEL7上chrony默认已经开启微调模式,默认值是83333.333 ppm (one twelfth),即每秒同步 1/12 秒,在RHEL6上微调模式同步1秒需要2000秒的时间,即每秒同步0.5ms,需保证所有RHEL版本时间服务的微调模式一致,
在RHEL7上需将微调模式的频率修改为500 ppm,即1/2000秒,配置如下:
注释或者删除配置文件/etc/chrony.conf中的如下内容:
#makestep 10 3
在配置文件/etc/chrony.conf中添加如下内容:
maxslewrate 500
以上所有修改之后,需要重新启动ntpd或者chronyd服务器,操作如下:
在RedHat Enterprise Linux Server 7上:
# systemctl restartchronyd.service
[root@rac-04 grid]# systemctl restart chronyd.service
[root@rac-04 grid]# systemctl enable chronyd.service
查看时间同步源:
# chronyc sources -v
查看时间同步状态:
# chronyc sourcestats -v
服务器第一次与时间服务器进行时间同步需采用手动同步的方式,在同步之前需要检查与时间服务器的误差范围,若误差范围较大(超过预设500s),需要评估时间调整后对操作系统和业务的影响,检查方法如下:
# ntpdate -q <NTP Server IP地址>
手动同步方法如下:
# ntpdate <NTPServer IP地址>
注:手动同步时间时需要先停止时间服务,同步完成后才开启时间服务。
1.16. 需关闭的服务
服务名称 | 服务描述 |
cups | 打印服务 |
postfix | 邮件服务 |
pcscd | smart卡登录服务 |
smartd | 磁盘监控服务,对于做过RAID的磁盘无效 |
alsasound | 声卡服务 |
iscsitarget | iscsi target服务 |
smb | 与windows互访问的文件服务 |
acpid | acpi高级电源管理服务 |
cpuspeed | Cpu节能工具 |
iptables | ipv4防火墙服务 |
ip6tables | ipv6防火墙服务 |
firewall | 防火墙服务(RHEL7上才有的) |
systemctl disable firewalld systemctl disable avahi-daemon systemctl disable bluetooth systemctl disable cpuspeed systemctl disable cups systemctl disable firstboot systemctl disable ip6tables systemctl disable iptables systemctl disable pcmcia systemctl stop autofs systemctl stop nfslock systemctl stop rpcidmapd systemctl stop rpcgssd systemctl stop ntpd systemctl stop bluetooth.service systemctl stop cups.path systemctl stop cups.socket systemctl stop postfix.service systemctl stop rpcbind.service systemctl stop rpcbind.socket systemctl stop NetworkManager-dispatcher.service systemctl stop dbus-org.freedesktop.NetworkManager.service systemctl stop abrt-ccpp.service systemctl stop cups.service systemctl stop libvirtd
systemctl disable autofs systemctl disable nfslock systemctl disable rpcidmapd systemctl disable rpcgssd systemctl disable ntpd systemctl disable bluetooth.service systemctl disable cups.path systemctl disable cups.socket systemctl disable postfix.service systemctl disable rpcbind.service systemctl disable rpcbind.socket systemctl disable NetworkManager-dispatcher.service systemctl disable dbus-org.freedesktop.NetworkManager.service systemctl disable abrt-ccpp.service systemctl disable cups.service systemctl disable libvirtd |
1.17. 需打开的服务
服务名称 | 服务描述 |
kdump | 内存转储服务 |
cron | 定时服务 |
auditd | 审计服务 |
rsyslog | 日志服务 |
sysstat | 系统监控 |
sshd | 安全shell服务 |
irqbalance | 中断平衡服务(低时延应用需要关闭) |
network | 网络服务 |
1.18. NOZEROCONF
12c RAC 配置
CSSD Fails to Join the Cluster After PrivateNetwork Recovered if avahi Daemon is up and Running (Doc ID 1501093.1)文档中建议
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
1.19. 启动multipath服务

1.20. 创建用户和组
检查系统用户
cat /etc/passwd|grep bash # 删除无关用户
groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 asmadmin groupadd -g 54324 asmdba groupadd -g 54325 asmoper useradd -u 54321 -g oinstall -G dba,asmadmin,asmdba,asmoper oracle echo "zAq1XsW2CdE3VfR4"|passwd --stdin oracle useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba grid echo "Oracle_123"|passwd --stdin grid |
1.21. 配置用户环境变量
创建目录
mkdir -p /u01/app/19c/grid mkdir -p /u01/app/grid mkdir -p /u01/app/oracle/product/19c/db_1/ chown -R grid:oinstall /u01 chown oracle:oinstall /u01/app/oracle chmod -R 775 /u01/ |
ORACLE_SID=+ASM1 ORACLE_BASE=/u01/app/grid ORACLE_HOME=/u01/app/19c/grid PATH=$ORACLE_HOME/bin:$PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH NLS_LANG stty erase ^H
alias obase='cd $ORACLE_BASE' alias ohome='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' alias envo='env | grep ORACLE' |
ORACLE_SID=jzdb1 ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/19c/db_1 PATH=$ORACLE_HOME/bin:$PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH NLS_LANG stty erase ^H alias obase='cd $ORACLE_BASE' alias ohome='cd $ORACLE_HOME' alias tns='cd $ORACLE_HOME/network/admin' alias envo='env | grep ORACLE' |
1.22. 解压安装包
unzip Oracle Database 19.3.0.0.0 for Linuxx86-64.zip -d $ORACLE_HOME
1.23. 安装cvuqdisk rpm包

1.24. 重启主机
重启两台主机
1.25. 存储配置(使用multipath并使用AFD)
DG_OCR | 3块5G |
DG_FRA | 300G |
DG_DATA | 6块500G |
配置multipath.conf,添加如下内容:,配置完成之后,重启主机
multipaths{
multipath {
wwid36f4796010093e1189d2df8500000002c -à>>根据multipath -ll查到
alias mpatha
}
multipath {
wwid 36f4796010093e1189d2dc3840000002b
alias mpathb
}
multipath {
wwid 36f4796010093e1189d2d1bf30000002a
alias mpathc
}
multipath {
wwid 36f4796010093e1189d2e60c50000002d
alias mpathd
}
multipath {
wwid 36f4796010093e1189d2e9c150000002e
alias mpathe
}
multipath {
wwid 36f4796010093e1189d31468f00000031
alias mpathf
}
multipath {
wwid 36f4796010093e1189d2f25330000002f
alias mpathg
}
multipath {
wwid 36f4796010093e1189d30762800000030
alias mpathh
}
}
配置存储权限
chmod u+x /etc/rc.d/rc.local
在rc.local中添加如下内容
chown grid:oinstall /dev/mapper/mpath* chown grid.asmadmin /dev/mapper/mpatha chown grid.asmadmin /dev/mapper/mpathb chown grid.asmadmin /dev/mapper/mpathc |
OCR盘的属主必须是asmadmin

AFD若与多路径绑定搭配使用的方法不需要提前使用root用户给磁盘打标签。但是对磁盘的初始化赋权需要通过chmod和chown的方式手动完成,并且,为了保证重启后,权限仍然正确,需要启用rc.local或其他开机自配置的脚本或工具,辅助完成。
如果使用multipath并使用AFD,以下内容不用执行
存储权限配置(编辑 /etc/rc.d/rc.local,添加如下内容)
chown grid.oinstall /dev/mapper/mpath*
chown grid.asmadmin /dev/mapper/mpatha
chown grid.asmadmin /dev/mapper/mpathb
chown grid.asmadmin /dev/mapper/mpathd


ORACLE_BASE变量被设置为临时目录可以避免在安装Oracle Grid Infrastructure之前在Grid Home目录中创建诊断或跟踪文件。在执行下面的操作之前,确保是在$ORACLE_HOME/bin目录中执行命令。

./asmcmd afd_label OCR02 /dev/mapper/mpathb–init
./asmcmd afd_label OCR03 /dev/mapper/mpathc–init
./asmcmd afd_label DG_FRA01/dev/mapper/mpathd –init
(# For lot of disks,you can use this loop:
# i=0; for j in {a..d}; do i=$((i+1));./asmcmd afd_label DISK0${i} /dev/sd${j} --init; done
)
其它磁盘按照上述步骤进行label。
在另外的节点上,不再需要做label,而是直接scan即可,这跟使用ASMLIB、UDEV的操作非常像。
$asmcmd afd_scan




其实,AFD也在使用UDEV,label过后的磁盘在/dev/oracleafd/disks目录中可以找到。

操作系统中可以看到AFD磁盘和底层磁盘的对应关系。


读取磁盘头信息


默认AU为4m,块大小为4096,每个AU有1024个块,磁盘头的备份块就在第二个AU的倒数第二个块,就是第2046个块(不包括第一个AU的第一个块(也就是磁盘头块))
02
安装GRID
安装前检查安装条件是否具备
$ORACLE_HOME/runcluvfy.shstage -pre crsinst -n dw01,dw02 -verbose
Verifying /dev/shm mounted as temporary file system ...FAILED
/dev/shm 提示检查失败,值过小,后面启动实例时可能会失败
Verifying /dev/shm mounted as temporary file system ...FAILED
rac2: PRVE-0426 : The size of in-memory file system mounted as /dev/shm is
"871" megabytes which is less than the required size of "2048" megabytes
on node "rac2"
解决方案:增加操作内存,增大shm
[root@rac2 ~]# mount -o remount,size=2100M /dev/shm |
解压:unzip xxx.zip -d $ORACLE_HOME


也可以通过以下方式,在安装的过程中打补丁(数据库软件安装过程也可以类似操作)
./gridSetup.sh-applyRU /tmp/31305339

Configure an Oracle Standalone Cluster

Cluster name长度必须小于15个字符 |

cluster name must be less than 15 chars
(19c GridInstallation Failed. (Doc ID 2549484.1))















DNS/NIS name service:未使用DNS服务器配置SCAN IP时,上报此告警,可以忽略。
/dev/shm mounted as temporary filesystem:该告警为Oracle的一个Bug,cluvfy check并非检查“/dev/shm”是否已挂载,而是检查“/etc/fstab”中关于“/dev/shm”的配置信息,可以忽略。








禁用ora.crf
[grid@dw01 ~]$ crsctl stat res ora.crf -init NAME=ora.crf TYPE=ora.crf.type TARGET=ONLINE STATE=ONLINE on dw01 [grid@dw02 ~]$ crsctl stat res ora.crf -init -p|grep AUTO AUTO_START=always [root@dw01 db]# /u01/app/19c/grid/bin/crsctl modify resource "ora.crf" -attr "AUTO_START=0" -init [grid@dw01 ~]$ crsctl stat res ora.crf -init -p|grep AUTO AUTO_START=0
|
03
创建磁盘组
执行asmca





04
安装DB软件
解压安装包到$ORACLE_HOME目录
unzip Oracle Database 19.3.0.0.0 for Linuxx86-64.zip -d $ORACLE_HOME












05
建库及配置
5.1. 创建ASM磁盘组








5.2. dbca建库




此处建议Custom Database


















5.3. 处理二节点数据库版本不一致问题
以下以oracle用户执行
首先查看两个节点的$ORACLE_HOME/bin/oracle文件的权限和大小,发现二节点该文件大小和一节点(正常节点)的不一致。
关闭数据库:srvctl stop database -d xxx
拷贝一节点的$ORACLE_HOME/bin/oracle文件到二节点相应目录下
在二节点执行:$ORACLE_HOME/bin/relink all
启动数据库:srvctl start database -d xxx
登录二节点数据库后,数据库版本正常
注意:二节点在relink后,汇报如下错误:该错误可忽略
+0x264): undefined reference to `sslss_async_call_cnt_' skswr.c:(text.hot+0x29e): undefined reference to `sslss_async_call_cnt_' skswr.c:(text.hot+0x2ac): undefined reference to `sslss_async_call_cnt_' skswr.c:(text.hot+0x2b8): undefined reference to `sslss_sig_pending_' skswr.c:(text.hot+0x2cd): undefined reference to `sslss_sigset_raise_signals'
INFO: make: *** [/u01/app/oracle/product/19c/db_1/rdbms/lib/oracle] Error 1
INFO: End output from spawned process. INFO: ---------------------------------- SEVERE: oracle.sysman.oii.oiil.OiilActionException: Error in invoking target 'irman ioracle idrdactl idrdalsnr idrdaproc rac_on dnfs_on' of makefile '/u01/app/oracle/product/19c/db_1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oracle/product/19c/db_1/install/relinkActions2020-09-27_11-25-24AM.log' for details. at oracle.sysman.oii.oiis.OiisMakeDeps.invokeMakefile(OiisMakeDeps.java:537) at oracle.sysman.oii.oiis.OiisMakeDeps.doRelink(OiisMakeDeps.java:614) at oracle.sysman.oii.oiis.OiisMakeDeps.doOperation(OiisMakeDeps.java:799) at oracle.sysman.oii.oiis.OiisMakeDeps.main(OiisMakeDeps.java:809)
|
5.4. 查看数据库时区
SQL> select dbtimezone from dual; # CDB和PDB --修改时区 SQL> alter database set time_zone='+08:00'; # 重启数据库 SQL> select dbtimezone from dual; 如果是RAC的环境,还需要检查其它的服务,比如 db ,nodeapps,listener ,asm等等的时区是不是都是错的。 |
5.5. 检查无效对象
5.6. PDB下AWR设置
1) Set awr_pdb_autoflush_enabled=true on PDB level: alter session set container=PDB1; 2) Set AWR snpashot properly select * from cdb_hist_wr_control;
3) Also please set AWR_SNAPSHOT_TIME_OFFSET to 1000000 to avoid performance issue when multiple PDBs creating snapshots in same time.(CDB级) 4) Wait for 1-2 hours for automatic snapshots to be generated: select * from awr_pdb_snapshot; Or you can create snapshots manually: SQL> connect / as sysdba Create AWR or ADDM report:
|
5.7. 配置HugePage
执行以下脚本
#!/bin/bash |
chmod +x hugepages_settings.sh
关闭集群和数据库
设置内核参数(sysctl.conf)
chmod +x hugepages_settings.sh
检查hugepage
grep -i huge /proc/meminfo
启动集群和数据库
检查hugepage
grep -i huge /proc/meminfo
5.8. 数据库参数配置
alter system set open_cursors=2000 scope=both sid='*'; alter system set session_cached_cursors=500 scope=spfile sid='*'; alter system set inmemory_size=5G scope=spfile sid='*'; alter system set db_files=3000 scope=spfile sid='*'; alter system set enable_ddl_logging=true scope=both sid='*'; alter profile default limit PASSWORD_LIFE_TIME unlimited; alter system set "_lm_drm_disable"=7 scope=spfile sid='*'; alter system set temp_undo_enabled=true scope=both sid='*'; alter system set "_undo_autotune" = false scope=both sid='*'; alter system set undo_retention=1800 scope=both sid='*'; alter system set shared_pool_size=5G scope=both sid='*'; select dbtimezone from dual; |
alter database set time_zone='+08:00';
重启数据库
5.9. RMAN参数配置
配置控制文件snapshot放在共享存储行,防止主库更新控制文件时失败,导致备库恢复失败。
5.10. 设置进程空闲时间限制
在oracle用户下找到$ORACLE_HOME/network/admin/sqlnet.ora,
SQLNET.EXPIRE_TIME=5
SQLNET.EXPIRE_TIME指定发送探针以验证客户端/服务器连接是否处于活动状态的时间间隔(以分钟为单位)。设置大于0的值可确保由于客户端终止异常,连接无法无限期保持打开状态。如果探测发现终止连接或不再使用的连接,则会返回错误,导致服务器进程退出。此参数主要用于数据库服务器,该服务器通常一次处理多个连接。
当设置了resource_limit=true。通过idle_time限制sessionidle 时间
IDLE_TIME:限制每个会话所允许的最长连续空闲时间,超过这个时间会话将自动断开。参数值是一个整数,单位是分钟。
当设置了resource_limit=true 。通过idle_time限制session idle 时间。session idle超过设置时间,状态为sniped(v$session).,然而OS下的process并不会释放,当session(userprocess) 再次与server process 通讯,将关闭相应的server process.
sqlnet.expire_time 的原理不一样,Oracle Server 发送包探测dead connection ,如果连接关闭,或者不再用,则关闭相应的server process.
以上两者组合使用,减少server process,防止process超过init$ORACLE_SID极限值。
5.11. 修改glogin.sql,添加如下内容 –添加后会导致打补丁失败
--SQLPLUS默认编辑器设置为vi define _editor=vi --默认打开DBMA_OUTPUT,这样不必要每次在输入这个命令,同时将默认缓冲池设置得尽可能大 set serveroutput on size 1000000 --假脱机输出文本时,会去除文本行两端的空格,而且行宽不定,如果设置为off(默认设置),假脱机输出的文本行宽度则等于所设置的linesize set trimspool on --设置选择LONG和CLOB列时显示的默认字节数 set long 5000 --设置显示的文本宽为200个字符 set linesize 200 --设置SQLPLUS多久打印一次标题,将此参数设置大些这样每页只显示一次标题 set pagesize 9999 --设置AUTOTRACE得到解释计划输出的默认宽度,一般80足够放下整个计划 column plan_plus_exp format a80 --设置SQLPLUS提示符,显示格式为用户@数据库名 column global_name new_value gname set termout off define gname=idle column global_name new_value gname select lower(user) ||'@'|| substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name from (select global_name,instr(global_name,'.') dot from global_name); set sqlprompt '&gname>' set termout on |
5.12. 创建用户和表空间
SQL> create role pub_role;
Role created.
SQL> grant connect,create table,create view,create materialized view,create job, manage scheduler,create synonym ,debug any procedure, debug connect session ,RESTRICTED SESSION,create sequence,create trigger,create type,CREATE PROCEDURE to pub_role;
select 'revoke execute on '||table_name||' from public;' from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name in ('UTL_FILE','UTL_TCP','UTL_HTTP','UTL_SMTP','DBMS_LOB','DBMS_SYS_SQL','DBMS_JOB');
SQL> grant pub_role to XTCRM;
Grant succeeded.
CREATE TABLESPACE XTCRM LOGGING DATAFILE '+DG_DATA/JZDB/DATAFILE/xtcrm01.dbf' SIZE 100M AUTOEXTEND ON ;
Alter user xtcrm qutoa unlimited on xtcrm;
create user XTCRM identified by "1QaZ#eDc" default tablespace XTCRM profile jzdb_profile;
User created.
SQL> alter user xtcrm quota unlimited on XTCRM;
User altered.
CREATE TABLESPACE TBS_BSS_XTDC DATAFILE '+DG_DATA/JZDB/DATAFILE/xtdc01.dbf' SIZE 100M AUTOEXTEND ON ; create user XTDC identified by "5TgB^yHn" default tablespace TBS_BSS_XTDC profile jzdb_profile; SQL> alter user xtcrm quota unlimited on TBS_BSS_XTDC;
User altered.
SQL> grant pub_role to XTDC;
Grant succeeded.
|
--创建角色 create role pub_role; --给角色权限 grant connect,resource,create view,create job,create synonym ,debug any procedure, debug connect session to pub_role; grant connect,resource,create view,create materialized view,on commit refresh ,global query rewrite,create job,create synonym ,debug any procedure, debug connect session to pub_role;
--取消public角色的execute权限 select 'revoke execute on '||table_name||' from public;' from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name in ('UTL_FILE','UTL_TCP','UTL_HTTP','UTL_SMTP','DBMS_LOB','DBMS_SYS_SQL','DBMS_JOB');
|
5.13. ORA-28040
修改oracle用户下$ORACLE_HOME/network/admin/sqlnet.ora
解决客户端连接报:ORA-28040: No MatchingAuthentication Protocol
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
sqlnet.expire_time=10 # min
监听重启后,必须再次修改下用户密码,否则用户登录时就会报密码错误
重新修改数据库用户密码:
alter user BTA50 identified by"4RfV%tGb";
参考:
12c and Later Releases: ORA-28040 After Upgrade: No Matching AuthenticationProtocol (Doc ID 1957995.1)
5.14. 限制idle会话时长
数据库连接的客户端异常断开后,其占有的相应并没有被释放,如从v$session视图中依旧可以看到对应的session处于inactive,且对应的服务器进程也没有释放,导致资源长时间地被占用, SQLNET.EXPIRE_TIME对于这个问题我们提供了解决方案,专门用于清理那些异常断开的情形,如网络异常中断,客户端异常掉电,异常重启等。通过设定参数为非零值(分钟)来发送探测包以检查客户端的异常断开。一旦探测包找到了异常的连接将返回错误,清除对应的server process
5.15. 取消密码时长限制
alter profile defaultlimit PASSWORD_LIFE_TIME unlimited;




