زمانی که از چند HINT در متن دستور(مخصوصا یک پرس و جوی پیچیده) استفاده می کنیم، ممکن است در جستجوی روشی باشیم تا از استفاده اوراکل از این HINTها اطمینان حاصل کنیم و یا به صورت کلی بدانیم که از کدام یک از این hintها صرف نظر شده و چند hint مورد استفاده قرار گرفته است؟
(بیشتر…)تاریخ اخرین تغییر جدول و رکورد با کمک ستون ORA_ROWSCN
ثبت زمان اخرین تغییر DMLای رکوردهای یک بلاک، می تواند به جهت مدیریتی و امنیتی مفید باشد ولی طبیعتا سربار اضافه ای دارد و از کارایی بانک اطلاعاتی می کاهد.
برای کاهش این سربار، دیتابیس اوراکل زمان آخرین تغییرات را به شکل scn و در سطح بلاک ذخیره خواهد کرد به این شکل که با هر تغییر در رکوردهای یک بلاک، scn مربوط به آن زمان، برای همه رکوردهای آن بلاک ثبت خواهد شد.
(بیشتر…)آشنایی با External Table همراه با چند مثال
برای جداول از نوع External Table، تنها متادیتا و شکل تعریف جدول در درون بانک ذخیره خواهد شد و دیتای اصلی جدول، در خارج از بانک و در سطح سیستم عامل قرار می گیرد.
(بیشتر…)نکاتی در مورد shmall، shmmax، sga_target، lock_sga
sga را به عنوان shared global area می شناسیم! و قرار است پروسسها از این فضا به صورت مشترک استفاده کنند به همین جهت، قسمتی از حافظه که برای sga مورد استفاده قرار می گیرد، shared memory نامیده می شود.
دو پارامتر کلیدی shared memory در لینوکس، shmmax و shmall می باشند که shmmax حداکثر اندازه یک shared memory segment(بر اساس بایت) را مشخص می کند و shmall هم، اندازه کلی shared memory(بر اساس page) یا همان جمع اندازه shared memory segmentها را مشخص خواهد کرد.
Auditing در محیط Active Data Guard
در زمان استفاده از Active Data Gaurd، ممکن است نیاز باشد تا نظارتی بر روی دسترسی کاربران به جداول صورت پذیرد. با توجه به read only بودن ADG، طبیعی است که امکان استفاده از $aud برای ثبت auditing امکان پذیر نخواهد بود و تنظیم پارامتر audit_trail به مقدار DB نمی تواند در این محیط موثر باشد.
آشنایی با SQL*Loader همراه با چند مثال
قصد داریم اطلاعات زیر را در جدولی از بانک درج کنیم:
1,vahid,usefzadeh,oracle database
2,reza,hosseini,sqlserver database
3,nima,alavi,mysql database
برای درج این اطلاعات، روشهای مختلفی وجود دارد که یکی از این روشها، استفاده از ابزار SQL*Loader می باشد. در این متن به بررسی این ابزار خواهیم پرداخت. شکل زیر، ساختار کلی SQL*Loader را نشان می دهد:
ممانعت از تغییر پسورد توسط کاربران فاقد مجوز
هر کاربری می تواند بدون داشتن مجوز اضافه ای(مانند alter user)؛ پسوردش را با یکی از روشهای زیر تغییر دهد:
بهبود سرعت درج انبوه با unusable کردن ایندکسها
در زمان بازسازی یک جدول حجیم و یا درج قابل توجهی از اطلاعات در یک جدول، unusable کردن ایندکسها می تواند باعث تسریع انجام عملیات شود. در ادامه با یک مقایسه ساده، این موضوع را نشان خواهیم داد.
برای انجام سناریو، جدولی را به همراه دو ایندکس ایجاد می کنیم.
پروسیجر EXPAND_SQL_TEXT
یک ویو ممکن است از یک پرس و جوی بسیار پیچیده و با متن طولانی ایجاد شده باشد و حتی بعضا، در متن پرس و جو، به ویوهای پیچیده دیگری هم رجوع شده باشد با این شرایط، برای ارائه راه حلهای پرفورمنسی و همچنین انجام تغییری در متن کد، داشتن متن کامل پرس و جو(بدون ارجاع به هیچ ویوی دیگر)، می تواند در مواردی راهگشا باشد.
سیر تکاملی ذخیره سازی پسورد کاربران dblink(ویژگی DICTIONARY CREDENTIALS ENCRYPT)
در اوراکل 10gR1، پسورد کاربران استفاده شده برای dblink، بدون رمزنگاری و بصورت کاملا شفاف(clear text) در جداول data dictionary ذخیره می شدند و امکان مشاهده کلمه عبور به صورت clear text، از طریق ویوهای data dictionary امکان پذیر بود:
SQL*Plus: Release 10.1.0.4.2 – Production on Wed Apr 18 11:23:01 2018
SQL> create database link dblinkname connect to usef identified by “pass@123” using ‘tns_name’;
Database link created.
SQL> select DB_LINK,USERNAME,PASSWORD from USER_DB_LINKS;
DB_LINK USERNAME PASSWORD
——————– ———- ———-
DBLINKNAME USEF pass@123