Архив на категорию 'Заметки'
Чтение/запись из BLOB полей в Oracle
Иногда необходимо читать и писать из Blob полей, вот как это можно делать:
Чтение:
CREATE OR REPLACE PROCEDURE Read_Text_From_BLOB (
p_id IN NUMBER) IS
lob_loc BLOB;
BEGIN
DBMS_OUTPUT.ENABLE(100000);
SELECT lob_text INTO lob_loc
FROM test_blob
WHERE id = p_id;
DBMS_OUTPUT.PUT_LINE('THE LENGTH IS : ' || DBMS_LOB.GETLENGTH(lob_loc));
DBMS_OUTPUT.PUT_LINE(
'THE BLOB IS READ : ' ||
UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(lob_loc, 200, 1))
);
END;
/
Запись:
CREATE OR REPLACE PROCEDURE Write_Text_To_BLOB (
p_id IN NUMBER
, p_buffer IN VARCHAR2)
IS
lob_loc BLOB;
BEGIN
INSERT INTO test_blob (id, lob_text, timestamp)
VALUES (p_id, empty_blob(), sysdate)
RETURNING lob_text INTO lob_loc;
-- DBMS_LOB.WRITEAPPEND(lob_loc, UTL_RAW.LENGTH(p_buffer), p_buffer);
DBMS_LOB.WRITE(lob_loc, LENGTH(p_buffer), 1, UTL_RAW.CAST_TO_RAW(p_buffer));
END;
/
Источник: http://www.idevelopment.info/data/Oracle/DBA_tips/LOBs/LOBS_11.shtml
Ограничение на количество сессий и процессов в ORACLE
Если Вы задались вопросом, какое максимальное количество сессий и процессов разрешено в oracle, то Вы можете это узнать сделав следующий запрос:
Сбор статистики базы. Всегда ли это хорошо?
Изначально я думал что сбор статистики всегда помогает базе, от чего запросы в ней начинают выполняться значительнее быстрее, однако на днях сталкнулся с обратной ситуацией. Сбор статстики привел только к понижению скорости выполнения запросов… пришлось удалить статистику, после чего работоспособность восстановилась.