如何在Oracle中刷新数据字典?

如何在Oracle中刷新数据字典?,oracle,oracle11g,data-dictionary,Oracle,Oracle11g,Data Dictionary,我删除了oracle中的一些表 DROP TABLE hr.admin_emp CASCADE CONSTRAINTS; 但已删除表的主键约束仍在数据字典中(所有_约束)。现在我的问题是如何更新数据字典,使其不显示已删除表的主键?例如,我使用此查询选择hr模式: SELECT A.TABLE_NAME,A.COLUMN_NAME,A.CONSTRAINT_NAME FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS B WHERE B.OWNER='HR' AND

我删除了oracle中的一些表

DROP TABLE hr.admin_emp CASCADE CONSTRAINTS;
但已删除表的主键约束仍在数据字典中(所有_约束)。现在我的问题是如何更新数据字典,使其不显示已删除表的主键?例如,我使用此查询选择hr模式:

SELECT A.TABLE_NAME,A.COLUMN_NAME,A.CONSTRAINT_NAME FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS B WHERE B.OWNER='HR' AND A.OWNER='HR'AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND B.constraint_type='P';
结果是:

REGIONS                        REGION_ID
COUNTRIES                      COUNTRY_ID
LOCATIONS                      LOCATION_ID
DEPARTMENTS                    DEPARTMENT_ID
JOBS                           JOB_ID
EMPLOYEES                      EMPLOYEE_ID
JOB_HISTORY                    EMPLOYEE_ID
JOB_HISTORY                    START_DATE
BIN$rRfAMUTnQROvBfuhBCT6RQ==$0 ID
BIN$87Rd5FE7Rj2eQbim0H2EzA==$0 PK_B
BIN$bQeeD0M/QMSpLzYjZqAGeA==$0 PK_A
BIN$RzMu6nZiQ2yuj+4xQf7eAQ==$0 PK_A
表名怪异的行是我删除的行。

您删除的表是

您的原始约束名称不可见-您再也看不到主键名称(在该视图中;您可以从
user\u recyclebin
中检索它)-但约束在内部仍然可用,因此如果需要,可以快速恢复

数据字典视图中显示为
BIN$…
的对象只有在您打开回收站时才会消失。但一旦这样做,它们就永远消失了,如果不恢复整个数据库,就无法恢复它们,因此只有在确定不再需要它们时才可以这样做


您不能、不应该、也不能尝试手动更新任何数据字典对象或Oracle内部管理的任何其他对象。

要从recyclebin(当前用户)中删除所有删除的对象,请执行以下操作:

PURGE RECYCLEBIN;
PURGE DBA_RECYCLEBIN;
DROP TABLE t1 PURGE;

要从recyclebin(系统范围)中删除所有丢弃的对象:

PURGE RECYCLEBIN;
PURGE DBA_RECYCLEBIN;
DROP TABLE t1 PURGE;
也可以删除表格,而无需将其发送到recyclebin。示例:

PURGE RECYCLEBIN;
PURGE DBA_RECYCLEBIN;
DROP TABLE t1 PURGE;

“但删除表的主键约束仍然在数据字典中”-我不相信这一点。这对同一用户是一个约束吗?您能否显示您认为可以证明这一点的SELECT语句的输出?您**从未**使用DML语句从数据字典中删除数据。这些是基于sys视图和表构建的视图,其中的数据被刷新以反映数据库的当前状态。我没有从数据字典中删除数据,我删除了一些表,但数据字典仍然显示删除表的约束!