• nowy

    Wersja 2026.06 — wprowadzenie Data Observability do Twojego kodu

  • nowy

    Współtwórz przyszłość innowacji w obszarze sztucznej inteligencji i danych

  • nowy

    • Wersja 2026.06 — wprowadzenie Data Observability do Twojego kodu

  • nowy

    • Współtwórz przyszłość innowacji w obszarze sztucznej inteligencji i danych

Oracle JDBC Connection String: Formaty i Przykłady

|

7

min. czyt.

O godzinie 2:00 w nocy aplikacja może być całkowicie sprawna na poziomie kodu i nadal odrzucać każde połączenie z bazą danych. Pula zgłasza niepoprawnie sformatowany adres URL, proces nasłuchujący odrzuca usługę lub połączenie TLS dociera do serwera i kończy się niepowodzeniem przed wykonaniem pierwszego zapytania. W każdym przypadku łańcuch połączenia Oracle JDBC jest częścią konfiguracji środowiska uruchomieniowego, a nie nieszkodliwym polem tekstowym.

Praktyczna trudność polega na tym, że Oracle obsługuje kilka stylów połączeń. Starsza składnia SID wciąż pojawia się w środowiskach produkcyjnych, nazwy usług są normalnym wyborem w nowoczesnych wdrożeniach, aliasy TNS przenoszą rozstrzyganie nazw do konfiguracji klienckiej, a obecna składnia sterownika Thin-driver pozwala na zdefiniowanie wielu hostów, przełączania awaryjnego (failover), równoważenia obciążenia i właściwości zabezpieczeń. Właściwy format zależy od architektury bazy danych i środowiska, w którym działa aplikacja.

Spis treści

  • Dlaczego łańcuch połączenia ma znaczenie w Oracle JDBC

    • Traktuj adres URL jako konfigurację, a nie ozdobę

  • Ogólna struktura adresu URL Oracle JDBC

    • Części adresu URL Oracle JDBC

  • Porównanie formatu SID i formatu nazwy usługi

    • URL ze schematem SID a URL z nazwą usługi

  • Osadzanie danych uwierzytelniających i właściwości połączenia

    • Świadomie wybierz granicę konfiguracji

  • Używanie aliasu TNS zamiast Easy Connect

    • Sprawdź rozstrzyganie aliasów przed debugowaniem Javy

  • Easy Connect Plus dla wielu hostów i RAC

    • Pola deskryptora, które zmieniają zachowanie

  • Łańcuchy połączeń SSL i TCPS

    • Konfiguracja portfela i certyfikatów

  • Produkcyjne przypadki brzegowe, które psują poprawne adresy URL

    • Cztery awarie warte przetestowania przed wdrożeniem

    • Przypadki brzegowe kontra działający format adresu URL

  • Typowe błędy Oracle JDBC i sposoby ich naprawy

  • Szybka ściągawka dla łańcuchów połączeń Oracle JDBC

Dlaczego łańcuch połączenia ma znaczenie w Oracle JDBC

O godzinie 2:00 w nocy aplikacja może działać prawidłowo, podczas gdy każde połączenie z bazą Oracle kończy się niepowodzeniem. Sterownik może odrzucić niepoprawnie sformatowany adres URL, proces nasłuchujący może odrzucić żądaną usługę lub uścisk dłoni (handshake) TCPS może zostać przerwany, zanim Java utworzy obiekt Connection. Łańcuch połączenia Oracle JDBC to konfiguracja środowiska uruchomieniowego, a nie tekst dekoracyjny.

Przed otwarciem połączenia sterownik analizuje adres URL w celu określenia typu sterownika, miejsca docelowego, metody nazewnictwa, protokołu oraz opcjonalnego zachowania. Jego składnia obsługuje wzorce sterownika Thin, takie jak jdbc:oracle:thin:@//<host>:<port>/<service>, obok formatów SID, aliasów TNS, pełnych deskryptorów połączeń i formatów Easy Connect Plus. Ukośnik, dwukropek, alias lub parametr bezpieczeństwa mogą zatem zmienić cel bazy danych, który sterownik próbuje rozstrzygnąć.

Dane uwierzytelniające zawierające znaki @, / lub ? mogą również zostać zinterpretowane jako elementy składni adresu URL, a nie jako hasło. Błędy te występują, zanim SQL, uprawnienia schematu czy rozmiar puli staną się istotne.

Traktuj adres URL jako konfigurację, a nie ozdobę

Łańcuch ten kontroluje:

  • Dostępność, poprzez host, port, protokół i metodę nazewnictwa.

  • Wybór bazy danych, poprzez SID, nazwę usługi, alias TNS lub deskryptor połączenia.

  • Niezawodność, dzięki opcjom obsługi wielu hostów, ponawiania prób, przełączania awaryjnego i równoważenia obciążenia.

  • Bezpieczeństwo, poprzez protokół TCPS, portfele (wallets), walidację certyfikatów i zaszyfrowane właściwości połączenia.

  • Spójność operacyjną, ponieważ adres URL działający na laptopie może zawieść w kontenerze z innym systemem DNS, plikami portfela lub inną konfiguracją klienta Oracle.

Zasada praktyczna: Waliduj adres URL niezależnie od kodu aplikacji. Jeśli sterownik nie potrafi go sparsować lub rozstrzygnąć, zmiana rozmiarów puli ani logiki ponawiania prób nie naprawi błędu połączenia.

Wybierz format, mając na uwadze zależności wdrożeniowe. Easy Connect przechowuje szczegóły dotyczące hosta i usługi w konfiguracji aplikacji. Alias TNS przenosi te szczegóły do pliku tnsnames.ora, co może uprościć scentralizowaną administrację, ale wprowadza zależność od lokalizacji tego pliku. Format Easy Connect Plus i wielohostowe adresy URL w stylu RAC dodają mechanizmy przełączania awaryjnego, podczas gdy TCPS wprowadza wymagania dotyczące portfela i certyfikatów. Topologia bazy danych i dostępna konfiguracja środowiska uruchomieniowego muszą pasować do wybranego łańcucha połączenia.

Generowanie struktury adresu URL Oracle JDBC

Większość adresów URL sterownika Thin można odczytać jako jeden szablon:

jdbc:oracle:thin:@<connect_info>

Część <connect_info> to miejsce, w którym formaty się rozchodzą. Adres URL z nazwą usługi Easy Connect używa formatu //host:port/service, podczas gdy starsza forma SID używa host:port:SID. Adres URL oparty na TNS używa aliasu lub pełnego deskryptora połączenia zamiast bezpośredniej pary host i usługa. Aktualna dokumentacja Oracle opisuje również opcjonalne właściwości i bogatsze formy wielohostowe, więc proste przykłady są jedynie punktami wyjścia, a nie całą gramatyką.

Na przykład:

  • jdbc:oracle:thin:@//dbhost.example.com:1521/ORCLPDB1

  • jdbc:oracle:thin:@dbhost:1521:ORCL

  • jdbc:oracle:thin:@PROD_ALIAS

Początkowe znaki po @ mają znaczenie. Forma // identyfikuje składnię Easy Connect. Deskryptor w nawiasach jest analizowany jako deskryptor połączenia, podczas gdy alias wymaga od sterownika rozstrzygnięcia wpisu nazewnictwa. Ten wybór parsera wyjaśnia, dlaczego sama zmiana dwukropka na ukośnik może znacząco wpłynąć na wynik.

Części adresu URL Oracle JDBC

Segment

Przykład

Cel

Prefiks sterownika

jdbc:oracle:thin:

Wybiera sterownik Oracle JDBC Thin

Znacznik połączenia

@

Oddziela część sterownika od danych docelowych

Host

dbhost.example.com

Identyfikuje hosta bazy danych lub adres procesu nasłuchującego

Port

1521

Identyfikuje port procesu nasłuchującego

Identyfikator bazy danych

ORCL lub ORCLPDB1

Wybiera SID lub usługę, w zależności od składni

Alias lub deskryptor

PROD_ALIAS

Deleguje rozstrzyganie do konfiguracji nazewnictwa Oracle

Właściwości

?key=value lub atrybuty deskryptora

Dodaje ustawienia połączenia i odporności

Przydatnym pomocnikiem przy dokumentowaniu zależności jest ten przewodnik po referencjonowaniu bazy danych. Wmacnia on ważny nawyk operacyjny: zapisuj, co identyfikuje każde pole połączenia, zamiast kopiować adres URL, którego semantyki nikt w zespole nie potrafi wyjaśnić.

Porównanie formatu SID i formatu nazwy usługi

Dwie znane formy Easy Connect w Oracle wyglądają podobnie, ale identyfikują różne cele:

  • Format SID: jdbc:oracle:thin:@host:1521:ORCL

  • Format nazwy usługi: jdbc:oracle:thin:@//host:1521/ORCLPDB1

Format SID używa dwukropka między portem a identyfikatorem. Odnosi się on do instancji Oracle za pomocą jej identyfikatora systemowego (SID) i pozostaje odpowiedni dla starszych środowisk lub połączeń, które wyraźnie oczekują SID. Format nazwy usługi używa znaków //, po których następuje ukośnik przed usługą. Pyta on proces nasłuchujący o zarejestrowaną usługę, co jest odpowiednim modelem dla wielu obecnych wdrożeń, w tym połączeń z bazami danych typu pluggable (PDB).

Sekcja JDBC FAQ firmy Oracle opisuje przejście od starszego wzorca jdbc:oracle:thin:@[HOST][:PORT]:SID do formatu opartego na nazwie usługi: jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE. To samo źródło dokumentuje również obsługę TNSNames w wersji sterownika 10.2.0.1 oraz obecne możliwości wielohostowe. Historia składni ma znaczenie, ponieważ wiele aplikacji odziedziczyło adresy URL ze starszych układów baz danych i nigdy nie zweryfikowało wyboru metody nazewnictwa.

URL ze schematem SID a URL z nazwą usługi

Aspekt

Format SID

Format nazwy usługi

Przykład

jdbc:oracle:thin:@dbhost:1521:ORCL

jdbc:oracle:thin:@//dbhost:1521/ORCLPDB1

Separator

Dwukropek przed identyfikatorem

Ukośnik przed usługą

Cel

Instancja Oracle identyfikowana przez SID

Usługa zarejestrowana w procesie nasłuchującym

Najlepsze zastosowanie

Środowiska starszego typu lub oparte bezpośrednio na SID

Usługi, bazy danych PDB, relokacje i wdrożenia klastrowe

Częsty błąd

Użycie SID tam, gdzie zarejestrowana jest tylko usługa

Pominięcie // i niezamierzone wywołanie analizy składni dla SID

Nie dokonuj wyboru na podstawie tego, który adres URL wygląda bardziej znajomo. Zapytaj administratora bazy danych (DBA) o dokładną zarejestrowaną nazwę usługi lub SID i potwierdź, czy celem jest baza typu non-CDB, PDB, czy usługa, która może migrować między instancjami. Jeśli baza danych używa usług do zarządzania obciążeniem lub relokacji klastrów, bezpieczniejszym fundamentem jest format nazwy usługi.

Osadzanie danych uwierzytelniających i właściwości połączenia

Dane uwierzytelniające mogą pojawić się w adresie URL, ale nie jest to konieczne. Wzorzec zawierający dane logowania może wyglądać następująco:

jdbc:oracle:thin:username/password@//dbhost:1521/ORCLPDB1

W przypadku statycznych przykładów taka składnia jest czytelna. W aplikacji tworzy ona jednak dwa zagrożenia. Po pierwsze, hasło może trafić do systemu kontroli wersji, logów, komunikatów o wyjątkach lub diagnostyki puli. Po drugie, znaki zastrzeżone mogą zmienić sposób, w jaki sterownik identyfikuje nazwę użytkownika, hasło i cel.

Świadomie wybierz granicę konfiguracji

Używaj obiektu Properties lub źródła danych (data source), gdy dane uwierzytelniające są dynamiczne lub zarządzane przez magazyn sekretów. Na przykład aplikacja może skupić adres URL wyłącznie na danych docelowych, a użytkownika i hasło dostarczyć osobno za pośrednictwem interfejsu API połączeń JDBC lub OracleDataSource. Taki podział ułatwia rotację haseł i zmniejsza ryzyko przypadkowego ich ujawnienia.

Właściwości adresu URL mogą również wyrażać zaawansowane zachowania. Aktualna dokumentacja referencyjna Oracle JDBC wskazuje, że nazwy usług w stylu Thin i opcjonalne właściwości połączenia obsługują dostrajanie i mechanizmy przełączania awaryjnego (failover). Dokładne nazwy właściwości i ich akceptowane umiejscowienie zależą od składni sterownika, dlatego należy je weryfikować pod kątem wersji sterownika, a nie zakładać, że właściwości z innej konfiguracji klienta Oracle będą działać bez zmian.

Pamiętaj o następujących pułapkach analizy składniowej:

  • Znaki „małpy”: znak @ w haśle może zostać błędnie zinterpretowany jako ogranicznik przed hostem.

  • Znaki zapytania: znak ? może rozpocząć sekcję właściwości, zamiast pozostać częścią hasła.

  • Ukośniki: znak / może zatarć granicę między danymi uwierzytelniającymi a miejscem docelowym Easy Connect.

  • Średniki: wartości zawierające średniki mogą wymagać ujęcia w cudzysłów w składni deskryptora opartej na właściwościach.

  • Przecinki: niezakodowane przecinki mogą być interpretowane jako separatory w wyrażeniach wieloadresowych lub przełączania awaryjnego.

Dane uwierzytelniające zasługują na taką samą governance (zarządzanie), jak inne wrażliwe dane połączenia. Zespoły dokumentujące wymagania dotyczące rezydentności danych powinny rejestrować, gdzie znajdują się pliki portfela, dostawcy sekretów i konfiguracja połączeń, a nie tylko to, gdzie działa serwer bazy danych.

Używanie aliasu TNS zamiast Easy Connect

Alias TNS zmienia miejsce przechowywania szczegółów połączenia. Zamiast umieszczać informacje o hoście, porcie i usłudze w adresie URL aplikacji, aplikacja odwołuje się do wpisu utrzymywanego w pliku tnsnames.ora:

jdbc:oracle:thin:@PROD_ALIAS

Alias może reprezentować bardziej skomplikowany deskryptor połączenia niż łańcuch Easy Connect. Sprawia to, że jest on przydatny, gdy administratorzy bazy danych zarządzają już plikami nazewnictwa, gdy kilka aplikacji współdzieli tę samą definicję docelową lub gdy organizacja chce zmienić szczegóły procesu nasłuchującego bez edytowania każdego manifestu wdrożeniowego.

Kompromisem jest zależność od środowiska. Sterownik Thin musi znaleźć właściwy plik tnsnames.ora. Ustaw właściwość systemową TNS_ADMIN lub argument JVM oracle.net.tns_admin na katalog zawierający ten plik, albo dostarcz go poprzez oczekiwaną ścieżkę konfiguracji Oracle w środowisku uruchomieniowym. Adres URL, który działa na stacji roboczej programisty, może przestać działać w kontenerze, ponieważ plik aliasu nie został skopiowany do obrazu.

Sprawdź rozstrzyganie aliasów przed debugowaniem Javy

Aliasy zawierające kropki wymagają szczególnej uwagi. Alias taki jak PROD.EXAMPLE.COM może zostać zinterpretowany przy użyciu notacji kropkowej zamiast jako nazwa wyszukiwania TNS, co może skutkować błędem Invalid connection string format. Pomoc techniczna Oracle i dyskusje społecznościowe dotyczące rozwiązywania problemów, w tym ta dyskusja na temat formatu łańcucha połączenia Oracle JDBC, pokazują, dlaczego poprawny składniowo alias może mimo wszystko zawieść podczas rozstrzygania nazw.

Gdy nazwa jest niejednoznaczna, użyj jawnej formy listy deskryptorów lub skonfiguruj jednoznacznie ścieżkę aliasów. Właściwość połączenia TNS_ENTRY może również pomóc w precyzyjnym wskazaniu wyszukiwanego elementu. Nazewnictwo oparte na LDAP wprowadza kolejną warstwę. Sterownik Thin nie odtwarza automatycznie każdej reguły nazewnictwa z pliku sqlnet.ora, a rozstrzyganie nazw LDAP może wymagać ustawienia opcji oracle.net.ldap.enabled.

Używaj TNS, gdy scentralizowane nazewnictwo jest realnym wymogiem operacyjnym. Używaj Easy Connect, gdy samodzielna konfiguracja wdrożenia ma większe znaczenie niż współdzielone nazewnictwo po stronie klienta.

Easy Connect Plus dla wielu hostów i RAC

Podstawowa wersja Easy Connect jest zwięzła, ale klastrowe wdrożenia Oracle często wymagają kilku adresów procesów nasłuchujących. Standard Easy Connect Plus obsługuje wiele hostów, opcjonalne porty, właściwości połączenia oraz zachowania zorientowane na RAC w jednym adresie URL. Forma w stylu deskryptora jasno określa każde ustawienie:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=scan-a.example.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=scan-b.example.com)(PORT=1521)))(LOAD_BALANCE=on)(FAILOVER=on)(CONNECT_DATA=(SERVICE_NAME=APP_SERVICE)))

Adres URL zawiera listę dwóch punktów końcowych procesu nasłuchującego i włącza równoważenie obciążenia oraz przełączanie awaryjne po stronie klienta między nimi. Parametr SERVICE_NAME pozostaje logicznym celem bazy danych. W środowiskach RAC aplikacje powinny żądać zarejestrowanej usługi, zamiast przypisywać się na stałe do jednej instancji. Kierowanie ruchu na konkretną instancję może uniemożliwić prawidłowe rozmieszczenie usług i uzależnić aplikację od węzła, który jest niedostępny lub przeciążony.

Pola deskryptora, które zmieniają zachowanie

Pole

Cel

Typowa wartość

ADDRESS_LIST

Zawiera wiele adresów procesów nasłuchujących

Wiele bloków ADDRESS

HOST

Określa nazwę punktu końcowego

Nazwa hosta w stylu SCAN

PORT

Wybiera port procesu nasłuchującego

Skonfigurowany port procesu nasłuchującego

PROTOCOL

Wybiera protokół transportowy

TCP lub TCPS

LOAD_BALANCE

Włącza równoważenie adresów po stronie klienta

on

FAILOVER

Zezwala na połączenie z innym adresem po awarii

on

SERVICE_NAME

Wybiera zarejestrowaną usługę bazy danych

APP_SERVICE

CONNECT_TIMEOUT

Ogranicza czas nawiązywania połączenia

Limit czasu zatwierdzony dla danego środowiska

RETRY_COUNT

Kontroluje liczbę prób ponownego połączenia

Liczba prób zatwierdzona dla danego środowiska

SOURCE_ROUTE

Kontroluje zachowanie trasowania adresów

Włączone, gdy wymaga tego trasa

Krótsza forma Easy Connect Plus może być łatwiejsza w utrzymaniu:

jdbc:oracle:thin:@//scan.example.com:1521/APP_SERVICE?LOAD_BALANCE=on&FAILOVER=on

Użyj deskryptora, gdy potrzebujesz oddzielnych bloków adresów, wyboru protokołu lub kontroli trasowania. Formy kompaktowej używaj dopiero po przetestowaniu wersji sterownika i środowiska Oracle z wymaganymi właściwościami. Adres URL może zostać sparsowany pomyślnie, nawet jeśli proces nasłuchujący, rejestracja usługi lub któraś z właściwości pozostają niekompatybilne.

Kontenery zyskują na tym rozwiązaniu, ponieważ topologia pozostaje w konfiguracji wdrożenia zamiast zależeć od zamontowanego pliku tnsnames.ora. Przeglądaj ustawienia przełączania awaryjnego przy każdej zmianie infrastruktury i testuj zarówno początkowe niepowodzenie połączenia, jak i późniejszą utratę węzła. Sama dostępność nazwy SCAN nie dowodzi, że żądana usługa jest zarejestrowana na każdym wymienionym punkcie końcowym.

SSL i TCPS Connection Strings

Adres URL TCPS może zostać sparsowany poprawnie, podczas gdy połączenie nadal kończy się niepowodzeniem w fazie uścisku dłoni (handshake). Zmiana protokołu z TCP na TCPS wymaga włączonego protokołu TCPS po stronie procesu nasłuchującego Oracle, dostępnych plików certyfikatów lub portfela oraz walidacji nazwy serwera zgodnej z polityką certyfikatów.

Zacznij od deskryptora:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=dbhost.example.com)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=APP_SERVICE)))

Port musi odpowiadać portowi procesu nasłuchującego TCPS skonfigurowanemu przez zespół bazodanowy. Dostępny proces nasłuchujący TCP nie zaakceptuje uścisku dłoni TCPS, a nawiązanie połączenia z procesem nasłuchującym TCPS nie potwierdza jeszcze, że konfiguracja portfela lub zaufania jest gotowa do użycia.

A diagram illustrating the evolution of Oracle JDBC SSL connection strings from basic TCP to protocol changes.

Konfiguracja portfela i certyfikatów

Wdrożenia oparte na portfelu powszechnie ustawiają:

oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/wallet)))

Portfel może korzystać z automatycznego logowania (auto-login) lub magazynu zabezpieczonego hasłem. Jego katalog musi być zamontowany w miejscu dostępnym dla JVM, z uprawnieniami pozwalającymi sterownikowi na odczyt wymaganych plików. Jeśli zaufanie jest zarządzane przez Javę, skonfiguruj odpowiedni magazyn javax.net.ssl.trustStore zamiast polegać wyłącznie na portfelu Oracle. Kompletny projekt zabezpieczeń dla połączeń szyfrowanych został omówiony w tym przewodniku ochrony danych klientów.

Dopasowanie nazwy wyróżniającej serwera (DN) również wymaga świadomej konfiguracji. Ustaw oracle.net.ssl_server_dn_match=true, gdy klient musi odrzucać certyfikaty, których tożsamość nie odpowiada oczekiwanej nazwie serwera. Podmiot certyfikatu i nazwa hosta muszą być spójne. Sekcja JDBC FAQ firmy Oracle dokumentuje specyficzną dla sterownika składnię oraz obsługiwane opcje połączeń.

Jedno z produkcyjnych niepowodzeń jest łatwe do błędnej interpretacji: szyfrowanie TCPS kończy się sukcesem, ale uwierzytelnianie oparte na portfelu zawodzi. Sterownik może ustanowić zaszyfrowany kanał, a następnie użyć uwierzytelniania hasłem, ponieważ portfel nie został załadowany lub właściwości uwierzytelniania były niepełne. Testuj osobno szyfrowanie transportu, walidację certyfikatów, ładowanie portfela oraz uwierzytelnianie. Pomyślne nawiązanie połączenia na poziomie gniazda (socket handshake) weryfikuje jedynie warstwę transportową, a nie pełną konfigurację bezpieczeństwa.

Produkcyjne przypadki brzegowe, które psują poprawne adresy URL

Adres URL może być poprawny syntaktycznie, a jednocześnie błędny operacyjnie. Awarie, które pochłaniają najwięcej czasu, zazwyczaj wiążą się z założeniami wykraczającymi poza sam łańcuch znaków.

Cztery awarie warte przetestowania przed wdrożeniem

  • Aliasy TNS z kropkami: adres jdbc:oracle:thin:@mydb.prod.example.com może zostać sparsowany jako notacja kropkowa zamiast zamierzonego aliasu. Użyj jawnego deskryptora, niezawodnej ścieżki TNS_ADMIN lub jawnej konfiguracji TNS_ENTRY.

  • Nazwy hostów w kontenerach: adres jdbc:oracle:thin:@//localhost:1521/XEPDB1 wskazuje na sam kontener aplikacji, gdy Java działa wewnątrz kontenera. Działa to tylko wtedy, gdy baza danych jest dostępna pod tym lokalnym adresem kontenera i zmapowanym portem. W przeciwnym razie użyj nazwy usługi bazy danych udostępnionej w sieci kontenerowej.

  • Adresy URL z jednym hostem w klastrach RAC: pojedynczy host może połączyć się pomyślnie, ale nie zapewni żadnego użytecznego przełączania awaryjnego na poziomie węzła. Użyj formy wielohostowej, gdy usługa RAC i topologia procesów nasłuchujących wymagają wyboru adresu po stronie klienta.

  • Zastrzeżone znaki w haśle: znaki @, / oraz ? mogą zaburzyć analizowanie adresu URL. Przekazuj dane uwierzytelniające za pomocą metod OracleDataSource.setUser i setPassword zamiast osadzać je bezpośrednio w adresie URL.

Kwestię dotyczącą środowisk RAC szczególnie łatwo przeoczyć. Nazwa procesu nasłuchującego typu SCAN może wskazywać na punkt wejściowy klastra, ale adres URL z jednym adresem nadal nie wyraża pełnej polityki przełączania awaryjnego. Format Easy Connect Plus lub odpowiadający mu deskryptor jasno określają listę adresów oraz zachowanie usługi.

Przypadki brzegowe kontra działający format adresu URL

Przypadek brzegowy

Niedziałający fragment URL

Działający fragment URL

Alias z kropką

@mydb.prod.example.com

@PROD_ALIAS ze sprawdzonym rozstrzyganiem nazw TNS

Lokalny localhost wewnątrz kontenera

@//localhost:1521/XEPDB1

@//database-service:1521/XEPDB1

RAC bez zdefiniowanej topologii

@//scan:1521/APP_SERVICE

Wielohostowy deskryptor z ustawieniami przełączania awaryjnego

Zastrzeżony znak w haśle

user/p@ss@//host:1521/service

Adres URL bez danych uwierzytelniających, plus setUser oraz setPassword

Lekcja operacyjna wpisuje się w szerszy nurt inżynierii niezawodności baz danych: testuj połączenie z tej samej granicy środowiska uruchomieniowego, w której działa aplikacja. Stacja robocza, pod w Kubernetesie oraz produkcyjna maszyna wirtualna mogą mieć różne systemy DNS, zamontowane pliki, magazyny zaufania (truststores) i właściwości klienta Oracle.

Typowe błędy Oracle JDBC i sposoby ich naprawy

Większość błędów Oracle JDBC wskazuje na niezgodność między tym, co określa adres URL, a tym, co rejestruje proces nasłuchujący.

Kod błędu lub komunikat

Przyczyna na poziomie URL

Rozwiązanie

ORA-12505

Podano SID, podczas gdy proces nasłuchujący oczekuje usługi, lub odwrotnie

Potwierdź identyfikator docelowy i przełącz się między :SID a //host:port/service

ORA-12514

Nazwa usługi nie jest zarejestrowana w procesie nasłuchującym

Uzyskaj dokładną zarejestrowaną nazwę usługi i popraw końcowy segment adresu URL

IO Error: Got minus one from a read call

Punkt końcowy, protokół, negocjacja TLS lub zachowanie procesu nasłuchującego nie są zgodne

Zweryfikuj dostępność hosta, typ procesu nasłuchującego oraz to, czy URL powinien używać TCP czy TCPS

Invalid number format for port number

Literał IPv6 lub zabłąkany dwukropek został zinterpretowany jako część portu

Użyj składni hosta akceptowanej przez sterownik i zadbaj o jednoznaczny separator portu

Invalid Oracle URL specified

Układ dwukropków i ukośników nie pasuje do akceptowanego formatu SID ani nazwy usługi

Porównaj adres URL z dwoma kanonicznymi wzorcami

Odrzucenie protokołu przez SQL*Net

Port jest osiągalny, ale protokół klienta nie pasuje do procesu nasłuchującego

Skieruj adres URL na właściwy proces nasłuchujący i zastosuj opisane wcześniej właściwości TCPS

Nie reaguj na każdy błąd jedynie zmianą portu. Błędy ORA-12505 oraz ORA-12514 są zazwyczaj problemami z nazewnictwem, podczas gdy odrzucenie protokołu wymaga sprawdzenia trybu transportu procesu nasłuchującego. W szerszym kontekście operacyjnym zespoły mogą połączyć tę dyscyplinę rozwiązywania problemów z technikami monitorowania i audytu baz danych.

Szybka ściągawka dla łańcuchów połączeń Oracle JDBC

Używaj tej tabeli jako listy kontrolnej przy wdrożeniach, a nie jako substytutu potwierdzenia nazw zarejestrowanych przez zespół bazodanowy.

Przypadek użycia

Wzorzec adresu URL

Kluczowa zależność

Na co uważać

SID

jdbc:oracle:thin:@host:port:SID

Poprawny identyfikator instancji (SID)

Nie używaj go, gdy cel udostępnia wyłącznie usługę

Nazwa usługi

jdbc:oracle:thin:@//host:port/service_name

Usługa zarejestrowana w procesie nasłuchującym

Pamiętaj o znakach // i końcowym ukośniku

Alias TNS

jdbc:oracle:thin:@TNS_ALIAS

Pliki tnsnames.ora oraz TNS_ADMIN

Aliasy zawierające kropki mogą być analizowane w nieoczekiwany sposób

Easy Connect Plus

jdbc:oracle:thin:@//host:port/service?LOAD_BALANCE=on&FAILOVER=on

Obsługa wybranych właściwości przez sterownik i bazę danych

Przetestuj parsowanie właściwości oraz zachowanie klastra

TCPS z portfelem

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=host)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=service)))

Proces nasłuchujący TCPS, portfel, konfiguracja zaufania i dopasowanie DN

Samo szyfrowanie nie dowodzi uwierzytelnienia za pomocą portfela

Przed uruchomieniem produkcyjnym przetestuj dokładny adres URL w docelowym środowisku uruchomieniowym aplikacji, potwierdź, czy celem jest SID, czy usługa, skontroluj ścieżki do aliasów i portfeli oraz upewnij się, że dane uwierzytelniające nie są widoczne w logach.

digna oferuje konektor bazy danych Oracle z dedykowanymi polami Oracle, takimi jak DSN, UID, PWD, Driver i DBQ, ułatwiającymi konfigurację integracji bazy danych. Jeśli niezawodność połączeń stanowi część szerszego programu jakości danych i strategii Observability, odwiedź platformę digna, aby zapoznać się z tym, jak monitoruje ona zachowanie danych, Timeliness, walidację oraz zmiany schematów w Twoim środowisku.

Udostępnij na X
Udostępnij na X
Udostępnij na Facebooku
Udostępnij na Facebooku
Udostępnij na LinkedIn
Udostępnij na LinkedIn

Poznaj zespół tworzący platformę

Zespół z Wiednia, składający się z ekspertów od AI, danych i oprogramowania, wspierany rygorem akademickim i doświadczeniem korporacyjnym.

Produkt

Integracje

Zasoby

Firma

INDEXED BYIndexerNow INDEXED BYIndexerNow