ORA-27301 OS failure message: No buffer space available

If you get this error

ORA-27300: OS system dependent operation:sendmsg failed with status: 105
ORA-27301: OS failure message: No buffer space available
ORA-27302: failure occurred at: sskgxpsnd2

The solution is to:

  1. Lower MTU to 16436. To do this, add following to /etc/sysconfig/network-scripts/ifcfg-lo or replace the value if MTU is already set in this configuration file.
    MTU=16436
  2. Save the file, exit and restart the network service by running:
    systemctl restart network.service
  3. Calculate the value for vm.min_free_kbytes to be 0.4 % of the total physical memory and multiply by the number of NUMA nodes.
    total=$(awk ‘/MemTotal:(.)/{print $2 }’ /proc/meminfo) numa_count=$(lscpu | awk ‘/^NUMA node(s)(.)/{print $3 }’)
    min_free_kb=$(expr $total / 250 * 1) # this is the
  4. Increase the value of vm.min_free_kbytes accordingly. This can be done by adding following a new sysctl configuration.
    echo “vm.min_free_kbytes=$min_free_kb” > /etc/sysctl.d/99-vm_min_free_kbytes.conf

This will take the value of $min_free_kb from the previous step!

  1. load the new values

sysctl –system

  1. Verify the new value has been applied correctly.
    sysctl vm.min_free_kbytes

ORA-00600 [KSLGES_3]/ORA-27300

When using RHEL 7.2 you may encounter some database crash with the errors below:

ORA-27157: OS post/wait facility removed
ORA-27300: OS system dependent operation:semop failed with status: 43
ORA-27301: OS failure message: Identifier removed
ORA-27302: failure occurred at: sskgpwwait1
ORA-00600: internal error code, arguments: [KSLGES_3], [], [], [], [], [], [], [], [], [], [], []
ORA-27300: OS system dependent operation:semop failed with status: 43
ORA-27301: OS failure message: Identifier removed

Redhat 7.2, systemd-logind service introduced a new feature to remove all IPC objects when a user fully logs out.
The feature is controled by the option RemoveIPC in the /etc/systemd/logind.conf configuration file, see man logind.conf(5) for details.

The default value for RemoveIPC in RHEL7.2 is yes.

As a result, the OS may removes shared memory segments and semaphores for those users.
As Oracle ASM and Databases use shared memory segments for SGA, removing shared memory segments will crash the Oracle ASM and database instances.

A new systemd feature was introduced in Red Hat Enterprise Linux 7.2: cleanup of all allocated inter-process communication (IPC) resources with the last session a user finishes. A session can be an administrative cron job or an interactive session.

This behavior can cause daemons running under the same user, and using the same resources, to terminate unexpectedly.

To work around this problem, edit the file /etc/systemd/logind.conf and add the following line:
RemoveIPC=no

Then, execute the following command, so that the change is put into effect:
systemctl restart systemd-logind.service
After performing these steps, daemons no longer crash in the described situation.

“can’t open the fdp output file linkorderfile” Error

“can’t open the fdp output file linkorderfile” warning is seen during oracle binary link on HP Unix.

This problem can happen if you invoke “make -f $ORACLE_HOME/rdbms/lib/ins_rdbms_mk ioracle” from directory different from $ORACLE_HOME/rdbms/lib
The problem can happen on scripts tha call “ins_rdbms.mk ioracle”, for example, the “chopt” script can hit this problem.

Workaround
“cd $ORACLE_HOME/rdbms/lib” and rerun the command.

Le licensing Oracle

je peux remarquer assez souvent que pas mal de personnes ne sont pas au courant du fonctionnement du licensing Oracle qui est, il faut l’avouer assez complexe en fonction de la licence que l’on possède.

Les règles sont assez méconnu lorsque l’on parle de virtualisation, surtout avec VMWare. J’aborderai ce point dans un autre post.

Lire la suite!

Using variables in RMAN

When using RMAN catalog it is preferred to use backup script stored in catalog. It is best if scripts can be reused for different retention.

You can use variables in RMAN script this way:

CREATE global script global_backup_full_database 
comment 'backup full of database. Parameter sysdate+n,tag db, tag archivelog'
{
allocate channel c1 TYPE SBT_TAPE PARMS 'BLKSIZE=1048576,SBT_LIBRARY=/usr/lib/ddbda/libddboostora.so, ENV=(CONFIG_FILE=/opt/ddbda/config/oracle_ddbda.cfg)' FORMAT '%d_%U';
backup AS backupset DATABASE filesperset 1 keep until TIME '&1' tag &2;
backup AS backupset archivelog ALL DELETE INPUT filesperset=1 keep until TIME '&1' tag &3;
}
Lire la suite!