Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 关于Oracle清除索引语句_Sql_Oracle - Fatal编程技术网

Sql 关于Oracle清除索引语句

Sql 关于Oracle清除索引语句,sql,oracle,Sql,Oracle,我有点担心Oracle数据库的SQL PURGE语句。根据Oracle文档,我们可以清除索引ref 但根据管理中的Oracle文档,索引只是和表关联的对象。所以索引不能单独从回收站中清除(事实上,当清除表时它会被清除) 有人能给我一个例子,我可以模拟“清除索引”如果您删除一个有索引的表,那么该表及其索引都将移动到recyclebin。此时,您可以单独清除索引 create table demo (id integer); create index demo_ix on demo(id); d

我有点担心Oracle数据库的SQL PURGE语句。根据Oracle文档,我们可以清除索引ref

但根据管理中的Oracle文档,索引只是和表关联的对象。所以索引不能单独从回收站中清除(事实上,当清除表时它会被清除)


有人能给我一个例子,我可以模拟“清除索引”

如果您删除一个有索引的表,那么该表及其索引都将移动到recyclebin。此时,您可以单独清除索引

create table demo (id integer);

create index demo_ix on demo(id);

drop table demo;

select r.object_name, r.original_name, r.type from user_recyclebin r;

OBJECT_NAME                     ORIGINAL_NAME           TYPE
------------------------------- ----------------------- -------------------------
BIN$SC08VFzrQAGoWW5b/yBRIQ==$0  DEMO_IX                 INDEX
BIN$zIngUcYDRaqvbVqnesnUtQ==$0  DEMO                    TABLE

purge index demo_ix;

select r.object_name, r.original_name, r.type from user_recyclebin r;

OBJECT_NAME                     ORIGINAL_NAME           TYPE
------------------------------- ----------------------- -------------------------
BIN$zIngUcYDRaqvbVqnesnUtQ==$0  DEMO                    TABLE

谢谢。但我只面临清除索引(在声明主键唯一索引时由oracle隐式创建的索引)的问题。我不能清除这种索引(获取ORA-00604 ORA-02429)。我得出结论,清除索引不适用于唯一/主索引。Oracle文档只需说“指定回收站中要清除的表或索引的名称。您可以指定原始用户指定的名称或系统生成的Oracle数据库名称…”。我认为他们应该更新这个以节省读者的时间。是的,ORA-02429:不能删除用于强制执行唯一/主键的索引是支持约束的索引的标准<代码>更改表“BIN$cOzxF7g4TqeFBc9xukxTqA==$0”删除主键ORA-38301:无法对回收站中的对象执行DDL/DML。我猜你必须取消删除表,删除或禁用其PK,然后再次删除表。