以前就直接删users表,造成dbs_user中用户没有删除,现在用drop user username 这个命令也可以一个一个删,但是用户太多,我想用sql一次执行把users中用户全删除,dba_user中对应的也可以删除,希望大家能帮忙,我不知道怎么写这语句,我写的提示错误不执行。

解决方案 »

  1.   

    你把程序的登陆用户放在user表中了???????????????????
      

  2.   

    由于程序的登陆用户要具有一些数据库的删除,修改功能,所以要给这些用户付一些权限,在dba_user这张系统里有用户的信息,users这张表只是程序自己记有多少个用户用的,用truncate table 就可以删除全部数据,但dba_user这张表里,不是要用drop user 这命令删除用户么,但drop user只能一个一个用户删除,我想除了系统自己的几个保留用户(如system,sys等)外的其他用户一下就能删除,主要是其他的用户太多如果一个一个删,要删好几个小时,才想能不能有个简便的方法删用户。
      

  3.   

    set heading off
    set feedback off
    spool c:\a.txt
    select 'DROP USER '||username||' CASCADE;'
    from dba_users 
    where account_status='OPEN' and initial_rsrc_consumer_group<>'SYS_GROUP'
    spool off
      

  4.   

    waterfirer(水清) ,感谢你的回答,但我不明白你的思路,你用spool c:\a.txt语句的目的是把表里数据输出到文件里,但select 'DROP USER '||username||' CASCADE;'from dba_users 
    where account_status='OPEN' and initial_rsrc_consumer_group<>'SYS_GROUP' 这句话我看不懂什么意识,而且执行时抱错, 'DROP USER '||username||' CASCADE; 删除用户,放到select中是什么意识,希望能讲清楚点
      

  5.   

    呵呵.输出到txt里面是为了保存脚本.然后把开这个txt文件,把里面的内容复制到sqlplus下面运行
      

  6.   

    where account_status='OPEN' and initial_rsrc_consumer_group<>'SYS_GROUP' 
    主要是留住系统用户,免得你把system,sys给删了执行时报错吗?报什么错?我试的时候没有问题啊。
      

  7.   

    错误是
    ERROR at line 4:
    ORA-00933: SQL command not properly ended
    好像说的是
    select 'DROP USER '||username||' CASCADE;'
    from dba_users 
    where account_status='OPEN' and initial_rsrc_consumer_group<>'SYS_GROUP'
    这段话。不知道是不是我没有用sysdba身份登陆的问题,
    我在sql plus中用
    SQL> conn system/manager@back as sysdba
    ERROR: ORA-12154: TNS:could not resolve service name
    不能登陆
    但我用conn system/manager@back就能登陆,我在  DBA studio 中看了system权限有dba的权限,不知道为什么不能用sysdba登陆
      

  8.   

    用system就行
    把你在Sqlplus中的内容贴出来吧。
    sql> select 'DROP USER '||username||' CASCADE;'
      2  from dba_users 
      3  where account_status='OPEN' and initial_rsrc_consumer_group<>'SYS_GROUP'ERROR at line 4,第四行是哪一行?
      

  9.   

    我明白那个地方出的错了,谢谢不敲spool off就能实现了,谢谢了