سلام
یکی از سازمان ها بر اساس درخواست نهاد ناظر، درخواست lock کردن کاربر sys رو دادند. نسخه دیتابیسی که تو این سازمان نصب شده 12.2 هست.
اگر مستقیم دستور alter user sys account lock رو بزنیم با خطا مواجه می شیم:
sys@testcdb(78)> alter user sys account lock; alter user sys account lock * ERROR at line 1: ORA-40365: The SYS user cannot be locked while the password file is in its current format.
چاره چیست؟
ابتدا با اجرای دستور زیر اطلاعاتی از دیتابیس به دست می آوریم:
[oracle@db12cprimary-node1 ~]$ srvctl config database -d testcdb Database unique name: testcdb Database name: testcdb Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1 Oracle user: oracle Spfile: +DATA/TESTCDB/PARAMETERFILE/spfile.273.999485507 Password file: +DATA/TESTCDB/PASSWORD/pwdtestcdb.257.999485035 Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC ...
در قدم اول پسورد فایل موجود را پاک می کنیم:
[oracle@db12cprimary-node1 ~]$ orapwd dbuniquename=testcdb delete=y
حالا پسورد فایل جدید را با ذکر فرمت می سازیم:
[oracle@db12cprimary-node1 ~]$ orapwd file='+data' dbuniquename=testcdb password=Vahid_1234 entries=20 format=12.2
دوباره وضعیت دیتابیس را چک می کنیم:
[oracle@db12cprimary-node1 ~]$ srvctl config database -d testcdb Database unique name: testcdb Database name: testcdb Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1 Oracle user: oracle Spfile: +DATA/TESTCDB/PARAMETERFILE/spfile.273.999485507 Password file: +DATA/TESTCDB/PASSWORD/pwdtestcdb.257.1016598059 Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC ...
حالا می توانیم کاربر sys را lock کنیم:
sys@testcdb(59)> alter user sys account lock; User altered.
در این حالت اگر از طریق listener بخواهیم به این کاربر متصل شویم، با پیغام account is locked مواجه می شویم.
[oracle@db12cprimary-node1 ~]$ sqlplus sys@testcdb as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 18 05:57:11 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Enter password: ERROR: ORA-28000: the account is locked
همچنین اطلاعات کاربر بصورت زیر است:
sys@testcdb(1)> select username , account_status from dba_users where username='SYS'; USERNAME ACCOUNT_STATUS ------------------------------ -------------------------------- SYS LOCKED
آما، در همین حال نیز می توان با دستور زیر به دیتابیس با کاربر SYS متصل شد:
[oracle@db12cprimary-node1 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 18 05:59:52 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production sys@testcdb(1)> show user USER is "SYS"
شاد باشید.
------------------------------------------------------------------------------
در هنگام رانندگی به احترام عابرین پیاده بایستیم.
- ۹۸/۰۵/۲۷