UTL_HTTP Begin Request failure after Database upgrade - oracle

I am currently running into issues
ORA-29273: HTTP request failed
ORA-29259: end-of-input reached
when trying to do the begin_request method:
utl_http.set_wallet('','');
v_soap_ep = WALLET_PATH;
utl_http.begin_request(v_soap_ep, 'POST', 'HTTP/1.1');
This issue just started occurring today (Worked yesterday), and no changes to the code happened, although there was a database upgrade from 11g -> 12c. The WALLET_PATH links to a valid address, but the WALLET_PATH links to a 11g database (not 12c). I have little knowledge on this subject, and was wondering if this error was possibly caused by the two different database versions trying to work together.
Note: I put an invalid address into the c_soap_ep variable, and recieved a different error. (So that is why I am thinking there might be a compatability issue). Any thoughts or areas I can check out would be helpful, thanks.
ORA-29273: HTTP request failed
ORA-12545: Connect failed because target host or object does not exist

You can't use 11g wallets in 12c. Because, wallet creation is totally different in 12c as it uses new syntax.
For example:
-- Create
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'keystore_location'
IDENTIFIED BY software_keystore_password;
-- Open
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN
IDENTIFIED BY software_keystore_password;
-- Close
ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE
IDENTIFIED BY software_keystore_password;
So, try creating a new wallet/keystore in 12c then use it for utl_http

Related

ORA-20000: AOP Server can not be found

I installed AOP and have now a little problem. I get the error
ORA-20000: AOP Server can not be found. Check if it is running at http://api.apexofficeprint.com/
when trying to create a template or report.
Oracle Database 18 XE
Apex 20.1
Apex Office Print 20.2
That's a general error you are receiving. This is more of a network issue than AOP.
The first step would be to check if you ACL has been set up properly. You could check this by executing the following through SQL Workshop -> SQL Commands:
select apex_web_service.make_rest_request('http://api.apexofficeprint.com/marco', 'GET') from dual;
if the ACL was configured properly you should get a "polo" string back.
If this does result in an error, you should be able to get the exact HTTP error by executing the following command:
select utl_http.get_detailed_sqlerrm from dual;
You should see something like this:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1577
ORA-24247: network access denied by access control list (ACL)
The code to configure ACL can be found on oracle documentation for 20.1
I've pasted the code below to make it easier. You will need to connect to the database where Oracle Application Express is installed as SYS specifying the SYSDBA role.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.apexofficeprint.com',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'APEX_200100',
principal_type => xs_acl.ptype_db));
END;
/
For completeness I am also hyperlinking it here for other versions of APEX.
: APEX 5.0, APEX 5.1, APEX 18.1, APEX 18.2, APEX 19.1, APEX 19.2
Once this has been setup, you should be able to connect to api.apexofficeprint.com without issues. However please note that you are currently using http protocol which is unsecure and we recommend you to use https.
In order for you to use https, you will have to add the root certificate of AOP server. This blog capture the method in detail.
Furthermore if you have installed the AOP sample application, you can debug connection issues from connection test page (Debugging -> Test Connection). This page will detect the URL you have used for the plugin and allow you to check the connection. This detects ACL, wallet issues, certificate validation issue and if the server is running in the provided URL.
PS: Could it be that you used other email than support#apexofficeprint.com to contact us? I see that one of your email and the feedback were both answered within an hour.

Error connecting Oracle - ORA-12638: Credential retrieval failed

I am getting the following error while using linked server in sql to connect and external oracle db
Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxx".
OLE DB provider "OraOLEDB.Oracle" for linked server "xxx" returned message "ORA-12638: Credential retrieval failed".
I am having this issue around 4 out 5 times. So it works only sometimes.
In my case, the test and live oracle DB(external) is on the same physical server with different SID/db instance.
The test connection using OraOLEDB works consistently, it's the live linked server that's the problem.
Also to take out the network from equation I tried connecting oracle live from our test environment and oracle test from our live. Connection to oracle test works fine irrespective and live doesn't.
I can connect to the application fronting the External Oracle DB fine using the live login credentials that are used for the live linked server. So that to me takes the login account out of the question.
Question 1:- Is there any other way to connect to external Oracle DB from either via sql or C#?
I used openrowset as below and get an error:
SELECT *
FROM OPENROWSET('OraOLEDB.Oracle', 'Data Source=external_Oracle_serverIP;Initial Catalog=bbinstance;User id=xxx; Password=xx;',
'SELECT * FROM dbname')
I get the following error
OLE DB provider "OraOLEDB.Oracle" for linked server "(null)" returned message "ORA-12560: TNS:protocol adapter error". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "OraOLEDB.Oracle" for linked server "(null)".
Question 2: What am I doing wrong above?
When I've encountered this issue, it's because of the following line in sqlnet.ora:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
This causes Oracle to attempt to use Windows Native Authentication Services.
If Oracle cannot authenticate via this method, you'll get the 12638 error. To troubleshoot, change this line to
SQLNET.AUTHENTICATION_SERVICES= (NONE)
and repeat your test to the live database.
Oracle 12c & Above:
Sometimes, there are chances that 2 Oracle Pluggable DB services running under different root databases can run with same listener creating this chaos. Check and stop (if not Prod) unwanted PDB and try connecting to the required DB.

java.sql.SQLException: ORA-28040: No matching authentication protocol DSRA0010E: SQL State = 99999, Error Code = 28,040

I am trying to change the datasource in WebSphere pointing to some other environment. I am able to connect it using toad or sqldeveloper. However when I am trying to test the connection from websphere, it is giving the following error.
"java.sql.SQLException: ORA-28040: No matching authentication protocol DSRA0010E: SQL State = 99999, Error Code = 28,040. View JVM logs for further details."
I tried restarting the server but didn't helped. Not sure what is going wrong in this.
You didn't post any configuration information or server logs, so, assuming the old Oracle connection URL was working prior to you changing it, one common cause of this problem is changing the connection URL to move from an Oracle 11 instance (or earlier) to an Oracle 12 instance without properly updating the classpath of the WebSphere JDBC Provider to use at least the ojdbc6.jar.

Database Link error ORA-12545: Connect failed because target host or object does not exist

I am currently accessing/connecting to a remote database through VPN and I have no issues querying on the remote database. I want to create a db-link to connect my local db to the remote database in order to join certain tables. Sadly, I am getting error ORA-12545.
This is my db-link code:
CREATE DATABASE LINK DB_LINK
CONNECT TO REMOTE_USER_NAME
IDENTIFIED BY PASSWORD
USING '(DESCRIPTION=(CONNECT_DATA=(SID=test_SID))(ADDRESS=(PROTOCOL=TCP)(HOST=HOST_NAME.com)(PORT=1521)))'
I don't have an Oracle client installed on my machine so I am using the full description. There are no issue accessing both our db and the remote db without an Oracle client installed so I assume this is not the problem.
My ping to the remote address returned TTL expired in transit even though the VPN is connected. This seems a bit weird but I am not entirely sure if this is the problem.
I must be missing a crucial step. Any advice is appreciated.

OBIEE Answers not showing results

I recently installed OBIEE 11.1.1.6.0. I imported the repository I had from 11.1.1.5 which was working fine till now.
In the administration tool, I can query my data and update the rows, I can connect with the same credentials as the connection pool without problems in SQLPLUS.
Users have the RESOURCE and CONNECT privileges.
My weblogic user as all the privileges and has been granted read/write to my Subject area.
I have set the environment variables, modified the instancesconfig.xml and tried all the things i could've found on the OTN but BI Answers continues to give me this ERROR
View Display Error
Odbc driver returned an error (SQLExecDirectW).
Error Details
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000]
[nQSError: 10058] A general error has occurred.
[nQSError: 43113] Message returned from OBIS.
[nQSError: 43119] Query Failed:
[nQSError: 17001] Oracle Error code: 1017, message: ORA-01017: invalid username/password; logon denied at OCI call OCISessionBegin.
[nQSError: 17014] Could not connect to Oracle database. (HY000)
SQL Issued: SELECT 0 s_0, "SAP_AVIS"."Fait SAP AVIS"."Avis" s_1 FROM "SAP_AVIS" FETCH FIRST 65001 ROWS ONLY
Please help, I am desperate.
I have been able to resolve my OCI ORA-01017 error.
The problem was caused by my connection pools.
I had a connection amed "A" to access tables in a certain schema in my DB and another connection named "B" this time to access tables in another schema but in the same DB.
In Oracle BI Answers (presentation), I was trying to view data whitin the connection B but strangely OBIEE Answers was using the connection A.
In the end I removed/renamed the connection A and everthing worked like nothing never happend.
I am not saying that this is the best method. Maybe i skipped a config that assigns the default connection pool to use but it did the job.
Option 1:
Copy your tnsnames.ora to {Oracle_BI1}\network\admin directory & {oracle_common}\network\admin directory
Option 2:
Instead of using tnsnames.ora entry in the RPD, use the full expanded tnsnames.
I have never faced this issue, so I'm not sure this'll work or not but you can try. Option 2 might just do the trick.
Vijay.
For me oracle client was not installed,
when I Installed the oracle client problem got solved

Resources