Need some inputs on Oracle instant client - oracle

Currently i am using ODP.Net.Is Oracle Instant client something to replace this or an addon.
Some sites talked about using this for both 64bit and 32 bit machines.
Thanks,
MY Findings:
Oracle Database Instant Client (ODIC) is not intended to replace ODP .Net or addon for .Net Apps;
ODP.Net is a client component of Oracle used to connect .Net apps to an Oracle database.
Oracle Instant Client is a method of installing Oracle client components (such as ODP.Net and OO4O) on a PC and is an alternative to the full client install.
Prior to Oracle 11g, ODP.Net was not included in Oracle Instant Client.
So we couldn't use Oracle Instant Client with applications that used ODP.Net. In Oracle 11g we can.
Other Explanation:
ODP.NET consists of two dll's: Oracle.DataAccess and OraOps. Oracle.DataAccess is the managed dll, which calls into OraOps which is the unmanaged dll that makes OCI calls into the Oracle client.
Instant Client consists of 3 or 4 dll's that constitute is a small footprint Oracle client that enables communication with the database from a client side application. Lots of middleware drivers can use Instant client: ODBC, OCI, OLEDB, ODP, etc.
ODP.NET relies on the Instant Client dlls to pass the OCI calls on to the database; it does not communicate with the database directly.
So..
ODP > Instant Client > Your Network > Listener/database/etc
You could certainly use Instant client with things besides ODP.NET.
You cannot use ODP.NET without some form of Oracle Client software (instant, or full).

Oracle Database Instant Client (ODIC) is not intended to replace your ODP .Net addon for .Net Apps; ODIC is used as Oracle Client to replace your TOAD or SQLDeveloper since you like the online-commands.
Nevertheless this ODIC can be used as an ODBC App client e.g. Querying your Oracle DB through Excel. I also use it from an USB key as OIC doesn't any OS registry operations.
Resources: Oracle Mini Site for Oracle Database Instant Client
Read on the mini site: I never used it but contains your ODP.NET
ODAC* Includes ODP.NET, Oracle Services for MTS, Oracle Providers for ASP.NET, Oracle Provider for OLE DB, and OO4O with Oracle Instant Client

Related

What Protocol does Oracle client use when connecting PowerBI to oracle database?

I have installed the Oracle client on my server & configured the TNS as per the database hosters instructions.
Powerbi can now connect to the Oracle datasource.
Id like clarity regarding what method PowerBI is connecting to the oracle source.
For example, I can connect to oracle via ODBC without using the Oracle Client.
Id like to know what protocol the oracle client is using and what are the benefits of using it over ODBC?
It looks like Power BI recommends installing the ODAC runtime for your environment. There is no alternative option. You might be asking why Power BI uses the Oracle ODP drivers instead of the Oracle ODBC driver - I'm pretty sure the answer is that it's faster and supports more Oracle features, since it doesn't have to implement a bridge.
If you're frustrated with the large size of the Oracle Client or full ODAC developer downloads, you might be able to just install the ODAC XCopy runtimes, which are much smaller. (32-bit, 64-bit)
To answer your question about protocols, as far as I know, every client uses the Oracle Net component of the proprietary Oracle Net Services network stack to connect the client to the server.
Then the client sends commands over the network connection. Again, as far as I know, most clients use the low-level OCI library to do this.
There are a lot of different clients built on top of OCI:
SQL*Plus
SQL*Loader
Datapump
Oracle Instant Client
Oracle Client (ie, "Thick Client")
Oracle JDBC OCI driver
Oracle ODBC driver, and other drivers for Microsoft products (ODP.NET unmanaged, ASP.NET, OLE DB)
There's a few exceptions:
Oracle JDBC Thin driver (entirely Java code)
Oracle ODP managed driver (entirely .NET code)
There is also a Microsoft ODBC driver for Oracle, although Microsoft explicitly says to use the Oracle driver instead. It doesn't support most modern Oracle data features ("Unicode data types, BLOBs, CLOBs, and so on").

10.2g to 11.2g and Microsoft ODBC for Oracle issues

My team are trying to migrate from ORACLE 10g to 11g. These are our system specs:
Our current production server:
ORACLE 10.2g
ORACLE Application Express(3.0)
Apache
Red Hat 64 bit
Our new server (not yet in production):
ORACLE 11.2g
ORACLE Application Express (4.1.1)
ORACLE HTTP Server
Red Hat 64 bit
We have managed to setup 11g, install APEX 4.1 and apply the recent patchset.
The only bit that's delaying us with our migration is that our business users have access to Crystal Reports XI, MS Access/Excel 2003 whcih they use to connect to our database. A typical user has Window XP SP 3 (32bit) operating system. At the moment we are using Microsoft ODBC for Oracle driver (version 2.575.1132.00) to connect to our 10g Database and have not had any issues. However when we try connect to 11g we keep getting ORA-03113: end-of-file on communication channel errors. In ORACLE SQL Developer, we're able to connect to our 11g instance using the "basic" connection. I have also used the "TNS" entries and that works well.
I think the business users obtained the Microsoft ODBC for Oracle driver by installing ORACLE Discover 3.1.3.6 which is used for another Oracle DB. They also have Oracle Client 7.3.3 which I can see Oracle73 (2.00.03.01) mentioned in the ODBM Data Source Admin screen.
We have tried googling for a result and after various tests, we have come to the conclusion that it is an ODBC driver issue. As far as our understand it ORACLE SQL Developer uses a different JAVA based driver to connect so it does not use the Microsoft version.
Can someone confirm that our understanding is correct about there being a compatibility issues with Microsoft ODBC for Oracle driver (version 2.575.1132.00) and 11.2g?
If so, what could you recommend a compatible driver to use with Crystal and Access/excel to extract the data?
I think the business users obtained the Microsoft ODBC for Oracle driver by installing ORACLE Discover 3.1.3.6 which is used for another Oracle DB. They also have Oracle Client 7.3.3 which I can see Oracle73 (2.00.03.01) mentioned in the ODBM Data Source Admin screen.
The Microsoft ODBC Driver for Oracle is written using an ancient version of the OCI (Oracle Call Interface) API that was deprecated when Oracle 8 was released (which was more than a decade and 11 major releases ago). Microsoft chose to desupport this driver rather than port it to the new version of the OCI API. Oracle 7 clients can connect to Oracle 10.2 databases but Oracle does not support connections between Oracle 7 clients and Oracle 11.2 databases.
You'll need to upgrade the version of the Oracle client that is installed on the business user's machines and you'll want to use the latest version of the Oracle ODBC driver that is appropriate for that version of the Oracle client. Assuming that you install the 11.2 version of the Oracle client (the only reason not to upgrade all the way to the 11.2 client would be if the users still needed to connect to older databases that don't support connections from an 11.2 client), you'd want to use the most recent version of the 11.2.0.x Oracle ODBC driver. The Oracle client install should also have the option to install a version of the Oracle ODBC driver-- that should be sufficient as well.

Connect Excel to Oracle

Can we connect from excel (excel-VBA) to oracle(in a remote server) without
installing oracle client in the client system... I tried all the options
below but it is throwing error as oracle client should be installed.
below is the connectionstring i have used
1)strConnection = "Provider=OraOLEDB.Oracle;Data Source=SourceName;User Id=Username;
Password=password;"
2)strConnection = "Provider=MSDAORA;Data Source=SourceName;UserId=Username;
Password=password;"
3)strConnection = "Provider=MSDAORA.1;User ID=Username/password;Data
Source=SourceName;Persist Security Info=False"
4)strConnection = "Driver={Microsoft ODBC for Oracle};SERVER=(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.6)(PORT=1521)
)(CONNECT_DATA (SERVICE_NAME=SERVICEName)));uid=Username;
pwd=password;Uid=Username;Pwd=password;"
5)strConnection = "SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.6)
(PORT=1521))(CONNECT_DATA =(SERVICE_NAME=SERVICEName)));
uid=Username;pwd=password;"
You need some form of client to connect to an Oracle database, local or remote.
You have two choices:
Install an Oracle SQL*Net client. If your server is Oracle 10g or higher you don't need the full-blown client: you can use the more lightweight Instant Client.
Buy an n-tier ODBC driver which supports generic connectivity. OpenLink is one, there are others.
".can we not connect to the oracle
database with only the Drivers or
providers present in our OS(Windows
XP).."
Think of it this way: the ODBC drivers do not connect to the database, they connect to SQLNet. Then SQLNet connects to the database.
"what is the difference between
Drivers,providers with the client. "
The Oracle provided drivers are better tuned for Oracle than the ones MS provides, but in this context they are the same: both require the presence of an Oracle client to work.

ADO.NET for connecting Oracle Database on server

Recently we have developed an application which connects to oracle database for fetching records. For fetching records, we are using OLEDB for Oracle. Application runs fine on my machine by connectng properly with Oracle ,since i have oracle client installed on my machine. Now i tried to test application on another machine, which doesnot have any oracle instance/Client installed on his machine. Application fails to connect to oracle central DB Server. Is it necessary for users to install oracle client on their machine before the application communicates with Oracle.
Here is Connection string
connectionString="Provider=msdaora;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XYZ)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=abc.com)));Persist Security Info=False;User Id=mahens; Password=XXXXXXXXX" providerName="System.Data.SQLOLEDB"/>
The above code is for OLEDB for oracle. Is there any thing i required to install for connecting to central Oracle DB server from my windows application(.NET application installed on local machine).
If we try to use ODP.NET dll and include those dll's along within BIN directory,will that work?..Can any1 tell me a way wherein user need not install any oracle Client on their machine and communicate to server.
-Mahender
I believe you always need the oracle client installed as everything in .net ultimately uses ODP.NET. However, you can use the Oracle Instant Client to make your users' setup process easier.

Connect to an Oracle 8.0 database using a 10g client

I recently upgraded my oracle client to 10g (10.2.0.1.0).
Now when I try to connect to a legacy 8.0 database, I get
ORA-03134: Connections to this server version are no longer supported.
Is there any workaround for this problem, or do I have to install two clients on my local machine?
Yes, you can connect to an Oracle 8i database with the 10g client, but the 8i Database requires the 8.1.7.3 patchset, which you can get from Oracle's Metalink support site (requires login).
Here's an Oracle forum post with the details.
If updating your Oracle Database isn't an option, then you can have 2 different clients installed (in different "Oracle Homes" (or directories), and use the selecthome.bat file to switch between your installed clients.
For example, before connecting to 8i, you'd run:
C:\Oracle\Client1_8i\bin\selecthome.bat
or this to use your Oracle 10g client:
C:\Oracle\Client2_10g\bin\selecthome.bat
I had to connect a C# code to an Oracle 7 (I know you it's 8...)... the only way I get it was to get the CD to install the Oracle Server and to go in the "Optional Configuration Component" and to use the Oracle73 Ver2.5.
I think you should go check the CD of the Oracle 8 Server and check if an ODBC is still available.
The best way to connect an Oracle 8.1.7 and higher is through Instant Client. Download Instant client 10.2 from oracle site, copy all files in the same folder where .NET assemblies resides and use classes located in System.Data.OracleClient. This work for me in .NET 4 project and oracle DB 8.1.7 server.

Resources