تنظیم پارامترها در سطح پرس و جو از طریق هینت OPT_PARAM

همانطور که می دانید بعضی از پارامترها قابلیت تغییر در سطح session را دارند و برای تغییر این پارامترها می توان از دستور alter session استفاده کرد:

alter session set parameter_name=value;

حال ممکن است نیاز باشد بعضی از این پارامترها را صرفا در سطح یک دستور خاص تغییر داد نه در سطح کل session.

برای این کار می توان از هینتی به نام OPT_PARAM استفاده کرد که ساختار ان به صورت زیر می باشد:

opt_param(<parameter_name> [,] <parameter_value>)

برای مثال، در پرس و جوی زیر، پارامتر optimizer_features_enable را به مقدار 11.2.0.4 تغییر می دهیم:

select /*+ opt_param(‘optimizer_features_enable’,’11.2.0.4′)*/ * from tbl1;

نکته: البته این هینت همه پارامترها را پشتیبانی نمی کند. نمونه هایی که از پارامترهایی که توسط این هینت پشتیبانی می شوند:

optimizer_index_caching
optimizer_index_cost_adj
hash_join_enabled
optimizer_dynamic_sampling
optimixer_features_enable
optimizer_mode
optimizer_secure_view_merging
star_transformation_enabled

FLEX ASM

با نصب کلاستر به صورت standard ASM(روش رایج در نسخه 11g)، هر نود شامل یک ASM instance و یک db instance خواهد بود که با افتادن ASM instance در یک نود، db instance موجود در ان نود هم به خطا برخواهد خورد و امکان استفاده از ASM instanceهای دیگر برای این db instance ممکن نخواهد بود به عبارت دیگر، هر db instance تنها به ASM instance موجود در سرورش متکی می باشد. در اوراکل 12c ویژگی ای ارائه شد که می تواند این نقصان را برطرف کند، این ویژگی FLEX ASM نام دارد و می توان به کمک ان، همه نودهای موجود در فضای کلاستر را تنها به اعتبار یک ASM instance سرپا نگه داشت البته این ویژگی مزیتهای دیگری هم به همراه دارد که به تعدادی از انها در این نوشتار خواهیم پرداخت.

(بیشتر…)

(Asm Utility(AMDU,KFED,KFOD

همانطور که می دانید، در هر asm disk علاوه بر داده های بانک اطلاعاتی، نوع دیگری از داده هم ذخیره می شود که فراداده مربوط به ان دیسک می باشد و این نوع از داده ها معمولا در قسمت ابتدایی دیسک و به عبارتی در بلاک صفر ذخیره می شوند و کپی ای از ان هم در بلاک 510 برای مسائل امنیتی ذخیره می شود(2088960 bytes / 4096 = 510) البته قسمتی از فراداده داده ذخیره شده در این بلاکها، مربوط به خود دیسک نمی باشد بلکه اطلاعاتی در مورد دیسک گروهی هست که دیسک عضو ان می باشد.

(بیشتر…)

ارسال فایل بین ASM و non-ASM

همانطور که می دانید برای مدیریت فایلهای موجود در محیط asm، نمی توان از دستورات سیستم عاملی استفاده کرد(البته در محیط acfs که بر روی asm پیاده می شود، این نقصان برطرف شده است).

برای مثال نمی توان با دستوراتی چون cp ،mv و… در سطح لینوکس، بر روی فایلهای موجود در فضای asm اعمال مدیریت کرد در صورتی که ممکن است برای یک مدیر بانک اطلاعاتی، انجام چنین کاری بسیار ضروری باشد(انتقال فایل به محیط بیرون، اصلاح و ….).

یکی از این عملیاتهای پرکاربرد، انتقال فایل بین دو محیط سیستم عامل و asm می باشد که در ادامه با ارائه سه روش، به شیوه انجام آن خواهیم پرداخت.

(بیشتر…)

اتصال از راه دور به کاربران فاقد پسورد

در هنگام اتصال به سرور لینوکس از طریق ssh، به طور پیش فرض باید در کنار نام کاربر، پسورد مربوط به آن را هم تعیین نمود. حال اگر کاربری در سیستم موجود باشد که با دستور زیر، پسورد ان حذف شده باشد، در این صورت اتصال این کاربر از طریق ssh به چه شکلی ممکن می باشد؟

[root@ol7 ~]# passwd -d root
Removing password for user root.
passwd: Success

برای اتصال کاربر root(کاربری که پسورد ندارد) از طریق ssh، باید قبلا پارامتر PermitEmptyPasswords را در فایل پیکربندی ssh به مقدار yes تنظیم شده باشد:

[root@ol7 ~]# vi /etc/ssh/sshd_config
PermitEmptyPasswords yes

در نهایت هم باید سرویس sshd را restart کرد:

[root@ol7 ~]# systemctl restart sshd.service

با این تغییر می توان بدون پسورد از طریق این کاربر به سرور ol7 متصل شد:

[root@hkm6 ~]# ssh root@192.168.1.20
The authenticity of host ‘192.168.1.20 (192.168.1.20)’ can’t be established.
RSA key fingerprint is 40:98:53:51:b7:05:fe:6b:5f🇦🇪83:2b:d4:a3:c8:bf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.20’ (RSA) to the list of known hosts.
[root@ol7 ~]#

گزینه ALTERNATE در پارامتر log_archive_dest_n

همانطور که می دانید در صورت پر شدن فضای مربوط به ارشیولاگها، بانک اطلاعاتی در حالت انتظار قرار خواهد گرفت و تا زمان برطرف شدن این مشکل، دیتابیس امکان ایجاد redo را نخواهد داشت.

حال زمانی را فرض کنید که دو دیسک بلاستفاده با فضای تقریبا محدود در سرور موجود هستند و شما قصد دارید هر دو این فضاها را برای ذخیره سازی ارشیولاگها استفاده کنید به این صورت که در ابتدا ارشیو در یکی از این مسیرها قرار بگیرد و در صورت پر شدن، به مسیر دوم سوییچ کند.

برای این کار می توان از گزینهALTERNATE در پارامتر log_archive_dest استفاده کرد.

(بیشتر…)

نمایش username و instance_name در sqlplus

برای نمایش username و instance_name در محیط sqlplus باید دستور زیر را در این محیط اجرا کرد:

SET SQLPROMPT “_USER @ _CONNECT_IDENTIFIER> “

SYS @ stb1>

این تنظیم با خروج از محیط sqlplus از بین خواهد رفت برای اعمال پایدار این قبیل تنظیمات، باید دستور را به فایل glogin.sql اضافه کرد:

vi /oracle/11g/sqlplus/admin/glogin.sql

SET SQLPROMPT “_USER @ _CONNECT_IDENTIFIER> “

پارامتر USE_SID_AS_SERVICE_listener

برای اتصال از راه دور(از طریق tns) به یک pdb، نیاز است تا در فایل tnsnames.ora، به جای استفاده از sid، از service_name استفاده شود. حال اگر برنامه ای(app) در محیط کاری موجود باشد که صرفا از sid پشتیبانی می کند، طبیعتا امکان اتصال به pdb از طریق این برنامه امکان پذیر نخواهد بود.

برای حل این مشکل، می توان پارامتر USE_SID_AS_SERVICE_listener را به فایل listener.ora اضافه کرد تا sid تعریف شده در برنامه ها به صورت service_name لحاظ شوند:

vi $ORACLE_HOME/network/admin/listener.ora
USE_SID_AS_SERVICE_listener=on

برای اعمال این تغییر، نیاز است تا سرویس لیسنر reload شود:

lsnrctl reload

کاراکتر Sqlprefix در sqlplus

فرض کنید در حال نوشتن پرس و جویی طولانی در محیط sqlplus هستیم، در همین حال اسامی فیلدهای جداول را به صورت دقیق بخاطر نداریم، در این صورت ممکن از ادامه نوشتن این پرس و جو منصرف شویم تا اسامی ستونهای جدول را مورد بازبینی قرار دهیم(describe)!!!

روش بهتری هم برای یافتن اسامی ستونهای جدول در حین اجرای این پرس و جو وجود دارد که ان هم استفاده از sqlprefix می باشد. منظور از Sqlprefix کاراکتری است که اجازه اجرای دستوری را در حین نوشتن پرس و جو ممکن می سازد.

(بیشتر…)