I want to understand as to how do we configure PowerPack for Oracle Database APM agent for Oracle RAC databases?
We have a 2 node Oracle 12cR2 RAC cluster and the JDBC connection string goes something like this:
(DESCRIPTION= (RETRY_COUNT = 2)(CONNECT_TIMEOUT = 3) (ADDRESS_LIST= (LOAD_BALANCE=off)(FAILOVER=on) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.12.52)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.12.62)(PORT = 1521)) (CONNECT_DATA= (SERVER = DEDICATED)(SERVICE_NAME = tmsrv) ))
I tried providing the hostname/port/servicename entries as per the PPOracleDB.properties file comments.
Unfortunately, this doesn't work and I always get the "Service cannot identify the connect identifier specified" error.
I have a java app using JDBC to connect to the same RAC DB on the same host and it is able to connect if we provide the JDBC URL given above.
Need to know the exact configuration which needs to be provided for connecting to Oracle RAC DB as given above.
I don't have an answer but these links on APM & Oracle RAC may help with other issues/future issues you may be having
Can other APM admins/user provide their insights on this important question?
Yes OOTB the Oracle PP only supports Oracle JDBC thin driver connections and your JDBC Connection string is in the JDBC OCI driver format, so you need to use the advice from the first link Hal listed:
Configuring APM Oracle PowerPack/Extension for Oracle to use Oracle JDBC OCI driver & TNSNames Alias Syntax(enables use of Oracle RAC & Oracle Secure External Password Store)
I have the following APM Enterprise Version installed : 10.3.0.19 (Build 990300) on RHEL 7.2 (x64)
I have downloaded the attached package and copied the respective files to the original Oracle power pack agent installed location.
Once I start the agent service, I see the following error in logs:
OpenJDK 64-Bit Server VM warning: You have loaded library /opt/oracle/product/11.2.0/client_1/lib/libocijdbc11.so which might have disabled stack guard. The VM will try to fix the stack guard now.It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: /opt/oracle/product/11.2.0/client_1/lib/libocijdbc11.so: /opt/oracle/product/11.2.0/client_1/lib/libocijdbc11.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) ......
I am using Oracle client version 18.104.22.168 (x64) to connect to the Oracle RAC DB and the same has been added to the LD_LIBRARY_PATH before starting the agent service.
Am I missing something here?
Please check the original documentation concerning this agent. I believe it was configured to run with a 32-bit JRE and may not work with a 64-bit JRE and driver.
Take a look at this: https://stackoverflow.com/questions/16188672/wrong-elf-class-elfclass32-possible-cause-architecture-word-width-mismatch
Here's another that basically states the same thing; run a 32-bit JRE or SDK: https://stackoverflow.com/questions/6172105/wrong-elf-class-elfclass32
I was able to Solve this issue.Full details are given below:
After searching for a bit, I stumbled upon this link
db:: 2.77::java.lang.UnsatisfiedLinkError(cause: architecture word width mismatch) 18
One of the posts said that even if you are using a 64 bit version of the Oracle Client (in my case v 22.214.171.124 (x64)), oracle ships only 32 bit OCI driver.
The thin driver still works fine with 64 bit JDK's though.
So basically, libocijdbc11.so is the 32 bit lib present in a 64 bit oracle client installation and hence the error (because 64 bit JVM process tries to load 32 bit OCI driver)
Steps taken to resolve this issue:
1. Downloaded and configured the 32 bit SUN JRE (v 1.8.x) for the Oracle Power Pack agent.
2. In my case had to replace the ojdbc6.jar file present in the package (v 10.3.15) since it has version 126.96.36.199 and is not compatible with the oracle client version that i was using. I replaced it with the corresponding ojdbc6.jar from 188.8.131.52 client installation.
3. Set the LD_LIBRARY_PATH and ORACLE_HOME appropriately so that OCI driver can read the correct TNSNAMES file and pick up the TNSAlias correctly.
4. Restarted the agent service and everything worked like a charm.