Tại sao tôi cần hai người trong số họ? 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ọ? Khi tôi phải sử dụng cái này hay cái khác?
Câu trả lời:
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.
Sales1
, Sales2
và Sales3
, tất cả đều có sẵn thông qua tên dịch vụ Sales
?
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 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.
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
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.