有客户和我反馈,他们为了防止有人使用sys用户进行登录,对sys用户进行了重命名,具体操作语句为:
update user$ set name='THISISSYS' where user#=0;
然后重启数据库发现数据库无法正常启动,报ORA-01092 ORA-00600 kokasgi1错误
[oracle@ecs-d75e-0618923 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 7 14:40:28 2020
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 6881345536 bytes
Fixed Size 2214056 bytes
Variable Size 4227860312 bytes
Database Buffers 2617245696 bytes
Redo Buffers 34025472 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [],[], [], [], [], []
Process ID: 6269
Session ID: 530 Serial number: 3
以前写过处理过类似问题,参见:ORA-600 kokasgi1故障恢复,通过特殊处理,数据库open之后,对其user#=0的用户修改为SYS.
[oracle@ecs-d75e-0618923 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 7 14:52:09 2020
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 6881345536 bytes
Fixed Size 2214056 bytes
Variable Size 4227860312 bytes
Database Buffers 2617245696 bytes
Redo Buffers 34025472 bytes
Database mounted.
SQL> alter database open;
Database altered.
SQL> select name from user$ where user#=0;
NAME
------------------------------
THISISSYS
SQL> update user$ set name='SYS' where user#=0;
1 row updated.
SQL> commit;
Commit complete.
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 6881345536 bytes
Fixed Size 2214056 bytes
Variable Size 4227860312 bytes
Database Buffers 2617245696 bytes
Redo Buffers 34025472 bytes
Database mounted.
Database altered.
至此恢复完成,再次sys是oracle内部默认的超级用户,系统很多调用在程序中写死的sys.,对其用户不能进行重命名操作.