Архив на месяц Май, 2009

Чтение/запись из BLOB полей в Oracle

Опубликовано: Май 14, 2009, категория: Заметки.

Иногда необходимо читать и писать из 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

Опубликовано: Май 13, 2009, категория: Новости.

Недавно понадобилось мне сделать контроль успешности выполнения 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

Опубликовано: Май 6, 2009, категория: Заметки.

Если Вы задались вопросом, какое максимальное  количество сессий и процессов разрешено в oracle, то Вы можете это узнать сделав следующий запрос:

(далее…)