How to access to Oracle 12c schema from Oracle 11g instance - oracle

We have two cloned schemas (from 11g to 12c).
One was created in 2016 and another was created in 2019.
Can anyone please advise on how to connect to cloned schema (12c) from 11g client?
I am able to connect to the schema cloned (12c) in 2016 from 11g client. However, I am unable to connect to the schema which was cloned (12c) in 2019.
Anyone's inputs on priority are highly appreciated.

This is how I understood the question: in order to connect to any database, we use a connect string, e.g.
connect scott/tiger#orcl
ORCL represents the database. Usually, it is an alias we put into TNSNAMES.ORA file and looks like this:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db_server_2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA11G)
)
)
In order to connect to a new database, you'll have to edit that file and add another alias, to that newly created database. It will probably have another host name and service name. Which ones are they, I don't know. If you know it, fine; if not, ask your DBA.
Suppose it'll look like this:
ORCL12C_2019 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db_server_12C)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA12C_2019)
)
)
Then you'd connect to it as
connect scott/tiger#ORCL12C_2019

Related

Connect to Oracle DB via ODBC driver

I'm trying to connect to an Oracle Database via ODBC.
This connection will allow me to connect Power BI Desktop to Oracle.
Using SQL Developer, I can managed to establish the connection, see the tables, views, etc.
Now, using Oracle Client 64-bit ODAC 12c Release 4 (12.1.0.2.4) for Windows x64, I get this tnsnames.ora file with the following configurations:
MYCONNECT=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 123.xxxx.xxx..xxx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
This all looks ok, but when trying to create the ODBC driver in windows, I get the following after entering the credentials:
And the error:
So, why can I establish the connection via SQL developer and not via ODBC driver?
And how can I solve this problem?
Thanks!

Why does Managed ODP.Net demand SERVICE_NAME?

I am migrating a .Net 4.6.2 application from using Microsoft's System.Data.OracleClient to Oracle's own managed ODP.Net (Nuget package, version 12.2.11)for connecting to an Oracle database. I have the Oracle client installed (11gR2) and apart from changing references, using clauses, type names etc the code is pretty much the same. However, whilst my pre-migrate code connects quite happily, the post-migrate will not connect. Instead it throws an OracleException
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA.
The tnsnames.ora file is the same, and the application's connection string is the same, and I have never before needed to specify a service name.
TnsNames.ora:
ORACLEDBSERVER2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleDBServer2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcdb10g)
(SERVER = DEDICATED)
)
Connection string:
USER ID=MATTESTNHADMIN;PASSWORD=XXXXX;DATA SOURCE=oracledbserver2
Why is it now demanding a SERVICE NAME? Even if I add a clause to the CONNECT_DATA part (SERVICE_NAME = orcdb10g) I get the same error.
I assume your program does not find the tnsnames.ora file. Unlike the old drivers the ODP.NET managed driver does not read TNS_ADMIN value from the Registy.
See this answer https://stackoverflow.com/a/28283924/3027266 to see how ODP.NET managed driver is looking for tnsnames.ora file.
Note, when you use ODP.NET managed driver then you don't have to install any further Oracle client.

LINQPad - Connection String to my Oracle DB

I just started using LINQPad and all works great when connecting to my SQL Server DB, but now I'm trying to set up a second connection to my Oracle DB and I'm getting stuck as to how to do it.
I downloaded the IQ driver (v 2.0.8.0 - Latest) and when I go to add a new connection, I select Oracle as my DB Provider and don't know how to do the rest based upon my usual connection string looking as follows:
Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = [IP Address])(PORT = [Port]))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = [Service Name])));User Id=[name];Password=[password];"
I know that you usually post what you've tried, but, believe me, I've tried filling in those text boxes every which way I could think of and keep getting errors when I click the "Test" button.
Also, one of the errors I get is:
License not valid due to the problems with dotConnect for Oracle installation - I don't think that's the only issue, but I'm sure I'll also need to fix that problem too....
Any suggestions / links to offer about what to fill in where to make this work??
THANKS!!!!!!!
I've just got this working with the latest version of LINQPad (4.55.03) Premium, and IQ (2.1.1.0), as of 2015-03-09.
In our workplace, we use the TNSNAMES.ORA file to connect to Oracle 11g using PL/SQL Developer with entries such as:
TNS_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = the-host-name)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = the-service-name)
)
)
and JDBC connection strings for ColdFusion's connection to Oracle in the format
jdbc:oracle:thin:#
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = the-host-name)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = the-service-name)
)
)
In LINQPad's Choose Data Context window, select the IQ driver and click Next...
Provider: Oracle
Connection Mode: Direct (although my workstation has both 32 and 64 bit Oracle clients installed, which PL/SQL Developer and ColdFusion use, respectively)
Server: the-host-name
User Name: your Oracle username
Password: its password
On the Advanced tab:
Additional connection string options:
SERVICE NAME=the-service-name
Clicking Test shows Connection Successful
The connection icon (a cog) in the connections pane then populated with the list of tables.
There is a build issue in the newest IQDriver release. Revert to previous version (2.0.7) and you won't see that error. Author removed latest version, so you can do that directly from LINQPad (Add connection | Select IQ | Delete Driver | Re-download IQ Driver).

ORA-01017 Invalid username/password - Password/Username is correct

I have created an oracle database on the Application express from oracle database 11g express edition, now while trying to connect to it through toad for oracle (or visual studio) I get the error
ORA-01017: Invalid username/password;logon denied.
I use the same username/password to connect to the application express and get acces to the database. I don't know what's wrong.
I changed the tnsnames.ora:
OFFICEMEMO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = (my host))(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
but I don't think this is the problem because it already says invalid username/password.

Invoking SQL Loader with a DSN

I'm trying to load some data to an Oracle database using SQL Loader. Is it possible to invoke it with specifying the server to load the data into using a DSN instead of a TNS?
Right now my command line looks like this: sqlldr uesr/password#tns_id..., I'd like to replace tns_id with a DSN that points to tns_id. Can SQL Loader figure out the TNS from the DSN by itself?
A database can be identified (in Oracle terms) by a hostname, port (generally 1521) and service/sid.
SQL Loader won't be able to work with a DSN itself, but if you can use Windows scripting or similar to worm the host/port/service information out, you'll be most of the way there.
With a full client installed and a tnsnames.ora do a
tnsping dbname
You should get something like
Attempting to contact
(DESCRIPTION = (ENABLE=BROKEN) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = servname)))
OK (30 msec)
You should then be able to do
sqlplus user/pass#hostname:1521/servname

Resources