пятница, 27 мая 2011 г.

NetworkManager не включает беспроводную сетевую карту

    Этот пост не совсем про Oracle а про Fedora Linux, на основе которой строится Red Hat Enterprise Linux на базе которого строится Oracle Linux, на котором корпорация Oracle рекомендует разворачивать свою СУБД.
    Вобщем симптомы проблемы следующие: после загрузки беспроводная сетевая карта не активна, попытки её включить ни к чему не приводят, она всё также остаётся в состоянии disable, а интерфейс в down, по dmesg мы видим следующее:
    [ 7632.355105] iwlagn 0000:03:00.0: PCI INT A disabled
    [ 7681.733032] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree:d
    [ 7681.733035] iwlagn: Copyright(c) 2003-2010 Intel Corporation
    [ 7681.733114] iwlagn 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
    [ 7681.733124] iwlagn 0000:03:00.0: setting latency timer to 64
    [ 7681.733239] iwlagn 0000:03:00.0: Detected Intel(R) WiFi Link 5100 AGN, REV=0x54
    [ 7681.754617] iwlagn 0000:03:00.0: device EEPROM VER=0x11f, CALIB=0x4
    [ 7681.754619] iwlagn 0000:03:00.0: Device SKU: 0Xb
    [ 7681.754643] iwlagn 0000:03:00.0: Tunable channels: 13 802.11bg, 24 802.11a channels
    [ 7681.754719] iwlagn 0000:03:00.0: irq 46 for MSI/MSI-X
    [ 7681.759905] iwlagn 0000:03:00.0: loaded firmware version 8.83.5.1 build 33692
    [ 7681.760899] ieee80211 phy1: Selected rate control algorithm 'iwl-agn-rs'
    [ 7717.265118] ADDRCONF(NETDEV_UP): wlan0: link is not ready
    [ 7718.948245] ADDRCONF(NETDEV_UP): wlan0: link is not ready


Причина проблемы в модуле ядра acer_wmi, его надо отправить в blacklist и всё чудесным образом заработает.

If Network Manager do not enable your wireless card and you dmesg log look like log on top, just insert module "acer_wmi" into blacklist.

вторник, 24 мая 2011 г.

Расширенные функции Oracle 10g по работе со стеком ошибок

    В Oracle 10g возможности для работы со стеком ошибок были расширены. В пакете DBMS_UTILITY появились функции, которые позволяют получить больше информации о том, как ведёт себя программа в случае возникновения исключительной ситуации.

четверг, 19 мая 2011 г.

PIVOT и UNPIVOT в Oracle 11g

   В Oracle 11g появились новые функции, которые позволяют разворачивать таблицу. Здесь я приведу пример для быстрого понимания того, как это работает, в конце статьи дам ссылку на чуть более подробное объяснение того как это работает.

среда, 18 мая 2011 г.

Обращение к читателям

    Уважаемые читатели моего блога, если у вас есть какие-то вопросы по SQL или PL/SQL, то задавайте их в комментариях к любому посту или пишите мне на почту queer82@gmail.com.
    В мире программирования под Oracle есть много вопросов и проблем, так давайте находить решения на них вместе, это поможет нам узнать что-то новое.

вторник, 17 мая 2011 г.

Конвейер из табличных (pipelined) функций

    Как-то раньше мне не приходилось сталкиваться с задачей, когда приходилось внутри одной табличной функции запрашивать данные из другой табличной функции в передавать их выше, но в конце концов этот момент настал.
    Мне было необходимо перегрузить табличную функцию, а поскольку алгоритм обработки данных полностью повторял уже существующий я решил воспользоваться вызовом табличной функции.
    Вроде бы всё просто, делай селект типа:
    for foo in (select * from pipelined_function(x))
    loop
        pipe row (r.a, r.b, r.c ...);
    end loop;
    Но мне хотелось больше удобства, не хотел я писать кучу этих имён в pipe row, и начались поиски решения. Слава богу знаний хватило на то, чтобы прийти вот к такому решению:

понедельник, 16 мая 2011 г.

Регулярные выражения в Oracle 11G



  Регулярные выражения являются очень полезным механизмом, многих языков программирования. До Версии 10g в Oracle регулярки не было, и приходилось обходиться обычными строковыми функциями поиска подстроки в строке, что было не всегда удобно. В 11g к уже существующим функциям по работе с регулярными выражениями добавилась ещё одна REGEXP_COUNT и расширился функционал 2х старых REGEXP_INSTR и REGEXP_SUBSTR.

вторник, 3 мая 2011 г.

Оператор Continue


Не знаю, многие ли слышали об этом, но в Oracle 11g появился оператор, который уже давно существует в других языках - Continue.
Суть у него проста, прервать текущую итерацию и перейти к следующей. Лично я серьёзно им никогда не пользовался, иногда применял в скриптовых языках, но дальше дело не доходило.
В любом случае, встречайте CONTINUE собственной персоной:
BEGIN
 FOR i IN 1..5 LOOP
   dbms_output.put_line('First statement, index is ['||i||'].');
    IF MOD(i,2) = 0 THEN
      CONTINUE;
    END IF;
   dbms_output.put_line('Second statement, index is ['||i||'].');
 END LOOP;
END;

First statement, index is [1].
Second statement, index is [1].
First statement, index is [2].
First statement, index is [3].
Second statement, index is [3].
First statement, index is [4].
First statement, index is [5].
Second statement, index is [5].

Алгоритм прост. Мы перебираем цифры от 1 до 5 и при помощи функции получения остатка от деления MOD проверяем их на чётность. Если остаток равен 0, то выполняем оператор CONTINUE, которые прерывает текущую итерацию и переходит к следующей, если число не чётное, то выполнение цикла продолжается дальше.

Подстановка текста подпрограмм (subprogram inlining) в Oracle 11g

В Oracle 11g появился новый механизм оптимизации программного кода - использование автоматической инлайн подстановки текста подпрограммы, вместо её вызова. При частых вызовах - эта штука очень хорошо позволяет экономить на накладных расходах. Надо заметить, что данный механизм работает только в случае выставления уровня оптимизации 2 и выше.