Sümptomid
Oracle'i andmebaasiga saate ühenduse luua Microsoft OLE DB pakkuja Oracle’i jaoks (MSDAORA) abil ja seejärel katkestate ühenduse serveri poolel. Kui avate oma rakenduse kaudu Oracle'i andmebaasiga uue ühenduse, kuvatakse järgmine eranditõrge:
Märkus.
System.Data.OleDb.OleDbException: määramata tõrge
ORA-01012: pole sisse logitud
Põhjus
Kui lõpetate MSDAORA kasutamise ajal oracle'i andmebaasi ühenduse serveripoolses servas, tagastatakse katkenud ühendus ühendusekausta. Ühendusekausta kood suhtleb valesti MSDAORA atribuudiga ResetConnection. Kui pakkuja seda atribuuti ei toeta, tõlgendab salvestuskood valesti, et ühendus lähtestatakse ja ühendus on kehtiv. Kui kliendikood avab uue ühenduse, võidakse tuua ühendusekausta tagastatud katkenud ühendus. Seetõttu kuvatakse tõrketeade, mida on mainitud jaotises "Sümptomid".
Lahendus
Kiirparanduse teave
Microsoftilt on nüüd saadaval toetatud kiirparandus. Siiski on see ette nähtud ainult selles artiklis kirjeldatud probleemi lahendamiseks. Rakendage see ainult süsteemidele, kus esineb see konkreetne probleem. See kiirparandus võib saada täiendavaid katseid. Seega, kui see probleem ei mõjuta teid tõsiselt, soovitame oodata järgmist hoolduspaketti, mis sisaldab seda kiirparandust.
Probleemi kohe lahendamiseks võtke kiirparanduse hankimiseks ühendust Microsofti klienditoe teenustega. Microsofti klienditoe teenuste telefoninumbrite täieliku loendi ja tugiteenuste kulude kohta teabe saamiseks külastage järgmist Microsofti veebisaiti:
http://support.microsoft.com/contactus/?ws=support Märkus. Erijuhtudel võidakse tavaliselt tugiteenuse kõnede eest tehtud tasud tühistada, kui Microsofti tugitöötaja leiab, et konkreetne värskendus lahendab teie probleemi. Tavapärased toetuskulud kehtivad täiendavatele tugiteenustega seotud küsimustele ja probleemidele, mis ei vasta kõnealuse värskenduse tingimustele.
Failiteave
Selle kiirparanduse ingliskeelne versioon sisaldab faili atribuute (või uuemad failiatribuudid), mis on loetletud järgmises tabelis. Nende failide kuupäevad ja kellaajad on loetletud koordineeritud maailmaaja (UTC) järgi. Failiteabe vaatamisel teisendatakse see kohalikuks kellaajaks. UTC ja kohaliku kellaaja erinevuse leidmiseks kasutage Juhtpaneel tööriista Kuupäev ja kellaaeg vahekaarti Ajavöönd.
Microsofti andmepääsukomponendid (MDAC) 2.8
Date Time Version Size File name
---------------------------------------------------------
10-Mar-2004 04:22 2.80.1036.0 225,280 Msdaora.dll
10-Mar-2004 04:22 2000.85.1036.0 24,576 Odbcbcp.dll
10-Mar-2004 04:21 2.80.1036.0 442,368 Oledb32.dll
10-Mar-2004 04:21 2000.85.1036.0 401,408 Sqlsrv32.dll
MDAC 2.7 Hoolduspakett 1
Date Time Version Size File name
---------------------------------------------------------
10-Mar-2004 02:19 2000.81.9046.0 61,440 Dbnetlib.dll
10-Mar-2004 02:20 2.71.9046.0 221,184 Msdaora.dll
10-Mar-2004 02:15 2.71.9046.0 126,976 Msdart.dll
10-Mar-2004 02:15 3.520.9046.0 204,800 Odbc32.dll
10-Mar-2004 02:20 2000.81.9046.0 24,576 Odbcbcp.dll
10-Mar-2004 02:20 3.520.9046.0 98,304 Odbccp32.dll
10-Mar-2004 02:16 2.71.9046.0 417,792 Oledb32.dll
10-Mar-2004 02:19 2000.81.9046.0 471,040 Sqloledb.dll
10-Mar-2004 02:19 2000.81.9046.0 385,024 Sqlsrv32.dll
See kiirparandus on saadaval osana kumulatiivne kiirparandus pakett. Kui saate selle kiirparanduse Microsofti toodete tugiteenuste, artikli number, mis on loetletud kiirparanduse paketi on 839801 MDAC 2.8 või 836799 MDAC 2.7 SP1. Lisateavet leiate Microsofti teabebaasi järgmisest artiklist:
MDAC 2.8
839801 PARANDUS: Kiirparandused on saadaval MDAC 2.8
MDAC 2.7 SP1
836799 PARANDUS: Kiirparandused on saadaval MDAC 2.7 hoolduspaketi Service Pack 1 jaoks
Olek
Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.
Veel teavet
Toimingud käitumise taastekitamiseks
Käivitage Microsoft Visual Studio .NET.
Osutage menüüs Fail käsule
Uus ja seejärel klõpsake nuppu Projitseeri. Kuvatakse dialoogiboks Uus projekt .Klõpsake jaotises Projektitüübid nuppu Visual Basicu projektid ja seejärel jaotises Mallid nuppu Konsoolirakendus.
Tippige väljale Nimi
MyApp ja seejärel klõpsake nuppu OK. Vaikimisi luuakse Module1.vb fail.Kui kasutate Microsoft Visual C# .NET-i, luuakse Class1.cs fail.
Lisage ülaossa järgmine kood:
Microsoft Visual Basicu .NET-kood
Imports System Imports System.Data.OleDbVisual C# .NET-kood
using System.Data.OleDb;Lisage põhitoimingussejärgmine kood:
Visual Basicu .NET-kood
Dim cn As OleDbConnection Dim cmd As OleDbCommand Dim r As OleDbDataReader Dim sid As String Dim orlcmd As String Dim connString As String = "Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;" Try 'Create a new connection to the Oracle database by using MSDAORA. cn = New OleDbConnection cn.ConnectionString = connString cn.Open() cmd = New OleDbCommand cmd.CommandText = "SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)" cmd.Connection = cn r = cmd.ExecuteReader() sid = "" If (r.Read()) Then sid = r.GetValue(0).ToString() + "," + r.GetValue(1).ToString() End If orlcmd = "Alter System Kill Session '" + sid + "' Immediate;" Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:") Console.WriteLine(orlcmd) Console.ReadLine() r.Close() cmd.CommandText = "SELECT count(*) from TAB" Try 'Expecting this command to fail because connection has been killed r = cmd.ExecuteReader() Catch orlex As OleDbException Console.WriteLine(orlex.Message) cmd.Dispose() 'Close the bad connection. cn.Close() System.Threading.Thread.Sleep(1000) cn.ConnectionString = connString cn.Open() cmd = New OleDbCommand cmd.CommandText = "SELECT count(*) FROM TAB" cmd.Connection = cn 'This command will fail, but it will work when a new connection is used. r = cmd.ExecuteReader() If (r.Read()) Then Console.WriteLine(r.GetValue(0)) End If End Try Catch ex As OleDbException Console.WriteLine(ex.ToString()) End Try Console.WriteLine("Press ENTER to exit...") Console.ReadLine()Visual C# .NET-kood
OleDbConnection cn; OleDbCommand cmd; OleDbDataReader r; String sid; String orlcmd; String connString="Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;"; try { //Create a connection to the Oracle database by using MSDAORA. cn= new OleDbConnection(); cn.ConnectionString=connString; cn.Open(); cmd=new OleDbCommand(); cmd.CommandText="SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)"; cmd.Connection=cn; r=cmd.ExecuteReader(); sid=""; if(r.Read()) { sid=r.GetValue(0).ToString()+","+r.GetValue(1).ToString(); } orlcmd="Alter System Kill Session '"+sid+"' Immediate;"; Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:"); Console.WriteLine(orlcmd); Console.ReadLine(); r.Close(); cmd.CommandText="SELECT count(*) from TAB"; try { //Expecting this to fail because the connection is killed. r=cmd.ExecuteReader(); } catch(OleDbException orlex) { Console.WriteLine(orlex.Message); cmd.Dispose(); //Close the bad connection. cn.Close(); System.Threading.Thread.Sleep(1000); cn.ConnectionString=connString; cn.Open(); cmd=new OleDbCommand(); cmd.CommandText="SELECT count(*) FROM TAB"; cmd.Connection=cn; //This command will fail, but it will work when a new connection is used. r=cmd.ExecuteReader(); if(r.Read()) { Console.WriteLine(r.GetValue(0).ToString()); } } } catch(OleDbException ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("Press ENTER to exit..."); Console.ReadLine();Märkus. Muutke ühendusstring vastavalt oma keskkonnale.
Klõpsake menüüs Koosta käsku Koosta lahendus.
Klõpsake silumismenüüs nuppu
Käivita. Näete, et konsooliaknas kuvatakse käsk.Käivitage rakenduses Oracle SQL*Plus konsooliaknas kuvatud käsk.
Vajutage sisestusklahvi (ENTER). Konsooliaknas kuvatakse jaotises "Sümptomid" mainitud erand.
Viited
Microsoft OLE DB pakkuja Oracle’i jaoks kohta lisateabe saamiseks külastage järgmist Microsoft Developer Networki (MSDN) veebisaiti:
http://msdn2.microsoft.com/en-us/library/ms810685.aspx Lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.
824684 Microsofti tarkvaravärskenduste kirjeldamiseks kasutatava standardterminite kirjeldus
Selles artiklis nimetatud kolmandate osapoolte tooted on tootnud ettevõtted, mis ei ole Microsoftiga seotud. Microsoft ei anna nende toodete jõudluse ega töökindluse osas mitte mingigi kaudset ega muud garantiid.