اوراکل 23c – ابزار CoStr

خرید بک لینک

یکی دیگر از قابلیتهای جدید دیتابیس اوراکل در نسخه 23c، ابزار CoStr است این ابزار خروجی لاگ listener را خوانده و بر اساس آن، برای هر کدام از سرویسها، coection string را به فرمتهای Easy Coect، JDBC و Python نمایش می دهد. علاوه بر آن، این ابزار می تواند برای هر کدام از سرویسها، net service nameای را در فایل tnsnames.ora ایجاد کند.

در حالت پیش فرض اگر سرویس listener پایین باشد، اجرای دستور CoStr به خطا خواهد خورد:

 [oracle@OEL8 ~]$ lsnrctl stop
LSNRCTL for Linux: Version 23.0.0.0.0 - Developer-Release on 05-SEP-2023 13:30:35
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Coecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= OEL8)(PORT=1521)))
The command completed successfully
[oracle@OEL8 ~]$ costr
Using Listener: LISTENER with Oracle Home: /opt/oracle/product/23c/dbhomeFree
No listener endpoints found

بعد از استارت listener، اگر سرویسی رجیستر نشده باشد، CoStr پیغام The listener supports no services را نمایش می دهد:

[oracle@OEL8 ~]$ lsnrctl start
The listener supports no services
The command completed successfully
[oracle@OEL8 ~]$ costr
Using Listener: LISTENER with Oracle Home: /opt/oracle/product/23c/dbhomeFree
The listener supports no services

همانطور که می دانید، بعد از انتظار چند ثانیه ای، LREG همه سرویسها را به صورت خودکار روی پورت 1521 رجیستر خواهد کرد:

 [oracle@OEL8 ~]$ lsnrctl status
LSNRCTL for Linux: Version 23.0.0.0.0 - Developer-Release on 05-SEP-2023 13:36:47
Copyright (c) 1991, 2023, Oracle. All rights reserved.
Coecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=target)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 23.0.0.0.0 - Developer-Release
Start Date 05-SEP-2023 13:31:07
Uptime 0 days 0 hr. 5 min. 40 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service FREE
Listener Parameter File /opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/OEL8/listener/alert/log.xml
Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OEL8)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
Services Summary...
Service "FREE" has 1 instance(s). Instance "FREE", status READY, has 1 handler(s) for this service...
Service "tehranpdb" has 1 instance(s). Instance "FREE", status READY, has 1 handler(s) for this service...
The command completed successfully

در این شرایط اگر دستور CoStr را اجرا کنیم، لیست سرویسها به همراه coection string آنها نمایش داده می شوند:

[oracle@OEL8 admin]$ costr
Using Listener: LISTENER with Oracle Home: /opt/oracle/product/23c/dbhomeFree
Service Name: tehranpdb
Coection String: OEL8:1521/tehranpdb
Service Name: FREE
Coection String: OEL8:1521/FREE
Coection strings can be used to coect to the specified service name.
For SQL*Plus you can use: SQL> coect useame@OEL8:1521/tehranpdb
For Python you can use: coection = cx_Oracle.coect(user="useame", password="password", dsn="OEL8:1521/tehranpdb")
For JDBC Thin you can use: OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@OEL8:1521/tehranpdb"); ods.setUser("useame"); ods.setPassword("password"); Coection co = ods.getCoection();
Write coect strings to tnsnames.ora (Y/N)? (Default: N): 

در خط آخر سوالی پرسیده می شود که در صورت انتخاب Y، تمامی net service nameها به tnsnames.ora اضافه خواهند شد:

[oracle@OEL8 ~]$ vi /opt/oracle/product/23c/dbhomeFree/network/admin/tnsnames.ora
# ***** tnsnames.ora coection strings auto-generated by costr on Tue Sep 5 11:46:03 2023 *****
# This file is not needed if using Easy Coect strings.
# To use this file, place in your client TNS_ADMIN directory (typically ORACLE_HOME/network/admin/ or instantclient_XX_X/network/admin).
# Or, set your TNS_ADMIN environment variable to the directory this file is located in.
tehranpdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = OEL8)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = tehranpdb)) )
FREE = (DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = OEL8)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = FREE)) )

از طریق سوییچ o می توانیم خروجی را خارج از فایل tnsnames.ora ذخیره کنیم:

[oracle@OEL8 ~]$ costr -o /home/oracle/tnsnames.test
Write coect strings to /home/oracle/tnsnames.test (Y/N)? (Default: N): Y
[oracle@OEL8 ~]$ ls -lh /home/oracle/tnsnames.test
-rw-r--r-- 1 oracle oinstall 1.2K Sep 5 14:21 /home/oracle/tnsnames.test

در ابتدای متن تاکید شد دستور CoStr به صورت پیش فرض با listener کار می کند و برای اجرای این دستور باید سرویس listener بالا باشد عبارت “به صورت پیش فرض ” به این دلیل قید شد که اجرای این دستور به اجرای سرویس listener محدود نیست و CoStr از طریق لاگ listener هم قابل اجرا است حتی زمانی که listener پایین باشد:

[oracle@OEL8 ~]$ lsnrctl status>listener_status.log
[oracle@OEL8 ~]$ lsnrctl stop
[oracle@OEL8 ~]$ costr --i listener_status.log
Using Listener: LISTENER with Oracle Home: /opt/oracle/product/23c/dbhomeFree
Service Name: tehranpdb
Coection String: OEL8:1521/tehranpdb
Service Name: FREE
Coection String: OEL8:1521/FREE
Coection strings can be used to coect to the specified service name.
For SQL*Plus you can use: SQL> coect useame@OEL8:1521/tehranpdb
For Python you can use: coection = cx_Oracle.coect(user="useame", password="password", dsn="OEL8:1521/tehranpdb")
For JDBC Thin you can use: OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@OEL8:1521/tehranpdb"); ods.setUser("useame"); ods.setPassword("password"); Coection co = ods.getCoection();
File tnsnames.ora exists. Append (Y), Overwrite (O), or Do Nothing (N)? (Default: N):

برای هر کدام از سرویسها هم می توانیم به صورت جداگانه coection string را نمایش دهیم:

[oracle@OEL8 ~]$ costr tehranpdb
OEL8:1521/tehranpdb

در صورت استفاده از سوییچ j،ء coection string مربوط به JDBC نمایش داده خواهد شد:

[oracle@OEL8 ~]$ costr -j tehranpdb
jdbc:oracle:thin:@OEL8:1521/tehranpdb

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:[email protected]

تالار های تخصصی...

ما را در سایت تالار های تخصصی دنبال می‌کنید

برچسب: نویسنده: خنجی بازدید: 87 تاريخ: جمعه 24 شهريور 1402 ساعت: 20:09

صفحه بندی