30 июн. 2008 г.

Неужели в самом деле..

Oracle SQL Developer Statement of Direction утверждает, что в следующем релизе SQLDeveloper'а мы получим инструмент для визуального проектирования ER диаграмм базы данных в виде опционального расширения! Что не может не радовать! Я надеюсь это расширение не будет платным. Я как-то не встречал пока такой фунциональности в бесплатных продуктах. Справедливости ради замечу, что уже существует плагин к SQLDeveloper'у для создания ER диаграмм, но он вроде как платный. И я его не пользовал - ничего сказать не могу.
Будем ждать.

27 июн. 2008 г.

Немного хип-хопа ;)

Пятница, расслабляемся под хип-хоп

Noize MC


Гидропонка

DAD Report

Вот сделал отчет для SQLDeveloper'a с полной информацией по зарегистрированным DAD в XMLDB для Oracle 10g.
Отображает глобальные аттрибуты, имена DAD-ов, их маппинги и полный список аттрибутов.

25 июн. 2008 г.

SQLDeveloper. Бывают совпадения :)

Не скажу с какой версии, но появился в SQLDeveloper такой интересный пункт Manage Database. Увидеть его можно вызвав контекстное меню на значке соединения в дереве. Полезного конечно там для себя ничего не нашел. Но этот отчет я уже где-то видел:


Сравните с первой картинкой вот из этого поста. Похоже правда? :) Цифры на одной и той же базе получаются тоже одинаковые, что радует :)

Кстати, в этой новой вкладке кнопка Shutdown доступна только если соединение с опцией SYSDBA, что естественно.
Ну и по-моему в будущих версиях SQLDeveloper'а нужно ждать развития этой функциональности.. Хотя базу рестартовать лично я буду исключительно из sqlplus.

24 июн. 2008 г.

PL/SQL HTTP сервис

Заметка о том, как вызвать процедуру PL/SQL через URL и получить результат в HTTP. Постараюсь быть кратким. Используется Oracle 10 XE с установленным XMLDB. Все подробности по этой опции в документации. Отмечу лишь, что для настройки нужно обладать ролью XDBADMIN.

Итак. Для начала смотрим на каком порту слушает XMLDB:
select DBMS_XDB.GETHTTPPORT() from dual;

Можно установить любой другой порт по желанию:
exec dbms_xdb.sethttpport(8080);

Синтаксис URL будет следующий: http://host:port/dad/procedure?parameter=value

Создадим DAD:
begin
dbms_epg .create_dad('dad', '/dd/*');
end;
/

здесь первый параметр - имя DAD (внутреннее, для последующего использования в настройках), второй - путь (используется в URL при запуске). Вобщем не обязаны быть похожими.

Впринципе уже можно пробовать запускать какую-нибудь процедуру типа helloworld:
create or replace procedure helloworld as
begin
htp.p('hello world');
end helloworld;
/


через URL http://localhost:8080/dd/HELLOWORLD

В этом моменте вы должны получить запрос на авторизацию - вводить нужно имя и пароль того пользователя, в схеме которого находится запускаемая процедура или (как вариант) одноименный синоним, указывающий на процедуру в другой схеме. Т.е. в именном пространстве этого пользователя должен существовать запускаемый объект с соответсвующими привилегиями.

Следующий шаг - это сделать так, чтобы при запуске URL избежать запроса авторизации, а запустить процедуру с привилегиями предопределенного пользователя. Для этого нужно выполнить
begin
dbms_epg.set_dad_attribute('dad','database-username','TT');
end;
/

Первый параметр - имя DAD, второй - имя аттрибута DAD (оставить без изменений), третий - имя нужного пользователя.

И авторизуем DAD:
begin
dbms_epg.authorize_dad('dad', 'TT') ;
end;
/


Еще понадобиться выполнить следующий код:
declare
l_xml_config sys.xmltype;
anonymous_already_set exception;
pragma exception_init(anonymous_already_set,-30936);
begin
select insertchildxml(xdburitype('/xdbconfig.xml').getxml(),'/xdbconfig/sysconfig/protocolconfig/httpconfig','allow-repository-anonymous-access',
xmltype('true'),
'xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd"') into l_xml_config from dual;
dbms_xdb.cfg_update(l_xml_config);
commit;
exception
when anonymous_already_set then
null;
end;
/


Это нужно для того, чтобы разрешить XMLDB анонимные соединения. Потому что несмотря на то, что мы указываем имя пользователя DAD по-умолчанию, физически соединение происходит под ANONYMOUS.

Свинство и SQLDeveloper

Обнаружил багу при создании отчетов в SQLDeveloper: при сохранении pl/sql отчета любого типа (например plsq-dbms_output) из кода вырезаются все точки с запятой! Ну не бред ли!?? Причем в какой-то из предыдущих версий у меня еще всё работало. Но последние 2 попробовал - один хрен.
Обидная бага такая! Очень неудобно отлаживать почти готовые репорты.
Обходится криво: делаете экспорт отчета в xml файл, в этом файле расставляете обратно точки с запятыми и делаете импорт отчета обратно. Но при пересохранении отчета в мастере SQLDeveloper'а опять похерится. Правда хорошо, что хоть файл не трогает.

2 июн. 2008 г.

Перспективы для разработчиков или Flex наступает

Вот набрел на интересную статью: Гибридизация Java. Имхо очень актуально для разработчиков, под Oracle в том числе.
Тем более в свете последних событий..
Oracle Forms скорее мертв, чем жив;
ADF - воздержусь, хотя почитателей наверняка много;
Apex - работает и много усилий не требует, но опять же ограничения.
Интересующиеся знают, что почти весь metalink.oracle.com написан на апексе и asktom.oracle.com Примеров конечно больше, но эти , имхо, показательны в плане позиции Apex внутри Oracle.
Но тут на Oracle OpenWorld в ноябре 2007 презентуется ряд продуктов разработанных на Flex: Новый Enterprise Manager (интересно, когда мы его увидим в действии), часть металинка, а именно Software Configuration Manager (уже можно пробовать, если есть доступ), часть BI Publisher'a...
Правда заставляет задуматься? :) Видимо наступление RIA приложений не за горами. С нетерпением жду.. пошел читать Flex :)