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

برگرداندن پروفایل

داکیومنت

ALTER USER

Administering User Privileges, Roles, and Profiles

برای برگرداندن یک کاربر به پروفایل پیش‌فرض خود می‌توانید از دستور زیر استفاده کنید:

ALTER USER username PROFILE DEFAULT;

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

DROP PROFILE app_user CASCADE;

۲۲ ارديبهشت ۹۴ ، ۱۵:۱۹ ۰ نظر
مهدی غفاری

فقط خواندنی و فقط نوشتنی کردن یک TableSpace

برای اینکه یک TableSpace را به حالت read only ببریم از دستور زیر استفاده می‌کنیم، در این حالت از جداولی که روی TableSpace ما هستند فقط میشه select گرفت و نمیشه ورود داده کرد:

نکته: وقتی می‌خواهیم در یک بازه زمانی اصلاً ورود و یا تغییر داده روی فیلدها انجام نشود، از این حالت استفاده می‌کنیم.

alter tablespace ts read only;

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

alter tablespace ts read write;

۱۳ ارديبهشت ۹۴ ، ۲۰:۴۰ ۰ نظر
مهدی غفاری

اضافه‌کردن فضا به TableSpace

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

alter tablespace <tablespace_name>  add datafile <url> size <size>;

مثال:

alter tablespace ts  add datafile 'd:\root\b.dbf' size 100m;

نکته: مسیر tablespace شما می‌تواند در شبکه نیز باشد. حتی می‌تونه تو درایوهای دیگر و هر نوع مدیای ذخیره‌سازی نظیر: هارد اکسترنال، فلش، رم و ... باشد.

نکته: اگر هر کدوم از DataFileهای ما از شبکه خارج شوند یا از حالت mount بیرون بیایند موقع start کردن اوراکل به مشکل جدی می‌خورید و اورکل تا همه DataFileهای مد نظر را نداشته باشد دیتابیس را  startup open نمی‌کند.(به صورت کلی باید DataFile همیشه باشد و بدون نبود DataFile به هیچ‌وجه نمی‌توان دیتابیس را startup open کرد برای همین پیشنهاد می‌کنم که همیشه Backup داشته باشید)

نکته: در این موارد بهترین کار flash recovery است.

نکته: اگر بخواهید یک table‌ را روی چند tablespace پراکنده کنیم باید حتماً partitioning کنید و جالبه بدونید که قبل از ورژن 11g اوراکل اجازه اینکار را اصلاً نمی‌داد چون اصلاً بحث partitioning مطرح نبود.

س: چرا وقتی می‌توان چند DBF را به یک TableSpace اضافه کرد باید از چند TableSpace برای ذخیره‌سازی یک جدول استفاده کرد؟

ج: به خاطر سرعت index گذاری و cache اولیه - مثلاً وقتی می‌گیم select * from person where age =20 اوراکل به صورت پیش‌فرض اصلاً به where شما گوش نمی‌دهد اما حالا فرض کنید فضای SGA فضای کافی نباشه که بتونه کل جدول رو لود کنه (این مثال در مورد جداول بسیار بسیار حجیم صحت دارد مثلاً جدول ۱ اگزابایتی) خب شما نمی‌تونید رم ۱ اگزابایتی پیدا کنید که کش رو تو فضای SGA انجام بده پس کش کامل انجام نمیشه و همونطور که قبلاً گفتم اوراکل در این مورد خورد خورد عمل میکنه و تیکه تیکه دیتا رو برای کش میاره و در این حالت وقتی میخواد بره تیکه تیکه بیاره وقتی میبینه اندازه کش کافی نیست به سرعت میره و فقط اون قسمت where رو پیدا میکنه و کش میکنه و شما اگه partitioning اتون رو بر مبنای age کرده باشید اوراکل به سرعت اون DataFile‌رو پیدا میکنه و کش میکنه به این حالت میگن (کش اولیه یعنی زمانی که میخواد برای بار اول کش رو انجام بده)

یعنی زمانی که برای کش فضای خالی به اندازه کافی نباشد اوراکل به where شما توجه می‌کند و از partitioning به نفع خودش استفاده می‌کند تا به دیتا فایلی برسد که داده ما درون آن است.(این فقط در مورد tableهای وحشتناک سنگین صدق می‌کند)

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

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

یه وقتایی هست که می‌خوایم دیتابیس رو ببریم رو حالتی که از نظر عموم کاربران در دسترس نیست در واقع دیتابیس تو این حالت open ایت ولی فقط برای ادمین‌های قدرمتند اوراکل open است. اصطلاحاً به این ادمین‌ها ادمین‌های restrictED گفته می‌شود.(یعنی ادمین‌هایی که می‌خوان با دسترسی مشخص به دیتابیس وصل بشوند)

با زدن دستور زیر دیتابیس ما به حالت restrict می‌رود:حالت یواشکی  (روی کاربران جاری اثر ندارد و هیچ کس به جز خود شما و کاربر SYS دسترسی به دیتابیس را ندارد)

alter system enable restricted session;

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

alter system disable restricted session;

س: چه کاربرانی می‌توانند تو مد restric به دیتابیس وصل بشوند؟

ج: فقط کاربرانی که role زیر را داشته باشند می‌توانند به دیتابیس وصل شوند:

grant sysdba to [USER];

نکته: role کاربر system به صورت پیش‌فرض dba و role کاربر sys به صورت پیش‌فرض sysdba است:

system = dba
sys = sysdba

بردن به حالت یواشکلی (روی کاربران جاری اثر ندارد و فقط مدیران(role dba) دسترسی دارند):

alter system quiesce restricted;

خارج کردن از این حالت:

alter system unquiesce;
۱۲ ارديبهشت ۹۴ ، ۱۱:۵۲ ۰ نظر
مهدی غفاری

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

خیلی خوشحال می‌شدم تو این نوشته‌ها یه جاوای درست و حسابی هم میگفتم که باهم وارد 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

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