安装新的软件包时,需要执行下新的sql生效,没有报错。但是卸载软件包的时候,需要把旧的sql执行下生效,但一直执行就报错。如果重复执行新的sql也没有问题。  sqlplus -s /nolog < < SQLPLUS   set feedback off   connect ${DB_USER}/${DB_PASSWORD}@${DB_SERVER}   @ /etc/sql/schema/c_reporting.sql.pre; //旧的sql  commit;   quit; 报错如下: CREATE OR REPLACE PACKAGE BODY a_pkg 

ERROR at line 1: 
ORA-00604: error occurred at recursive SQL level 1 
ORA-30036: unable to extend segment by 8 in undo tablespace 'ROLLBACK' 如果是表空间分配不够,为什么执行新的sql没有问题呢?

解决方案 »

  1.   

    这个还有问题???
    他这个是根据你的SQL来的...现在你用的撤消表空间,
    并不是数据表空间
    比如说临时表空间是用来排序时候使用的.
    我看你还是优化你的sql吧.百你的c_reporting.sql.pre贴出来让大家看看就知道了
      

  2.   

    c_reporting.sql.pre是个package
    修改的是里面的几个procedure.
    请问 如果想只重新执行下修改的proceduce,不是重新执行package的sql,可以吗?
    谢谢
      

  3.   

    c_reporting.sql.pre之前一直执行都没有问题,现在执行完新的c_reporting.sql,然后再执行c_reporting.sql.pre就报错,撤消表空间一般什么情况下会用到呢? 请问
      

  4.   

    DML操作时会生成大量的UNDO信息,这些信息将存储在系统UNDO段中,估计是因为内容多,UNDO表空间很小,不足以保存下这么多的UNDO信息。可加大UNDO表空间大小或中途执行DDL操作,及时提交。
      

  5.   


    同意,可以是有大事务导致undo扩展超过undo的size
      

  6.   

    SQL> select tablespace_name from dba_tablespaces where contents='UNDO';TABLESPACE_NAME
    ------------------------------
    ROLLBACKSQL> show parameter undo_management;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO
    SQL> select file_name from dba_data_files;FILE_NAME
    --------------------------------------------------------------------------------
    /qscora/oradata/system1.dbf
    /qscora/oradata/rollback1.dbf
    /qscora/oradatatools1.dbf
    /qscora/oradata/users1.dbf我觉得应该是/qscora/oradata/rollback1.dbf这个数据文件,但它应该是自动扩展的,是需要手工去扩展吗?
    -rw-r-----   1 qscora     dba        268443648 Feb 23 09:05 rollback1.dbf现在的数据文件有200多M,是增加这个吗?
      

  7.   

    那如果我想只执行package.sql里面,改动的几个procedure该怎么做呢?package.procedure这样吗?
      

  8.   

    SQL> alter database datafile '/qscora/oradata/arial/rollback1.dbf' resize 300M;
    Database altered.SQL> commit;Commit complete.SQL> @ /etc/sql/schema/reporting.sql;Package created.No errors.Package body created.No errors.SQL> commit;Commit complete.SQL> @ /etc/sql/schema/c_pkg_aria_reporting.sql;Package created.No errors.
    CREATE OR REPLACE PACKAGE BODY aria_reporting_pkg
    *
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-30036: unable to extend segment by 8 in undo tablespace 'ROLLBACK'
    No errors.-rw-r-----   1 qscora     dba        314580992 Feb 23 10:31 /qscora/oradata/arial/rollback1.dbf
    重新扩展后,又写满了,又报错不能扩展了?
      

  9.   

    sqlplus -s /nolog << SQLPLUS  set feedback off  connect ${OPT_DB_USER}/${OPT_DB_PASSWORD}@${OPT_DB_SERVER}  @ /etc/sql/schema/reporting.sql;  commit;  connect /as sysdba;  alter database datafile '/qscora/oradata/arial/rollback1.dbf' resize 500M;  commit;  quit;SQLPLUS
    ERROR:
    ORA-01031: insufficient privileges应该是sh里面没有识别
    connect /as sysdba;请问应该怎么写呢?