Oracle
 sql >> Base de données >  >> RDS >> Oracle

Ce que vous devez savoir sur la table FND_LOBS dans Oracle Apps

FND_LOBS est l'une des grandes et importantes tables d'Oracle Apps. Voyons différentes choses importantes à propos de cette table

Table des matières

  • Qu'est-ce qui est stocké dans FND_LOBS ?
  • Comment purger les entrées de FND_LOBS ?
  • Comment trouver l'espace alloué dans les lobsegments par rapport à l'espace utilisé ?
  • Comment trouver l'espace utilisé par chaque programme
  • Comment changer la PCTVERSION
  • Comment voir le contenu du LOB ?
  • Comment télécharger le fichier joint à partir de fnd_lobs

Qu'est-ce qui est stocké dans FND_LOBS ?

FND_LOBS stocke des informations sur tous les LOB gérés par le gestionnaire de fichiers génériques (GFM). Chaque ligne comprend l'identificateur de fichier, le nom, le type de contenu et les données réelles. Chaque ligne comprend également les dates auxquelles le fichier a été téléchargé et sa date d'expiration, le nom et la balise du programme associé, ainsi que la langue et le jeu de caractères Oracle. Les données du fichier, qui sont un LOB binaire, sont stockées exactement telles qu'elles sont téléchargées à partir d'un navigateur client, ce qui signifie qu'aucun travail de traduction n'est requis lors d'un téléchargement pour le rendre compatible HTTP. Par conséquent, les téléchargements à partir de sources autres que le navigateur devront préparer le contenu de manière appropriée (par exemple, en séparant les lignes avec CRLF).

Comment purger les entrées de FND_LOBS ?

Le programme simultané "Purger les données obsolètes du gestionnaire de fichiers génériques" est utilisé pour purger FND_LOBS, et il purgera les entrées en fonction du type
– les entrées pour l'aide de l'application (iHelp) – ne seront pas purgées
– les pièces jointes – sera purgé s'il a expiré
– exporte – sera purgé

L'expiration des pièces jointes doit être effectuée via l'application, et non la mise à jour manuelle du tableau.

Vous pouvez voir les entrées qui ont une date d'expiration par le nom_programme en cours d'exécution :

select program_name,count(*)
from FND_LOBS
where expiration_date is not NULL
group by program_name;

Les entrées sans date d'expiration ont pu être trouvées en cours d'exécution :

select program_name,count(*)
from FND_LOBS
where expiration_date is NULL
group by program_name;

Comment trouver l'espace alloué dans les lobsegments par rapport à l'espace utilisé ?

Pour savoir combien d'espace est réellement utilisé par les lobsegments, vous pouvez exécuter :

select sum(dbms_lob.getlength (FILE_DATA)) from FND_LOBS;
SUM(DBMS_LOB.GETLENGTH(FILE_DATA))
----------------------------------
57253782456

L'espace total alloué dans les extensions peut être trouvé en cours d'exécution :

select sum(bytes), s.segment_name, s.segment_type
from dba_lobs l, dba_segments s
where s.segment_type = 'LOBSEGMENT'
and l.table_name = 'FND_LOBS'
and s.segment_name = l.segment_name
group by s.segment_name,s.segment_type;
SUM(BYTES) SEGMENT_NAME SEGMENT_TYPE
---------- --------------------------------- ------------------
525472547345 SYS_LOB0000057C00004$$ LOBSEGMENT

Comment trouver l'espace utilisé par chaque programme

select
program_name,round(sum(dbms_lob.getlength (FILE_DATA))/1024/1024,0) "Size(M)"
from APPS.fnd_LOBS
where expiration_date is NULL
group by program_name order by 2 desc
PROGRAM_NAME Size(M)
-------------------------------- ----------
FNDATTCH 864
FND_HELP 280
export 7
HRMS_ADI 5
PERWSIMG 3
IBE 0
PER_P11D_gb_UK.pdf 0
.

Comment changer la VERSION PCT

ALTER TABLE APPLSYS.FND_LOBS MODIFY LOB (FILE_DATA) ( PCTVERSION 0 );

Comment voir le contenu du LOB ?

-- Read from fnd_lobs a given file_id
set serveroutput on size 1000000;
declare
  my_lob BLOB;
  Buffer      RAW(255);
  Amount      BINARY_INTEGER := 255;
  Position    INTEGER := 1;
begin
   select file_data into my_lob
   from fnd_lobs
   where file_id = &enter_file_id;
 
   dbms_lob.open(my_lob, dbms_lob.lob_readonly);
   DBMS_OUTPUT.PUT_LINE('Start of data');

   loop
      DBMS_LOB.READ(my_lob, Amount, Position, Buffer);
      /* Process the buffer: */
      DBMS_OUTPUT.PUT_LINE(utl_raw.cast_to_varchar2(Buffer));
      Position := Position + Amount;
   end loop;

   dbms_lob.close(my_lob);
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('End of data');
end;
/

Comment télécharger le fichier joint à partir de fnd_lobs

  1. Obtenez le FILEID de la base de données pour le fichier LOB que vous souhaitez télécharger, par exemple :
select FILE_ID,FILE_NAME from FND_LOBS where FILE_ID=123599;
FILE_ID FILE_NAME
---------- -------------
1212 TEST.XLS

2. Exécutez la commande FNDGFU. Pour l'exemple de fichier ci-dessus :

FNDGFU apps/apps 0 Y DOWNLOAD=1212 TEST.XLS

Articles connexes
comment déplacer un segment lob :comment déplacer un segment lob d'un tablespace à un autre, comment récupérer de l'espace après une suppression majeure dans le segment lob, comment utiliser la commande de rétrécissement dans les segments LOB
Pièces jointes dans les applications Oracle :vérifier consultez cet article sur les pièces jointes dans Oracle Applications R12, comment elles sont stockées, les tables impliquées dans le processus et les requêtes
Audit Oracle EBS :comment configurer Oracle EBS Auditing, comment ajouter des tables dans le groupe d'audit, comment sélectionner audit, demande simultanée de mise à jour de la piste d'audit
Créer un utilisateur EBS à partir du backend :cet article explique comment créer un utilisateur EBS à partir du backend, comment attribuer la responsabilité de l'application à l'utilisateur créé