Bagaimana SID berbeda dari nama Layanan di Oracle tnsnames.ora

178

Mengapa saya membutuhkan dua dari mereka? Kapan saya harus menggunakan satu atau yang lain?

Georgy Bolyuba
sumber
1
Bagaimana menemukan nama layanan kami ketika saya memiliki nama SID?
Mrinal Saurabh

Jawaban:

154

Kutipan oleh @DAC

Singkatnya: SID = nama unik DB Anda, ServiceName = alias yang digunakan saat menghubungkan

Tidak sepenuhnya benar. SID = nama unik INSTANCE (mis. Proses oracle berjalan pada mesin). Oracle menganggap "Database" sebagai file.

Nama Layanan = alias ke INSTANSI (atau banyak contoh). Tujuan utama dari ini adalah jika Anda menjalankan sebuah cluster, klien dapat mengatakan "hubungkan saya ke SALES.acme.com", DBA dapat dengan cepat mengubah jumlah instance yang tersedia untuk permintaan SALES.acme.com, atau bahkan memindahkan SALES.acme.com ke basis data yang sama sekali berbeda tanpa klien perlu mengubah pengaturan apa pun.

Matthew Watson
sumber
1
Jadi, dalam contoh Anda, mungkin ada SIDS Sales1, Sales2dan Sales3, yang semuanya tersedia melalui nama layanan Sales?
1
Saya pikir yang terjadi adalah sebaliknya: Anda memiliki satu SID yang tersedia karena banyak layanan. Anda kemudian dapat mengambil salah satu layanan, dan mengarahkannya ke SID / database yang berbeda.
Colin Nicholls
Bisakah kita memiliki nama Oracle SID yang sama dengan nama TNS? Apakah ini akan menjadi masalah?
user2441441
2
@ user2441441: Mengikuti penjelasan yang diberikan Matthew, saya pikir Anda benar dengan asumsi bahwa bisa ada banyak SID dan sekali Layanan yang abstrak semua SID
Dwarak
26

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

Apa perbedaan antara Oracle SID dan Oracle SERVICE NAMES. Satu alat konfigurasi mencari NAMA LAYANAN dan kemudian alat pencarian berikutnya untuk SID! Apa yang sedang terjadi?!

Oracle SID adalah nama unik yang secara unik mengidentifikasi instance / database Anda di mana sebagai Layanan adalah alias TNS yang Anda berikan ketika Anda terhubung ke database Anda dari jarak jauh dan nama Layanan ini dicatat dalam file Tnsnames.ora pada klien Anda dan itu bisa menjadi sama seperti SID dan Anda juga bisa memberikannya nama lain yang Anda inginkan.

SERVICE_NAME adalah fitur baru dari oracle 8i dan seterusnya di mana basis data dapat mendaftarkan dirinya dengan pendengar. Jika database terdaftar dengan pendengar dengan cara ini maka Anda dapat menggunakan parameter SERVICE_NAME di tnsnames.ora jika tidak - gunakan SID di tnsnames.ora.

Juga jika Anda memiliki OPS (RAC), Anda akan memiliki SERVICE_NAME berbeda untuk setiap instance.

SERVICE_NAMES menentukan satu atau lebih nama untuk layanan basis data yang terhubung dengan instance ini. Anda dapat menentukan beberapa nama layanan untuk membedakan berbagai penggunaan dari database yang sama. Sebagai contoh:

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

Anda juga dapat menggunakan nama layanan untuk mengidentifikasi satu layanan yang tersedia dari dua database berbeda melalui penggunaan replikasi.

Di lingkungan Oracle Parallel Server, Anda harus mengatur parameter ini untuk setiap instance.

Singkatnya: SID = nama unik instance DB Anda, ServiceName = alias yang digunakan saat menghubungkan

DAC
sumber
Saya bingung. Bukankah seharusnya di RAC, Anda akan memiliki "INSTANCE_NAME" yang berbeda untuk setiap contoh? Dan satu SERVICE_NAME dapat dikaitkan dengan beberapa kejadian?
Iwan Satria
20

Saya tahu ini kuno tetapi ketika berhadapan dengan alat, penggunaan, pengguna, atau gejala yang rumit: penamaan sisi & layanan seseorang dapat menambahkan sedikit kelenturan pada entri tnsnames Anda seperti:

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

Saya hanya berpikir saya akan meninggalkan ini di sini karena agak relevan dengan pertanyaan dan dapat membantu ketika mencoba untuk menenun sekitar beberapa kekhasan yang jelas dari jaringan oracle.

seorphate
sumber
5

apa itu SID dan nama Layanan

silakan lihat dokumentasi oracle di https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

Jika tautan di atas tidak dapat diakses di masa mendatang, Pada saat penulisan jawaban ini, tautan di atas akan mengarahkan Anda ke topik "Layanan Database dan Identifikasi Instans Basis Data" di bab Konsep Konektivitas bab "Panduan Administrator Layanan Net Database" . Panduan ini diterbitkan oleh oracle sebagai bagian dari "Oracle Database Online Documentation, 10g Release 2 (10.2)"

Kapan saya harus menggunakan satu atau yang lain? Mengapa saya membutuhkan dua dari mereka?

Pertimbangkan pemetaan di bawah dalam Lingkungan RAC,

SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob

jika load balancing dikonfigurasi, pendengar akan 'menyeimbangkan' beban kerja di keempat SID. Bahkan jika penyeimbangan beban dikonfigurasi, Anda dapat terhubung ke bob1 sepanjang waktu jika Anda ingin menggunakan SID alih-alih SERVICE_NAME.

Silakan merujuk, https://community.oracle.com/thread/4049517

swaroop
sumber
0

Sesuai Oracle Glosarium:

SID adalah nama unik untuk instance database Oracle. ---> Untuk beralih di antara database Oracle, pengguna harus menentukan SID yang diinginkan <---. SID termasuk dalam bagian CONNECT DATA dari deskriptor koneksi dalam file TNSNAMES.ORA, dan dalam definisi pendengar jaringan dalam file LISTENER.ORA. Juga dikenal sebagai System ID. Nama Layanan Oracle dapat berupa sesuatu yang deskriptif seperti "MyOracleServiceORCL". Di Windows, Anda bisa menjalankan Nama Layanan Anda sebagai layanan di bawah Layanan Windows.

Anda harus menggunakan SID di TNSNAMES.ORA sebagai pendekatan yang lebih baik.

Ashish
sumber