2015-04-23 9 views
6

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.

+1

Czy sprawdzić ścieżki i rejestr? Oh, nevermind – moffeltje

+0

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'? –

+0

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

Odpowiedz

0

Jeśli wszystko działa po zresetowaniu AppPool, to nie brzmi jak jest związane z TNSNAMES.ORA. To brzmi bardziej jak AppPool zatrzymuje się, ale nie recykling.

Co więcej, wspomniałeś, że twoje główne strony odświeżają się i trafiają na serwer co dwie minuty, jeśli trafią na serwer, gdy AppPool będzie przetwarzał i kończy się niepowodzeniem, czy może to spowodować wyłączenie funkcji Rapid-Fail Protection AppPool? AppPool jest wyposażony w opcję Generate Recycle Event Log Entry, domyślnie nie pokazuje zbyt wiele, musisz wybrać, co chcesz nagrać.Ten dziennik może zawierać więcej wskazówek, dlaczego zdarzenie recyklingu się nie odbywa.

Sam dziennik jest trochę trudne do znalezienia, tu jest link, który może pomóc:

https://webmasters.stackexchange.com/questions/17630/which-event-log-file-does-iis-7-app-pool-log-to

Powiązane problemy