۱۳۰ مطلب با موضوع «Database :: Oracle DBA» ثبت شده است

قواعد جامعیتی

شما می‌توانید بر روی یک جدول، قواعد جامعیتی(محدودیت) ایجاد نمایید، این قواعد مقابل نام فیلد تعریف می‌شوند. بدون استفاده از محدودیت‌ها مدیریت داده‌ها مشکل و گاهی اوقات غیر ممکن خواهد‌شد.
قواعد جامعیتی پنج نوع می‌باشند که عبارتند از:

  • عدم هیچ مقدار
  • کلید یکتا
  • کلید اصلی (کلید داخلی)
  • ارجاعی (کلید خارجی)
  • ارزیابی

قاعده عدم هیچ مقدار (NOT NULL)

در برخی از مواقع، فیلد یا فیلد‌هایی که تعریف می‌کنید نباید مقدار هیچ را بپذیرند. برای محدود کردن این قبیل فیلد‌ها، از گزینه‌ای به نام NOT NULL استفاده می‌نماییم. اگر در ساخت فیلدها، از قاعده‌ی NOT NULL استفاده نکنید، پایگاه داده‌ها به طور پیش فرض مقدار NULL را برای آن فیلد، در نظر می‌گیرد. NULL به معنای آن است که، فیلد می‌تواند مقداری را در بر نگیرد. NOT NULL عکس NULL عمل می‌کند و بدان معنی است که هیچ‌گاه نمی‌توان آن فیلد را خالی رد کرد، دستور زیر را مشاهده نمایید:

CREATE TABLE TEST(ID NUMBER NOT NULL, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

قاعده کلید یکتا (UNIQUE)

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

CREATE TABLE TEST(ID NUMBER UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

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

CRAETE TABLE TEST(ID NUMBER CONSTRAINT UQ_TEST_ID UNIQUE, TELL NUMBER DEFAULT 22222, ADDRESS VARCHAR2(10));

ادامه مطلب...
۲۲ فروردين ۹۴ ، ۱۴:۱۶ ۰ نظر
مهدی غفاری

نام‌گذاری موجودیت‌های بانک‌اطلاعاتی

جهت نام‌گذاری جداول، دید‌ها، فیلد‌ها، مخزن‌ها و ... باید به موارد زیر دقت فرمائید:

نکته: پیروی از موارد اجباری نیست اما بدلیل استفاده اکثر کاربران از این قواعد، بهتر است از این استاندارد‌ها تابعیت کنید.

  • در نام‌گذاری دقت فرمائید تا نامی واضح برای موجودیت (جداول، دید‌ها، فیلد‌ها، مخزن‌ها و ...) انتخاب کنید.
  • از وارد‌نمودن فاصله در نام موجودیت‌ها جداً خودداری کنید.
  • به جای فاصله از (_) استفاده کنید.
  • برای نامگذاری از حروف الفبا و اعداد استفاده کنید.
  • هیچ‌گاه نام مورد نظر را با عدد شروع نکنید.
  • زمانی که مشغول نامگذاری هستید، CAPS LOCK خود را روشن نمایید.
  • حداکثر طول نام 30 کاراکتر باشد.
  • از کلمات رزرو شده استفاده نکنید.

نکته: در مورد این کلمات در فصل‌های آینده بحث خواهیم کرد. برای روشن‌تر شدن موضوع مثال‌هایی در همین قسمت ارائه می‌کنیم.

چند نمونه از کلمات رزرو شده عبارتند از:

  • SELECT
  • TABLE
  • USER
  • VIEW
  • UPDATE
  • INSERT
  • و..

جهت نام‌گذاری کلید‌داخلی و خارجی از فرمول زیر استفاده کنید:

نام جدول ID_

جهت روشن‌تر شدن موضوع فرض می‌کنیم دو جدول به نام‌های T1 و T2 وجود‌ دارد. جدول T1 دارای یک کلید خارجی از جدول T2 است. در این صورت می‌بایست نام‌گذاری‌ها به شکل زیر باشند.

  • کلید داخلی جدول T1: ID_T1
  • کلید داخلی جدول T2: ID_T2
  • کلید خارجی جدول T1: ID_T2
۲۲ فروردين ۹۴ ، ۱۲:۳۰ ۰ نظر
مهدی غفاری

انواع DataTypeها در اوراکل

بانک اطلاعاتی برای نگهداری داده‌های مختلف نوع‌های مختلفی از فیلد را به شما ارائه می‌کند:

مثال:

CREATE TABLE T1(ID NUMBER(10,10), NAME VARCHAR2(20));
  • نوع داده‌ای NUMBER

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

ID ما که از جنس NUMBER است، میتونه ۲تا پارامتر بگیره اولین پارامتر یعنی ۱۰ رقم صحیح و دومین پارامتر یعنی ۱۰ رقم اعشاری

نکته: اوراکل حداکثر توانایی نگه‌داری ۳۲ رقم رو داره

  • نوع داده‌ای VARCHAR2

جهت نگهداری اطلاعات رشته‌ای با طول متغییر می‌توانید از نوع VARCHAR2 استفاده کنید.

SIZE در این نوع کاراکتر به صورت رقم در جلوی آن مشخص می‌شود.

  • نوع داده‌ای NVARCHAR2

همانند VARCHAR2 می‌باشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و... می‌توانید از این نوع داده استفاده نمایید.

  • نوع داده‌ای CHAR

جهت نگهداری اطلاعات رشته‌ای با طول ثابت می‌توانید از نوع CHAR استفاده کنید.

CHAR هم  SIZE می‌گیره

  • نوع داده‌ای NCHAR

همانند CHAR می‌باشد. و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی و ... می‌توانید از این نوع داده استفاده نمایید.

فرق VARCHAR و CHAR

CHAR طول ثابت داره یعنی اگه ما داده‌ای در آن ذخیره کنیم که مثلا ۴ حرف باشه در حالتی که سایز وارده به CHAR رو ۲۰ کاراکتر مشخص کرده‌ایم، ۱۶ کاراکتر برای ما خالی رد می‌شه و حجمی اضافه‌تر از داده ما را ذخیره می‌کند.

اما در VARCHAR و NVARCHAR سایز ما اگر کمتر از مقدار وراد شده باشد به همون میزان کاراکتر وارده سایز جمع می‌شود.

مثال

معمولاً برای داده جنسیت ما از CHAR استفاده می‌کنیم، به عنوان مثال Female می‌شه 0 و Male می‌شه 1 و 2 هم وضعیت مجهول جنسیت رو برای ما مشخص می‌کنه، در این مورد به جای استفاده از CHAR می‌توان از NUMBER هم استفاده کرد.

نکته: برای زمان‌هایی که می‌خواهیم مقادیر TRUE, FALSE در دیتابیس وارد کنیم استفاده از CHAR توصیه می‌شود.

  • نوع داده‌ای DATE

جهت نگهداری اطلاعات تاریخی می‌توانید از نوع DATE استفاده کنید.

نکته: اوراکل تاریخ شمسی رو پشتیبانی می‌کنه

  • نوع داده‌ای CLOOB

جهت نگهداری اطلاعات رشته‌ای طولانی می‌توانید از نوع CLOB استفاده کنید.

  • نوع داده‌ای BLOOB

همانند CLOB بوده و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی، ... می‌توانیدازاین نوع داده استفاده نمایید.

 

۲۲ فروردين ۹۴ ، ۰۹:۲۳ ۰ نظر
مهدی غفاری

دستورات کنسولی محیط SQLPlus - قسمت دوم

شما در محیط SQL Plus می‌توانید از دستوراتی به جز دستورات SQL استفاده نمایید. این دستورات را محیط SQL Plus در اختیار شما قرار داده‌است.

دستور PROMPT برای نمایش یک متن در خروجی استفاده می‌شود.

SQL> PROMPT SALAM
SALAM

دستور SET TIME ON باعث می‌شود تا در خط فرمان شما زمان جاری سیستم اضافه گردد.

SQL> SET TIME ON;
05:45:39 SQL>
05:45:45 SQL>

دستور SET TIME OFF باعث می‌شود تا خط فرمان شما به حالت اولیه باز گردد (حالتی که زمان جاری سیستم نمایش داده نمی‌شود).

05:45:45 SQL> SET TIME OFF;
SQL>
SQL>

ادامه مطلب...
۱۸ فروردين ۹۴ ، ۲۰:۲۸ ۰ نظر
مهدی غفاری

فایل‌های راه انداز

در این فایل‌ها اطلاعاتی نگهداری می‌شوند که اوراکل از آن‌ها برای پیکربندی بانک اطلاعاتی استفاده می‌کند.
از جمله نام بانک اطلاعاتی، اندازه حافظه ای که Instance از آن استفاده می‌کند، محل Control File ها، تنظیمات سایر زبان‌هایی که پشتیبانی می‌شوند و غیره. هنگامی که Instance راه اندازی می‌شود از این فایل برای پیکربندی حافظه SGA و فرایندهای پس زمینه استفاده می‌گردد.

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

انواع فایل های پیکربندی

  • PFILE

از اوراکل 8i به بعد، پارامترهای مربوط به بانک اطلاعاتی از قبیل نام بانک اطلاعاتی، پارامترهای مرتبط با حافظه، محل Control Fileها و غیره، در فایلی به نام PFILE که مخفف Parameter File می باشد، ذخیره می شوند.
این فایل یک فایل استاتیک بوده و توسط هر ویرایشگری مانند Notepad قابل ویرایش است.
این فایل تنها به هنگام راه اندازی بانک اطلاعاتی خوانده شده و پس از آن در صورتی که تغییری در این فایل ایجاد شود، تا زمانی که Instance مجدداً راه اندازی نشود، تغییرات در آن اعمال نخواهد شد.
همچنین در صورتی که به هنگام راه اندازی بانک اطلاعاتی تغییری در پارامترهای راه اندازی ایجاد شود، این تغییرات در PFILE ثبت نمی شوند.

  • SPFILE

با توجه به محدودیت های فوق، از اوراکل 9i و به بعد، فایلی به نام SPFILE که مخفف Server Parameter File می باشد، معرفی شد.
این فایل توسط هیچ ویرایشگری قابل ویرایش نبوده و تنها با استفاده از دستور ALTER SYSTEM می‌توان مقادیر پارامترهای آن را تغییر داد.

ادامه مطلب...
۱۸ فروردين ۹۴ ، ۱۹:۳۸ ۰ نظر
مهدی غفاری

تغییر فضای SGA و PGA بعد از نصب اوراکل

فایل SPFILEORCL.ORA مخزن خود را از مسیر زیر باز کنید:

$Oracle_home/DataBase/product/11.2.0/dbhome_1/database/SPFILEORCL.ORA

با مقداردهی دوباره متغیرهای این فایل می‌توان فضای SGA و PGA را تغییر داد. از اونجایی که این فایل یک فایل باینری است تغییر آن ابزار مناسب آن را می‌خواد که آن را در اختیار نداریم.

نکته: از اونجایی که اسم دیتابیس ما ORCL است این فایل به اسم SPFILEORCL نشان داده شده است.

برای تغییر این فایل از اوراکل خواهش می‌کنیم بی‌خیال SPFILE بشه و از روی SPFILE برای ما یک PFILE ایجاد کند:

CREATE PFILE FROM SPFILE;

زمانی که این دستور را اجرا می‌کنیم یک فایل جدید در همان مسیر SPFILE برای ما ساخته می‌شود به نام INITorcl.ORA با بازکردن این فیال با یک ادیتور متن خواهید دید که این فایل دیگر یک فایل باینری نیست. برای تغییر فضای SGA و PGA دنبال ۲ متغیر sga_target, pga_aggregate_target بگردید و آنها را مجدد مقداردهی کنید.

  • sga_target
  • pga_aggregate_target

ادامه مطلب...
۱۸ فروردين ۹۴ ، ۱۸:۵۰ ۱ نظر
مهدی غفاری

Viewهای پیش‌فرض بانک‌اطلاعاتی اوراکل

در بانک اطلاعاتی گروهی View به صورت پیش فرض موجود می باشند. این View ها خواندنی بوده و بر روی آنها نمی توان تغیری اعمال کرد، این View ها به سه دسته تقسیم بندی می شوند:

  • USER: این View ها اطلاعاتی در مورد اشیایی می‌دهند که کاربر جاری مالک آنها می‌باشد.
  • ALL: این View ها اطلاعاتی در مورد اشیایی می‌دهند که کاربر به آنها دسترسی دارد.
  • DBA: این View ها اطلاعاتی در مورد اشیایی می‌دهند که در بانک اطلاعاتی موجود می‌باشند.
۱۷ فروردين ۹۴ ، ۲۰:۰۶ ۰ نظر
مهدی غفاری

روشن و خاموش کردن بانک‌اطلاعاتی

در پایگاه‌داده اوراکل میتوان بانک اطلاعاتی را با وضعیت‌های مختلف راه اندازی کرد. برای اینکار باید با کاربر SYS وارد محیط SQLPLUS شد(تنها کاربری که می‌تونه این کارو انجام بده چون کاربران دیگه role مربوطه رو ندارند). بانک‌اطلاعاتی برای راه اندازی کامل سه مرحله را پشت سر می گذارد.

  • STARTUP NOMOUNT: در این حالت فضای SGA اختصاص داده می‌شود. (رم از سیستم‌عامل گرفته می‌شود)، در حقیقت در این وضعیت تنها خود Instance راه اندازی شده ولی Control File خوانده نشده و Data File ها نیز برای استفاده باز نمی شوند و هیچ اتصالی نیز به بانک اطلاعتی وجود ندارد.

نکته: گاهی اوقات به هنگام انجام کارهای مربوط به نگهداری و Recovery بانک اطلاعاتی نمی توان بانک اطلاعاتی را برای دسترسی تمام کاربران باز نمود. به همین دلیل باز نمودن بانک اطلاعاتی در این حالت ضروری است. همچنین از حالت NOMOUNT به هنگام ایجاد بانک اطلاعاتی و ایجاد مجدد Control File ها استفاده می شود. 

  • STARTUP MOUNT: در این حالت Data File ها دوباره خوانده شده ولی بانک اطلاعاتی سرویس‌دهی نخواهد کرد. در حقیقت Instance به بانک اطلاعاتی متصل شده، Control Fileها را باز نموده و نام و مسیر Data File ها و Redo Log File ها را از آن ها می خواند، ولی هیچ تغییری نمی توان روی داده های بانک اطلاعاتی انجام داد. چون در این حالت هنوز به Data File های بانک اطلاعاتی نمی توان دسترسی داشت.

در صورتی که بانک اطلاعاتی قبلاً در حالت NOMOUNT راه اندازی شده باشد، می توان با استفاده از دستور زیر آن را در حالت MOUNT قرار داد:

SQL> ALTER DATABASE MOUNT;

همچنین با استفاده از دستور زیر می توان مستقیماً بانک اطلاعاتی را در حالت MOUNT راه اندازی نمود: 

SQL> STARTUP MOUNT;

معمولاً هنگامی که نیاز به Recovery کامل بانک اطلاعاتی ، تغییر نام Data Fileها، تغییر به حالت Archive Log Mode و غیره می باشد، لازم است تا بانک اطلاعاتی را در حالت MOUNT راه اندازی نمود.

    • STARTUP OPEN: در این حالت بانک اطلاعاتی به طور کامل آماده سرویس‌دهی می شود، این دستور معادل دستور STARTUP می‌باشد. در این حالت تمام کاربران مجاز می توانند به بانک اطلاعاتی متصل شده و عملیات مختلفی را روی آن انجام دهند. قبل از این مرحله کاربران عمومی نمی توانستند به بانک اطلاعاتی متصل شوند. دقت داشته باشید زمانی که دستور STARTUP را به تنهایی صادر می‌کنید هر ۳ مرحله به طور خودکار انجام می‌شود. ولی اگر قبلاً بانک اطلاعاتی در حالت MOUNT راه اندازی شده باشد، می توان با استفاده از دستور زیر آن را در حالت OPEN قرار داد:
    SQL> ALTER DATABASE OPEN;

    می توان با استفاده از یکی از دستورات زیر مستقیماً بانک اطلاعاتی را در حالت OPEN راه اندازی نمود:

    SQL> STARTUP;
    SQL> STARTUP OPEN;

    به هنگام باز کردن بانک اطلاعاتی، سرور اوراکل ابتدا تمام Data File ها و Redo Log File ها را باز نموده و سپس چک می کند که حتماً بانک اطلاعاتی در حالت سازگار قرار داشته باشد. اگر بانک اطلاعاتی در حالت سازگار نباشد، در این صورت قبل از باز نمودن بانک اطلاعاتی، فرایندهای پس زمینه عملیات Instance Recovery را به طور اتوماتیک انجام می دهند. اگر علاوه بر Instance Recovery نیاز به Media Recovery نیز باشد، اوراکل اعلام می کند که نیاز به Recovery بانک اطلاعاتی می باشد و تا زمانی که شما عملیات Recovery را انجام ندهید بانک اطلاعاتی را باز نخواهد کرد.

    نکته: بعد از اجرای STARTUP اول دیتابیس دیگر اجازه اجرای STARTUP را نمی‌دهد(خطاهای زیر) در این حالت برای ادامه مراحل استارت‌کردن اوراکل از Alter در ابتدای دستورات استفاده کنید.

    (ORA-01081: cannot start already-running ORACLE - shut it down first)
    (SP2-0734: unknown command beginning "startup op..." - rest of line ignore)

    نکته: اگر بخواهیم از مراحل پایینتر به مرحله بالاتر برویم فقط با alter می‌توانیم اینکار را انجام دهیم:

    alter database open

    نکته: اگر هر کدام از حالت‌های استارت را از لولی بالاتر به طور مستقیم برای روشن کردن دیتابیس به کار بگیریم به طور خودکار لول‌های قبلی نیز اجرا می‌شوند. به عنوان مثال وقتی STARTUP OPEN کنیم دیتابیس به طور کامل اجرا می‌شود.

    نکته: نمی‌توان از لول‌های بالاتر به لول‌های قبل مستقیم سوییچ کرد(حتی با ALTER) حتماً باید دیتابیس SHUTDOWN شود بعد از ابتدا به آن لول از START رفت.

    ادامه مطلب...
    ۱۷ فروردين ۹۴ ، ۲۰:۰۲ ۲ نظر
    مهدی غفاری

    ایجاد یک بانک‌ جدید و تنظیم EM

    ممکن است در طول کار با بانک اطلاعاتی اوراکل نیاز به ایجاد یک مخزن یا همان DataBase جدید داشته باشید با استفاده از دستور ذیل می توانید اقدام به تولید یک بانک اطلاعاتی جدید نمایید.

    DBCA

    پس از وارد کردن این دستور یک پنجره برای شما باز خواهد شد و کمک می‌کند تا مراحل ایجاد یک بانک‌اطلاعاتی جدید را پیش بگیرید. برای حذف یک مخزن در بانک اطلاعاتی اوراکل می‌توانید از دستور زیر در محیط SQLPLUS استفاده نمایید.

    DROP DATABASE;

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

    SELECT CREATED,NAME FROM V$DATABASE;

    تنظیم محیط EM اوراکل برای بانک جدید

    با ایجاد یک بانک اطلاعاتی جدید ممکن است نیاز به محیط مدیریت گرافیکی اوراکل یا همان EM برای بانک اطلاعاتی جدید داشته باشید. برای اینکار می‌توانید محیط EM متعلق به بانک اطلاعاتی قبل را حذف کرده سپس اقدام به ایجاد EM جدید برای بانک اطلاعاتی جدید نمایید. برای اینکار کافیست مراحل زیر را پیش بگیرید.

    SET ORACLE_SID=LAST_DATABASE_NAME

    EMCA -DECONFIG DBCONTROL DB

    تا این مرحله تنظیمات مربوط به EM بانک اطلاعاتی قبلی حذف می‌گردد.

    SET ORACLE_SID=NEW_DATABASE_NAME

    EMCA -CONFIG DBCONTROL DB -REPOS RECREATE

    EMCTL START DBCONSOLE

    در این مراحل تنظیمات مربوط به EM بانک اطلاعاتی جدید انجام می‌گیرد.

    ۱۷ فروردين ۹۴ ، ۱۹:۲۹ ۰ نظر
    مهدی غفاری

    شنونده اوراکل(LSNRCTL)

    هر نمونه برای دریافت در خواست و پاسخ دهی به نیاز کاربران از یک شنونده استفاده می‌کند در اوراکل بعد از ایجاد بانک اطلاعاتی یک شنونده به طور خودکار راه اندازی می‌شود. برای اطلاع از نام این شنونده می‌توان از دستور زیر استفاده کرد:

    LSNRCTL SHOW CURRENT_LISTENER

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

    LSNRCTL STATUS

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

    نکته: حتماً توجه داشته باشید که برای stop یا start نمودن شنونده حتماً از طریق شل ادمین سیستم اقدام کنید.

    LSNRCTL STOP
    LSNRCTL START
    ۱۷ فروردين ۹۴ ، ۱۹:۲۳ ۱ نظر
    مهدی غفاری