Табличное пространство SYSTEM превышает 64 ГБ

Моя версия базы данных Oracle - 12.1.0.2.0

БД, о которой я говорю, используется для создания «пакетов» (не пакета oracle, а пакета, содержащего коды / сценарии), которые развертываются в средах UAT / Production и т. Д. Для этого новые схемы создаются во время выполнения, а старые, которые больше не используются, периодически удаляются.

Табличное пространство, в котором создаются / удаляются эти схемы, имеет размер 84 ГБ, и доступно более 50% свободного пространства.

Табличное пространство SYSTEM размером 64 ГБ имеет только 10 МБ свободного места.

Все сегменты в табличном пространстве SYSTEM принадлежат SYS или SYSTEM.

Первые 15 строк нижеследующего запроса:

SELECT owner, 
       segment_name,
       segment_type,
       bytes
  FROM dba_segments
 WHERE tablespace_name = 'SYSTEM'
 ORDER BY bytes desc;

вывод вышеуказанного запроса

Правильно ли звучит СИСТЕМА 64 ГБ табличного пространства? Можно ли его уменьшить, и если да, то как?


person Kailash    schedule 08.11.2019    source источник
comment
Количество записей для таблиц:   -  person Kailash    schedule 08.11.2019
comment
ИСТОЧНИК $ 116738579   -  person Kailash    schedule 08.11.2019
comment
IDL_UB1 $ 627158   -  person Kailash    schedule 08.11.2019
comment
IDL_UB2 $ 330314   -  person Kailash    schedule 08.11.2019
comment
АРГУМЕНТ $ 5298051   -  person Kailash    schedule 08.11.2019
comment
Если вы подключаетесь как СИСТЕМА и запускаете этот запрос, возвращает ли он строки? select * from user_objects where oracle_maintained != 'Y' (Предполагается, что ваш тег правильный и вы работаете на 12c.)   -  person APC    schedule 08.11.2019
comment
15 гигабайт исходного кода звучат неправильно. Взгляните на SYS.SOURCE $ - много ли там дополнительных копий кода? Но даже если кода там больше нет, я не уверен, что вы можете с этим что-нибудь сделать. Похоже, эту таблицу нельзя уменьшить. Это может быть проблема без простого решения - просто добавьте немного места.   -  person Jon Heller    schedule 09.11.2019
comment
@APC, вывод запроса - 1.   -  person Kailash    schedule 11.11.2019
comment
POST_REFRESH_LOG 20489 20489 ТАБЛИЦА 06-ФЕВ-19 06-ФЕВ-19 2019-02-06: 10: 06: 46 ДЕЙСТВИТЕЛЬНО N N N 1 NONE N   -  person Kailash    schedule 11.11.2019


Ответы (1)


SOURCE $ - это любой исходный код PLSQL (процедуры, пакеты, типы и т. Д.).

Точно так же IDL_UBL1, I_SOURCE связаны с тем же.

Ваше дополнение означает, что у вас 116 миллионов строк PLSQL в этой базе данных. Это неплохой код :-)

Если вам действительно действительно нужно 116 миллионов строк исходного кода, то я не думаю, что табличное пространство 64G SYSTEM неразумно.

Большой размер C_OBJ # предполагает, что у вас потенциально много объектов в вашей базе данных. Так что взгляните на DBA_OBJECTS, чтобы найти возможности для очистки.

person Connor McDonald    schedule 10.11.2019
comment
Поскольку это табличное пространство SYSTEM, я не уверен, что отбрасывать, а что не отбрасывать. Прочитав несколько статей, меня предупредили, что нельзя ничего удалять из табличного пространства SYSTEM, так как это код, используемый Oracle. На DBA_OBJECTS позвольте мне взглянуть и вернуться к вам. Спасибо. - person Kailash; 11.11.2019
comment
В dba_objects 1771539 записей. Из них 13476 принадлежат SYS, а 645 - SYSTEM. Есть 285 пользователей (о которых я упоминал ранее, которые создаются на лету и периодически удаляются через несколько недель), у каждого из которых около 6-7 тысяч объектов. Когда пользователь удаляется, требуется ли очистка для освобождения места от C_OBJ #? или это обрабатывается неявно? - person Kailash; 11.11.2019
comment
Никогда не удаляйте что-либо, принадлежащее SYS (или любой другой внутренней учетной записи Oracle), если вы случайно не создали это сами. Свободное пространство будет повторно использовано другими объектами, если они созданы или увеличиваются, но я не думаю, что вы получите это пространство обратно. - person Connor McDonald; 12.11.2019
comment
Это значит, что ничего нельзя сделать, кроме добавления места? - person Kailash; 12.11.2019
comment
Если вам нужны эти 116 миллионов строк кода, тогда да, вам нужно это место. Если вам не нужны эти строки кода, отбросьте проблемные объекты PLSQL, и это пространство будет доступно для нового / заменяющего кода. Но вы не вернете это пространство, если не экспортируете / не импортируете всю базу данных - person Connor McDonald; 18.11.2019