چرا وقتی می خواهیم یک پایگاه داده را startup کنیم در حالیکه پایگاه داده shutdown است نمی توانیم با کاربر SYSTEM وارد شویم ولی با SYS می توانیم وارد شویم. جز اینکه تنها کاربر با مجوز SYSDBA می تواند پایگاه داده را startup یا shutdown کند (مانند SYS) ولی توجه کنید که پایگاه داده shutdown است و نمی توانیم اصولا وارد شویم. دلیل اینکه با SYS می توانیم وارد شویم اینکه نام و پسورد آن در خود پایگاه داده ذخیره نشده بلکه در خارج از پایگاه داده و در یک فایل ثبت شده است و این بر خلاف بقیه کاربران هستند که در خود پایگاه داده و در Data Dictionary ها ذخیره شده اند.
مسیر پیش فرض این فایل در دایرکتوری dbs در زیر دایرکتوری ORACLE_HOME$ است.
cd $ORACLE_HOME/dbs
ls orapwdorcl
قسمت قرمز رنگ بالا مربوط به نام پایگاه داده است و بر اساس هر پایگاه داده نامی متفاوت خواهد داست. و همچنین در سیستم عامل ویندوز در مسیر زیر قرار دارد.
cd %ORACLE_HOME%\database
dir
کاربران درون این فایل دارای مجوز SYSDBA یا SYSOPER هستند. با پرس و جوی زیر می توان فهرستی از این کاربران را پیدا کرد.
;select * from v$pwfile_users
USERNAME SYSDB SYSOP SYSAS
—————————— —– —– —–
SYS TRUE TRUE FALSE
خروجی بالا نشان می دهد که کاربر SYS دارای مجوز های SYSDBA و SYSOP است. با دستور های زیر کاربری را ساخته و مجوز های لازم را می دهیم.
;create user sysusr identified by password
;grant sysdba, sysoper to sysusr
اگر خطای زیر نشان داده شد به این خاطر است که هیچ کاربری جز کاربرانی که مجوز SYSDBA مانند SYS نمی توانند به کس دیگری مجوز های SYSDBA یا SYSOPER را اعطا یا GRANT کنند.
ORA-01031: insufficient privileges
به هر حال اگر با کاربر SYS اعطای مجوز را انجام دادید آنگاه نام کاربر sysusr نیز به فهرست جدول v$pwdfile_users اضافه خواهد شد.
;select * from v$pwfile_users
USERNAME SYSDB SYSOP SYSAS
—————————— —– —– —–
SYS TRUE TRUE FALSE
SYSUSR TRUE TRUE FALSE
دستور orapwd
اگر فایل پاک شود با استفاده از این دستور می توان آنرا ایجاد نمود. همانطور که گفته شد محل پیش فرض وجود دارد و با اجرای دستور فوق فایل در همان محل پیش فرض ایجاد خواهد شد. شکل کلی آن بصورت زیر است. n تعداد حداکثر کاربرانی که می توانند در فایل قرار گیرند را نشان می دهد.
orapwd file=password_file_name password=the_secret_password
orapwd file=password_file_name password=the_secret_password entries=n
برای خواندن راهنمای دستور از دستور orapwd –help استفاده کنید.