آشنایی و مدیریت JOBها

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

ادامه مطلب… →

همروندی در اوراکل

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

ادامه مطلب… →

Oracle Lock Management

زمانی که در یک بانک اطلاعاتی کاربران متعددی مشغول خواندن و نوشتن هستند، ممکن است دو کاربر به صورت همزمان قصد اصلاح یک شی را داشته باشند، و بطور بدیهی در صورت عدم کنترل این دسترسی، ممکن است داده ای از بین رفته و یا داده های ان شی ناسازگار شوند. برای مدیریت و کنترل این دسترسی همزمان، اوراکل از مکانیزمی به نام lock استفاده می کند.

ادامه مطلب… →

ویژگی های جدید اوراکل در نسخه 12c

بانک اطلاعاتی اوراکل با هر نسخه جدیدی که ارائه می کند معمولا بسیاری باگهای ایجاد شده در نسخه های قبلی را رفع و همراه با آن ویژگی های جدیدی را هم عرضه می کند به همین منوال، در نسخه 12c، بیش از 500 ویژگی جدید را ارائه کرده است که در این مقاله سعی داریم تا بعضی از این ویژگی ها را مورد بررسی قرار دهیم البته از مهمترین ویژگی این نسخه، Pluggable Database می باشد که در مقاله دیگری در مورد ان مطالبی آورده شد و در این مقاله به این ویژگی مهم نخواهیم پرداخت(مقاله مذکور در سایت www.usefzadeh.com موجود می باشد).

ادامه مطلب… →

MATERIALIZED VIEW

همانطور که می دانید ویو(view) ذخیره پرس و جو در بانک اطلاعاتی به یک اسم خاص می باشد که عمده  کاربرد آن در امنیت و استقلال منظقی داده ها می باشد ویوها هیچ فضایی را برای ذخیره داده مصرف نمی کنند و با هر بار اجرا، پرس وجو را هم اجرا می کنند. همانند ویو، شی دیگری نیز وجود دارد که شامل یک پروس و جو می باشد که برخلاف ویو، خروجی پرس و جو را هم در جایی ذخیره می کند و در مواقع ضروری می توان آن را بروز کرد این شی Materialized View نام دارد.

ادامه مطلب… →

PLUGGABLE DATABASE

همانطور که می دانید تا قبل از اوراکل 12c، این امکان وجود داشت تا اطلاعات هر کاربر به صورت فیزیکی مستقل از دیگر کاربران ذخیره شود و نیز از نظر امنیتی این اطلاعات دور از دسترس دیگر کاربران قرار بگیرد و در صورت لزوم این قابلیت وجود داشت تا اطلاعات کاربر به بانک اطلاعاتی دیگری منتقل شود و از بانک جاری حذف شود به طور مثال ممکن بود از طریق Transportable Tablespace ، tablespace مربوط به کاربر را در صورت عدم وابستگی به دیگر tablespaceها، به بانک دیگری منتقل کرد ولی در عین حال ساختار موجود در نسخه های قبلی بسیار مستعد اختلاط بود و همه کاربران به یک data dictionary واحد وابسته بودند و همچنین انتقال بخشی از اطلاعات به بانک دیگر، با محدودیتهایی مواجه بود.

ادامه مطلب… →

LARGE OBJECT SEGMENTS

برای ذخیره داده های بدون ساختار در بانک اطلاعاتی اوراکل، ابتدا نوع داده LONG و LONG RAW ارائه شد که LONG برای ذخیره کاراکترهای با حجم زیاد و LONG RAW برای فایلهای باینری(صوت، تصویر و ..) استفاده می شد(و البته می شود) این نوع داده دارای محدودیتهای بسیاری بودند که شاید به همین دلیل اوراکل در نسخه 8i، نوع داده (large object)LOB را معرفی کرد که بسیاری از محدودیتهای LONG و LONG RAW را برطرف می کند از جمله این رفع محدودیتها می توان به موراد زیر اشاره کرد:

ادامه مطلب… →

SMON در یک نگاه

همانطور که می دانید یکی از کارهای مهم smon، پاک کردن temporary segmentها می باشد temporary segment در permanent tablespaceها با دستورات زیر ایجاد می شوند:

ادامه مطلب… →

لینوکس برای dba

فایلها و پوشه ها

فایل inittab

زمانی که پروسس init شروع به کار می کند فایل inittab را در مسیر /etc می خواند تا بداند دقیقا چه سرویسهایی را در چه در runlevelای اجرا کند  و در نهایت در runlevelای که این فایل به عنوان runlevel پیش فرض معرفی کرده است، توقف می کند و وارد runlevel های بعدی نمی شود.

ادامه مطلب… →

تغییر و بازیابی پسورد

فرض کنید فردی تنها پسورد یوزر sys را از بین یوزرهای بانک در اختیار دارد و در عین حال قصد دسترسی به یوزر دیگری را دارد تا برای آن یوزر، تغییراتی را اعمال کند

به طور مثال می خواهد برای آن یوزر، job ای را که با dbms_job تعریف شده را broken کند، بدون تردید با قابلیت یوزر sys این فرد می تواند پسورد آن یوزر را به راحتی تغییر دهد اما این تغییر ممکن است سد راهی برای برنامه کاربردی خاص و یا افراد دیگری که از طریق این یوزر به بانک وصل می شوند، شود و در این صورت با تغییر پسورد این یوزر، تغییرات دیگری هم باید انجام شود که ممکن است پرهزینه باشد.

ادامه مطلب… →

EXPDP/IMPDP

ABORT_STEP

Used to stop the job after it is initialized. This allows the master table to be queried

before any data is exported.

Syntax

ABORT_STEP=[n | -1] Default: Null

Example

expdp hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr ABORT_STEP=-1

ادامه مطلب… →

Buffer Busy Wait

فرض کنید بلاکی توسط session شماره یک مورد دستیابی قرار گرفته و توسط آن در بافر pin شده است(هر بافر در هر لحظه تنها توسط یک session می تواند pin شود) و در همین حال session دیگری قصد دسترسی به آن بلاک را دارد در این صورت session دوم باید در انتظار بماند به این مدل از انتظار Buffer Busy Wait گفته می شود.

ادامه مطلب… →

Upgrade/Downgrade to/from oracle 12c

ارتقا نسخه اوراکل به 12c، به روشهای مختلفی قابل انجام است که هر کدام بسته به شرایطی ممکن است مطلوب تر باشند و همه این روشها را می توان در دو دسته upgrade(In Place Upgrade) و migration(Out of place Upgrade) قرار داد به عبارتی دیگر می توان از روشهای upgrade و یا  migration برای این کار بهره گرفت منظور از upgrade، اصلاح data dictionary به طوری که با نسخه جدید اوراکل سازگار باشد ولی در روشهای migration، می توانیم data dictionary بانک فعلی را نادیده بگیریم و تنها داده کاربری را به بانک جدید که دارای data dictionary نسخه جدید است، منتقل کنیم و در این صورت ممکن است سیستم عامل، کارکترست، ساختار بانک اطلاعاتی و … هم تغییر کنند البته migration به دلیل اینکه با اطلاعات کاربر سروکار دارد، ممکن است مدت زمان زیادی را از dba بگیرد ولی در عوض ممکن است downtime بانک را به حداقل برساند(بطور مثال در زمان استفاده از goldengate).

ادامه مطلب… →

RAC – Dynamic Remastering

در محیط RAC هر instance بخشی از GRD را در SGA خود جای می دهد و همانطور که می دانید GRD هم حاوی اطلاعاتی از قبیل data block address، SCN، past image، current image و … می باشد پس در نتیجه هر instance، اطلاعات مجموعه ای از بلاکها را کنترل می کند و master آنها می باشد و متقابلا هر بلاک هم یک نود مستر دارد به طوری که اگر مستر فعلی بلاک دچار مشکل شود، نود دیگری مسئولیت این بلاکها را به عنوان مستر بر عهده می گیرد.

ادامه مطلب… →

بازیابی سریع datafile با کمک file descriptor لینوکس

در صورت حذف اتفاقی datafile از روی سیستم عامل لینوکس، می توانیم با طی مراحلی، datafile حذف شده را برگردانیم(البته با اقدام فوری).البته این کار تا زمانی که بانک اطلاعاتی کماکان در حال اجرا باشد، قابل انجام است در غیر این صورت، لینکی که file descriptor به آن اشاره می کند، برای همیشه حذف خواهد شد.

ادامه مطلب… →

افزودن نود جدید در محیط rac

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

ادامه مطلب… →

بازیابی دیتافایل با آرشیولاگ

فرض کنید دیتافایلی که جدیدا به بانک اضافه شده بنا به دلایلی از بین رفته باشد در این صورت اگر آرشیوها اززمان ایجاد دیتافایل موجود باشند، این امکان وجود دارد که این دیتافایل را بازیابی کرد.

ادامه مطلب… →

نصب دوباره em

برای راه اندازی Enterprise Manager در بسیاری از سیستم ها ممکن است به مشکل برخورد کنیم که می توانیم با استفاده از دستورات زیر، تمامی پیکربندی قبلی را حذف کنیم و دوباره Enterprise Manager را با استفاده از dbca و یا amca راه اندازی کنیم. پس دستوراتی که در این قسمت می بینیم، تنها بستر را برای راه اندازی مجدد emca آماده می کنند.

ادامه مطلب… →

مدیریت کانفلیکت در گلدن گیت

تصادم یا کانفلیکت در گلدن گیت به عنوان یک امر عادی تلقی می شود چون هر لحظه ممکن است که دو نفر بر روی دو جدول مبدا و مقصد کاری را انجام دهند که در هنگام ثبت داده، بانک به مشکل برخورد کند.

ادامه مطلب… →

تاثیر log strand بر اندازه آرشیولاگ

از اوراکل نسخه 9i به بعد این امکان وجود دارد تا log buffer به چند قسمت مساوی تقسیم شود و هر قسمتآن به قسمتی از redo log مپ شود و به این طریق انتفال اطلاعات صورت گیرد به این ویژگی public redo strand می گویند.

ادامه مطلب… →

بازیابی کنترل‏ فایل با dbms_backup_restore

به صورت معمول در هنگام بازیابی بکاپ RMAN ، برای بازیابی کنترل فایل از روشهایی نظیر CONTROLFILE AUTOBACKUP  و کاتالوگ استفاده می شود حال زمانی را فرض کنید که به هر دلیلی امکان استفاده از اینروشها برای بازیابی کنترل فایل ممکن نیستند(مخصوصا به خاطر خطا در زمان بکاپ گیری) در این حالت ممکناست استفاده از پکیج dbms_backup_restore کارساز باشد.

ادامه مطلب… →

انتقال از non-ASM به ASM

برای انتقال بانک از محیط non-ASM به محیط ASM روشهای مختلفی وجود دارد که در این قسمت سعی داریم یکی از این روشها را مورد بررسی قرار دهیم.

در ادامه مراحل را با جزییات خواهیم دید.

ادامه مطلب… →

بازیابی متاداده در ASM

در محیط asm این امکان وجود دارد تا از متاداده مربوط به دیسک گروه ها بکاپ تهیه کنیم و در صورتی که به هر دلیلی دیسک گروه ها را از دست دادیم، از این بکاپ برای بازیابی آنها استفاده کنیم:

ادامه مطلب… →

Index scan

Index Unique Scan : معمولا در زمان ایجاد کلید اصلی یا unique key، به طور خودکار یک ایندکس بر روی آنها ساخته می شود که این ایندکس index unique نامیده می شود هر موقع این ایندکس در مسیر دسترسی قرار بگیرد و توسط optimizer انتخاب شود، نوع عملش Index Unique Scan نامیده می شود. در این روش معمولا یک سطر از ایندکس توسط اوراکل خوانده می شود. این روش، سریع ترین روش برای برگرداندن تک رکورد می باشد. پس دو شرط اصلی رجوع optimizer به ایندکس با این روش، به این صورت است:

ادامه مطلب… →

enq: TX – row lock contention

این نوع wait معمولا زمانی که چند نفر بخواهند به صورت همزمان یک رکورد را تغییر دهند، اتفاق می افتد. و برای کم رنگ کردن آن باید برنامه را طوری تغییر داد تا کاربر زودتر مجبور به rollback یا commit شود.

ادامه مطلب… →

Cluster File System

همانطور که می دانید در محیط RAC، همه database fileها(از قبیل datafileها، کنترل فایلها و redo log fileها) و فایلهای voting disk و OCR باید در یک فضای مشترک بین نودها قرار بگیرند به همین دلیل در زمان راه اندازی RAC نوع سیستم فایل فضای مورد استفاده بین نودها، باید طوری انتخاب شود تا بتواند امکان sharing را به وجود آورد در حال حاضر سیستم فایلهای مختلفی وجود دارند تا این امکان را فراهم کنند البته مزیت بعضی از آنها، به وضوح بیشتر است برای مثال سیستم فایلی که امروزه اوراکل در مستنداتش به استفاده از آن تاکید دارد، ASM و ACFS می باشد. بعضی از سیستم فایلهایی که این قابلیت را فراهم می کنند، به این اسم هستند:

ادامه مطلب… →

table reorganization

معمولا بعد از مدتی کار بر روی جداول و یا در پی اتفاقاتی خاص، ممکن است که نیاز شود تا جدولی خاص از یک tablespace و یا کل objectهای tablespace را دوباره سازماندهی کنیم tablespace reorganization معمولا به عنوان یک امر خطیر در حیطه وظایف dba محسوب می شود. آنچه که در این قسمت قصد داریم در مورد آن مطالبی را ارائه کنیم، دلایل نیاز به reorganization و چگونگی انجام آن می باشد.

ادامه مطلب… →

رفع گپ از استندبای با rman

فرض کنید یک بانک اطلاعاتی با چندین ترابایت data تنها یک آرشیوی که در استندبای اعمال نشده را از دست داده است در این حالت، راه اندازی دوباره استندبای به دلیل محدویتهایی مثل شبکه، ممکن است کاری بسیار پر مشقت باشد برای جلوگیری از این کار(راه اندازی مجدد)، می توان با دانستن scn جاری استندبای، از بانک اصلی به صورت incremental بکاپ گرفت و gap ایجاد شده بین بانک اصلی و استندبای را رفع کرد.

ادامه مطلب… →

RMAN در محیط RAC

در هنگام بکاپ گیری با RMANدر محیط RAC، اگر بخواهیم از چند کانال استفاده کنیم تا عملیات به صورت موازی انجام شوند می توان به جای تحمیل بار بر روی یک نود، کانالها را طوری تنظیم کرد تا بار را بر روی نودهای مختلف پخش شود این کار را می توان به صورت زیر انجام داد:

ادامه مطلب… →

enq: TM – contention

Enqueue ها کنترل دسترسی همزمان به یک شی واحد توسط چند نفر را بر عهده دارند تا به شی مورد نظر آسیبی وارد نشود و یکپارچگی آن حفظ شود پس از این نظر یک قابلیت مفید برای پیشبرد کار ما هستند ولی باید ساختار بانک اطلاعاتی طوری باشد که رقابت دو فرد برای دسترسی به یک شی به حداقل ممکن برسد تا wait هم کمتر رخ دهد. نمونه ای از waitای که بواسطه مدیریت Enqueue ایجاد می شود، enq: TM – contention می باشد که در اینجا سعی داریم تا علل رخ دادن آن و نحوه جلوگیری از آنرا به طور مختصر بیان کنیم.

ادامه مطلب… →

data pump و RAC

در محیط RAC، این امکان وجود دارد تا از چند instance برای اجرای data pump بهره گرفته شود. برای این کار باید شرایط زیر رعایت شود:

  1. دایرکتوری که فایل دامپ قرار است در آنجا قرار گیرد، در فضای مشترک بین نودها ایجاد شود.
  2. پارامتر cluster به y و پارامتر parallel به مقداری بیشتر از یک تنظیم شود.
  3. Logها در مسیر local مربوط به نودها ایجاد شوند.

ادامه مطلب… →

cursor_shring و bind variable

وقتی که اوراکل دستوری را اجرا می کند، سعی دارد تا فرم قابل اجرای دستور اجرا شده(که plan آن مشخص شده) را در library cache نگهدارد تا در صورت امکان از آن استفاده مجدد کند حال اگر این فرم پارس شده برای دستور دیگری مورد استفاده قرار بگیرد می گویند یک soft parse انجام شده است و در صورتی که اوراکل مجبور شود یک فرم جدید قابل اجرا(که در library cache موجود نیست) برای دستور وارده بسازد، hard parse صورت گرفته است.

ادامه مطلب… →

cascaded standby

در صورتی که قصد داشته باشیم برای یک بانک اطلاعاتی چند استندبای داشته باشیم ولی از طرفی با محدودیتهایی همانند شبکه روبرو باشیم، می توانیم از ویژگی cascaded standby استفاده کنیم یعنی از استندبای موجود یک استندبای جدید ایجاد کنیم به طوری که استندبای جدید هیچ ارتباط مستقیمی با بانک اصلی نداشته باشد و همه اطلاعات از استندبای اول به آن منتقل می شود. برای انجام این کار، می توانیم از active duplicate استندبای اول بهره مند شویم.

ادامه مطلب… →

Block Corruption

block corruption در بانک اطلاعاتی اوراکل خطای بسیار معروفی است که ممکن است سبب از دست رفتن داده شود این خطا معمولا به خاطر مشکلات سخت افزاری یا سیستم عاملی رخ می دهد و در صورت نداشتن backup سالم از قسمت خراب شده به ناچار باید از اطلاعات ذخیره شده در آن قسمت، صرف نظر کنیم. این اتفاق به دو شکل ممکن است رخ دهد:

ادامه مطلب… →

Join methods

زمانی که یک دستور با چندین شرط join اجرا می شود، عمل join در هر لحظه تنها بین دو جدول آن دستور انجام خواهد شد یعنی به عبارت دیگر، عمل join یک عمل باینری می باشد حال برای تعیین ترتیب join بین جداول، باید حالات مختلفی توسط اوراکل بررسی شود که این کار می تواند وقت زیادی را از سیستم بگیرد برای جلوگیری از این اتلاف وقت، می توان ترتیب پیوند را با استفاده از هینت ORDERED تعیین کرد یعنی با استفاده از این هینت در درون دستور، ترتیب پیوندها بر اساس ترتیب جداول در عبارت from تعیین شوند.

ادامه مطلب… →