oracle - 我可以在 Oracle 中删除整个表而不撤消吗?
问题描述
我有一张桌子直到最近都很好用。我有一个与这个表交互的程序,步骤是......
- 删除所有记录
- 加载所有记录
最近记录的数量似乎开始使我们的 SQL 实例超载,当我尝试运行删除命令时,我得到......
ORA-30036: unable to extend segment by 128 in undo tablespace 'name'
我尝试使用 truncate 但我没有权限。有没有办法可以在没有撤消表空间的情况下删除?这适用于 SQL 开发人员,但我也希望它与 JDBC 连接一起使用。
解决方案
基本上,您正在尝试模拟语句中的功能。TRANCATE TABLE
DELETE
因此,您应该明确地使用 TRUNCATE TABLE
它,因为它产生的量要少得多UNDO
,而且它会将使用的空间释放到MINEXTENTS
.
如果该表不在访问用户模式中,则您需要获得DROP ANY TABLE
可能有问题的权限。
一个简单的解决方法是在执行(立即)的表的架构中定义一个存储过程,TRUNCATE
并且只请求EXECUTE
该过程的授权。
推荐阅读
- excel - 在具有特定文件名格式的目录中查找最新文件
- javascript - 如何使用 JQuery 在 Kendo Ui Grid 上刷新“页脚”
- typescript - 为什么 RematchDispatch 在存在同名的 reducer 和 effect 时会给出 `never` 类型?
- javascript - 如何在下一个 js 头中捕获日期?
- spring-boot - 在本地网络中发布 SpringBoot 应用程序并使用 zeroconf 使其可用
- angular - ERROR 错误:未捕获(承诺中):错误:NG0200:检测到 DI 中的循环依赖
- java - Java Spring Actuator Grafana - http_server_requests_seconds_max 和 http_server_requests_seconds::sum/count 之间请求不同的时间
- php - 严重性:错误 --> 异常:“$email”必须是 SendGrid\Mail\From 的实例或有效的电子邮件地址
- python - 抓取 HTML 表格中的特殊图形字符
- ios - iOS中的sqlite3_exec多线程崩溃