Есть ли способ получить blob-объект с помощью logminer в Oracle

Я вставил BLOB в строку, используя PLSQL, вот так...

CREATE directory images as '/root/images';

DECLARE
    l_blob BLOB;
    v_src_loc BFILE := BFILENAME('IMAGES', 'person.jpg');
    l_dest_offset INTEGER := 1;
    l_src_offset INTEGER := 1;
BEGIN
    INSERT INTO lob_table 
    VALUES(1, empty_blob()) 
    RETURN doc INTO l_blob;
    DBMS_LOB.fileopen(v_src_loc, DBMS_LOB.file_readonly);
    DBMS_LOB.loadblobfromfile(
       dest_lob     => l_blob,
       src_bfile    => v_src_loc,
       amount       => DBMS_LOB.lobmaxsize,
       dest_offset  => l_dest_offset,
       src_offset   => l_src_offset);
    DBMS_LOB.fileclose(v_src_loc);
    COMMIT;
 END;

Я использую LogMiner для сбора измененных данных с помощью logMiner SQL_REDO

EXECUTE DBMS_LOGMNR.START_LOGMNR(
   STARTSCN => 1524107,
   ENDTIME => 1524144,
   OPTIONS => DBMS_LOGMNR.SKIP_CORRUPTION + 
              DBMS_LOGMNR.NO_SQL_DELIMITER + 
              DBMS_LOGMNR.NO_ROWID_IN_STMT + 
              DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG +
              DBMS_LOGMNR.CONTINUOUS_MINE + 
              DBMS_LOGMNR.COMMITTED_DATA_ONLY + 
              DBMS_LOGMNR.STRING_LITERALS_IN_STATEMENT);

SELECT * FROM v$logmnr_contents WHERE operation_code IN (1, 2, 3) AND commit_scn >= 1524107;

В настоящее время я занимаюсь майнингом OPERATION_CODE = 1, 2, 3т.е. вставка, обновление и удаление. Но я не могу получитьBLOB ценности.

Есть ли способ получить данные больших двоичных объектов с помощью LogMiner?

PS: Я пробовал использовать LogMiner для OPERATION_CODE = 9 то есть LOB_WRITE и обнаружил несколько строк, содержащих код PL-SQL dbms_lob.write запись шестнадцатеричных строк с использованием HEXTORAW.

  • Можно ли воссоздать двоичный файл с помощью этого метода?

  • Если да, всегда ли этот метод будет работать?

  • Есть ли элегантный способ извлечения данных BLOB?

0 ответов

Другие вопросы по тегам