آشنایی با محیط SQLcl

ابزار SQLcl در سال 2014 توسط تیم Oracle SQLDeveloper ارائه شد، این ابزار مشابه sqlplus محیطی command lineی را برای DBA فراهم  می سازد با این تفاوت که قابلیت و راحتی های فراوانی را نسبت به sqlplus  به همراه دارد.

نمونه هایی از مزیتهای این ابزار را نسبت به sqlplus مشاهده می کنید:

1.برای استفاده از SQLcl نیازی به نصب اوراکل کلاینت نخواهیم داشت همچنین این ابزار نصب بسیار راحتی دارد.

2.دستورات کاربردی فراوانی توسط این ابزار ارائه شده اند نظیر HISTORY، DDL، CTAS، Spool To CSV و ….

3.کار کردن با خط فرمان در این محیط نسبت به sqlplus راحت تر است(به دلیل ویژگی هایی چون TAB COMPELETION ). همچنین خروجی پرس و جوها به شکل خواناتری نمایش داده می شوند.

4.SQLcl امکان اتصال بین دو دیتابیس را بدون استفاده از database link فراهم می کند.

و …

نصب SQLcl

از اوراکل 12c، با نصب نرم افزار اوراکل، ابزار SQLcl هم در دسترس خواهد بود و نیازی به نصب مجزا این نرم افزار نخواهیم داشت.

در صورتی که بخواهیم از آخرین نسخه این ابزار استفاده کنیم و یا اگر قصد داریم از این ابزار به صورت مجزا از نرم افزار اوراکل استفاده کنیم، صرفا کافیست تا پس از دانلود SQLcl از سایت اوراکل، فایل دانلود شده را unzip کنیم(حجم اخرین نسخه این ابزار، حدودا 30 مگابایت می باشد.)البته نصب JRE/JDK سازگار با SQLcl هم پیش نیاز استفاده از این ابزار می باشد.

 [oracle@Primary sqlcl]$ unzip /source/sqlcl-20.2.0.174.1557.zip

 [oracle@Primary ~]$ export PATH=${PATH}:/sqlcl/ bin

[oracle@Primary ~]$  sql

 

اتصال به دیتابیس

برای اتصال به دیتابیس از طریق SQLcl می توان از روشهای مختلفی استفاده کرد.

روش اول: EZconnect

sql usef/a@192.168.1.22:1521/orcl

SQLcl: Release 20.2 Production on Mon Nov 02 01:29:58 2020

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production

Version 19.6.0.0.0

روش دوم:استفاده از net service name

sql usef/a@otherdb

SQLcl: Release 20.2 Production on Mon Nov 02 01:29:58 2020

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production

Version 19.6.0.0.0

روش سوم: در صورتی که SQLcl را در کنار دیتابیس نصب کرده باشیم(در سروری که دیتابیس در آن در حال اجرا است)، می توان بدون استفاده از network به دیتابیس لاگین کنیم:

sql / as sysdba

sql usef/a

روش چهارم: full connection string

sql usef/a@”(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=db))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.22)(PORT=1521)))”

 

بهبودهای SQLcl در خط فرمان

همانطور که در ابتدای متن بیان شد، کار کردن در محیط SQLcl به نسبت sqlplus راحت تر است در این قسمت چند مورد از مزیتهای SQLcl را در این زمینه مرور می کنیم.

TAB COMPLETION: با کمک این قابلیت، در هنگام وارد کردن نام یک شی، با فشردن کلید tab می توانیم از دیتابیس بخواهیم تا بقیه اسم شی را کامل کند(TAB COMPLETION):

SQL> select * from TBL

TBL1   TBL2  

پاک کردن صفحه نمایش: از طریق کلید میانبر CRTL-L و یا دستور clear screen می توان صفحه نمایش را پاک کرد.

ویرایش دستورات: SQLcl امکان ویرایش خطوطی که در حال کار با آن هستیم را به ما خواهد داد:

نمایش خروجی به فرمتهای مختلف(CSV، html، JSON و …): در محیط SQLcl می توان فرمت خروجی پرس و جوها را به کمک پارامتر SQLFORMAT مشخص کرد.

برای مثال، با اجرای دستور زیر، خروجی دستور select به صورت JSON نمایش داده می شود:

در کنار فرمت JSON، خروجی پرس و جوها را می توان با فرمتهای  csv، html، xml، fixed، json، insert، json-formatted ، ansiconsole و text هم نمایش داد.

علاوه بر پارامتر sqlformat، با تنظیم comment در دستور select هم می توان فرمتی را برای خروجی پرس و جوها مشخص کرد:

نکته: دستور SET SQLFORMAT DEFAULT تنظیمات را به مقدار پیش فرض بر میگرداند همچنین برای مشاهده فرمت جاری می توان از دستور show sqlformat استفاده کرد.

 

آشنایی با دستورات اختصاصی SQLcl

علاوه بر دستورات قابل استفاده در محیط sqlplus، دستورات جدیدی هم در محیط SQLcl قابل اجرا هستند که در این قسمت، تعدادی از این دستورات را با هم مرور می کنیم.

توجه: لیست دستورات قابل اجرا در محیط SQLcl را می توان با کمک دستور help مشاهده کرد:

 

دستور info: این دستور مشابه دستور describe است با این تفاوت که اطلاعات بیشتری را از ساختار جدول ارائه می کند برای مثال، تاریخ آخرین جمع آوری آمار، اسامی و مشخصات ایندکسها، فعال/غیرفعال بودن خصیصه inmemory و … در خروجی این دستور قابل مشاهده هستند:

SQL> info tbl1

البته با اضافه کردن + به دستور info می توان اطلاعات بیشتری را در مورد statsticهای جدول مشاهده کرد:

SQL> info+ tbl1

 

دستور DDL: با کمک این دستور می توان دستور ساخت یک object را استخراج کرد:

SQL> DDL tbl1

برای ممانعت از نمایش اطلاعات مربوط به storage جدول(در خروجی دستور DDL) می توان از دستور SET DDL STORAGE OFF استفاده کرد:

برای ذخیره کردن خروجی دستور DDL در یک فایل متنی، می توان از پارامتر save در این دستور کمک گرفت:

SQL> DDL tbl1 save tbl1_ddl.txt

برای مشاهده دیگر پارامترهای دستور DDL می توان دستور show ddl را اجرا کرد:

 

دستور history: دستوراتی که در محیط SQLcl اجرا می شوند، در حافظه باقی خواهند ماند این محیط تا 100 دستور را در حافظه نگه می دارد. برای مشاهده دستوراتی که قبلا اجرا شده اند(دستوراتی که در session جاری و یا sessionهای قبلی اجرا شده اند) می توان از دستور history استفاده کرد:

همراه با دستور history می توان از پارامترهای دیگری هم استفاده کرد برای نمونه می توان به پارامتر usage که تعداد دفعات اجرای هر دستور را نمایش می دهد، اشاره کرد:

و یا history time که مدت زمان اجرای هر دستور را تعیین می کند:

برای پاک کردن history می توان دستور history clear استفاده کرد:

نکته: برای متوقف کردن history می توان دستور set history off را اجرا کرد.

 

دستور CTAS: همانطور که می دانید، در اوراکل CTAS مخفف create table as می باشد که کاربرد آن ایجاد یک جدول از روی جدول دیگر می باشد. در محیط SQLcl می توان با کمک دستور CTAS، صرفا دستور ساخت جدول(از روی جدول دیگر) را ایجاد خواهد کرد و برای ایجاد جدول جدید، کافیست خروجی دستور CTAS را اجرا کنیم:

 

دستور Alias: این دستور مشابه دستور alias در محیط لینوکس کار می کند به این شکل که برای دستورات و پرس وجوها می توان نامی را به مستعار تعیین کرد و برای هر بار اجری دستور، صرفا alias تعریف شده را اجرا کرد. مثال زیر را ببینید:

SQL> alias active_session=select count(*) from v$session

  2  where status=’ACTIVE’

  3* and username is not null;

لیست aliasهای تعریف شده را می توان با دستور alias مشاهده کرد:

برای مشاهده پرس و جوی یک alias، می توان از دستور alias list استفاده کرد:

 

دستور repeat: برای اجرای یک پرس و جو به صورت متناوب، می توان از دستور repeat استفاده کرد. برای مثال، در قسمت زیر، active_session برای 300 بار و هر ثانیه یکبار اجرا خواهد شد:

SQL> active_session;

   COUNT(*)

___________

          2

SQL> repeat 300 1

 

دستور load: این دستور امکان بارگذاری اطلاعات CSV را در دیتابیس فراهم می کند.

SQL> spool off

SQL> spool ‘d:\tbl.csv’

SQL> set sqlformat csv

SQL> select /*+parallel(10)*/ file#,status,bytes from v$datafile;

“FILE#”,”STATUS”,”BYTES”

1,”SYSTEM”,1006632960

3,”ONLINE”,1478492160

4,”ONLINE”,367001600

5,”ONLINE”,52428800

7,”ONLINE”,5242880

SQL> spool off

SQL> create table tbl1(

  2  file# number(10),

  3  status varchar2(100),

  4  bytes number(32))

  5  ;

Table TBL1 created.

 

SQL> load tbl1 d:\tbl.csv

–Number of rows processed: 8

–Number of rows in error: 0

0 – SUCCESS: Load processed without errors

 

SQL> select * from tbl1;

“FILE#”,”STATUS”,”BYTES”

1,”SYSTEM”,1006632960

3,”ONLINE”,1478492160

4,”ONLINE”,367001600

5,”ONLINE”,52428800

7,”ONLINE”,5242880

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.