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;
为了检查索引大小,我执行了这个查询:
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;