jal*_*oly 8 oracle data-dictionary oracle11g
我在oracle中删除了一些表
DROP TABLE hr.admin_emp CASCADE CONSTRAINTS;
Run Code Online (Sandbox Code Playgroud)
但已删除表的主键约束仍在数据字典中(all_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';
Run Code Online (Sandbox Code Playgroud)
结果是:
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
Run Code Online (Sandbox Code Playgroud)
具有奇怪表名的行是我删除的行.
您丢弃的表位于回收站中.
您的原始约束名称不可见 - 您无法再看到主键名称(在该视图中;您可以从中检索它user_recyclebin) - 但约束仍然在内部可用,因此如果您还原表flashback table hr.admin_emp to before drop,它可以快速恢复与.
出现在数据字典视图中的对象BIN$...只有purge在回收站时才会消失.但是一旦你这样做,它们就永远消失了,如果不恢复整个数据库就无法恢复它们,所以只有在你确定不再需要它们时才这样做.
您不能,也不应该,也不能尝试手动更新任何数据字典对象或Oracle内部管理的任何其他内容.