Oracle: How to solve "ORA-00800: [Set Priority Failed], [VKTM]"

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 rootuser.

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...

Subscribe to Martin's Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe