Архив на месяц Май, 2009
Чтение/запись из 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 и bash
Недавно понадобилось мне сделать контроль успешности выполнения RMAN бэкапа.
Пошел по простому пути: добавил в конец скрипта несколько строчек кода, которые проверяют были ли сообщения типа RMAN-XXXX или ORA-XXXX, которые отсутсвуют в успешнопрошедшем бэкапе. Если такие строчки есть - значит была ошибка.
ERROR1=`cat /home/backup/rman_backup/rman_backup.log | grep RMAN- |wc -l`
ERROR2=`cat /home/backup/rman_backup/rman_backup.log | grep ORA- |wc -l`ERRORS=`expr $ERROR1 + $ERROR2`
if ["$ERRORS" = "0"]; then
/opt/app/oracle/product/92/bin/sqlplus sys/xxxx\@SID <<EOF
begin
all_ok();
commit;
end;
/
EOF
fi
Ограничение на количество сессий и процессов в ORACLE
Если Вы задались вопросом, какое максимальное количество сессий и процессов разрешено в oracle, то Вы можете это узнать сделав следующий запрос: