Monday, May 29, 2023

Erman Arslan's Oracle Forum / APR 29 - MAY 29, 2023 - "Q & A Series"

Remember, you can ask questions and get remote support using my forum. Just click on the link named "Erman Arslan's Oracle Forum is available now". Click here to ask a question", which is available on the main page of Erman Arslan's Oracle Blog. A total of 2165 questions were asked, almost 10000 comments have been made and here is the links to the latest questions from the last period.

-- or just use the direct link:


 Supporting the Oracle users around the world. Let's check what we have in the last month..




Apex schema in ebs database by satish

Authentication error while accessing FNDWRR.exe from browser. by Mohammed Hamed

Apache exiting with 152 by satish

SQL ID in procedure by satish

1530 ORA-24263: Certificate of the remote server does not match the target address by satish

locks onDB by Roshan

exadata monitoring tool by Roshan

prepare phase hangs by satish

Storage IOPS by satish

BI publisher in EBS by satish

Patch conflict by big

EBS R122: Context File shows apps_jdbc_connect_descriptor with VIP instead of SCAN by NubeAppsDba

mount acfs filesystem by Roshan

locks DB 19c by Roshan

patch for weblogic by big

CPU PATCH FOR APR 2023 by big

how to create a dblink from oracle to sql server by baig

Wrong version after upgrading to R12.2.10 by satish

Database monitoring by satish

Invalids after upgrade to R12.2.10 by satish

host issue performance by Roshan

Applying RUP patch 30399999 R12.2 upgrade by satish

Upgrade EBS R12.1.3 to R12.2---->Package FND_CONCURRENT has errors by satish

survey exadata by Roshan

KVM by Roshan

Upgrade EBS R12.1.3 to R12.2.10 by satish

ebs_patch or <INSTANCE>_ebs_patch services by Harin


OBIEE 12C / Weblogic -- Authentication for user weblogic denied , The specified user failed to log in. javax.security.auth.login.FailedLoginException

This is about an OBIEE 12C issue that was escalated to me today. OBIEE admin was trying to implement a custom auth method for OBIEE, and due to that, she restarted the Weblogic Services of OBIEE multiple times.. Suddenly, Admin Server started to fail. It wasn't about weblogic username and password, it wasn't about boot.properties, it wasn't about any lock files or something like that.. But! it was about the corrupted weblogic user pass information in a file (under the ldap directory of the Admin Server) located under the OBIEE Weblogic domain.

After a lot of diagnostic work, and after lots of tries, the solution for us was the following;

*Backup & rename/move/remove the ldap directory located under the directory named "/home/erm/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/servers/AdminServer/data/"

*set the domain env :
cd /home/erm/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/bin
. ./setDomainEnv.sh

*change(actually rechange) the Weblogic user's password to have a fresh and proper record in the related files:
cd /home/gtech/Oracle/Middleware/Oracle_Home/user_projects/domains/bi/security
java weblogic.security.utils.AdminAccount weblogic weblogic123 .
--note that , "." needs to be there at the end.

*Recreate the boot.properties file

*Start the Weblogic Managed Server and that's it.

I shared the call stack, the error stack below for the record.. I mean if you feel like you are hitting the same issue, you can take a look at the following call stack and check whether the solution I have provided is suitable for you.

A MultiException has 6 exceptions.  They are:

weblogic.security.SecurityInitializationException: Authentication for user weblogic denied.
java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.SecurityService
java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.jndi.internal.RemoteNamingService errors were found
java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.jndi.internal.RemoteNamingService
java.lang.IllegalArgumentException: While attempting to resolve the dependencies of weblogic.connector.common.ConnectorServiceActivator errors were found
java.lang.IllegalStateException: Unable to perform operation: resolve on weblogic.connector.common.ConnectorServiceActivator

at org.jvnet.hk2.internal.Collector.throwIfErrors(Collector.java:89)
at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:250)
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:358)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305)
Truncated. see log file for complete stacktrace
Caused By: weblogic.security.SecurityInitializationException: Authentication for user weblogic denied.
at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.doBootAuthorization(CommonSecurityServiceManagerDelegateImpl.java:1158)
at weblogic.security.service.CommonSecurityServiceManagerDelegateImpl.postInitialize(CommonSecurityServiceManagerDelegateImpl.java:1272)
at weblogic.security.service.SecurityServiceManager.postInitialize(SecurityServiceManager.java:586)
at weblogic.security.SecurityService.start(SecurityService.java:130)
at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
Truncated. see log file for complete stacktrace
Caused By: javax.security.auth.login.FailedLoginException: [Security:090938]Authentication failure: The specified user failed to log in. javax.security.auth.login.FailedLoginException: [Secu
rity:090302]Authentication Failed: User specified user denied
at com.bea.common.security.utils.ExceptionHandler.throwFailedLoginException(ExceptionHandler.java:62)
at weblogic.security.providers.authentication.LDAPAtnLoginModuleImpl.login(LDAPAtnLoginModuleImpl.java:380)
at com.bea.common.security.internal.service.LoginModuleWrapper$1.run(LoginModuleWrapper.java:117)
at java.security.AccessController.doPrivileged(Native Method)
at com.bea.common.security.internal.service.LoginModuleWrapper.login(LoginModuleWrapper.java:114
)

EBS -- Apache exiting with 152 on Multi Apps Node / Shared FS Configuration

Recently, we dealt with an interesting issue in my forum, so I wanted to share it.

In a Multi Apps Node (with shared Application File System) EBS 12.2, all of a sudden Apache started to fail, when trying to start.

[applprod@erman02 opmn]$ adopmnctl.sh startall
You are running adopmnctl.sh version 120.0.12020000.2
Starting Apache...
EXIT CODE is 152. Please check the log file for more details.

adopmnctl.sh: exiting with status 152

The Exit Code 152 didn't tell us a lot. It was not documented in anywhere as far I could see.

*Ensured that we had read/write access (from the applications OS user) for the directory named "u01/ERMANAPPS/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OPMN/opmn/states", for all the files located in it.

*Ensured that we didn't have any active security mechanism (selinux, firewall etc..) that might prevent apache from starting. Ensured we had all the necessary file permissions in place..

*Ensured the OS limits (ulimit) in place for the OS user that was starting the apache/OHS.

*Ensured we didn't have any space shortage in the filesystems.

*We got Exit 152, The following MOS note was for 150, but still checked -> 

adapcctl.sh: exiting with status 150 (Doc ID 1106795.1)

Nothing helped, everything looked normal so we decided to get an STRACE for the process and all its threads which were relevant with apache/with the start of Apache. We needed to see the system calls, as  they might tell us something useful.

We needed to run the strace with "-ff" option. Because of the following;

-ff makes that each child process started is logged in separate log file where the <PID> is added to the file name.

-ff
--follow-forks --output-separately
Combine the effects of --follow-forks and
--output-separately options. This is incompatible with
-c, since no per-process cou1)

Example command: strace -o startapache.trc -ff -t $INST_TOP/ora/10.1.3/Apache/Apache/bin/apachectl startssl -f $INST_TOP/ora/10.1.3/Apache/Apache/conf/httpd.conf &

**Following records were derived from the STRACE output:

1)
connect(5, {sa_family=AF_INET6, sin6_port=htons(6110), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = -1 ECONNREFUSED (Connection refused)
shutdown(5, SHUT_RDWR)                  = -1 ENOTCONN (Transport endpoint is not connected)
close(5)                                = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 5
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
connect(5, {sa_family=AF_INET, sin_port=htons(6110), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused)
shutdown(5, SHUT_RDWR)                  = -1 ENOTCONN (Transport endpoint is not connected)
...
......
exit_group(2)                           = ?
+++ exited with 2 +++

2)
futex(0x7f55b79aaea4, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x7f55b79aae78, 14) = 1
futex(0x7f55b79aae78, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xba5724, FUTEX_WAIT_PRIVATE, 1, NULL) = 0
futex(0xba56f8, FUTEX_WAKE_PRIVATE, 1)  = 0
futex(0x92054c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {tv_sec=1684324311, tv_nsec=5000000}, 0xffffffff) = -1 ETIMEDOUT (Connection timed out)

3)
tgkill(28998, 29132, SIGHUP)            = 0
tgkill(28998, 29132, SIG_0)             = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=500000}) = 0 (Timeout)
tgkill(28998, 29132, SIGHUP)            = 0
tgkill(28998, 29132, SIG_0)             = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=500000}) = 0 (Timeout)
tgkill(28998, 29132, SIGHUP)            = 0
tgkill(28998, 29132, SIG_0)             = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=500000}) = 0 (Timeout)
tgkill(28998, 29132, SIGHUP)            = 0
..
....
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=28976, si_uid=54321} ---
rt_sigreturn({mask=~[ILL TRAP ABRT BUS FPE KILL SEGV USR2 PIPE TERM STOP SYS RTMIN RT_1]}) = -1 EINTR (Interrupted system call)
futex(0x7fce16c809d0, FUTEX_WAIT, 29011, NULL) = ?
+++ killed by SIGKILL +++

4)
getrlimit(RLIMIT_NOFILE, {rlim_cur=4*1024, rlim_max=64*1024}) = 0
close(3)                                = -1 EBADF (Bad file descriptor)
close(4)                                = -1 EBADF (Bad file descriptor)
close(5)                                = -1 EBADF (Bad file descriptor)
close(6)                                = -1 EBADF (Bad file descriptor)
close(7)                                = -1 EBADF (Bad file descriptor)
close(8)                                = -1 EBADF (Bad file descriptor)
close(9)                                = -1 EBADF (Bad file descriptor)
close(10)                               = -1 EBADF (Bad file descriptor)
close(11)                               = -1 EBADF (Bad file descriptor)
...
.............

5)
access("/u01/PRODERM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OHS/EBS_web/proxy-wallet/ewallet.p12", F_OK) = -1 ENOENT (No such file or directory)
access("/u01/PRODRM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OHS/EBS_web/proxy-wallet/cwallet.sso", F_OK) = 0
open("/u01/PRODERM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OHS/EBS_web/proxy-wallet/cwallet.sso", O_RDONLY) = 22

6)
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fce20820a50) = 28993
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fce20820a50) = 28994
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fce20820a50) = 28995
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fce20820a50) = 28996
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fce20820a50) = 28998
write(12, "[2023-05-17T17:21:56.2408+05:30]"..., 338) = 338
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], WNOHANG|WSTOPPED, NULL) = 28981
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], WNOHANG|WSTOPPED, NULL) = 28982
wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGTERM}], WNOHANG|WSTOPPED, NULL) = 28983
wait4(-1, 0x7ffdc1512d38, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
write(13, "!", 1)                       = 1
wait4(-1, 0x7ffdc1512d38, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
write(13, "!", 1)                       = 1
wait4(-1, 0x7ffdc1512d38, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
....
.......
................

wait4(28993, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
wait4(28994, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
wait4(28995, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
wait4(28996, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
wait4(28998, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
....
...................
............................

kill(28993, SIGTERM)                    = 0
wait4(28994, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
write(12, "[2023-05-17T17:24:07.4981+05:30]"..., 264) = 264
kill(28994, SIGTERM)                    = 0
wait4(28995, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
write(12, "[2023-05-17T17:24:07.4984+05:30]"..., 264) = 264
kill(28995, SIGTERM)                    = 0
wait4(28996, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0
write(12, "[2023-05-17T17:24:07.4986+05:30]"..., 264) = 264
kill(28996, SIGTERM)                    = 0
wait4(28998, 0x7ffdc1512cd8, WNOHANG|WSTOPPED, NULL) = 0

7)

fstat(25, {st_mode=S_IFREG|0400, st_size=27, ...}) = 0
read(25, "tz6Nm33MxjSStI6k6pYDxt5dXdX", 27) = 27
close(25)                               = 0
write(24, "POST /connect HTTP/1.1\r\nVersion:"..., 163) = 163
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=24, revents=POLLIN}])
read(24, "POST /status HTTP/1.1\r\nVersion: "..., 2048) = 207
write(24, "POST /subscribe HTTP/1.1\r\nConten"..., 106) = 106
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=24, revents=POLLIN}])
read(24, "POST /status HTTP/1.1\r\nVersion: "..., 2048) = 102
futex(0x116d9bc, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x116d990, 2) = 1
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=24, revents=POLLIN}])
read(24, "POST /event HTTP/1.1\r\norigin: 00"..., 2048) = 571
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 1 ([{fd=24, revents=POLLIN}])
read(24, "SubscriberID: 1\r\n\r\n", 2048) = 19
futex(0x116daf4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x116daf0, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)

8)

read(5, "# Generated by NetworkManager\nse"..., 4096) = 108
read(5, "", 4096)                       = 0
close(5)                                = 0
munmap(0x7f8880605000, 4096)            = 0
open("/u01/PRODERM/fs2/FMW_Home/webtier/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/FMW_Home/webtier/opmn/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/EBSapps/10.1.2/jdk/jre/lib/i386/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/EBSapps/10.1.2/jdk/jre/lib/i386/server/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/EBSapps/appl/cz/12.0.0/bin/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/EBSapps/10.1.2/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/X11R6/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/u01/PRODERM/fs2/EBSapps/appl/sht/12.0.0/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=118394, ...}) = 0
mmap(NULL, 118394, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7f88805e9000
close(5)                                = 0
open("/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260!\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=61560, ...}) = 0
mmap(NULL, 2173048, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f887bdcf000
mprotect(0x7f887bddb000, 2093056, PROT_NONE) = 0
mmap(0x7f887bfda000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xb000) = 0x7f887bfda000
mmap(0x7f887bfdc000, 22648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f887bfdc000
close(5)                                = 0
access("/etc/sysconfig/strcasecmp-nonascii", F_OK) = -1 ENOENT (No such file or directory)
mprotect(0x7f887bfda000, 4096, PROT_READ) = 0
munmap(0x7f88805e9000, 118394)          = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=603, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8880605000
read(5, "127.0.0.1   localhost localhost."..., 4096) = 603
read(5, "", 4096)                       = 0
close(5)                                = 0
munmap(0x7f8880605000, 4096)            = 0
socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP) = 5
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
connect(5, {sa_family=AF_INET6, sin6_port=htons(6110), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0
open("/u01/PRODERM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OPMN/opmn/.formfactor", O_RDONLY) = 6
fstat(6, {st_mode=S_IFREG|0400, st_size=27, ...}) = 0
read(6, "tz6Nm33MxjSStI6k6pYDxt5dXdX", 27) = 27
close(6)                                = 0
write(5, "POST /connect HTTP/1.1\r\nContent-"..., 238) = 238
read(5, "HTTP/1.1 408 Request Time-out\r\nC"..., 8192) = 116
read(5, "<?xml version='1.0' encoding='UT"..., 8192) = 731
write(2, "================================"..., 81) = 81
write(2, "opmn id=erpprodapp02.ttd.com:621"..., 34) = 34
write(2, "Response: 0 of 1 processes start"..., 36) = 36
write(2, "\nias-instance id=EBS_web_OHS2\n", 30) = 30
write(2, "++++++++++++++++++++++++++++++++"..., 81) = 81
write(2, "--------------------------------"..., 81) = 81
write(2, "ias-component/process-type/proce"..., 66) = 66
write(2, "--> Process (index=1,uid=1070952"..., 47) = 47
write(2, "  time out while waiting for a m"..., 56) = 56
write(2, "  Log:\n  /u01/PRODERM/fs2/FMW_H"..., 115) = 115
read(5, "", 8192)                       = 0
shutdown(5, SHUT_RDWR)                  = 0
close(5)                                = 0
munmap(0x7f887c1d2000, 266240)          = 0
munmap(0x7f8880576000, 303104)          = 0
exit_group(408)                         = ?
+++ exited with 152 +++
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000) = 0 (Timeout)
read(24, 0x7fce10000b60, 2048)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=24, events=POLLIN|POLLPRI}], 1, 5000 <unfinished ...>) = ?
+++ killed by SIGKILL +++

8)

fcntl(22, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGHUP {si_signo=SIGHUP, si_code=SI_TKILL, si_pid=28993, si_uid=54321} -
9)

access("/etc/sysconfig/strcasecmp-nonascii", F_OK) = -1 ENOENT (No such file or directory)
mprotect(0x7f887bfda000, 4096, PROT_READ) = 0
munmap(0x7f88805e9000, 118394)          = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=603, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8880605000
read(5, "127.0.0.1   localhost localhost."..., 4096) = 603
read(5, "", 4096)                       = 0
close(5)                                = 0
munmap(0x7f8880605000, 4096)            = 0
socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP) = 5
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
connect(5, {sa_family=AF_INET6, sin6_port=htons(6110), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0
open("/u01/PRODERM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OPMN/opmn/.formfactor", O_RDONLY) = 6
fstat(6, {st_mode=S_IFREG|0400, st_size=27, ...}) = 0
read(6, "tz6Nm33MxjSStI6k6pYDxt5dXdX", 27) = 27
close(6)                                = 0
write(5, "POST /connect HTTP/1.1\r\nContent-"..., 238) = 238
read(5, "HTTP/1.1 408 Request Time-out\r\nC"..., 8192) = 116
read(5, "<?xml version='1.0' encoding='UT"..., 8192) = 731
write(2, "================================"..., 81) = 81
write(2, "opmn id=erpprodapp02.ttd.com:621"..., 34) = 34
write(2, "Response: 0 of 1 processes start"..., 36) = 36
write(2, "\nias-instance id=EBS_web_OHS2\n", 30) = 30
write(2, "++++++++++++++++++++++++++++++++"..., 81) = 81
write(2, "--------------------------------"..., 81) = 81
write(2, "ias-component/process-type/proce"..., 66) = 66
write(2, "--> Process (index=1,uid=1070952"..., 47) = 47
write(2, "  time out while waiting for a m"..., 56) = 56
write(2, "  Log:\n  /u01/PRODERM/fs2/FMW_H"..., 115) = 115
read(5, "", 8192)                       = 0
shutdown(5, SHUT_RDWR)                  = 0
close(5)                                = 0
munmap(0x7f887c1d2000, 266240)          = 0
munmap(0x7f8880576000, 303104)          = 0
exit_group(408)                         = ?nts are kept.

THE SOLUTION:

The solution is about updating the httpd.conf.. Updating the lock files and the AcceptMutex lines.

This is already documented for OCI and that directive should have been there already. But! I think it should be applicable to ON-PREM as well!
So, under the hood, we made semaphores to be used rather than the lock files. Lock files are not required. (according to the FMW 11.1.1.9 Admin Guide)

*Here -> Sharing the Application Tier File System in Oracle E-Business Suite Release 12.2 or 12.1.3 Using the Oracle Cloud Infrastructure File Storage Service (Doc ID 2794300.1) .. 

And, the reference of that MOS note comes from the FMW documented itself (from Oracle HTTP Server 11.1.1.9 Fusion Middleware Administrator's Guide for Oracle HTTP Server)
  1. Beginning with the primary application tier node, update the httpd.conf as follows:
  2. Launch the Fusion Middle Control. For example, use the following URL: http://<hostname.domain:admin_port>/em
  3. Select and edit the httpd.conf file.
  4. Update AcceptMutex fcntl to the following AcceptMutex sysvsem (found in two places in the httpd.conf file).
  5. Comment out the LockFile directive (found in three places in the httpd.conf file).
  6. Save the file and exit the Fusion Middleware Control.
  7. Restart the HTTP server for the configuration changes to take effect.
  8. Repeat steps 1 through 6 for all secondary nodes in the environment.

Note that: We had fcntl in the strace, just before the timeout output is given :

fcntl(5, F_SETFD, FD_CLOEXEC) = 0
connect(5, {sa_family=AF_INET6, sin6_port=htons(6110), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0
open("/u01/PRODERM/fs2/FMW_Home/webtier/instances/EBS_web_OHS2/config/OPMN/opmn/.formfactor", O_RDONLY) = 6
fstat(6, {st_mode=S_IFREG|0400, st_size=27, ...}) = 0

and we also had the following;

fcntl(5, F_SETFD, FD_CLOEXEC) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(6110), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused)

fcntl(22, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGHUP {si_signo=SIGHUP, si_code=SI_TKILL, si_pid=28993, si_uid=54321} -

Some additional info:

The AcceptMutex directive sets the method that Apache uses to serialize multiple children accepting requests on network sockets.
sysvsem : Uses SySV-style semaphores to implement the mutex..
fcntl:Uses the fnctl system call to lock the file defined by the LockFile directive

One final note on this issue:

Maybe ( I didn't test it), Linux semaphores will need to be manually cleaned up if HTTP Server crashes abnormally. If such a crash happens, you can use ipcs -a to see that, and ipcrm -s to clean them. (but again "maybe", I didn't test it... just saying)

Oracle EBS -- On the 6th anniversary of publication of our book...

 On the 6th anniversary of publication of our book...

It has been seven triumphant years since the publication of "Practical Oracle E-Business Suite: An Implementation and Management Guide". During this time, the IT world has seen tremendous alterations in the adaptation of technology and a shift towards cloud space; nevertheless, we take pride in the fact that the content produced seven years ago still offers invaluable understanding of the Oracle E-Business Suite product.

We would like to extend our sincere gratitude to Apress for providing us with the opportunity to author this book and to the Oracle community for their continued support.

Writing itself provides a cognitive offloading tool for externalizing representation of future events that need to be kept track of.



In case of Oracle E-Business Suite, the information provided in this book is still useful (considering latest release is still EBS 12.2 and not much changed), it provides a constant, robust and trusted access to the necessary information for administrating, installing, upgrading, configuring and extending Oracle EBS.

This book is part of our extended mind.
At the end of the day, the machinery of mind (for exploiting the expertise) doesn't all have to be in the head.

Tuesday, May 23, 2023

EBS 12.2 -- fs_clone fails on validations: ValidateETCHosts / [ERROR]: Required content is missing from /etc/hosts

Currently we are in the upgrade process of a fresh EBS 12.2 instance. (It is going be the first TEST environment of a new EBS project).  Okay. With that, lets go! ->

As a part of the installation, and as a requirement we are upgrading the newly installed EBS 12.2.0 to 12.2.11 and we failed while running adop's fs_clone as a post action for the upgrade. 

Adop logs were stating the error clearly. (as shared below)

-- ADOPValidations_detailed.log

Started execution : ADOPValidations.java
Validating entries in /etc/hosts
/etc/hosts contains required entries

--txkADOPValidations.log

ValidateETCHosts:
[ERROR]: Required content is missing from /etc/hosts file.

According to the error, there must have been a missing entry in the hosts file of the Apps node(s). However; /etc/hosts file was looking perfectly fine. (shared the contents below).

127.0.0.1 localhost.localdomain localhost
10.10.70.12 erman.ermanexample.com erman

Having the host file in place, with the correct content (apps host, domain and its IP address, along with localhost) in the proper format made me think that this error that adop was encountering might be a misleading one..  That's why we checked everything :).. From FND_NODES to ADOP-related tables &  autoconfig context files... Nothing seemed weird there.. 

Anyways, we were using the "cat" command for displaying the contents of /etc/hosts file at first.. So we decided the check its contents with our favorite text editor (which is "vi") and once we opened it, we saw an empty character at the end of the second line. It might be the cause of the problem. So, we made the customer modify the file and remove that empty char from there.

This didn't help.  So, again we found ourselves checking the clues, searching the Oracle Support and doing stuff like that.. Nevertheless, nothing made us think the otherwise.. There should have been something wrong with the hosts file..

As a last resort, we made the customer to recreate the hosts file from scratch.. Customer did that, and we had that Aha! moment and the problem disappeared :) Most probably, there were some other characters between those hosts entries and this was the cause of the problem.. It was just because adop couldn't read the hosts file as it should..

So, if you see this error, be persistent and insist that there is a problem with the hosts file. This error is not a misleading one, and Oracle's error handling and error messages are becoming point shots, more "to the point" day by day. Just keep that in mind.. See you in the next post.

EBS 12.2 -- ADOP PREPARE -hangs- while generating report to display the status of important tablespaces / ADZDSHOWTS.sql

Recently dealt with an issue in my forum. It was about patching an EBS 12.2 instance with A;DOP.

The issue was super clear -> Before starting the online patching cycle, ADOP prepare was executed, but the execution was never completed.

Just for the record, the environment was an EBS 12.2.5 consisting of 2 apps nodes (shared appl top) and 2 db nodes (active-active Oracle RAC)

The log/out was showing that ADOP was executing ADZDSHOWTS.sql and it was just waiting there.

[EVENT] Generating report for key tablespaces.
[PROCEDURE] [START 2023/05/11 15:27:38] Generating tablespaces report
[PROCEDURE] [START 2023/05/11 15:27:39] Generating report to display the status of important tablespaces. (ie. free space)
[STATEMENT] Report: /u01/UATERM/fs2/EBSapps/appl/ad/12.0.0/sql/ADZDSHOWTS.sql

The SQL was a standard one (a standard EBS AD SQL), and it was not expected to run slow actually..

SELECT df.tablespace_name , round((df.total_space/(1024*10
24*1024)),2) total_space , round(((df.total_space - fs.free_sp
ace)/(1024*1024*1024)),2) used_space , round((fs.free_space/(1
024*1024*1024)),2) free_space , round(((df.total_space-fs.free
_space) / df.total_space)*100, 2) PCT_USED FROM ( SELECT tab
lespace_name, SUM(bytes) TOTAL_SPACE FROM dba_data_files
GROUP BY tablespace_name) df , ( SELECT tablespace_name,
SUM(bytes) FREE_SPACE FROM dba_free_space GROUP BY t
ablespace_name) fs WHERE df.tablespace_name = fs.tablespac
e_name(+) and df.tablespace_name in ('SYSTEM', 'APPS_T
S_SEED', 'APPS_TS_TX_DATA', 'APPS_TS_TX_IDX') ORDER BY fs.tables
pace_name

Moreover; ADZDSHOWTS.sql was not generating an output (adzdshowts.out), clearly it was waiting in the database, and the wait event of its session was "db file sequential read". It was visiting the internal tables (X$) through indexes and nothing seemed weird, but! checking the execution plan gave us some clues.

The following 2 MOS noted visited for this;

Queries on DBA_FREE_SPACE are Slow (Doc ID 271169.1)
Space Related Dictionary View Performance Slow in Multitenant Database with Large Number of Pluggable Databases (Doc ID 2053791.1)

But! the actual solution was *collecting the fixed table stats and flushing the shared pool.

Remember -> Fixed objects are the "X$" tables and their indexes. Those v$ views are defined in top of X$ tables. So if you don't have any stats for them (not configured any auto stats jobs -- considering you are above 12C, cause prior to 12C fixed object stats are not included in auto stats gathering job), there are some defaults and optimizer uses those defaults to build its plans. 
However; sometimes as in this case, this may create you some troubles, so collecting the fixed object stats ( when there's a representative workload on the database) is a crucial thing especially after a major database or application upgrade or enabling a new module, or making changes to the database configuration. 

That's the tip of the day. I hope you 'll find it useful.