告警ORA-31684-约束存在检查分析

    1. 文档说明

某项目impdp导入过程中报错如下

30-JAN-24 22:54:01.411: ORA-31684: Object type CONSTRAINT:"SMP"."SYS_C0056287" already exists

30-JAN-24 22:54:01.411: ORA-31684: Object type CONSTRAINT:"SMP"."SYS_C0056439" already exists

    1. 检查过程
      1. 查询约束所在的表信息

SQL> connect smp/XXXX

SQL> col owner for a10

SQL> col column_name for a20

SQL> col POSITION for a10

SQL> col TABLE_NAME for a20

SQL> SELECT A.OWNER,A.TABLE_NAME,A.COLUMN_NAME, A.POSITION  FROM USER_CONS_COLUMNS A   WHERE A.CONSTRAINT_NAME='SYS_C0056287';

OWNER      TABLE_NAME COLUMN_NAM   POSITION

---------- ---------- ---------- ----------

SMP        SYS_ROLE   ROLE_ID

      1. 查询表的创建语句

SQL>

SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','SYS_ROLE') FROM DUAL;

DBMS_METADATA.GET_DDL('TABLE','SYS_ROLE')

--------------------------------------------------------------------------------

  CREATE TABLE "SMP"."SYS_ROLE"

   (    "ROLE_ID" NVARCHAR2(32) NOT NULL ENABLE,

      1. 查询表上的约束

SQL> SELECT A.TABLE_NAME, A.CONSTRAINT_NAME, A.CONSTRAINT_TYPE  FROM USER_CONSTRAINTS A WHERE A.TABLE_NAME='SYS_ROLE'; 

TABLE_NAME CONSTRAINT_NAME                                                                                                                  C
---------- -------------------------------------------------------------------------------------------------------------------------------- -
SYS_ROLE   SYS_C0061059                                                                                                                     C
SYS_ROLE   SYS_C0056287                                                                                                                     C
SYS_ROLE   SYS_C0083894 

      1. 问题结论

检查发现对应的约束确实是存在的。因此可以忽略。现场删除掉smp用户信息用,重新单独导入smp信息,问题解决。因此怀疑是前期清理数据不彻底导致。

      1. 问题延伸

创建主表并配置主键

create table a_tab ( id number, text varchar2(10), constraint a_tab_pk primary key (id) );

创建子表

create table b_tab (

id number,

text varchar2(10) );

新增约束

alter table b_tab add constraint b_tab_fk1 foreign key (id) references a_tab (id);

再次增加约束,提示已经存在。

alter table b_tab add constraint b_tab_fk2 foreign key (id) references a_tab (id);

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值