Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Düzeltme: MSDAORA kullanarak Oracle veritabanına bağlandığınızda "ORA-01012" hata iletisi alıyorsunuz

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 834905
Belirtiler
(MSDAORA) Oracle için Microsoft OLE DB sağlayıcı kullanarak bir Oracle veritabanına bağlanmak ve sunucu tarafında bağlantı sona erdirmek. Oracle veritabanına yeni bir bağlantı uygulamanızdan açtığınızda, aşağıdaki özel durum hata iletisi alırsınız:
System.Data.OleDb.OleDbException: Belirlenemeyen bir hata
ORA-01012: oturum açılmamış
Neden
MSDAORA kullanırken sunucu tarafında Oracle veritabanı bağlantısını sonlandırdığınızda kopuk bağlantı bağlantı havuza geri döner. Bağlantı havuzu oluşturma kodunu yanlış MSDAORA ResetConnection özelliğiyle etkileşim kurar. Bu özellik sağlayıcı tarafından desteklenmiyor, havuzu oluşturma kod bağlantı sıfırlanır ve geçerli bir bağlantı olduğunu yanlış yorumlar. İstemci kodu yeni bir bağlantı açıldığında, bağlantı havuzuna döndürüldü kopuk bağlantı alınabilir. Bu nedenle, "Belirtiler" bölümünde açıklanan hata iletisini alırsınız.
Çözüm

Düzeltme bilgileri

Desteklenen bir düzeltme Microsoft'tan edinilebilir. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Bu, yalnızca bu sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilemiyorsa, bu düzeltmeyi içeren bir sonraki hizmet paketini beklemenizi öneririz.

Bu sorunu hemen çözümlemek için düzeltmeyi edinmek üzere Microsoft Müşteri Destek Hizmetleri'ne başvurun. Microsoft Müşteri Destek Hizmetleri telefon numaralarının ve destek ücretleriyle ilgili bilgi tam listesi için aşağıdaki Microsoft Web sitesini ziyaret edin:Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu belirlerse, normal destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Dosya bilgileri

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'te (UTC) listelenmiştir. Dosya bilgilerini görüntülediğinizde koordinatlı evrensel saat yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için Denetim Masası'ndaki Tarih ve Saat aracında Saat Dilimi sekmesini kullanın.
Microsoft Data Access Components (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 Service Pack 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
Duyuru
Bu düzeltme bir toplu düzeltme paketinin bir parçası olarak. Bu düzeltmeyi Microsoft Ürün Destek Hizmetleri'nden aldığınızda, MDAC 2.8 için 839801 veya 836799 için MDAC 2.7 SP1 düzeltme paketinde listelenen makale numarasını olacaktır. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki aşağıdaki makaleye bakın:

MDAC 2.8
839801 Düzeltme: MDAC 2.8 düzeltmeleri kullanılabilir
MDAC 2.7 SP1
836799 Düzeltme: MDAC 2.7 Service Pack 1 için düzeltme kullanılabilir
Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Dosya menüsündeYeni' nin üzerine ve sonra Proje'yitıklatın. NewProject iletişim kutusu görüntülenir.
  3. Proje türlerialtında VisualBasic projeleritıklatın ve sonra Şablonlaraltında Console Application' ı tıklatın.
  4. Ad kutusuna yazın.Uygulamam, sonra da Tamam' ı tıklatın. Varsayılan olarak, Module1.vb dosyası oluşturulur.

    Microsoft Visual C# .NET kullanıyorsanız, Class1.cs dosyası oluşturulur.
  5. Başına aşağıdaki kodu ekleyin:

    Microsoft Visual Basic .NET kodu
    Imports SystemImports System.Data.OleDb
    Visual C# .NET kod
    using System.Data.OleDb;
  6. Aşağıdaki kod, anayordama ekleyin:

    Visual Basic .NET kodu
    Dim cn As OleDbConnectionDim cmd As OleDbCommandDim r As OleDbDataReaderDim sid As StringDim orlcmd As StringDim 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 TryCatch ex As OleDbException   Console.WriteLine(ex.ToString())End TryConsole.WriteLine("Press ENTER to exit...")Console.ReadLine()
    Visual C# .NET kod
    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();
    Not Yourenvironment göre bağlantı dizesini değiştirin.
  7. Yapı menüsünde BuildSolutiontıklatın.
  8. Hata Ayıkla menüsünde,Başlat' ı tıklatın. Gördüğünüz bir komut consolewindow içinde görüntülenir.
  9. Oracle SQL * Plus, konsol penceresinde görüntülenen komut çalıştırın.
  10. ENTER tuşuna basın. Konsol penceresinde, exceptionthat "Belirtiler" bölümünde sözü edilen görürsünüz.
Referanslar
Oracle için Microsoft OLE DB Sağlayıcısı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin: Ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması
Bu makalede açıklanan üçüncü taraf ürünler Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği hakkında açık veya örtük hiçbir garanti vermez.
OLEDB; MSDAORA; bağlantı havuzu; oturumu sonlandırma; Oracle; OleDbException

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 834905 - Son İnceleme: 08/17/2015 05:03:00 - Düzeltme: 4.0

  • kbhotfixserver kbqfe kbbug kbprovider kbconnectivity kbdatabase kboracle kbfix kbmt KB834905 KbMttr
Geri bildirim