首页 > 数据库 >Oracle 19c Linux平台启动时出现ORA-00800错误浅析

Oracle 19c Linux平台启动时出现ORA-00800错误浅析

时间:2023-11-04 22:34:26浏览次数:30  
标签:rt gsp VKTM 浅析 00800 Linux Oracle cpu

这里简单介绍一下如何处理解决Linux平台下Oracle 19c启动时,告警日志出现ORA-00800错误的问题,详情介绍请见下面内容:

环境描述:

操作系统:Red Hat Enterprise Linux release 8.8 (Ootpa)

数据库 :19.16.0.0.0 企业版

问题描述:

在Oracle 19c启动时,在Oracle的告警日志中会出现下面这样一条告警信息:

Errors in file /opt/oracle19c/diag/rdbms/gsp/gsp/trace/gsp_vktm_1900.trc  (incident=51251) (PDBNAME=CDB$ROOT):
ORA-00800: soft external error, arguments: [Set Priority Failed], [VKTM], [Check traces and OS configuration], [Check Oracle documen
t and MOS notes], []
Incident details in: /opt/oracle19c/diag/rdbms/gsp/gsp/incident/incdir_51251/gsp_vktm_1900_i51251.trc

分析解决:

分析ORA-00800错误的信息,我们可以知道这个错误是由于不正确的系统配置或数据库设置导致的。这个失败目前对实例不是致命的,但是,这可能会导致在查询执行期间发生意外行为。所以最好还是解决掉这个问题

$ oerr ora 00800
00800, 00000, "soft external error, arguments: [%s], [%s], [%s], [%s], [%s]"
// *Cause:  An improper system configuration or setting resulted in failure.
//          This failure is not fatal to the instance at the moment, however, this might result
//          in an unexpected behavior during query execution.
// *Action: Check the database trace files and rectify system settings or the configuration.
//          For additional information, refer to Oracle database documentation or refer to
//          My Oracle Support (MOS) notes.

首先,我们检查oradism文件的权限

$ cd $ORACLE_HOME/bin
$ ls -lrt oradism
-rwsr-x--- 1 root oinstall 147848 Apr 17  2019 oradism

如上所示,检查发现oradism文件的权限正常,如果它的权限不正常,那么就必须修改其权限(使用root用户授权)

chown root $ORACLE_HOME/bin/oradism
chmod 4750 $ORACLE_HOME/bin/oradism

然后我们检查数据库的优先级别:VKTM还是LMS*

SQL> set linesize 680
SQL> col Parameter for a30
SQL> col "Session Value" for a16
SQL> col "Instance Value" for a16
SQL> col "Description"  for a30
SQL> select a.ksppinm "Parameter", b.ksppstvl "Session Value", c.ksppstvl "Instance Value", a.KSPPDESC "Description" 
  2  from x$ksppi a, x$ksppcv b, x$ksppsv c 
  3  where a.indx = b.indx and a.indx = c.indx and a.ksppinm like '_%' and a.ksppinm like '_highest_priority_process%';

Parameter                      Session Value    Instance Value   Description
------------------------------ ---------------- ---------------- ------------------------------
_highest_priority_processes    VKTM             VKTM             Highest Priority Process Name
                                                                 Mask


SQL> 

如上所示,此参数值设置正确,如果不正确的话,那么必须优先级为VKTM

alter system set "_high_priority_processes"='VKTM' scope=spfile;

然后我们检查Cgroup配置

$ ps -eaf|grep -i vktm |grep -v grep
oracle      1900       1  0 13:53 ?        00:00:00 ora_vktm_gsp
$ cat /proc/1900/cgroup | grep cpu
7:cpu,cpuacct:/user.slice
2:cpuset:/

$ ps -eaf|grep -i pmon|grep -v grep
oracle      1888       1  0 13:53 ?        00:00:00 ora_pmon_gsp
$ cat /proc/1888/cgroup | grep cpu
7:cpu,cpuacct:/user.slice
2:cpuset:/

检查发现设置显示其他路径,检查cpu.rt_runtime_us的值,如下所示

# cat /sys/fs/cgroup/cpu,cpuacct/system.slice/cpu.rt_runtime_us
0
# cat /sys/fs/cgroup/cpu,cpuacct/user.slice/cpu.rt_runtime_us
0

根据官方文档其值应该为0和950000,可以使用下面命令修改,但是系统重启后,此参数设置会失效

echo 0 > /sys/fs/cgroup/cpu,cpuacct/system.slice/cpu.rt_runtime_us

echo 950000 > /sys/fs/cgroup/cpu,cpuacct/user.slice/cpu.rt_runtime_us

如果要使其永久生效,我们必须在cgconfig.conf文件中设置,具体操作也很简单,官方文档[1]中有详细步骤,具体如下所示:

Install libcgroup-tools* on the system. (You can find this package on OL7 latest repository)
# yum install libcgroup-tools
/etc/cgconfig.conf will be created automatically when you start cgconfig service

# systemctl start cgconfig
Edit /etc/cgconfig.conf with user.slice parameter below.

group user.slice {
cpu {
cpu.rt_period_us = 1000000;
cpu.rt_runtime_us = 950000;
}
}
Restart cgfconfig service so the value will take effect.

# systemctl restart cgconfig
Enable cgconfig so it will take effect during reboot.

#systemctl enable cgconfig
Reboot the server and check the value if it is now persistent.

处理过后,验证测试,这个错误解决了。重启Oracle实例,告警日志中不会出现ORA-00800错误了。问题解决了,更多详细分析,建议参考ORA-00800: soft external error, arguments: [Set Priority Failed], [VKTM] (Doc ID 2931494.1)[2]

参考资料

[1]

1: https://support.oracle.com/epmos/faces/DocumentDisplay?id=2718971.1&displayIndex=1#FIX

[2]

2: https://support.oracle.com/epmos/faces/DocumentDisplay?id=2718971.1

标签:rt,gsp,VKTM,浅析,00800,Linux,Oracle,cpu
From: https://www.cnblogs.com/kerrycode/p/17809925.html

相关文章

  • 升级linux下的python版本
    以centos7为例将python升级到3.10.111、安装必备软件包:##第一步基础包yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-devellibpcap-develxz-develgcc##第二步安装db4-devel,必先安装epel-releaseyumi......
  • 《Unix/Linux系统编程》第五章学习笔记
    《Unix/Linux系统编程》第五章学习笔记第五章定时器及时钟服务本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于Intelx86的PC中的硬件定时器;讲解了CPU操作和中断处理;描述了Linux中与定时器相关的系统调用、库函数和定时器服务命令;探讨了进程间隔定时器、定......
  • 【python进阶】14大模块200页知识体系md笔记,第4篇:linux命令进阶(2)
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。完整版笔记直接地址:请移步这里共14......
  • 手记系列之七 ----- 分享Linux使用经验
    前言本篇文章主要介绍的关于本人在使用Linux记录笔记的一些使用方法和经验,温馨提示,本文有点长,约1.7w字,几十张图片,建议收藏查看。一、Linux基础使用1,服务器查看及时日志tail-500fcatalina.out2,如何退出logs日志ctrl+c或kill-9pid3,设置快捷键临时快捷键设置:......
  • Linux docker 常用命令
    容器命令dockerexec-itnacos2/bin/bashdockerlogs-fnacos日志:语法:dockerlogs[OPTIONS]CONTAINEROptions:--details显示更多的信息-f,--follow跟踪实时日志--sincestring显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)--tailstring从日志末尾显示......
  • linux - 命令行下的播放器cmus
    cmu是一款运行在命令行终端的音乐播放器,具有和vim类似的操作模式1.安装cmus安装sudoaptinstallcmus启动cmus2.播放控制x播放或重播c暂停b下一首z上一首.快进60s,快退60sp选中曲目向下移动P选中曲目向上移动D移除曲目q退出程序3.循环模式s......
  • 捡起ctf学习 day4 Upload-Labs-Linux 1
    1.第一个pass是在客户端用js代码进行过滤,第二个是在服务器中对MIME(content-type字段)进行检查,皆可使用以下方法绕过随便上传一张图片后,可以发现它上传到的url 改变一句话木马的扩展名为.jpg,然后上传,抓包,在burpsuite中只修改文件名,即可绕过,用中国蚁剑连接木马就可以的到shell想......
  • Linux上U盘挂载
    查询U盘被系统识别的设备名[root@localhostmnt]#fdisk-l挂载U盘[root@localhostmnt]#mkdirusb[root@localhost~]#mount-tvfat/dev/sdb4/mnt/usb/[root@localhost~]#mount-tvfat-oiocharset=utf8/dev/sdb1/mnt/usb/U盘卸载[root@localhost~]......
  • Linux系统 进程管理读书笔记
    以下是一个关于Linux进程管理的读书笔记,涵盖了静态查看进程、动态查看进程和kill命令的内容。这些命令和技巧将帮助自己更好地理解和管理Linux系统上的进程。静态查看进程1.ps命令ps命令是一个强大的工具,用于查看系统上正在运行的进程。可以使用不同的选项来获取不同级别的详......
  • Linux系统 高级权限读书笔记
    在本周的学习中学习了linux的高级权限,内容包括SUID权限,SGID权限,Sticky权限,chattr权限。SUID权限(SetUserID)SUID权限是一种特殊的权限设置,它允许普通用户以文件所有者的权限执行可执行文件。这对于某些程序和任务来说非常有用,因为它们需要超出普通用户权限的权限来执行。以下......