SID khác với tên dịch vụ trong Oracle tnsnames.ora


Câu trả lời:


154

Trích dẫn bởi @DAC

Tóm lại: SID = tên duy nhất của DB của bạn, ServiceName = bí danh được sử dụng khi kết nối

Không đúng hoàn toàn. SID = tên duy nhất của INSTANCE (ví dụ: quá trình tiên tri đang chạy trên máy). Oracle coi "Cơ sở dữ liệu" là các tệp.

Tên dịch vụ = bí danh cho một INSTANCE (hoặc nhiều trường hợp). Mục đích chính của việc này là nếu bạn đang chạy một cụm, khách hàng có thể nói "kết nối tôi với SALES.acme.com", DBA có thể thay đổi số lượng phiên bản có sẵn cho các yêu cầu SALES.acme.com, hoặc thậm chí di chuyển SALES.acme.com sang cơ sở dữ liệu hoàn toàn khác mà không cần khách hàng thay đổi bất kỳ cài đặt nào.


1
Vì vậy, trong ví dụ của bạn, có thể có SID Sales1, Sales2Sales3, tất cả đều có sẵn thông qua tên dịch vụ Sales?

1
Tôi nghĩ ngược lại là trường hợp: Bạn có một SID có sẵn nhiều dịch vụ. Sau đó, bạn có thể lấy một trong các dịch vụ và trỏ nó vào một cơ sở dữ liệu / SID khác.
Colin Nicholls

Chúng ta có thể có tên Oracle SID giống như tên TNS không? Nó sẽ là một vấn đề?
user2441441 18/03/2015

2
@ user2441441: Theo lời giải thích mà Matthew đã đưa ra, tôi nghĩ bạn đã đúng khi cho rằng có thể có nhiều SID và một khi Dịch vụ tóm tắt tất cả các SID
Dwarak

26

Vui lòng xem: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htmlm

Sự khác biệt giữa Oracle SID và Oracle DỊCH VỤ NÊN. Một công cụ cấu hình tìm kiếm TÊN DỊCH VỤ và tiếp theo sẽ tìm SID! Chuyện gì đang xảy ra vậy?!

Oracle SID là tên duy nhất xác định duy nhất cá thể / cơ sở dữ liệu của bạn trong đó tên dịch vụ là bí danh TNS mà bạn đặt khi bạn kết nối từ xa với cơ sở dữ liệu của mình và tên Dịch vụ này được ghi trong tệp Tnsnames.ora trên máy khách của bạn và nó có thể là giống như SID và bạn cũng có thể đặt cho nó bất kỳ tên nào khác bạn muốn.

SERVICE_NAME là tính năng mới từ oracle 8i trở đi, trong đó cơ sở dữ liệu có thể tự đăng ký với người nghe. Nếu cơ sở dữ liệu được đăng ký với người nghe theo cách này thì bạn có thể sử dụng tham số SERVICE_NAME trong tnsnames.ora nếu không - sử dụng SID trong tnsnames.ora.

Ngoài ra, nếu bạn có OPS (RAC), bạn sẽ có SERVICE_NAME khác nhau cho mỗi trường hợp.

SERVICE_NAMES chỉ định một hoặc nhiều tên cho dịch vụ cơ sở dữ liệu mà phiên bản này kết nối. Bạn có thể chỉ định nhiều tên dịch vụ để phân biệt giữa các cách sử dụng khác nhau của cùng một cơ sở dữ liệu. Ví dụ:

SERVICE_NAMES = sales.acme.com, widgetales.acme.com

Bạn cũng có thể sử dụng tên dịch vụ để xác định một dịch vụ có sẵn từ hai cơ sở dữ liệu khác nhau thông qua việc sử dụng bản sao.

Trong môi trường Máy chủ song song của Oracle, bạn phải đặt tham số này cho mọi trường hợp.

Tóm lại: SID = tên duy nhất của cá thể DB của bạn, ServiceName = bí danh được sử dụng khi kết nối


Tôi bối rối. Không phải là trong RAC, bạn sẽ có "INSTANCE_NAME" khác nhau cho mỗi trường hợp? Và một DỊCH VỤ có thể được liên kết với một số trường hợp?
Iwan Satria

20

Tôi biết điều này là cổ xưa tuy nhiên khi xử lý các công cụ khó sử dụng, người dùng hoặc các triệu chứng lại: đặt tên dịch vụ & sid có thể thêm một chút flex vào các mục nhập tnsnames của bạn như sau:

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)
  )
)

Tôi chỉ nghĩ rằng tôi để nó ở đây vì nó liên quan nhẹ đến câu hỏi và có thể hữu ích khi cố gắng dệt xung quanh một số ít hơn những đặc điểm rõ ràng về mạng lưới nhà tiên tri.


5

Tên dịch vụ và SID là gì

vui lòng xem tài liệu của oracle tại https://docs.oracle.com/cd/B19306_01/network.102/b14212/con accept.htmlm

Trong trường hợp nếu không thể truy cập liên kết trên trong tương lai, tại thời điểm viết câu trả lời này, liên kết trên sẽ hướng dẫn bạn đến chủ đề "Dịch vụ cơ sở dữ liệu và nhận dạng cơ sở dữ liệu" trong chương "Hướng dẫn quản trị viên dịch vụ mạng cơ sở dữ liệu" . Hướng dẫn này được xuất bản bởi oracle như một phần của "Tài liệu trực tuyến cơ sở dữ liệu Oracle, 10g Phiên bản 2 (10.2)"

Khi tôi phải sử dụng cái này hay cái khác? Tại sao tôi cần hai người trong số họ?

Xem xét ánh xạ bên dưới trong Môi trường RAC,

SID SERVICE_NAME
bob1
bob
bob2 bob
bob bob bob bob

nếu cân bằng tải được cấu hình, người nghe sẽ 'cân bằng' khối lượng công việc trên tất cả bốn SID. Ngay cả khi cân bằng tải được định cấu hình, bạn có thể kết nối với bob1 mọi lúc nếu bạn muốn bằng cách sử dụng SID thay vì SERVICE_NAME.

Vui lòng tham khảo, https://community.oracle.com/thread/4049517


0

Theo Thuật ngữ của Oracle:

SID là một tên duy nhất cho một cá thể cơ sở dữ liệu Oracle. ---> Để chuyển đổi giữa các cơ sở dữ liệu Oracle, người dùng phải chỉ định SID mong muốn <---. SID được bao gồm trong các phần DỮ LIỆU KẾT NỐI của các bộ mô tả kết nối trong tệp TNSNAMES.ORA và trong định nghĩa của trình nghe mạng trong tệp LISTENER.ORA. Còn được gọi là ID hệ thống. Tên dịch vụ của Oracle có thể là bất cứ điều gì mô tả như "MyOracleServiceORCL". Trong Windows, Bạn có thể Tên dịch vụ của bạn chạy dưới dạng dịch vụ trong Windows Services.

Bạn nên sử dụng SID trong TNSNAMES.ORA như một cách tiếp cận tốt hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.