Czym różni się identyfikator SID od nazwy usługi w Oracle tnsnames.ora

178

Dlaczego potrzebuję dwóch z nich? Kiedy muszę użyć jednego lub drugiego?

Georgy Bolyuba
źródło
1
Jak znaleźć nazwę naszej usługi, gdy mam nazwę SID?
Mrinal Saurabh

Odpowiedzi:

154

Cytat @DAC

W skrócie: SID = unikalna nazwa Twojej bazy danych, ServiceName = alias używany podczas łączenia

Nie do końca prawda. SID = unikalna nazwa INSTANCJI (np. Proces Oracle działający na komputerze). Oracle uważa „Bazę danych” za pliki.

Nazwa usługi = alias do INSTANCE (lub wielu wystąpień). Głównym celem tego jest to, że jeśli używasz klastra, klient może powiedzieć „połącz mnie z SALES.acme.com”, administrator może w locie zmienić liczbę instancji, które są dostępne dla żądań SALES.acme.com, a nawet przenieść SALES.acme.com do zupełnie innej bazy danych bez konieczności zmiany jakichkolwiek ustawień przez klienta.

Matthew Watson
źródło
1
Tak więc, w przykładzie, nie może być identyfikatory Sales1, Sales2oraz Sales3, z których wszystkie są dostępne poprzez nazwę usługi Sales?
1
Myślę, że jest odwrotnie: masz jeden identyfikator SID, który jest dostępny dla wielu usług. Następnie możesz wybrać jedną z usług i wskazać ją na innym identyfikatorze SID / bazie danych.
Colin Nicholls,
Czy możemy mieć taką samą nazwę SID Oracle jak nazwa TNS? Czy to będzie problem?
user2441441
2
@ user2441441: Idąc za wyjaśnieniem, które podał Matthew, myślę, że masz rację, zakładając, że może istnieć wiele identyfikatorów SID, a raz Usługa, która wyodrębnia wszystkie identyfikatory SID
Dwarak
26

Zobacz: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

Jaka jest różnica między identyfikatorami SID Oracle a NAZWAMI USŁUG Oracle. Jedno narzędzie konfiguracyjne szuka NAZWY USŁUGI, a następne szuka identyfikatorów SID! Co się dzieje?!

Oracle SID to unikalna nazwa, która jednoznacznie identyfikuje twoją instancję / bazę danych, gdzie jako nazwa usługi jest aliasem TNS, który podajesz podczas zdalnego łączenia się z bazą danych, a nazwa tej usługi jest zapisywana w pliku Tnsnames.ora na klientach i może to być tak samo jak SID, ale możesz też nadać mu dowolną inną nazwę.

SERVICE_NAME to nowa funkcja począwszy od oracle 8i, w której baza danych może zarejestrować się u nasłuchiwania. Jeśli baza danych jest zarejestrowana w nasłuchiwaniu w ten sposób, możesz użyć parametru SERVICE_NAME w tnsnames.ora, w przeciwnym razie - użyj SID w tnsnames.ora.

Jeśli masz OPS (RAC), będziesz mieć inną usługę SERVICE_NAME dla każdej instancji.

SERVICE_NAMES określa co najmniej jedną nazwę usługi bazy danych, z którą łączy się ta instancja. Możesz określić wiele nazw usług, aby rozróżnić różne zastosowania tej samej bazy danych. Na przykład:

SERVICE_NAMES = sales.acme.com, widgetsales.acme.com

Możesz również użyć nazw usług, aby zidentyfikować jedną usługę, która jest dostępna w dwóch różnych bazach danych za pomocą replikacji.

W środowisku Oracle Parallel Server należy ustawić ten parametr dla każdej instancji.

W skrócie: SID = unikalna nazwa Twojej instancji DB, ServiceName = alias używany podczas łączenia

DAC
źródło
Jestem zmieszany. Czy nie powinno być tak, że w RAC będziesz mieć różne „INSTANCE_NAME” dla każdej instancji? A jedna usługa SERVICE_NAME może być powiązana z kilkoma instancjami?
Iwan Satria
20

Wiem, że jest to starożytne, jednak w przypadku skomplikowanych narzędzi, zastosowań, użytkowników lub symptomów nazewnictwa sid i usług można dodać trochę elastyczności do wpisów tnsnames, takich jak:

mySID, mySID.whereever.com =
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = mySID.whereever.com)
    (SID = mySID)
    (SERVER = DEDICATED)
  )
)

Pomyślałem, że zostawię to tutaj, ponieważ jest to łagodnie związane z pytaniem i może być pomocne, gdy próbuję omijać mniej niż wyraźne osobliwości sieci wyroczni.

siarczany
źródło
5

co to jest identyfikator SID i nazwa usługi

zajrzyj do dokumentacji Oracle pod adresem adresem https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

W przypadku, gdy powyższy odsyłacz nie będzie dostępny w przyszłości, w czasie pisania tej odpowiedzi powyższy odsyłacz przekieruje Cię do tematu „Usługa bazy danych i identyfikacja instancji bazy danych” w rozdziale „Pojęcia dotyczące łączności” w „Przewodniku administratora usług sieci baz danych” . Ten przewodnik został opublikowany przez oracle jako część „Oracle Database Online Documentation, 10g Release 2 (10.2)”

Kiedy muszę użyć jednego lub drugiego? Dlaczego potrzebuję dwóch z nich?

Rozważ poniższe mapowanie w środowisku RAC,


NAZWA
USŁUGI SID bob1 bob bob2 bob
bob3 bob
bob4 bob

jeśli skonfigurowano równoważenie obciążenia, odbiornik „zrównoważy” obciążenie dla wszystkich czterech identyfikatorów SID. Nawet jeśli równoważenie obciążenia jest skonfigurowane, możesz łączyć się z bob1 przez cały czas, jeśli chcesz, używając identyfikatora SID zamiast SERVICE_NAME.

Proszę zapoznać się z https://community.oracle.com/thread/4049517

swaroop
źródło
0

Zgodnie z glosariuszem Oracle:

Identyfikator SID to unikatowa nazwa instancji bazy danych Oracle. ---> Aby przełączać się między bazami danych Oracle, użytkownicy muszą określić żądany identyfikator SID <---. Identyfikator SID jest zawarty w częściach CONNECT DATA deskryptorów połączeń w pliku TNSNAMES.ORA oraz w definicji odbiornika sieciowego w pliku LISTENER.ORA. Znany również jako identyfikator systemu. Nazwa usługi Oracle może być dowolną nazwą opisową, na przykład „MyOracleServiceORCL”. W systemie Windows nazwa usługi może działać jako usługa w ramach usług systemu Windows.

Powinieneś użyć SID w TNSNAMES.ORA jako lepszego podejścia.

Ashish
źródło