Oracle SqlError: Protocol Violation / OALL8 is in an inconsistant state - oracle

I'm getting Protocol Violation and OALL8 is an inconsistant state exceptions trying to execute SELECT queries, but only on SOME of my tables. I first noticed this in a test application that I wrote that did a SELECT * FROM SOMETABLE. It would get through several hundred records and then just lock up on me. I tried running the same query in Oracle' SQLDeveloper, and would get the Protocol Violation exception on some tables. Eventually it gets to a point where it indicates "OALL8 is in an inconsistant state" for any query.
Does anyone know why this is occurring and how to fix the problem? Where is my inconsistent state? Is Oracle's SqlDeveloper its own standalone client, or does it rely on ODAC or Instant Client (referenced in PATH envi var) to be present?
The only thing that changed recently was that I installed ODAC so that I could use odp.net to replace System.Data.OracleClient in .NET. IT was ODAC 11.2.0.3.0 with Oracle Developer Tools for Visual Studio, 32 bit. I since updated my PATH environmetn variable to point to my stand-alone instant client.
Instant Client - 11.2.0.2.0, running on Win XP SP3, 32-bit Oracle DB:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production, Running on Windows Server 2003, x64
ODAC: 11.2.0.3.0
SqlDeveloper was installed before I installed ODAC, but somehow SqlDeveloper seems to be going through ODAC as the client, despite ODAC not being referenced in the PATH environment variable.
Update: When I initially installed ODAC, all of my queries functioned normally. Then they stopped functioning after a day, and I can't explain why. I attempted to uninstall ODAC, which failed when looking for a .DLL to delete. I then manually deleted my ORACLE_HOME, and reinstalled ODAC, and it's working fine for now. I don't understand why this is the case.

SQL Developer uses the ORACLE_HOME and it's drivers when available. The issue you are seeing in this is that the ORACLE_HOME is not the same version as the JDBC Driver bundled in SQL Developer.
The 'fix' for this is to ensure the oracle client is up to date w/ the version of sqldev you have installed. The easiest way to find this is when connection run show jdbc
show jdbc
-- Database Info --
Database Product Name: Oracle
Database Product Version: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
Database Major Version: 12
Database Minor Version: 1
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 12.2.0.1.0
Driver Major Version: 12
Driver Minor Version: 2

Related

Which Oracle 11g has DBCA?

I am having an issue with Oracle 11g. I need to download an Oracle 11g database that has the Database Configuration Assistant. I had already downloaded Oracle 11g Express Edition not realizing it apparently doesn't have DBCA.
So which Oracle 11g do I need to download so I can use DBCA?
I am on the Oracle website and see Oracle 11g Release 2. I have a Windows laptop with Windows 10.
That would be any other version (Standard or Enterprise).
11gXE has its limitations and creates a sample database during the installation process. As it allows only one instance, DBCA is useless in that version and is, therefore, not shipped with it.
Standard or Enterprise edition of Oracle 11g would do.
I have downloaded the version from Oracle and DBCA worked for me.

Which edition of oracle is installed

We are compiling a code which needs 32 bit oracle db to be installed. So i need to install a oracle 32 bit. We have another machine where 32 bit oracle 11g is installed and we are able to compile Succesfully.
I need to know which edition of oracle is installed there (Standard or Enterprise) so I can install the same in my machine.
Additional info:
Oracle 32 bit is just a plain db. it is not installed with configuration or Listner. So i cant find out through any queries.
You have to query the data dictionary view PRODUCT_COMPONENT_VERSION to identify the release of Oracle Database that is currently installed.
The below query will help you.
SELECT product, version, status
FROM PRODUCT_COMPONENT_VERSION
WHERE product LIKE 'Oracle Database%';
PRODUCT VERSION STATUS
====================================== ========== ================
Oracle Database 11g Enterprise Edition 11.2.0.3.0 64bit Production
If you need more information about database, you can query
select * from v$database;
for more information refre here http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1073.htm#REFRN30047
If you connect to SQL PLUS it will say which version and edition you had installed

Migrate Oracle DB

I had to connect my Oracle 10g XE (10.2.0.1) with Visual Studio 2012.
Since I found that 10g is not compatible now, so I want to migrate it to higher version - 12c.
I have successfully installed Oracle 12c Enterprise Edition, but it's upgrade assistant says that you have to upgrade your 10g (10.2.0.1) to the version 10.2.0.5, then DB can be migrated to 12c.
Question: How to upgrade Oracle 10.2.0.1 to 10.2.0.5 ?
I couldn't find the patch links from internet, I have searched a lot on the internet but didn't not get an amazing solution that resolves my problem in one shot.
This message is an error in the installer. It is applicable to other editions of Oracle (for example to a Standard Edition) but XE does not have such version as 10.2.0.5. Even with an Oracle support contract paid, there is simply no such version on metalink. You need to export-import like described in this question.
You need a metalink account to download this patch (legally); it's probably easier to export the database and import it into a fresh 12c instance.

Driver Issues connecting to Oracle 11g using MS OLE driver from SSIS

I am having driver issues trying to connect to an Oracle Database 11g in an SSIS SQL Server Integration Package.
In SSIS, I created a OLE Database Connection using the Native OLE DB\Microsoft OLE DB Provider for Oracle. When I test the connection, the outcome is successful but I run into issues when I attempt to reference this Connection from an OLE DB Source task.
In the OLE DB Source task, I am able to see all of the tables but when I select one, I get the following error:
Exception from HRESULT: 0xC02020E8
Error at Data Flow Task [OLE DB Source [1]]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for Oracle" Hresult: 0x80004005 Description: "Unspecified error".
An OLE DB record is available. Source: "Microsoft OLE DB Provider for Oracle" Hresult: 0x80004005 Description: "Oracle error occurred, but error message could not be retrieved from Oracle.".
An OLE DB record is available. Source: "Microsoft OLE DB Provider for Oracle" Hresult: 0x80004005 Description: "Data type is not supported."
Error at Data Flow Task [OLE DB Source [1]]: Opening a rowset for ""MySchema"."MyTable"" failed. Check that the object exists in the database.
I did not see any Oracle OLE drivers to select. I considered downloading one (ODAC101040.exe (174MB)) from here:
http://www.oracle.com/technetwork/database/windows/utilsoft-088126.html
but the download was very large and I already have 2 oracle drivers on my PC that are very large install. I'd hate to download more drivers that I need because they are huge downloads and my company probably would rather me not be a maverick downloader, but if I know what I need instead of trial and error downloading, it'll get done.
When I look on my PC under Startup->All Programs, I see the following menu folders:
Oracle - OraClient11g_home1
Oracle - OraClient11g_home1_32but
I do not have Admin rights on my PC but I do have elevated rights. When I run the Net Configuration Assistant under the 32 bit folder, I test the connection and it works fine. When I try to run the 64 bit version, nothing comes up.
I only seem to have 1 TNS file on my PC,
c:\windows\tnsnames.ora
this file was manually edited originally. I suspect that it is associated with my 32 bit driver. I expected to find my TNS files under these two folders, but did not find any:
C:\Oracle\product\11203_32bit\CLIENT_1\NETWORK\ADMIN\
C:\Oracle\product\11203_62bit\CLIENT_1\NETWORK\ADMIN\
Here's my version of the Oracle database that I am trying to connect to:
1 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
2 PL/SQL Release 11.2.0.3.0 - Production
3 CORE 11.2.0.3.0 Production
4 TNS for Linux: Version 11.2.0.3.0 - Production
5 NLSRTL Version 11.2.0.3.0 - Production
What driver should I install to get my SSIS Package to work? I'd prefer to download a compatible (newer?) MS OLE driver but would be willing to install others.
Added Info:
My connection string:
Data Source=MyDb.MyCompany.COM;User ID=MyEffinId;Provider=MSDAORA.1;Persist Security Info=True;
I prefer the Attunity then Oracle then Microsoft drivers, in that order. Attunity requires SQL Server Enterprise Edition.
I tend to only install the 32-bit versions and force the packages to run in 32-bit mode to avoid wasting time on setup, config & patching on every developer machine and server, and also avoid the obscure issues between the versions.
The Microsoft driver seems to be the best one for calling Oracle Stored Procedures and passing parameters.

connect with oracle database through visual studio 2010

I have installed oracle database 11gR2 and visual studio 2010 32 bit. Then I tried to install odac for oracle client 11.2.0.1.2. It gives this error.
"Oracle Data Access Components for oracle client 11.2.0.1.1 can only be installed over and existing Oracle client 11.2 Hoeme. Use Oracle Data Access Components for Oracle server 11.2.0.1.0 to install in Oracle server 11.2.0.1.0 Home."
I can't understand what to do next.Hope your helps...
thank you.
When you install, choose a new Oracle Home directory with the client. If you want a step by step guide how to do this, follow this tutorial:
http://docs.oracle.com/cd/E17781_01/appdev.112/e18751/installation.htm#CACBIDHI

Resources