Есть ли способ получить 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?