首页 > 解决方案 > Oracle中如何排除和查找RecycleBin的值

问题描述

在 Oracle 11g 中查询约束时,执行以下查询。

SELECT 
                CC.OWNER as "owner"
            ,   CC.TABLE_NAME as "tableName"
            ,   CC.COLUMN_NAME as "columnName"
            ,   CC.CONSTRAINT_NAME as "constraintName"
            ,   CC.POSITION as "position"
    FROM ALL_CONS_COLUMNS CC 
    WHERE CC.OWNER IN ('<schemaName>')
    ORDER BY CC.POSITION ASC;

但是,recyclebin 中的数据也会被搜索,如下所示。(供参考,下图中的所有者为模式名 Docker。)

在此处输入图像描述

我在 Mac OS Docker 上运行。是不是因为是 Docker 环境才出现?

我根本不需要这些数据,所以我想检查一下。

除了使用purge recyclebin命令清除 recyclebin中的数据之外,还有什么方法?

标签: oraclemacosdockerrecycle-bin

解决方案


您可能会使用ALL_TABLES不会返回已删除的表这一事实,因此简单的内部连接 将进行消除:OWNER, TABLE_NAME

SELECT 
                CC.OWNER as "owner"
            ,   CC.TABLE_NAME as "tableName"
            ,   CC.COLUMN_NAME as "columnName"
            ,   CC.CONSTRAINT_NAME as "constraintName"
            ,   CC.POSITION as "position"
    FROM ALL_CONS_COLUMNS CC 
    JOIN ALL_TABLES T on T.OWNER = CC.OWNER and T.TABLE_NAME = CC.TABLE_NAME /* Added line */
    WHERE CC.OWNER IN ('REPORTER')
    ORDER BY CC.POSITION ASC;

推荐阅读