در اوراکل 11g با تغییر پسورد sys باید مجددا پسوردفایل به محیط data guard منتقل شود(برخلاف نسخه 12c). حال اگر یکی از برنامه های دوره ای تیم امنیت، تغییر پسورد کاربر sys باشد، این مسئله می تواند برای پشتیبان بانک ایجاد مزاحمت کند همچنین در صورت انتقال اطلاعات با دسترسی sysdba، به لحاظ امنیتی هم شاید بستر نفوذی بین این دو سرور ایجاد باشد.
برای جلوگیری از چالشهای از این دست، می توان ار پارامتر redo_transport_user کمک گرفت و با معرفی یک user به ان، وابستگی به کاربر sys را در این مسئله از بین برد.
مثال: برای پیاده سازی دیتاگارد با کمک این پارامتر، ابتدا کاربری را با نام usr_trnsp و با مجوز sysoper ایجاد می کنیم:
SQL> create user usr_trnsp identified by abc;
User created.
SQL> grant sysoper to usr_trnsp;
Grant succeeded.
مقدار پارامتر redo_transport_user را در بانک اصلی و data guard به این کاربر تغییر می دهیم:
SQL> alter system set redo_transport_user=usr_trnsp;
System altered.
در نهایت هم پسوردفایل را از بانک اصلی به سرور data guard کپی می کنیم. در این صورت، data guard دیگر به کاربر sys وابسته نخواهد بود. همچنین ارسال redo به جای مجوز sysdba، تنها با مجوز sysoper انجام خواهد شد.
برای اطمینان، پسورد کاربر sys را تغییر داده و بانک اصلی را راه اندازی مجدد می کنیم:
SQL> alter user sys identified by testiiiiii;
User altered.
startup force;
کماکان ارتباط بین دیتا گارد و بانک اصلی برقرار است:
Archived Log entry 5957 added for thread 1 sequence 6017 ID 0x9d4749f2 dest 1:
Media Recovery Log /u03/arch/1_6017_916230390.dbf
همچنین در دیتاگارد از کاربر sys اثری نخواهد بود:
SQL> select username,count(*) from v$session where username is not null group by username;
USERNAME COUNT(*)
——————————- ————
PUBLIC 5
USEF 1