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

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

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

Сравните с первой картинкой вот из этого поста. Похоже правда? :) Цифры на одной и той же базе получаются тоже одинаковые, что радует :)
Кстати, в этой новой вкладке кнопка 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.
Итак. Для начала смотрим на каком порту слушает 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('
'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'а опять похерится. Правда хорошо, что хоть файл не трогает.
Обидная бага такая! Очень неудобно отлаживать почти готовые репорты.
Обходится криво: делаете экспорт отчета в 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 :)
Тем более в свете последних событий..
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 :)
Подписаться на:
Сообщения (Atom)