web-dev-qa-db-fra.com

Comprendre les segments Lob (SYS_LOB) dans Oracle?

La plupart des tables (sinon toutes) contiennent un champ "blob". L'une des tables qui stocke les journaux de l'action de l'utilisateur est maintenant passée à 8 Go (environ 5 millions d'enregistrements).

Et notre DBA a vu que ce schéma consomme désormais de l'espace de manière exponentielle. Nous avons étudié un peu et avons découvert qu'il existe l'une des tables avec (SYS_LOB) qui prend environ 116 Go de base de données de 140 Go.

Notre DBA nous a indiqué que cette table est liée à la table qui enregistre les journaux des actions des utilisateurs (soit 8 Go)

Quelqu'un sait-il ce que font ces tables SYS_LOB? Le blob réel est-il enregistré dans la table que nous avons créée OR Oracle stocke réellement ces blob dans une table différente (si oui, alors SYS_LOB serait cette table)?

21
MOZILLA

Il n'y a pas de table SYS_LOB dans la base de données Oracle (au moins, aucune table de ce type ne fait partie d'une installation de base de la base de données. Il existe une table DBA_LOBS qui affiche des informations sur toutes les colonnes LOB de la base de données, mais il ne stocke en fait aucune donnée LOB, juste des métadonnées. Les segments LOB réels dans la base de données ont des noms générés par le système qui prennent la forme SYS_LOB identificateur $$.

Je suppose que votre DBA a identifié un segment nommé SYS_LOBidentifiant $$ qui consomme 116 Go d'espace. En supposant que ce soit correct, vous pouvez trouver quelle colonne de quelle table cette colonne LOB mappe en utilisant le DBA_LOBS table, c'est-à-dire.

SELECT owner, table_name, column_name
  FROM dba_lobs
 WHERE segment_name = 'SYS_LOB<<identifier>>$$'
42
Justin Cave