При выдаче привилегии GRANT SELECT на таблицу пользователь другой схемы данных поличивший привилегию кроме возможности чтения данных получает неявно возможность заблокировать данные командой select for update.
пятница, 13 сентября 2013 г.
четверг, 12 сентября 2013 г.
Некоторые новые возможности в базе 12C
1.Наконец появился синтаксис для страничной выборки данных.
Синтаксис таков.
Пример выборки пяти первых записей.
SQL> create table t
2 as
3 select * from all_objects;
Table created.
SQL> create index t_idx
on t(owner,object_name);
Index created.
SQL> select owner, object_name, object_id
2 from t
3 order by owner, object_name
4 FETCH FIRST 5 ROWS ONLY;
…
——————————————————————————————————————————————————————————————————————————————
| Id |Operation | Name|Rows |Bytes |Cost (%CPU)|Time |
——————————————————————————————————————————————————————————————————————————————
| 0|SELECT STATEMENT | | 5 | 1450 | 7 (0)|00:00:01|
|* 1| VIEW | | 5 | 1450 | 7 (0)|00:00:01|
|* 2| WINDOW NOSORT STOPKEY | | 5 | 180 | 7 (0)|00:00:01|
| 3| TABLE ACCESS BY INDEX ROWID|T |87310 | 3069K| 7 (0)|00:00:01|
| 4| INDEX FULL SCAN |T_IDX| 5 | | 3 (0)|00:00:01|
——————————————————————————————————————————————————————————————————————————————
Predicate Information (identified by operation id):
—————————————————————————————————————————————————————————————————
1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=5)
2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=5)
Пример выборки пяти записей начиная с пятой.
SQL> select owner, object_name, object_id
2 from t
3 order by owner, object_name
4 OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
2. Поля SQL VARCHAR2, NVARCHAR2 теперь могут хранить до 32Кб значений.
3. В сотни раз по сравнению с 11G увеличена производительность команды добавления колонки со значением по умолчанию.
SQL> alter table t
add (data char(2000) default 'DEFAULT VALUE');
4. Добавлено ключевое слово DEFAULT для вставки значения по умолчанию в командах INSERT/UPDATE
SQL> create table test_table
2 ( id int
3 generated by default
4 as identity
5 ( start with 33
6 increment by 10 )
7 primary key,
8 val varchar2(100)
9 )
10 /
Table created.
SQL> insert into test_table (id, … )
values ( DEFAULT, … );
Вставляет значение по умолчанию 33 из последовательности.
SQL> insert into test_table (id, … )
values ( 10, … );
вставляет значение 10.
четверг, 16 августа 2012 г.
Apex Listener 2.0 Beta доступен для изучения
Apex Listener 2.0 Beta доступен для изучения и скачивания.
Изменения относительно версии 1.1.4
Поддержка нескольких соединений с базой данных.
Утилита командной строки.
Изменение структуры файла конфигурации.
А также:
Moved storage of RESTful Services (aka Resource Templates) to the Oracle Application Express Schema
Design and creation of RESTful Services is now done using Oracle Application Express
Graphical administration of Oracle Application Express Listener is now done using Oracle SQL Developer
RESTful Services are now protected via the OAuth2 Protocol.
Изменения относительно версии 1.1.4
Поддержка нескольких соединений с базой данных.
Утилита командной строки.
Изменение структуры файла конфигурации.
А также:
Moved storage of RESTful Services (aka Resource Templates) to the Oracle Application Express Schema
Design and creation of RESTful Services is now done using Oracle Application Express
Graphical administration of Oracle Application Express Listener is now done using Oracle SQL Developer
RESTful Services are now protected via the OAuth2 Protocol.
понедельник, 2 апреля 2012 г.
Анализ сжатия данных
Анализ сжатия производился на двух таблицах с количеством 12314345 и 9759284 записей и обьемом данных до сжатия 220 и 1080 мегабайт соответственно. Измерение производительности производилось командой select count(1) from table. Сервер базы данных версии 11.1.0.7 на операционной системе AIX.
До сжатия среднее время выполнения запросов составляло 17.69 и 13.9 секунд.
Сжатие производилось командой alter table таблица move compress for all operations;
После сжатия были получены обьемы данных 73 и 360 мегабайт. Скорость выполнения запроса возросла до 9.9 и 5.8 секунд соответственно.
В итоге обьем занимаемый данными в базе сократился приблизительно в 3 раза а время выполлнения запроса сократилось (производительность увеличилась) в 1.8 и 2.4 раза.
До сжатия среднее время выполнения запросов составляло 17.69 и 13.9 секунд.
Сжатие производилось командой alter table таблица move compress for all operations;
После сжатия были получены обьемы данных 73 и 360 мегабайт. Скорость выполнения запроса возросла до 9.9 и 5.8 секунд соответственно.
В итоге обьем занимаемый данными в базе сократился приблизительно в 3 раза а время выполлнения запроса сократилось (производительность увеличилась) в 1.8 и 2.4 раза.
пятница, 22 июля 2011 г.
Пример приложения (SampleApp) для Oracle Business Intelligence Suite Enterprise Edition Plus (EE) от Oracle
Пример приложения (SampleApp) для Oracle Business Intelligence Suite Enterprise Edition Plus (EE) представляет собой всеобъемлющую коллекцию примеров, призванных продемонстрировать возможности Oracle BI 11.1.1.5 и дизайна передового опыта. Она объединяет несколько интегрированных продуктов Oracle BI и технологий и показывает, как они могут беспрепятственно работать вместе в решении функциональных проблем. Эти примеры включают последние OBIEE 11g функциональность (enhanced visualizations, Action Framework, BI Publisher, Scorecards, Mobile), а также OBIEE архитектура ядра примеры (Semantic layer modeling, Multi-source federation, интеграции с такими продуктами, как Essbase, Oracle OLAP, ODM, TimesTen , ODI и более).
Скачать установочные файлы и образ для VirtualBox
Скачать установочные файлы и образ для VirtualBox
вторник, 5 июля 2011 г.
Скрипт создания пользователя OeBS
Разработчику OeBS очень полезно для создания пользователя системы иметь скрипт для добваления пользователя на новых базах. Нижеприведенный скрипт создает пользователя системы, создает работника в модуле учет персонала и сопоставляет его с пользователем, добавляет базовые полномочия для разработки и администрирования.
-- Создание пользователя
declare
l_user number;
l_resp number;
l_appl number;
l_responsibility_key fnd_responsibility.responsibility_key%TYPE := 'SYSTEM_ADMINISTRATOR';
l_application_short_name fnd_application.application_short_name%TYPE := 'SYSADMIN';
l_responsibility_name varchar2(200) := 'System Administrator';
l_security_group_id number := 0;
l_user_name varchar2(200) := 'ATYSHENKO';
l_unencrypted_password varchar2(200) := 'password';
l_owner varchar2(200) := 'CUST';
l_user_id number;
l_person_id number;
l_assignment_id number;
l_per_object_version_number number;
l_asg_object_version_number number;
l_per_effective_start_date date;
l_per_effective_end_date date;
l_employee_number varchar2(200);
l_full_name varchar2(2000);
l_per_comment_id number;
l_assignment_sequence number;
l_assignment_number varchar2(200);
l_name_combination_warning boolean;
l_assign_payroll_warning boolean;
l_orig_hire_warning boolean;
begin
select u.user_id
into l_user
from fnd_user u
where u.user_name = 'AUTOINSTALL';
--
select r.responsibility_id, r.application_id
into l_resp, l_appl
from fnd_responsibility_tl r
where r.language = 'US'
and r.responsibility_name = l_responsibility_name;
dbms_output.put_line('инициализация...');
fnd_global.apps_initialize(l_user, l_resp, l_appl);
dbms_output.put_line('приложение инициализировано');
-- hr_utility.switch_logging_on;
-- создать работника
hr_employee_api.create_employee(p_hire_date => to_date('01.02.2011','dd.mm.yyyy')
,p_business_group_id => l_security_group_id
,p_last_name => 'Тышенко'
,p_first_name => 'Александр'
,p_middle_names => 'Анатольевич'
,p_sex => 'M'
,p_date_of_birth => to_date('21.06.1970','dd.mm.yyyy')
,p_employee_number => l_employee_number
,p_person_id => l_person_id
,p_assignment_id => l_assignment_id
,p_per_object_version_number => l_per_object_version_number
,p_asg_object_version_number => l_asg_object_version_number
,p_per_effective_start_date => l_per_effective_start_date
,p_per_effective_end_date => l_per_effective_end_date
,p_full_name => l_full_name
,p_per_comment_id => l_per_comment_id
,p_assignment_sequence => l_assignment_sequence
,p_assignment_number => l_assignment_number
,p_name_combination_warning => l_name_combination_warning
,p_assign_payroll_warning => l_assign_payroll_warning
,p_orig_hire_warning => l_orig_hire_warning
);
dbms_output.put_line('создан пользователь person_id='||l_person_id);
if not fnd_user_pkg.userExists(l_user_name) then
l_user_id := fnd_user_pkg.CreateUserId(
x_user_name => l_user_name
, x_owner => l_owner
, x_unencrypted_password => l_unencrypted_password
,x_employee_id => l_person_id
);
dbms_output.put_line('создан пользователь user_name='||l_user_name);
else
select u.user_id
into l_user_id
from fnd_user u
where u.user_name = l_user_name;
end if;
for i in (select r.application_id,
r.responsibility_id,
r.responsibility_name
from fnd_responsibility_tl r
where r.language = 'RU'
and r.RESPONSIBILITY_NAME in ('Системный администратор' ,'Интегрированный шлюз SOA' ,'Глобальный суперпользователь-руководитель СУПЕР' ,'Администратор функций' ,'Разработчик приложений')
and not exists(select *
from fnd_user_resp_groups urg
where urg.RESPONSIBILITY_ID = r.responsibility_id
and urg.RESPONSIBILITY_APPLICATION_ID = r.application_id
and urg.user_id = l_user_id)) loop
fnd_user_resp_groups_api.insert_assignment(
user_id => l_user_id
, responsibility_id => i.responsibility_id
, responsibility_application_id => i.application_id
, security_group_id => l_security_group_id
, start_date => trunc(sysdate)
, end_date => NULL
, description => i.responsibility_name
);
fnd_wf_engine.default_event_raise(
'oracle.apps.fnd.security.user.assignment.change'
, l_user_id || ':' || i.responsibility_id
);
fnd_wf_engine.propagate_user_role(
'FND_USR'
, l_user_id
, 'FND_RESP' || i.application_id
, i.responsibility_id
, trunc(sysdate)
, NULL
);
-- Added for Function Security Cache Invalidation Project
fnd_function_security_cache.insert_user_resp(
l_user_id
, i.responsibility_id
, i.application_id
);
dbms_output.put_line('добавлена привилегия responsibility_id='||i.responsibility_id||' responsibility_name='||i.responsibility_name);
end loop;
commit; end; четверг, 23 июня 2011 г.
Открытие доступа к результатам работы Concurrent запросов для просмотра другими пользователями.
Иногда при работе с OeBS возникает необходимость просмотреть результаты работы Concurrent запроса другого пользователя. Сделать это можно под полномочием "Системный администратор" в пункте меню "Параллельные\Запросы" в открытой форме необходимо перейти в верхнем меню на "Справка\Диагностика\Пользовательский код\Персональная настройка" и заполнить на двух закладках так как показано на копиях экрана.
Подписаться на:
Сообщения (Atom)

