SEGMENT_NAME = SYS_C004035569 这是什么?

SEGMENT_NAME = SYS_C004035569 what is it?

为了检查索引大小,我执行了这个查询:

   SELECT owner, segment_name,SEGMENT_SUBTYPE, bytes/1024/1024 mb
 FROM dba_segments
 WHERE owner = 'PROD2015'
 AND segment_type = 'INDEX' ORDER BY bytes desc;

所以在结果中我有很多索引 (segement_Name),但我不知道它们是什么:

SYS_C004035569,

SYS_C004035554

SYS_C004035579

BIN$CwhVTaY1SUCvWreTMryvQQ==$0

你能给我解释一下吗?

谢谢和问候,

SEGMENT_NAME = SYS_C004035569 what is it?

当您没有显式创建它们但 Oracle 为您创建时,这些是系统命名对象。可以是约束、索引等

例如,如果您创建一个 NOT NULL 约束,您会看到约束名称为 SYS_C.

例如,

SQL> CREATE TABLE t(
  2  ID NUMBER NOT NULL
  3  );

Table created.

SQL>
SQL> SELECT constraint_name,
  2    constraint_type,
  3    table_name,
  4    search_condition
  5  FROM user_constraints
  6  WHERE table_name ='T';

CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION
--------------- --------------- ---------- ----------------
SYS_C0010726    C               T          "ID" IS NOT NULL

SQL>

它是 CHECK 约束 NOT NULL 条件。如果您看到 CONSTRAINT_TYPE,那么您会看到它是 C。而你看到的名字SYS_C是因为它是系统生成的名字.

BIN$CwhVTaY1SUCvWreTMryvQQ==[=15=]

这些是 回收站 中的对象。如果您清除回收站,您将看不到它们。

例如,

SQL> SELECT OBJECT_NAME, ORIGINAL_NAME FROM recyclebin;

no rows selected

SQL> drop table t;

Table dropped.

SQL> SELECT OBJECT_NAME, ORIGINAL_NAME FROM recyclebin;

OBJECT_NAME                    ORIGINAL_NAME
------------------------------ ---------------
BIN$R7nbYt1KSgWqCT+OEXhaAQ==[=11=] T

SQL> purge recyclebin;

Recyclebin purged.

SQL> SELECT OBJECT_NAME, ORIGINAL_NAME FROM recyclebin;

no rows selected

感谢大家的回答,尤其是@agent5566 和@Lalit Kumar B。

你说得对,那些是由 oracle 自动创建的,我编写了下一个查询来确定与哪些表相关,我使用了 dba_segments 和 dba_constraints :

SELECT seg.owner as Schema,
seg.segment_name as Index_Name ,
cons.table_name, 
cons.CONSTRAINT_TYPE,
seg.bytes/1024/1024 as size_in_MB 
FROM dba_segments seg left join dba_constraints cons on seg.segment_name =  cons.CONSTRAINT_NAME
WHERE seg.owner = 'PROD2015'
AND 
segment_type = 'INDEX' 
ORDER BY bytes desc;