我遇到了一个oracle问题,网上查后说要执行execute dbms_stats.delete_schema_stats('zlhis'); 
zlhis是用户名吗?
我执行后报错:zlhis is an invalid identifier
怎么解决啊?
delete_schema_stats里面的参数到底填啥?

解决方案 »

  1.   

    以DBA身份执行: 
    execute dbms_stats.delete_schema_stats('zlhis'); 
    zlhis 是你报错的那个表所属的oracle用户 
      

  2.   

    --ORACLE 10.1 OR 10.2中所有平台都存在该问题. <问题现像> 
    在进行多表关联复杂查询时出现 
    ORA-00600: 内部错误代码, 参数: [19004], [], [], [], [], [], [], [] 
    错误 <解决办法> 
    这是一个ORACLE的BUG 
    处理办法1: 
    以DBA身份执行: 
    execute dbms_stats.delete_schema_stats('zlhis'); 处理办法2: 
    如果只有个别表在查询时出现错误,可以只对出错表理行处理 
    execute dbms_stats.delete_table_stats('ZLHIS','病人费用记录'); 
      

  3.   

    下面是我的一个开发服务器的报错信息  在alert log 中有 报错信息,在根据
    test_ora_908.trc中的信息找到 相关出错的sql 语句
    Wed Dec 02 09:53:39 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_908.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []Wed Dec 02 09:54:14 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_6560.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []Wed Dec 02 09:54:15 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_6560.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []Wed Dec 02 09:54:16 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_6560.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []Wed Dec 02 09:54:21 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_6560.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []Wed Dec 02 09:54:24 2009
    Errors in file e:\oracle\product\10.1.0\admin\test\udump\test_ora_6560.trc:
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []
    ------------------------------------------
    test_ora_6560.trc 文件部分内容*** ACTION NAME:(SQL Window - New) 2009-12-02 09:49:58.593
    *** MODULE NAME:(PL/SQL Developer) 2009-12-02 09:49:58.593
    *** SERVICE NAME:(test) 2009-12-02 09:49:58.593
    *** SESSION ID:(79.4766) 2009-12-02 09:49:58.593
    *** 2009-12-02 09:49:58.593
    ksedmp: internal or fatal error
    ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []
    Current SQL statement for this session:
    select * from sic_ia_corpration_security s ,sic_ci_corporation c where s.corpid=c.corpid
    ----- Call Stack Trace -----
    calling              call     entry                argument values in hex      
    location             type     point                (? means dubious value)     
    -------------------- -------- -------------------- ----------------------------
    _ksedmp+524          CALLrel  _ksedst+0            0
    _ksfdmp.160+14       CALLrel  _ksedmp+0            3
    _kgeriv+139          CALLreg  00000000             CD0FB98 3
      

  4.   

    1
    首先楼主你要说明你遇到了什么问题
    最好把搜到解决方法的网站链接也发过来看看 
    2
    dbms_stats.delete_schema_stats()存储过程的作用时删除ORACLE中针对某个schema的统计信息
    3
    以下是官方联机文档上对这个存储过程的解释
    DELETE_SCHEMA_STATS Procedure
    This procedure deletes statistics for an entire schema.SyntaxDBMS_STATS.DELETE_SCHEMA_STATS (
       ownname          VARCHAR2, 
       stattab          VARCHAR2 DEFAULT NULL, 
       statid           VARCHAR2 DEFAULT NULL,
       statown          VARCHAR2 DEFAULT NULL,
       no_invalidate    BOOLEAN DEFAULT to_no_invalidate_type (
                                         get_param('NO_INVALIDATE')),
       force            BOOLEAN DEFAULT FALSE);
      

  5.   

    我遇到的就是2楼说的问题。
    但是在执行那个语句时,说我填的参数是invalid identifier.
    我填的参数就是连接数据库的用户名。
    schema怎么查?我不是dba,但领导让我解决,所以抓瞎,谢谢大家了
      

  6.   

    用system (dba)用户登录 然后 在参数中填写 出错的那个表所属的用户
    不是登录的用户
      

  7.   

    我是以sys用户名sysdba身份登录的,然后执行execute dbms_stats.delete_schema_stats('zlhis'); 
    其中那个参数'zlhis'是一个数据库里的用户名,查了也确实存在,但执行时就是报:
    begin execute dbms_stats.delete_schema_stats('zlhis'); end;
    ORA-20001: zlhis is an invalid identifier
    ORA-06512: 在"SYS.DBMS_STATS",LINE1524
    ......
      

  8.   

    这个问题是oracle的一个bug我用的数据库版本是win32 的 10.1.0.2  用这个命令解决了能升级数据库就升级数据库啊,还有是正版的oracle 的话,可以下载补丁 select * from dba_tables  where table_name =upper('表名')结果中的 owner 就是表的所有者
      

  9.   

    我发现一个现象,我把其他用户名传进去时不报错,只有传这个用户名时报错。
    前几天有人用imp用这个用户导入过数据,而且报了几个错,但是是什么错不记得了。
      

  10.   

    1
    查看alter.log找出出错的表名 找不到可以通过.trc文件试试
    2
    根据dba_tables视图找出该表所对应的schema 
    方法就按照楼上的那位朋友的语句可以查出
    3
    以这个schema名为参数再次执行语句
    execute dbms_stats.delete_schema_stats();
      

  11.   

    现在看来,只有出错表的那个用户名作为参数传入execute dbms_stats.delete_schema_stats(XXX);时会报错,其他用户名不报错
    我怀疑是前两天用imp命令导入时的问题。但不知道是啥问题 
      

  12.   

    继续查看alert.log 日志查到你怀疑的问题是什么问题
      

  13.   

    SQL>desc dbms_stats.delete_schema_stats
    查看这个过程有哪些参数就知道如何使用了。