۳۵ مطلب با کلمه‌ی کلیدی «DBA» ثبت شده است

نمایش لیست تمام کاربران

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

select * from all_users;

و برای لیست کردن تمام یوزرهای بانک‌اطلاعاتی از جدول dba_users کوئری بگیرید:

select * from dba_users;
۰۸ ارديبهشت ۹۴ ، ۲۰:۳۵ ۰ نظر
مهدی غفاری

توابع تاریخ و زمان

خیلی خوشحال می‌شدم تو این نوشته‌ها یه جاوای درست و حسابی هم میگفتم که باهم وارد jdbc بشیم و برخورد jdbc با type date رو بررسی کنیم. چون همیشه تو برنامه‌نویسی جاوا برنامه‌نویس‌ها تاریخ و زمان رو یا string می‌گیرن یا long، همیشه هم تو سطح اوراکل همه چیز رو اونجوری که دوست دارن می‌گیرن (البته اگه دیتابیس دست خودشون باشه)، به هر حال یه نقطه‌ای باید باشه که این ۲ تا رو به طور صحیح به هم وصل کنه.

جدول زیر در این پست مفروض است:

END_DATE START_DATE
02-May-90 02-May-89
10-May-89 04-May-89
10-May-90 04-May-89
04-Apr-89 04-Apr-89
04-May-89 04-Apr-89
10-May-89 04-Apr-89
10-May-91 04-Apr-89

این جدول T_DATE نام دارد. نوع داده‌های این جدول شامل موارد زیر می‌باشد.

  • فیلد START_DATE از نوع DATE
  • فیلد END_ DATE از نوع DATE

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

دلیل استفاده نکردن از JOIN در اوراکل

یادآوری

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

مثال:

CRAETE TABLE T2(ID NUMBER PRIMARY KEY, NAME VARCHAR2(20));

به چند چیز باید توجه کنیم(چون ID به عنوان PRIMARY KEY) تعریف شده):

  • ID نمی‌تونه NULL باشه
  • ID نمی‌تونه تکراری باشه
INSERT INTO T2(ID, NAME) VALUES(1, 'MAHDI');

همونطور که در زیر می‌بینید با یکسان قرار دادن ID پایگاه داده خطایی به ما برمی‌گرداند:

INSERT INTO T2(ID, NAME) VALUES(1, 'EHSAN');
*
ERROR at line 1:
ORA-00001: unique constraint (MGHAFFARI.SYS_C0010911) violated

حالا ID احسان رو می‌ذاریم ۲ و INSERT رو انجام می‌دیم:

INSERT INTO T2(ID, NAME) VALUES(1, 'EHSAN');
*
ERROR at line 1:
ORA-00001: unique constraint (MGHAFFARI.SYS_C0010911) violated

وحالا می‌خوایم ID رو NULL رد کنیم:

INSERT INTO T2(NAME) VALUES('EHSAN');
*
ERROR at line 1:
ORA-01400: cannot insert NULL into (MGHAFFARI.SYS_C0010911) violated

همونطور که می‌بینید نمی‌تونیم مقدار NULL رد کنیم.

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

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

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

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

قاعده عدم هیچ مقدار (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));

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

انواع 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 بوده و جهت نگهداری متون چینی، ژاپنی، پارسی، عربی، ... می‌توانیدازاین نوع داده استفاده نمایید.

 

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

زبان SQL - قسمت دوم

ساخت جدول

دستور زیر جدولی به اسم PERSON با فیلدهای ID, NAME, AGE با نوع‌های مشخص ایجاد می‌کند(ID, AGE اطلاعات عددی نگه‌می‌دارن و NAME اطلاعات رشته‌ای، همچنین این جدول در یوزر MGHAFFARI ساخته شده است):

SQL> CREATE TABLE PERSON(ID NUMBER, NAME VARCHAR2(20), AGE NUMBER);

Table created.
SQL> show user;
USER is "MGHAFFARI"

ورود اطلاعات

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

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(1, 'MAHDI', 21);

1 row created.

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(2, 'EHSAN', 22);

1 row created.

SQL> INSERT INTO PERSON(ID, NAME, AGE) VALUES(3, 'FARZAD', 25);

1 row created.

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

SQL> SELECT * FROM PERSON;

ID NAME AGE
---------- -------------------- ----------
1 MAHDI 21
1 EHSAN 22
1 MAHDI 21
2 EHSAN 22
3 FARZAD 25

نکته: حتما بعد از INSERT اطلاعات عمل COMMIT را انجام دهید وگرنه TRANSACTION بعد از بستن محیط یا هر اتفاقی ROLLBACK میشه.

نکته: برای دستورات CREATE نیازی به COMMIT نیست و فقط برای دستوراتی که مستقیماً با DATA طرف هستند و درج یا آپدیتی انجام می‌دهند باید عمل COMMIT صورت گیرد.

نکته: MGHAFFARI تا قبل از ایجاد جدول و ورود داده فقط یوزر بود ولی بعد از ایجاد جدول و ورود داده SCHEMA شد.

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

SELECT * FROM SCHEMA_NAME.OBJECT_NAME;

به عنوان مثال برای SELECT PERSON از یوزر SYSTEM به صورت زیر عمل می‌کنیم:

SQL> connect system;
Enter password:
Connected.
SQL> SELECT * FROM MGHAFFARI.PERSON; ID NAME AGE
---------- -------------------- ----------
1 MAHDI 21
1 EHSAN 22
1 MAHDI 21
2 EHSAN 22
3 FARZAD 25

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

زبان SQL - قسمت اول

ساخت کاربر

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

CREATE USER user_name
IDENTIFIED BY my_pass;

در قسمت CREATE USER، نام کاربر و IDENTIFIED BY، رمز ورود کاربر وارد می‌گردد.
با استفاده از دستور CREATE USER یک کاربر به نام ریحانه، با رمز ورود ABC بسازید.

SQL> CREATE USER MAHDI
2 IDENTIFIED BY ABCD;

User created.

SQL>

با استفاده از دستور SHOW USER  نام کاربر متصل به بانک‌اطلاعاتی را نمایش داده می‌شود.

SQL> SHOW USER;
USER is "SYS"
SQL>

در حال حاضر کاربر SYSTEM به بانک اطلاعاتی متصل است.

حذف کاربر

برای حذف یک کاربر از دستور DROP USER استفاده می‌شود. نگارش این دستور به شکل زیر است.

DROP USER user_name;

در صورت استفاده از CASCADE در دستور DROP USER، کاربر با تمام ملحقات مربوطه(تمامی جداول، دیدها و ...) حذف می‌گردد.

SQL> DROP USER MAHDI CASCADE;

User dropped.

SQL>

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

دستورات کنسولی محیط 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

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