Как найти имя объекта базы данных Oracle по имени сегмента? - PullRequest
0 голосов
/ 20 октября 2019

Я переместил все свои таблицы и индексы в другие табличные пространства. После операции все объекты из user_tables и user_indexes имеют новые имена табличных пространств.

Но в user_segments все еще есть некоторые старыеИмена табличных пространств:

  • Имя_раздела: пусто,
  • Тип_сегмента: TABLE или INDEX,
  • Тип_сегмента: ASSM.

Вопросы:

  1. Почему в user_indexes нет объектов со старыми именами табличных пространств, в то время как некоторые сегменты в user_segments имеют старые табличные пространства?

  2. Как узнать имена объектов базы данных по имени сегментов, чтобы их можно было перемещать и в новые табличные пространства?

1 Ответ

0 голосов
/ 20 октября 2019

Я не администратор базы данных.

В любом случае, посмотрите, имеет ли это смысл.

Путь выглядит следующим образом: данные таблицы находятся в блоке данных> экстент> сегмент> табличное пространство.

SQL> select t.table_name,
  2         e.extent_id,
  3         s.segment_name,
  4         s.segment_type,
  5         s.segment_subtype,
  6         s.tablespace_name
  7  from user_tables t join user_extents e on e.segment_name = t.table_name
  8  join user_segments s on s.segment_name = e.segment_name
  9  where t.table_name = 'EMP';

TABLE_NAME  EXTENT_ID SEGMENT_NAME SEGMENT_TYPE SEGMENT_SU TABLESPACE_NAME
---------- ---------- ------------ ------------ ---------- --------------------
EMP                 0 EMP          TABLE        ASSM       USERS

SQL>

Очевидно, segment name = table name, что означает, что если вы хотите найти объекты, принадлежащие определенному табличному пространству, то это может быть то, что вы ищете:

SQL> select s.segment_name, s.segment_type
  2  from user_segments s
  3  where s.tablespace_name = 'USERS';

SEGMENT_NAME SEGMENT_TYPE
------------ ------------
T1           TABLE
T2           TABLE
EMP          TABLE
DEPT         TABLE
<snip>
PK_SC1       INDEX
SYS_C007864  INDEX
SYS_C007928  INDEX
33 rows selected.

SQL>
...