Wiem, wiem, masz zamiar powiedzieć, żebym sprawdził moje ścieżki i rejestr. Mam, uwierz mi.TNS: nie można rozwiązać określonego identyfikatora połączenia Wykonałem badanie
Moja sytuacja - mamy dwa pola z identycznym kodem z identycznymi plikami web.config. Poniżej znajdują się specyfikacje obu.
- IIS 7.0, skonfigurowany tak, aby zresetować pulę aplikacji o północy
- Oracle.ManagedDataAccess.dll, v 4.121.1.0
- .NET 4.0 strona ASP.NET
odpowiedniej sekcji config:
<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name="TraceFileName" value="C:\MDM\TraceLog\"/>
<setting name="TraceLevel" value="7"/>
<setting name="SelfTuning" value="0"/>
<setting name="TNS_ADMIN" value="C:\MDM\tnsnames"/>
</settings>
</version>
</oracle.manageddataaccess.client>
Nasze problemy zaczęły się, gdy przeszliśmy z niezarządzanej Oracle do zarządzanego.
OBJAWY: Strona główna naszej strony posiada funkcję automatycznego odświeżania, która co 2 minuty odświeża stronę. Niektórzy z naszych użytkowników pozostawiają otwarte, gdy wychodzą na koniec dnia. O północy pula aplikacji przetwarza. Około 12:02, od kiedy wydanie pliku Oracle.ManagedDataAccess.dll, który stał się spójny, nie może rozwiązać błędów identyfikatora połączenia, które występują podczas wywoływania w bazie danych do momentu, aż pula aplikacji zostanie ponownie przetworzona, i wtedy wszystko działa płynnie.
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS:could not resolve the connect identifier specified
at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName)
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor)
at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, String instanceName)
at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName)
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
TNSPING może łączyć się z bazami danych bez problemów. Zostawiłem strony, które trafiły do naszych skrzynek otwartych wczoraj wieczorem, i tylko jeden z nich wyświetlał ten numer. Plik tnsnames.ora znajduje się w katalogu c: \ mdm \ tnsnames na obu komputerach. Plik tnsnames.ora jest najbardziej aktualnym plikiem z naszego zespołu DB.
Najbardziej irytujące jest to, że połączenia działają pięknie po zresetowaniu puli aplikacji. Żadnych problemów, wpływu na wydajność i nie pojawił się w naszych niższych środowiskach. Nie mogę dostarczyć dziennika śledzenia, ponieważ bez względu na to, co robię w ustawieniach śledzenia, nic nie pojawia się w katalogu c: \ mdm \ tracelog.
Ktoś ma jakieś pomysły, dlaczego tak się dzieje?
EDYCJE: Brak zmiennej środowiskowej TNS_ADMIN; zmienna rejestru wskazuje na to samo położenie, co plik konfiguracyjny.
Wszyscy użytkownicy mają pełne uprawnienia do pliku tnsnames.ora.
Istnieją tylko dwa pliki tnsnames.ora, moje i przykładowe, które zostały uwzględnione w poprzedniej instalacji. Istnieją trzy pliki sqlnet.ora, jeden w tym samym katalogu, co plik tnsnames.ora, jeden w folderze% ORACLEHOME% \ network \ admin i jeden w folderze% ORACLEHOME% \ network \ admin \ sample.
Czy sprawdzić ścieżki i rejestr? Oh, nevermind – moffeltje
Jaka jest zawartość pliku 'sqlnet.ora'? Wyszukaj urządzenie w poszukiwaniu innych plików 'sqlnet.ora' i' tnsnames.ora'. Czy inaczej ustawiłeś zmienną środowiskową 'TNS_ADMIN'? –
Brak zmiennej środowiskowej TNS_ADMIN; zmienna rejestru wskazuje na to samo położenie, co plik konfiguracyjny. Czy plik .config nie miałby pierwszeństwa przed tymi ustawieniami? – Marisa