Setiap orang yang telah bekerja dengan DBMS jenis ini mengetahui akses ke DBMS Oracle, yang disimpan dalam file tnsnames.ora.
Data disimpan dalam file
tnsnames.ora dalam teks biasa dan dapat dengan mudah diubah menggunakan editor teks apa pun. Baik jika tidak ada banyak entri di dalamnya, tetapi apa yang harus dilakukan jika organisasi memiliki ratusan basis data, akses yang harus disediakan dari host pengguna dari berbagai tingkatan atau dari server terminal. Dan jika pada satu titik baik database berpindah ke host lain, atau terjadi perubahan lain yang mengubah pengaturan akses ke database, Anda perlu mengubah pengaturan akses di mana-mana.
Ada banyak solusi yang ditawarkan, termasuk arahan ulang, alias, dll.
Di sini saya akan menjelaskan cara menginstal dan mengkonfigurasi repositori tunggal untuk menyelesaikan nama-nama database menggunakan Oracle Internet Directory OID, dan bagaimana menerapkan resolusi nama menggunakan protokol LDAP. Ini jauh lebih nyaman daripada menyimpan file tnsnames.ora hingga ratusan tempat terbaru.
Instalasi dan konfigurasi DBMS untuk database repositori OID tidak dijelaskan di sini, poin-poin penting yang penting untuk konfigurasi ini ditunjukkan. Anda dapat membiasakan diri dengan kebijakan lisensi Oracle mengenai Basis Data RDBMS, Oracle Fusion Middleware dan produk-produk Oracle Internet Directory di situs web perusahaan.
Instalasi perangkat lunak
Perangkat lunak ini diinstal pada OS Linux (SUSE Linux Enterprise Server 11), untuk OS Anda, Anda perlu memeriksa matriks kompatibilitas pada oracle.com.
Untuk menginstal server Standalone (menjalankan NodeManager), distribusi berikut diambil saat ini pada saat penyiapan:
JAVA: jdk-8u171-linux-x64.tar.gz
OID: fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip
RDBMS: 12.1.0.2 + PSU + Opatch dari versi saat ini
Instal perangkat lunak untuk repositori tempat skema OID akan disimpan
DBMS versi 12.1.0.2 + PSU
DB Buat database "kosong":
Harus ditentukan
Pengkodean AL32UTF8, termasuk ORACLE TEXT dalam instalasi perangkat lunak
Parameter DB:
open_cursors = 800
proses = 500Selain itu, perlu untuk menjalankan skrip xaview.sql, yang ditemukan pada tahap memeriksa instalasi OID.
mengkonfigurasi dan menaikkan LISTENER untuk database.
Jadi, database kosong dibuat oleh uhost-oid1: 1521 / oid1 (dalam hal ini, oid1- SID dari database) dan siap untuk membuat repositori di dalamnya.
Pengaturan OID
Selanjutnya, direktori home pengguna oracle adalah / u / app / oracle
Buka paket java dan atur variabel JAVA_HOME
unzip jdk-8u171-linux-x64.tar.gz export JAVA_HOME=/u/app/oracle/jdk1.8.0_171
Buka kemasan OID
unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip
Ternyata file ./fmw_12.2.1.3.0_oid_linux64.bin
Kami memeriksa apakah itu dapat dieksekusi, jika tidak
chmod +x
Kami meluncurkan:
./fmw_12.2.1.3.0_oid_linux64.bin
(Penerusan X-server terlebih dahulu harus dikonfigurasi), penginstal berbasis java akan mulai.
Berikut ini ditetapkan sebagai ORACLE_HOME:
/ u / app / oracle / produk / middleware / Oracle_IDM1
Sepanjang jalan ini, perangkat lunak untuk oracle fusion middleware (FMW) dan Oracle Internet Directory akan diinstal.
Pada tahap "tipe instalasi", tentukan STANDALONE.

Buat repositori (skema yang diperlukan dalam database)
Kami membuat skema untuk repositori di database, untuk ini kami menjalankan rcu
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/bin/ ./rcu.sh
Pada tahap ini, skema ODSSM, ODS, dan DEV_STB dibuat (ingat kata sandi, itu akan diperlukan saat mengkonfigurasi komponen domain)
Kami membuat domain tempat OID akan bekerja untuk kami (domain dalam hal FMW)
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin ./config.sh
Kami membuat domain dalam folder yang terpisah dari perangkat lunak. Misalnya, tentukan ini:
/ u / app / oracle / config / domains / oid_domain


Untuk koneksi ke database, tentukan parameter skema yang dibuat sebelumnya (dan kata sandi)
Saat menginstal, kami mengatur login dan kata sandi untuk NodeManager (ini akan digunakan di masa depan untuk terhubung ke NodeManager dan memulai / hentikan OID sendiri melalui itu)
Luncurkan NodeManager
Untuk memulai NodeManager, Anda perlu membuat file dengan tombol: DemoIdentity.jks. (Jika, selain menginstal OID, Anda menginstal pembaruan, maka langkah ini mungkin tidak diperlukan)
Kami akan menghasilkan "default" sehingga kami tidak akan tersiksa dengan parameter memuat keystore di konfigurasi domain. Ini berfungsi dengan parameter seperti itu - ini adalah kata sandi default untuk repositori:
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin
tampil
. setWlstEnv.sh
(tentu dengan titik, tidak bekerja dengan cara lain)
Pergi ke direktori tempat file harus disimpan:
cd /u/app/oracle/config/domains/oid_domain/security java utils.CertGen -keyfilepass DemoIdentityPassPhrase -certfile democert -keyfile demokey -strength 1024 -noskid java utils.ImportPrivateKey -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyfile demokey -keyfilepass DemoIdentityPassPhrase -certfile democert.pem -keyfile demokey.pem -alias demoidentity
Ungkapan utama DemoIdentityPassPhrase hanya itu, jika tidak, Anda harus mengedit konfigurasi domain.
Penting untuk menangani ini, tetapi Anda harus mulai bekerja terlebih dahulu.
export TNS_ADMIN=/u/app/oracle/config/domains/oid_domain/config/fmwconfig/components/OID/config
Diperlukan untuk mengkonfigurasi OID itu sendiri, jika domain tidak akan dapat terhubung ke database repositori (lihat
Problem1 )
export LD_LIBRARY_PATH=/u/app/oracle/product/middleware/Oracle_IDM1/lib:$LD_LIBRARY_PATH
diperlukan untuk menemukan perpustakaan yang tepat dan menarik diri dari ORACLE_HOME yang tepat
Jika ada, periksa dengan ldd ke mana harus mencari:
ldd /u/app/oracle/product/middleware/Oracle_IDM1/bin/oiddispd
Harus menggunakan ORACLE_HOME dengan perangkat lunak FMW:
libclntsh.so.12.1 => /u/app/oracle/product/middleware/Oracle_IDM1/lib/libclntsh.so.12.1
Kesalahan jika tidak demikian, lihat
Masalah2 cd /u/app/oracle/config/domains/oid_domain/bin/ ./setStartupEnv.sh β . ./startNodeManager.sh &
Pastikan NodeManager berjalan.
Log dan konfigurasi: / u / app / oracle / config / domains / oid_domain / nodemanager
Masalah 1: Jun 22, 2018 10:27:58 AM MSK Fatal error in NodeManager server weblogic.nodemanager.common.ConfigException: Identity key store file not found: /u/app/oracle/config/domains/oid_domain/security/DemoIdentity.jks
Solusi1: Pergi dan hasilkan DemoIdentity.jks seperti dijelaskan di atas
Masalah 2 :
Jun 28, 2018 12:20:08 PM MSK INFO /u/app/oracle/config/domains/oid_domain>><< password: confirm password: Unable to Connect to Database: Incorrect location for tnsnames.ora (derived from DOMAIN_HOME) or Incorrect TNS Connect string or Invalid Password > <createDbWallet domain: /u/app/oracle/config/domains/oid_domain, oidpasswd output: password: confirm password:
Solusi2 : atur variabel TNS_ADMIN dan periksa nama pengguna / kata sandi sudah benar
Konfigurasi OID Utama
Pada titik ini, variabel harus ditetapkan.
TNS_ADMIN
LD_LIBRARY_PATH
Diasumsikan bahwa NodeManager sudah berjalan.
Luncurkan utilitas WLST:
cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin export MW_HOME=$ORACLE_HOME
Kami mengekstrak variabel yang diperlukan agar utilitas WLST berfungsi
./setHomeDirs.sh ./setWlstEnv.sh ./wlst.sh
Selanjutnya, menggunakan utilitas WLST, kami terhubung ke NodeManager. Kami memerlukan nama pengguna dan kata sandi yang ditentukan selama instalasi (ditentukan untuk NodeManager, kami memiliki weblogic ini)
nmConnect(username='weblogic',password=' NodeManager ',domainName='oid_domain')
Contoh Keluaran :
[13:45][uhost-oid1.oracle.:/u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin]$ ./wlst.sh Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands wls:/offline> nmConnect(username='weblogic',password='*****',domainName='oid_domain') Connecting to Node Manager ... Successfully Connected to Node Manager.
Kami memulai inisialisasi, di mana instance dengan nama oid1 dibuat.
Pada baris di bawah ini:
odsPassword - kata sandi untuk skema ODS berdasarkan repositori yang ditetapkan selama ./rcu
orcladminPassword - kata sandi yang akan digunakan sebagai cn = orcladmin untuk mengakses LDAP
realmDN - LDAP - skema yang akan dikonfigurasi
oid_setup(orcladminPassword='****',odsPassword='***',realmDN='dc=mycompany,dc=ru')
Setelah eksekusi, komponen (contoh dalam hal FMW) dengan nama oid1 akan dibuat
Masalah 3 :
Log /u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
berisi
/u/app/oracle/product/middleware/Oracle_IDM1/wlserver/../bin/oiddispd: <b>error while loading shared libraries</b>: libclntshcore.so.12.1: cannot open shared object file: No such file or directory
Solusi3 :
Atur variabel lingkungan
LD_LIBRARY_PATH = / u / app / oracle / produk / middleware / Oracle_IDM1 / lib: $ LD_LIBRARY_PATH
restart NodeManager,
jalankan komponen:
cd /u/app/oracle/config/domains/oid_domain/bin/ nohup ./startNodeManager.sh & ./startComponent.sh oid1
Jika komponen dibuat karena alasan ini tetapi tidak berhasil, maka kami membunuh proses oidmon, mengubah parameter status proses dalam DBMS:
ps βef|grep oidmon kill oidmon
sqlplus / as sysdba update ods.ods_process_status set pid=0 where compname='oid1'; update ods.ods_process_status set state=4 where compname='oid1';
Pemeriksaan koneksi:
./ldapbind -h localhost -p 3060 ./ldapbind -h localhost -p 3131 -U 1 -D 'cn=orcladmin' -w ****
Anda mungkin perlu menginisialisasi oid_setup lagi
Masalah 4 . Saat mencoba menyimpan ke NetManager:
oracle.net.common.dataStore.DataStoreException: error writing ServiceAlias to: LDAPDataStore [svr: uhost-oid1.mycompany.ru:3060:3131, type: OID, ctxt: cn=OracleContext,dc=mycompany,dc=ru, home: C:\oracle\product\12.1.0\client_1] original exception message: TNS-04409: caused by: oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException original stack trace: oracle.net.config.ServiceAliasException: TNS-04409: caused by: oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException oracle.net.config.DirectoryServiceException: TNS-04405: caused by: oracle.net.ldap.NNFLException oracle.net.ldap.NNFLException
Solusi4:Jalankan oid_setup lagi
Periksa pengaturan ldap.ora pada klien dari mana Net Manager dimulai
DEFAULT_ADMIN_CONTEXT = "dc = perusahaan saya, dc = ru"
Ubah parameter OID (untuk memungkinkan permintaan dari pengguna anonim)Ketika nama TNS dibuat menggunakan net manager, tetapi tnsping tidak berfungsi.
Buat file:
cat anonymousbind.ldif
dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclAnonymousBindsFlag orclAnonymousBindsFlag: 1
dan memodifikasi parameter menggunakan file ini:
ldapmodify -D cn=orcladmin -W -p 3131 -h localhost -f anonymousbind.ldif
Diagnostik:tnsping mytest tidak berfungsi, pencarian ldaps bekerja
Memeriksa ketersediaan port 3060 dan 3131 (untuk SSL)
ini cara kerjanya (dengan kata sandi)
ldapsearch -h uhost-oid1.mycompany.ru -p 3060 -D "cn=orcladmin" -w password_hear -b "cn=mytest,cn=OracleContext,dc=mycompany,dc=ru" -s base "objectclass=*"
mytest adalah alias yang dibuat sebelumnya.
Pengaturan klien
Di sisi klien, $ ORACLE_HOME / network / admin berisi file:
ldap.ora
sqlnet.ora
tnsnames.ora
File tnsnames.ora berisi alias "lokal", seperti biasa, dan digunakan jika nama tidak ditemukan di LDAP.
File sqlnet.ora berisi deskripsi perintah resolver:
sqlnet.oraSQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,LDAP)
Pengaturan akses untuk file LDAP diatur di ldap.ora
ldap.ora DIRECTORY_SERVERS = (uhost-oid1.mycompany.ru:3060:3131,rephost-oid1.mycompany.ru:3060:3131) DIRECTORY_SERVER_TYPE = OID DEFAULT_ADMIN_CONTEXT = "dc=mycompany,dc=ru"
Dalam konfigurasi yang dijelaskan, urutan berikut digunakan.
Pertama, file tnsnames.ora dilihat, jika catatan tidak ditemukan di sana, maka kami meminta LDAP (jika Anda perlu mengubah urutan, ubah urutan di parameter NAMES.DIRECTORY_PATH
Berikutnya adalah permintaan ke server LDAP utama, jika tidak tersedia karena alasan tertentu, buka server kedua dalam daftar DIRECTORY_SERVERS
Urutan pemungutan suara dalam hal ini tidak penting, yang pertama lebih baik untuk menunjukkan server terdekat secara geografis.
Default admin context (LDAP) digunakan untuk konteks default, agar tidak menunjukkan mycompany.ru setiap saat
Untuk alasan yang sama, tidak disarankan untuk menggunakan titik dalam catatan alias; ia menganggapnya sebagai domain.
Selanjutnya saya akan memberi tahu cara mengkonfigurasi replikasi antar server