مستند اوراکل

CREATE PROFILE

مقدمه

نکته: role دلالت بر قدرت یک کاربر دارد در حالی که profile دلالت بر ضعف یک کاربر دارد. شما با دادن role های مختلف به کاربر آن کاربر را قوی می‌کنید و با ایجاد profile برای کاربر آن کاربر را محدود خواهید کرد.

profile بر ۲ دسته تقسیم می‌شود. یعنی ۲ نوع تنظیم(محدودیت) را می‌تواند در داخل خودش داشته باشد.

  1. تنظیمات سخت‌افزاری و physical
  2. تنظیمات امنیتی

نکته: توی اوراکل ما با profile می‌توانیم محدود کنیم یک کاربر را که چند بلاک از cpu‌ را توی سرور ما اشغال کند.

نکته: با ایجاد Profile به این نکته پی خواهید برد که چقدر دیتابیس در اپلیکیشن تاثیر گذار است.

نحوه ایجاد profile - (تنظیمات سخت‌افزاری)

به مثال زیر دقت کنید:

CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER          UNLIMITED
CPU_PER_SESSION            UNLIMITED
   CPU_PER_CALL               3000
   CONNECT_TIME               45
   IDLE_TIME                  30
   LOGICAL_READS_PER_SESSION  DEFAULT
   LOGICAL_READS_PER_CALL     1000
   PRIVATE_SGA                15K;
  • SESSIONS_PER_USER حداکثر تعداد sessionهایی را که یک کاربر می‌تواند به طور همزمان ایجاد نماید مشخص می‌کند.(یعنی تعداد sessionهایی که در یک زمان واحد توسط یک کاربر می‌تواند ایجاد شود و به دیتابیس وصل شوند.)

نکته: اگر بر روی این پارامتر محدودیت گذارید مثلا ۲ session به محض ورود کانکشن جدید و ایجاد session سوم session به faile خواهد رسید.

  • CONNECT_TIME کل زمانی که یک SESSION می‌تواند LOGIN باشد بر حسب دقیقه مشخص می‌کند (یعنی یک session چند دقیقه می‌تواند login باشد این زمان که بگذره کاربر اتوماتیک logout میشه و باید دوباره login کند)

نکته: این پارامتر میتونه یک تنظیم امنیتی بر روی دیتابیس باشد. فرض کنید اپلیکیشنتان قراره به دیتابیس متصل شود، حداکثر زمانی که اپلیکیشنتان می‌تواند با دیتابیس ارتباط بگیرد ۲ ثانیه است. یعنی شما تو بدترین شرایط بخواهید از سمت اپلیکیشنتان insert ای انجام دهید (چون دستی که لاگین نمی‌کنید توسط برنامه لاگین می‌شوید) ۲ ثانیه بیشتر زمان نمی‌گیره پس این پارامتر را می‌توانید به عنوان مثال روی ۲ ثانیه بذارید بعد اگر ۲ ثانیه بیشتر طول بکشه کاربر logout میشه و سمت اپلیکیشن دیسکانکت میشه پس اگر کسی پسورد آن یوزر را داشته باشد نمی‌تواند کار خاصی به صورت دستی انجام دهد.

  • CPU_PER_CALL میزان زمانی که SESSION می تواند CPU را مورد استفاده قرار دهد در هر تراکنش بر حسب صدم ثانیه

نکته: در مثال ما هر session فقط ۳۰ ثانیه می‌تواند وقت cpu را بگیرد.

  • CPU_PER_SESSION مدت زمانی که یک SESSION میتواند از CPU استفاده کند بر حسب صدم ثانیه

نکته: در مثال ما محدودیتی برای این پارامتر قرار گرفته نشده است.

  • IDLE_TIME مدت زمانی که SESSION می تواند کاری انجام ندهد و به بانک‌اطلاعاتی متصل بماند بر حسب دقیقه

نکته: در مثال ما اگر ۳۰ دقیقه session کاری نکند به طور خودکار logout‌ می‌شود.

  • (Logical Reads Pear Session(LRPS تعداد بلوک‌هایی که یک SESSION می‌تواند از SGA و هارد بخواند
  • (Logical Reads Per Call(LRPC تعداد بلوک‌هایی که یک SESSION در یک عمل واکشی می‌تواند بخواند

نکته: یعنی همون تراکنش، هر تراکنشی که انجام می‌دهید چقدر از data blockها را بخواند.

  • PRIVATE_SGA میزان فصای استفاده از SGA توسط کاربر 15 یعنی 15K اختصاصی از فضای SGA متعلق به کاربر است. این پارامتر تنها در معماری shared server کاربرد دارد. (یعنی SGA شخصی، SGA ای که به کمک فضای PGA می‌رسد)

نکته: به صورت پیش‌فرض فضای SGA بین کاربران مشترک است ولی با این پارامتر برای هر کاربر فضایی رو رزرو می‌کنیم و فضای SGA به کمک فضای PGA می‌رسد. توی اوراکل یک فضای PGA رو مشخص می‌کنیم که برای هر کاربر در نظر گرفته می‌شود و یک فضای SGA که برای همه کاربرا مشترکه ما با این پارامتر یک قسمتی از فضای SGA‌ رو فقط به کاربری مشخص اختصاص خواهیم داد.

این فضا به صورت رزرو شده است یعنی باقی کاربران آن را می‌توانند ببینند ولی نمی‌توانند روی آن چیزی بنویسند.

اعصا کردن profile

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

Alter user [username] profile [profilename];

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

نکته: اگر profile را ایجاد کنید ولی به کاربری آن را اختصاص ندهید آن کاربر بدون محدودیت خواهد بود.

نکته: یک پروفایل را می‌توان به صدها کاربر اختصاص داد. ولی هر کاربر فقط می‌تواند یک پروفایل دشاته باشد.

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

ALTER [user] SET RESOURCE_LIMIT = True;

نکته: با زدن دستور بالا اگر ۱۰۰ پروفایل هم به ۱۰۰ کاربر اختصاص داده باشید از این لحظه تمام محدودیت‌ها برقرار می‌شوند.

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

ALTER [user] SET RESOURCE_LIMIT = False;

مثال

SQL> show user
USER is "MAHDI"
SQL> CREATE PROFILE app_user LIMIT
2 SESSIONS_PER_USER UNLIMITED
3 CPU_PER_SESSION UNLIMITED
4 CPU_PER_CALL 3000
5 CONNECT_TIME 45
6 IDLE_TIME 30
7 LOGICAL_READS_PER_SESSION DEFAULT
8 LOGICAL_READS_PER_CALL 1000
9 PRIVATE_SGA 15K;

Profile created.

SQL> alter user mahdi profile app_user;
User altered.

س: پارامتر PRIVATE_SGA در چه زمانهایی استفاده می‌شود؟

ج: روی فشارهای زیاد یک کاربر بر روی یک table

پروفایل با استفاده از پارامترهای PASSWORD - (تنظیمات امنیتی)

CREATE PROFILE app_user2 LIMIT
   FAILED_LOGIN_ATTEMPTS 5
   PASSWORD_LIFE_TIME 60
   PASSWORD_REUSE_TIME 60
   PASSWORD_REUSE_MAX 5
   PASSWORD_LOCK_TIME 1/24
   PASSWORD_GRACE_TIME 10;
  • FLA تعداد دفعاتی که کاربر می‌تواند رمز عبور غلط وارد کند در آن صورت به اندازه PASSWORD_LOCK_TIME که بر حسب روز است کاربر قفل خواهد شد.

 نکته: در مثال ما اگر کاربر ۵ بار پسورد را اشتباه وارد کند، اگر تا ۱ ساعت هم پسورد را درست وارد کند اوراکل از ورود کاربر ممانعت خواهد کرد.

  • Password_life_time مدت زمانی که یک کاربر می‌تواند از یک رمز عبور خاص استفاده نماید بر حسب روز

نکته: در مثال ما کاربر وظیفه دارد که پس از ۶۰ روز پسورد خود را عوض کند، در روز آخر اوراکل تا عوض نکردن پسورد توسط کاربر به کاربر اخطار می‌دهد و اگر همچنان پسورد خود را عوض نکند پسورد کاربر خواهد سوخت و فقط ادمین می‌تواند دوباره برای این کاربر پسورد جدید و معتبر تنظیم نماید.

  • PRT تعداد (PASSWORD_REUSE_TIME) روزهایی که باید سپری شود تا بتوان دوباره از همان رمز عبور قبلی استفاده کرد

نکته: در مثال ما اوراکل تا ۶۰ روز پسورد قبلی را در خود نگه‌داری می‌کند و زمانی که بخواهید پسورد جدیدی بگذارید تا ۶۰ روز نمی‌توانید پسورد قدیمی خود را بگذارید. 

  • PRM مخفف (PASSWORD_REUSE_MAX) حداکثر دفعاتی که کاربر باید رمز عبور خود را تغییر دهد تا بتواند از همان رمز قبلی استفاده کند

نکته: در مثال ما کاربر باید حداقل ۵ بار پسورد خود را عوض کند تا بتواند دوباره از پسورد قبلی خود استفاده کند

  • PASSWORD_LOCK_TIME تعدا روزهایی که کاربر به علت اشتباه وارد کردن رمز قفل می‌شود

نکته: در مثال ما به صورت ۱ ساعت این پارامتر مقداردهی شده است.

  • Password_grace_time مدت زمانی که بعد از سوختن password کاربر می‌تواند اقدام به تغییر رمز کند

نکته: در مثال ما اگر پسورد کاربر توسط اوراکل سوزانده شود کاربر به مدت ۱۰ روز می‌تواند دوباره بیاید و اقدام به تغییر پسورد کند ولی بعد از سپری شدن این دوره اگر کاربر پسورد جدیدی نگذارد حتماً ادمین اوارکل باید برای کاربر پسوردی جدید تنظیم کند.

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