ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4

我们最近有两台测试服务器在oci direct load期间出现下列异常:

从表象上看,是我们在对表执行ddl操作,确实内部也是用了truncate table XXX,可是这个XXX并不是回收站里面的XXX。即使是purge dba_recyclebin之后,也可能还是会有这个问题,所以这个问题只能说和回收站有关、但是并不一定是该表本身被DDL的原因。目前已知除了直接对回收站中的表直接DDL之外(这一般用户不会直接进行,但是oracle后台的各种自身统计收集任务是允许这么做的),有可能是表空间中存在一些回收站,导致了XXX表和该表空间中已回收的对象存在空间争用(但是我看下了dba_data_files,可用空间是足够的);还有一个可能的已知原因是auto space advisor任务在跑。

前者可以通过下列语句清理:

purge tablespace XXX;

后者可以通过下列方式禁用:

begin
  dbms_auto_task_admin.disable(client_name => ‘auto space advisor‘,
                               operation   => null,
                               window_name => null);
end;
/

伴随着ORA-38301,通常在alert.log里面会有日志:performing DML/DDL operation over object in bin. 但是他没有被当做ERROR或者WARNING来显示和对待。

我们的错误重放过程和https://knowledge.exlibrisgroup.com/Aleph/Knowledge_Articles/Oracle_message_in_alert_log%3A__%22performing_DMLDDL_operation_over_object_in_bin%22非常像,但是模拟不出来,有很多的帖子去模拟,比如http://www.xifenfei.com/2011/07/performing-dmlddl-operation-over-object-in-bin%E9%94%99%E8%AF%AF%E6%A8%A1%E6%8B%9F.html,实际上业务根本不是这么操作的,所以这些所谓的专家就是这么忽悠的,通常就是为了凑而凑。

至于ORA-39776,它纯粹是表象,需要看具体的cause。

参考:

https://blog.csdn.net/lansesl2008/article/details/16116749

http://zy8643954.iteye.com/blog/701831

原文地址:https://www.cnblogs.com/zhjh256/p/9459363.html

时间: 2024-08-27 06:48:45

ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4的相关文章

Orecle Mysql 基本sql语句DDL & DML 介绍与总结 by 冰琉璃

先给大家普及一下安装mysql的简易方法:yum yum search mysql (查找关于mysql的内容) 找到后需要安装3个内容 mysql.i386 mysql-server.i386 mysql-devel.i386 安装过后 service mysqld start (启动mysql服务) 进入mysql mysql -h -u root -p 密码直接回车 开始密码为默然:以后可以在mysql里面改密码或者创建账号等操作 Mysql的sql语句大致分为4种  DDL (定义语句)

ORA-14551: cannot perform a DML operation inside a query

在Oracle函数中进行insert操作就会报 ORA-14551: cannot perform a DML operation inside a query 问题原因: 对数据库有写操作(insert.update.delete.create.alter.commit)的函数,无法简单的用SQL来调用的 解决方法: 需要再声明添加PRAGMA AUTONOMOUS_TRANSACTION; 例如: create or replace function update_contractDate(

SQL中的四种语言DDL,DML,DCL,TCL

1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一.用于定义数据库的三级结构,包括外模式.概念模式.内模式及其相互之间的映像,定义数据的完整性.安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME 2.DML(Data Manipulation Lang

DDL\DML\DCL\DQL

[DML] DML = Data Manipulation Language,数据操纵语言,命令使用户能够查询数据库以及操作已有数据库中的数据的计算机语言.具体是指是UPDATE更新.INSERT插入.DELETE删除.主要是对数据库中一条或者多条数据进行操纵. [DDL] 数据库模式定义语言DDL(DataDefinition Language),是用于描述数据库中要存储的现实世界实体的语言.一个数据库模式包含该数据库中所有实体的描述定义.这些定义包括结构定义.操作方法定义等.包括了CREAT

数据库必会必知 之 SQL四种语言:DDL DML DCL TCL

作者:泥瓦匠 今天群里面讨论,DDL 还是 DML,我这种小白还是总结下他们的区别吧. 1. DDL - Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREATE,ALTER,DROP等,下面用例子详解.该语言不需要commit,因此慎重. CREATE - to create objects in the database   在数据库创建对象 例:CREATE DATABASE test; // 创建一个名为test的数据库 ALTER

SQL四种语言:DDL,DML,DCL,TCL

1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema. DDL是SQL语言的四大功能之一.用于定义数据库的三级结构,包括外模式.概念模式.内模式及其相互之间的映像,定义数据的完整性.安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME 2.DML(Data Manipulation Lang

ddl dml dcl

分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE

oracle DDL,DML,DCL, 基础概念详解

一.SQL语言,有两个组成部分: DML(data manipulation language):它们是SELECT.UPDATE.INSERT.DELETE,命令是用来对数据库里的数据进行操作的语言. DDL(data definition language):主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用. 二.SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML

DDL/DML是什么?

DDL:(Data Definition Language)数据库定义语言 它是定义数据库的语言, 里面包含: CREATE ALTER DROP TRUNCATE COMMENT RENAME DML:(Data Manipulation Language)数据操纵语言 它是对数据库进行操作的语言,查询和更新等操作. 动作有: SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE 参考文章:http://www.cnblo