执行sql生效问题

c*s*d*n 2010-02-22 08:32:33
安装新的软件包时,需要执行下新的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没有问题呢?
...全文
112 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
c*s*d*n 2010-02-23
  • 打赏
  • 举报
回复
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


重新扩展后,又写满了,又报错不能扩展了?
c*s*d*n 2010-02-23
  • 打赏
  • 举报
回复
那如果我想只执行package.sql里面,改动的几个procedure该怎么做呢?

package.procedure这样吗?
c*s*d*n 2010-02-23
  • 打赏
  • 举报
回复
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME
------------------------------
ROLLBACK

SQL> 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,是增加这个吗?


inthirties 2010-02-23
  • 打赏
  • 举报
回复
引用 4 楼 jdsnhan 的回复:
DML操作时会生成大量的UNDO信息,这些信息将存储在系统UNDO段中,估计是因为内容多,UNDO表空间很小,不足以保存下这么多的UNDO信息。可加大UNDO表空间大小或中途执行DDL操作,及时提交。


同意,

可以是有大事务导致undo扩展超过undo的size
c*s*d*n 2010-02-23
  • 打赏
  • 举报
回复
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;

请问应该怎么写呢?
jdsnhan 2010-02-22
  • 打赏
  • 举报
回复
DML操作时会生成大量的UNDO信息,这些信息将存储在系统UNDO段中,估计是因为内容多,UNDO表空间很小,不足以保存下这么多的UNDO信息。可加大UNDO表空间大小或中途执行DDL操作,及时提交。
c*s*d*n 2010-02-22
  • 打赏
  • 举报
回复
c_reporting.sql.pre之前一直执行都没有问题,现在执行完新的c_reporting.sql,然后再执行c_reporting.sql.pre就报错,撤消表空间一般什么情况下会用到呢? 请问

引用 1 楼 yy_mm_dd 的回复:
这个还有问题???
他这个是根据你的SQL来的...现在你用的撤消表空间,
并不是数据表空间
比如说临时表空间是用来排序时候使用的.
我看你还是优化你的sql吧.百你的c_reporting.sql.pre贴出来让大家看看就知道了
c*s*d*n 2010-02-22
  • 打赏
  • 举报
回复
c_reporting.sql.pre是个package
修改的是里面的几个procedure.
请问 如果想只重新执行下修改的proceduce,不是重新执行package的sql,可以吗?
谢谢
YY_MM_DD 2010-02-22
  • 打赏
  • 举报
回复
这个还有问题???
他这个是根据你的SQL来的...现在你用的撤消表空间,
并不是数据表空间
比如说临时表空间是用来排序时候使用的.
我看你还是优化你的sql吧.百你的c_reporting.sql.pre贴出来让大家看看就知道了

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧