如何区分哪些用户是ORACLE系统提供的?
有些时候,我们要清理数据库时,想把数据库中所有非系统自带的用户全部删除,在12C以前,我们只能通过人肉的方式,从12C 开始,多了一个字段: ORACLE_MAINTAINED如果时系统自带的,该值为Y,否则为N
就很好办了,直接使用以下语句就可以找出系统自带的用户了。
从dba_users ORACLE_MAINTAINED='Y'中选择用户名,account_status,ORACLE_MAINTAINED;
SQL>选择用户名,account_status从dba_users ORACLE_MAINTAINED='Y';
用户名 ACCOUNT_STATUS
------------------------- ------------------------------
系统 打开 AUDSYS 锁定 系统 打开
输出 锁定 GSMADMIN_INTERNAL 锁定 GSMUSER 锁定 GSMroot用户 锁定 dip 锁定 REMOTE_SCHEDULER_AGENT 锁定 DBSFWUSER 锁定 ORACLE_OCM 锁定 系统$UMF 锁定 DBSNMP 已锁定
APPQOSSYS 锁定 GSMCATUSER 锁定 GGSYS 锁定 XDB 锁定 匿名 过期 &锁定 WMSYS 锁定 OJVMSYS 锁定 CTXSYS 已过期 &锁定 ORDSYS LOCK ORDDATA LOCK
ORDPLUGINS
LOCK 锁定 SI_INFORMTN_SCHEMA 锁定 MDSYS 锁定 OLAPSYS 锁定
MDDATA 锁定 LBACSYS 锁定
DVF 锁定 DVSYS 锁定 系统备份 锁定 系统DGG 锁定 系统km 锁定 系统rac 锁定 XS$NULL 已过期 并锁定
36 行已选中。
与一个新创建的库对比可以发现是一致的:
SQL> select username,ACCOUNT_STATUS from dba_users;
用户名 ACCOUNT_STATUS
------------------------- ------------------------------
系统 开放
系统 打开
XS$NULL 过期 & 锁定 OJVMSYS 锁定 LBACSYS 锁定 OUTLN 锁定 SYS$UMF 锁定 DBSNMP 锁定 APPQOSSYS 锁定 DBSFWUSER 锁定 GGSYS 锁定 匿名 过期 & 锁定
CTXSYS 过期 & 锁定 DVSYS 锁定 DVF 锁定 GSMADMIN_INTERNAL 锁定 MDSYS 锁定 OLAPSYS 锁定 XDB 锁定 WMSYS 锁定 GSMCATUSER 锁定 MDDATA 锁定 系统备份锁定 REMOTE_SCHEDULER_AGENT 锁定 GSMUSER 锁定 系统拉克锁定
GSMROOTUSER 锁定SI_INFORMTN_SCHEMA锁定
AUDSYS 锁定 DIP 锁定 ORDPLUGINS 锁定 SYSKM 锁定 ORDDATA 锁定 ORACLE_OCM 锁定 SYSDG 锁定 ORDSYS 锁定
36 行已选中。