Chmod Error Changing Permissions of extjob0

The other day I was installing the July 2019 PSU for version 12.1 when the following error appeared;

OPatch found the word "error" in the stderr of the make command.
Please look at this stderr. You can re-run this make command.
Stderr output:
chmod: changing permissions of ‘/oracle/product/’: Operation not permitted
make: [iextjob] Error 1 (ignored)

For this error there are two solutions

#1 Run the, which will change the permissions from /oracle/product/ to root

#2 Ignore it directly



Install TFA For Nonroot User

Usually the TFA is installed as the root user, but there is also the option to install it as a different user. It must be indicated that if this option is chosen, the following characteristics will be lost;

To be able to execute it as Daemon
Automatic collections
Collections from remote hosts
To install as an ORACLE_HOME owner use the –extractto option;

Unzip the zip file

> ls -lrt 
-rw-r--r--   1 grid18     oinstall 233963383 Jul 12 12:16
> unzip
  inflating: README.txt
  inflating: installTFA-SOLARIS-SPARC64

> ls -lrt
total 916144
-rw-r--r--   1 grid18     oinstall    1460 Apr 25 20:09 README.txt
-rwxr-xr-x   1 grid18     oinstall 234732682 Apr 25 20:44 installTFA-SOLARIS-SPARC64
-rw-r--r--   1 grid18     oinstall 233963383 Jul 12 12:16

Installing using the -extractto option;

> ./installTFA-SOLARIS-SPARC64 -extractto xxxxxxxxxxxxxxxxxxxx

TFA Installation Log will be written to File : /tmp/tfa_install_1644_2019_07_12-12_16_51.log

Starting TFA installation

TFA Version: 192100 Build Date: 201904251105

Running Extractto Setup for TFA as user grid ...

Enabling Access for user grid on mofetac...
TFA is successfully installed...

TFA_BASE for user grid : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Can’t Open Your Crontab File

when I connect to a machine today and try to see the contents of the crontab it has given me the following error;

crontab -l

crontab: can’t open your crontab file.

In this case, the problem is that the crontab file does not exist. This is not a problem, normally, and having enough permissions you can create your own crontab by entering editor mode and setting a comment for example

crontab -e



Up For Four Years

In this post I will not talk about any technical aspect. I just want to show a machine that has been non-stop for about four years, this is not very usal, although the manufacturers guarantee availability of the order of 99.99999% per year reserve a minimum percentage in case there is a stop, either ordered or hard failure. Currently we sell the cloud as a non-stop environment but nothing is further from reality, the services are promoted to other machines for maintenance.

Now the bad of this situation, everything has pros and cons, with so much time up, it indicates that it has not been necessary to update the firmware and surely OS in that time, as regards stability, bugs and security is a risk.

I put a screenshot, although personally I think it would have to frame it and hang it on the wall.





New Version Of PUTTY (update fast)

Putty has presented a new version, the 0.71, of this popular, simple and useful open source software, which solves the day to day to many DBAs, Sysadmin, Developers, etc. Having options from telnet (it should no longer be used) to the possibility of making tunnels through making connections in RAW mode.

This version, does not really present great news, if not, that a bit in the Microsoft line is a patch to correct important security vulnerabilities.

Some of the most dangerous vulnerabilities are;

  • DSA signature check bypass (MITM)
  • Integer overflow (Over RFC 4432)
  • Potential Malicious code execution (from help files .chm)
  • Buffer Overflow in Unix PuTTY (over active Unix file descriptors by using poll() system call)
  • DoS if Many Unicode is used

You can download the new version from its official website
Putty 0.71 download


ORA-00600 Error When Precompiling

Today I have installed a test environment for processes in Pro c. When performing the Oracle precompiler phase, this is coventing the sources in Pro c to pure language c the following error appears;


Pro*C/C++: Release - Production on Thu Feb 21 17:08:24 2019

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

System default option values taken from: /xxxxxx/12.1/precomp/admin/pcscfg.cfg

dbgc_init_all failed with ORA-48141
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [17998], [2], [], [], [], [], [], [], [], [], [], []

----- Call Stack Trace -----
calling              call     entry                argument values in hex
location             type     point                (? means dubious value)
-------------------- -------- -------------------- ----------------------------
skgudmp()+124        CALL     kohbuh()+1951        FFFFFFFF7FFFB768 ?
                                                   0000F4240 ? 0FFFFFFFF ?
                                                   000000000 ? 000000026 ?
                                                   00000003E ?
kgeriv_int()+216     PTR_CALL skgudmp()            100943900 ? 000002400 ?
                                                   000000800 ? 001FE6788 ?
                                                   FFFFFFFF7EFDB838 ?
                                                   000000000 ?
kgeasi()+176         CALL     kgeriv_int()         100943900 ? 10097C4D8 ?
                                                   00000464E ? 000000000 ?
                                                   000000001 ?
                                                   FFFFFFFF7FFFBA68 ?
pcgini()+1024        CALL     dbgruppm_purge_main  100943900 ? 10097C4D8 ?
                              ()+2079              00000464E ? 000000002 ?
                                                   000000001 ? 000000000 ?
pc2main()+1488       CALL     pcgini()             FFFFFFFF7FFFE588 ?
                                                   FFFFFFFF7FFFDAC0 ?
                                                   1009AA810 ?
                                                   FFFFFFFF7FFFE338 ?
                                                   FFFFFFFF7FFFEE20 ?
                                                   1009481B8 ?
lpmcall()+816        PTR_CALL pc2main()            10091D590 ?
                                                   FFFFFFFF7FFFE300 ?
                                                   000000101 ?
                                                   FFFFFFFF7FFFE498 ?
                                                   1008E05C0 ? 1008CADA0 ?
lpmpmai()+364        CALL     lpmcall()            000000002 ?
                                                   FFFFFFFF7FFFF807 ?
                                                   1008F7580 ? 1808F0E18 ?
                                                   1001CD140 ?
                                                   FFFFFFFF7FFFF0B8 ?
main()+292           CALL     00000001008CB280     FFFFFFFF7FFFF218 ?
                                                   FFFFFFFF7FFFF1E8 ?
                                                   000000002 ?
                                                   FFFFFFFF7FFFF608 ?
                                                   000001A68 ? 000206DAC ?
_start()+300         CALL     main()               000000002 ?
                                                   FFFFFFFF7FFFF608 ?
                                                   FFFFFFFF7FFFF802 ?
                                                   000000000 ? 1008CADA0 ?
                                                   FFFFFFFF7FFFF548 ?

Call stack signature: 0x1d6e42d7f18cb236

The error seems to be inside the database, because it is ora-00600, but in this case it is a problem at the level of physical permissions on directories. This compilation, precompilation and linking phase is being done with a user that is not the owner of the software, which restricts access. A workaround is to give persimmon 777 about the structure of the diagnostic with the owner of the software. Next, show an example;


chmod 777 $ADR_BASE/diag/plsql




Deleting Thousands Of Files

Today I landed in a system that had a full filesystem, in this case because there was no maintenance of audit files or directly this holding the process that does this work. The purpose of this is to show a simple way to delete the files. Of course, there are many, as can be found and tell you to delete the files that meet the search criteria.

First of all count the files to delete and create a file with the name of all thems

grid12@moti1./app/oracle/grid/rdbms/audit $ ls -rlt | wc -l
grid12@moti1./app/oracle/grid/rdbms/audit $ time ls > report.txt

real    0m6.05s
user    0m5.72s
sys     0m0.32s


Below I show a little shell script (bash shell like shebang) that read line by line and perform a rm in each file

while IFS='' read -r line || [[ -n "$line" ]]; do
   rm $line
done < "$1"


Now, set execute permissions and run the script;

grid12@moti1./app/oracle/grid/rdbms/audit $ chmod 700
grid12@moti1./app/oracle/grid/rdbms/audit $ time report.txt

real    12m20.47s
user    0m35.63s
sys     2m4.13s

In this case, delete about 170.000 files takes 12 minutes, maybe a little slow.


If we analyze the times, the total was twelve minutes from the start until the end. The user and sys fields are CPU time. The user part corresponds to our process and the system part represents the kernel time.

total cpu = 0m35.63s + 2m4.13s = 2m39.76s

if we subtract this total time from cpu of total time of execution of the process

12m20.47s – 2m39.76s = 9m40.71s

These 9m40.71s, although we would have to trace it or see the consumptions (using for example IOCTL) and since we are working with files, that time goes on disk.

Remark that in this setup the temporary file contains the file list to delete is dropped. However file is not dropped. I usally drop it like housekeeping policy.