Oracle: How to solve "ORA-00800: [Set Priority Failed], [VKTM]"
When Oracle error ORA-00800 [Set Priority Failed], [VKTM]
occurs, there are a few things to check:
Permissions
Owner
The binary $ORACLE_HOME/bin/oradism
has to be root
. If it's oracle
or any other user, you should change it using the root
user.
Group
The group of the executable $ORACLE_HOME/bin/oradism
should be the same as for $ORACLE_HOME/bin/oracle
:
# ls -lahtr $ORACLE_HOME/bin/oracle $ORACLE_HOME/bin/oradism
-rwsr-x---. 1 root oinstall 145K Apr 17 2019 /u01/app/oracle/product/19c/bin/oradism
-rwsr-s--x. 1 oracle oinstall 441M Nov 6 14:12 /u01/app/oracle/product/19c/bin/oracle
If it isn't: change it.
Sticky bit
Make sure that ORACLE_HOME/bin/oradism
has the sticky bit.
It should look like this:
# ls -lahtr $ORACLE_HOME/bin/oradism -rwsr-x---. 1 root oinstall 145K Apr 17 2019 /u01/app/oracle/product/19c/bin/oradism
If it doesn't look like that, change it (using the root
user):
$ chmod 04750 $ORACLE_HOME/bin/oradism
Please make sure to execute chmod
after chown
, or else the sticky bit will be lost again.
File System
Make sure the file system, where Oracle binaries are installed, is NOT mounted using nosuid
:
# mount
/dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
Database
Check if VKTM process is set for higher priority:
select a.ksppinm "Parameter", b.ksppstvl "Session Value", c.ksppstvl "Instance Value", a.KSPPDESC "Description"
from x$ksppi a, x$ksppcv b, x$ksppsv c
where a.indx = b.indx and a.indx = c.indx
and a.ksppinm like '_%' and a.ksppinm like '_highest_priority_process%';
_highest_priority_processes
VKTM
VKTM
Highest Priority Process Name Mask
This looks ok...
Operating system
Check the priority of the VKTM process:
# ps -A -o pid,tid,pri,args |(head -1; grep vktm)
PID TID PRI COMMAND
5230 5230 19 ora_vktm_orcl19
19
does not seem to be the expected value...
DB Parameter
Let's set the parameter _highest_priority_processes
to TRUE
:
alter system set "_high_priority_processes"=true scope=spfile;
To activate this parameter, the database has to be restarted.
After restart, the priority of VKTM process has changed:
# ps -A -o pid,tid,pri,args |(head -1; grep vktm)
PID TID PRI COMMAND
5230 5230 41 ora_vktm_orcl19
Instead of 19
, like before, the priority of the VKTM process is now 41
, and ORA-800 should not occur anymore...