

SQL> alter database open;alter database open*ERROR at line 1:ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [], [], [], [], [], []Process ID: 4739Session ID: 1369 Serial number: 3

SMON: enabling tx recoveryDatabase Characterset is ZHS16GBKErrors in file u01/app/oracle/diag/rdbms/ywzd/ywzd/trace/ywzd_ora_4739.trc (incident=48167):ORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [], [], [], [], [], []Incident details in: u01/app/oracle/diag/rdbms/ywzd/ywzd/incident/incdir_48167/ywzd_ora_4739_i48167.trcARC3: Archival startedARC0: STARTING ARCH PROCESSES COMPLETEUse ADRCI or Support Workbench to package the incident.See Note 411.1 at My Oracle Support for error and packaging details.Errors in file u01/app/oracle/diag/rdbms/ywzd/ywzd/trace/ywzd_ora_4739.trc:ORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [], [], [], [], [], []Errors in file u01/app/oracle/diag/rdbms/ywzd/ywzd/trace/ywzd_ora_4739.trc:ORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [], [], [], [], [], []Error 600 happened during db open, shutting down databaseUSER (ospid: 4739): terminating the instance due to error 600Instance terminated by USER, pid = 4739
其次,查阅MOS相关文档。该错误在mos上没有查询出来明确的解决方案。于是,重启数据库并设置10046跟踪事件,让报错信息重现。
SQL> shutdown immediate;SQL> startup mount;SQL> alter session set events='10046 trace name context forever , level 12';SQL> alter database open;alter database open*ERROR at line 1:ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00600: internal error code, arguments: [kokasgi1], [], [], [], [], [], [], [], [], [], [], []Process ID: 4739Session ID: 1369 Serial number: 3
=====================select user#,password,datats#,tempts#,type#,defrole,resource$, ptime,decode(defschclass,NULL,'DEFAULT_CONSUMER_GROUP',defschclass),spare1,spare4,ext_username,spare2from user$ where name=:1END OF STMTBind#0value="SYS" <---绑定变量值
最后,跟客户进行沟通确认,近期做过安全整改,确实有人修改了SYS用户名。于是排除是被人恶意攻击的情况。

1、由于SYS用户名被强行更改,接下来需要通过gdb工具挂起启动过程,并强行修改数据字典进行修复,不影响数据库的健康运行。
2、打开窗口1,将数据库启动至mount状态,关闭监听程序。
3、打开窗口2 ,查看sqlplus的进程号,并用gdb工具进行调试
[oracle@YWZD-DBS ~]$ ps -ef|grep LOCALoracle 6961 6150 0 21:42 ? 00:00:00 oracleywzd (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))[oracle@YWZD-DBS ~]$ gdb u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle 6961Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.212.el6_10.3.x86_64 libaio-0.3.107-10.el6.x86_64 numactl-2.0.9-2.el6.x86_64(gdb) b kokiasg 《---- 设置断点Breakpoint 1 at 0x15037cc(gdb) c 《----Continuing.
4、此时回到窗口1
SQL> alter database open;
此时系统挂住,通过alert日志可以看到数据库实际已经open了。
5、新开一个窗口3,可以查到SYS用户名被改为SYSIDC。
[oracle@YWZD-DBS ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Jul 26 21:45:16 2022Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select status from v$instance;STATUS------------OPENSQL> select rowid ,name from user$ where name like 'SYS%';ROWID NAME------------------ ------------------------------AAAAAKAABAAAADRAAB SYSIDCAAAAAKAABAAAADRAAG SYSTEM

6、接着将用户名修改为SYS。
SQL> update user$ set name='SYS' where name='SYSIDC';1 row updated.SQL> commit;Commit complete.

7、回到窗口2,退出断点设置。
Breakpoint 1, 0x00000000015037cc in kokiasg ()(gdb) quitA debugging session is active.Inferior 1 [process 6961] will be detached.Quit anyway? (y or n) yDetaching from program: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle, process 6961

8、回到窗口1,重启数据库与监听,并验证业务是否正常。
9、至此恢复完成。再次明确SYS用户是oracle内部默认的超级用户,系统很多调用在程序中写死的sys,对其用户不能进行重命名操作。

gdb(GNU Debugger)是Linux系统中一个强大的调试工具,它用于分析程序的运行过程,帮助开发者识别和修复程序中的错误。当数据库已经非常慢或者数据库hang到sqlplus -prelim "/as sysdba"也无法连接时,就可以使用gdb来收集系统的dump信息。尽量不要去使用gdb去dump oracle数据库后台进程,有可能导致进程被kill(遇到过几次),如果系统没有hang死,也尽量不要在生产系统使用gdb做dump和调优。
可以在测试环境使用gdb进行dump实验,步骤如下:
1、找到Oracle用户进程IDps -ef | grep orcl (LOCAL=NO)2、对上述的SPID进程号进行调试跟踪Example: process id 3846$ gdb $ORACLE_HOME/bin/oracle 38463、打印trace信息(gdb) print ksudss(258) --》##258为dump的level4、找到trace文件cd $ORACLE_BASE/diag/rdbms/ywzd/ywzd/trace ##参数的trace文件路径 也就是alertlog的路径ll|grep 3846-rw-r----- 1 oracle oinstall 6723482 Feb 4 15:51 ywzd_ora_3846.trc ##文件名为 oraclesid_ora_pid.trc5、退出调试窗口(gdb) detach ##脱离进程(gdb) quit

https://sqlora.blog.csdn.net/article/details/106721292 https://blog.csdn.net/xiaofan23z/article/details/136040441 https://docs.oracle.com/cd/E27071_01/html/E26441/blazn.html
以上就是本期关于“安全等保加固重命名SYS用户触发ORA-600[kokasgi1]错误”的处置案例。希望能给大家带来帮助。
欢迎关注“数据库运维之道”公众号,一起学习数据库技术!

可以加我的微信,交个朋友或讨论数据库解决方案,请备注”姓名单位“,谢谢!





