如何在Oracle中刷新数据字典?
我删除了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
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视图和表构建的视图,其中的数据被刷新以反映数据库的当前状态。我没有从数据字典中删除数据,我删除了一些表,但数据字典仍然显示删除表的约束!