oracle software downloads - •Новые возможностиoracle … · 2009. 4. 20. ·...

Post on 16-Aug-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

• Новые возможности Oracle Database 11g для разработчиков

• Oracle Application Express - платформа для быстрой разработки приложений

• Расширенные возможности APEX 3.2

• Архитектура Oracle Fusion Middleware AS 10.3

• Oracle JDeveloper 11g + ADF – средство быстрой разработки приложений трёхуровневой архитектуры

• Обзор возможностей Oracle Database 11g для разработчиков .NET приложений

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

Новый тип данных для целых чисел SIMPLE_INTEGER ,

является подтипом типа PLS_INTEGER

В отличие от PLS_INTEGER, для переменных типа SIMPLE_INTEGER

НЕ генерируется код проверки на переполнение (overflow checking) и код проверки на NULL

Повышение быстродействия в среднем 20-30% по сравнению с PLS_INTEGER

Области применения: операции с целочисленной арифметикой,

где заранее известен диапазон значений (напр: счетчики циклов)

Переменные типа SIMPLE_INTEGER имеют неявное ограничение NOT NULL

В PL/SQL 11g отслеживаются зависимости на уровне элементов объектов.

СУБД “знает” какие изменения приведут к изменению объекта,

а какие нет

При изменении только тела пакета, без изменений спецификации,

зависимые объекты остаются в состоянии VALID.

Преимущества:

Плавный “накат” патчей вашего приложения

Нет необходимости в ненужных перекомпиляциях

Ошибка “ORA-4068” остается; возникает по другой причине:

перекомпиляция тела пакета который использовался в другой сессии

• до 11gcreate or replace

TRIGGER "INSERT_DEMO_CUST"

BEFORE INSERT ON demo_customers

FOR EACH ROW

DECLARE

cust_id number;

BEGIN

SELECT demo_cust_seq.nextval

INTO cust_id

FROM dual;

:new.CUSTOMER_ID := cust_id;

END;

сложный механизм доступа через

обращение к таблице dual

• в 11Gcreate or replace

TRIGGER "INSERT_DEMO_CUST"

BEFORE INSERT ON demo_customers

FOR EACH ROW

BEGIN

:new.CUSTOMER_ID := demo_cust_seq.nextval;

END;

Повышение производительности !!! используется прямой и

более быстрый механизм доступа

Переключение контекста все равно происходит:

последовательность лежит в SGA

• увеличивает способность поиска и манипулирования символьными данными

• реализованы в виде:

SQL-функций :

REGEXP_INSTR,

REGEXP_SUBSTR,

REGEXP_REPLACE,

REGEXP_COUNT,

REGEXP_LIKE

SQL> SELECT REGEXP_REPLACE(

2 'zabelin andrey oracle',

3 '(.*) (.*) (.*)','\2.\1@\3.com')

4 AS email FROM dual;

EMAIL

-------------------------

andrey.zabelin@oracle.com

SQL оператора REGEXP_LIKE

выражения WHERE

SQL> SELECT p.product_name

2 FROM demo_product_info p

3 WHERE

4 REGEXP_LIKE(p.product_name, '[[:digit:]]');

PRODUCT_NAME

--------------------------------------

3.2 GHz Desktop PC

MP3 Player

512 MB DIMM

54" Plasma Flat Screen

• Кэширование результатов запросов, подзапросов• Кэш совместно используется различными SQL операторами и сессиями пользователей

• Значительное ускорение для операций чтения

• Несколько уровней контроля• Оператор: hint /*+ RESULT_CACHE */

• Сессия: параметр RESULT_CACHE_MODE = force | manual | auto

• force - кэшировать все запросы

• manual - кэшировать только запросы с hints

• auto - решение о кэшировании принимает оптимизатор

• Полная согласованность результата• Кэш обновляется при изменении таблиц, из которых получен кэшируемый результат

• Кэширование отключено для запросов содержащих• Временные или dictionary-таблицы

• Недетерминированные PL/SQL-функции

• Обращение к последовательности (CURRVAL и NEXTVAL)

• Недетерминированные SQL-функции: current_date, sysdate, sys_guid т.д.

• Result cache для распределенных запросов:

• result_cache_remote_expiration (через сколько секунд проверять актуальность, 0 – значение по умолчанию - не кэшировать)

• DML/DDL на удаленной БД не приводит к обновлению кэша

create function getAmount(pAccountId in number,

pCurrency in varchar2) return

number

result_cache relies_on (accounts, accounts_amounts);

is

begin

… … …

return xRes;

end;

• При создании функции указывается:• Ключевое слово RESULT_CACHE

• Фраза RELIES_ON – перечень таблиц от которых зависит результат функции, может быть опущена - при этом задача поддержка актуальности кэша возлагается на программиста

• При изменении таблиц указанных в RELIES_ON кэш для этой функции автоматически очищается

• Параметры инициализации• RESULT_CACHE_MAX_SIZE – задает макс. размер кэша в SGA

• Пакет DBMS_RESULT_CACHE• INVALIDATE – очистка кэша для функции

• FLUSH – очистка всего кэша

• BYPASS – включение/выключение кэша на уровне экзмепляра

• STATUS – проверка статуса кэша

• MEMORY_REPORT – вывод отчета об использовании кэша

• Мониторинг – динамические представления• [G]V$RESULT_CACHE_STATISTICS

• [G]V$RESULT_CACHE_OBJECTS

• [G]V$RESULT_CACHE_DEPENDENCY

• [G]V$RESULT_CACHE_MEMORY

• Кэширует результаты запроса на всех 11g OCI-based клиентах, включая ODP.Net, JDBC OCI Driver, PHP, ODBC

• Улучшает производительность работы с таблицами, используемыми в основном для чтения (read-mostly)

• Более быстрое время отклика – исключается передача по сети

• Уменьшает нагрузку на процессоры сервера

• Согласован с сервером• Кэш проактивно обновляется, когда изменяется выборка

• Сихронизация кеша

• Flashback Query• Запросить все данные на определенное

время

Tx 1

Tx 2

Tx 3

� Flashback Transaction Query• Посмотреть все изменения, сделанные

транзакцией

� Flashback Version Query• Посмотреть все версии записи между

двумя точками во времени

• Посмотреть транзакции, которые меняли записи

select * from Salary AS OF ‘12:00 P.M.’ where …

select * from Salary VERSIONS BETWEEN TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE) AND SYSTIMESTAMP where …

select * from FLASHBACK_TRANSACTION_QUERY

• Автоматически сохраняет все изменения определенных таблиц в Flashback Data Archive• Данные в архиве не могут изменяться

• Старые данные меняются на новые согласно политики сроков хранения

• История собирается асинхроннофоновым процессом (fbda)• По умолчанию интервал сбора –5 мин.

• Интервал автоматическименяется исходя из текущейнагрузки системы

• Операторы INSERT негенерируют историческихданных

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(

'local-access-users.xml', 'ACL: users to connect to localhost',

'APEX_030200', TRUE, 'connect');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(

'local-access-users.xml','localhost');

••

• только худшие SQL)

••

••

• Новая опция Oracle Database EE

• Database Replay (DB Replay)

• SQL Performance Analyzer (SPA)

• Значение

• Сокращает стоимость тестирования

• Улучшает качество тестирования

• Выигрыш для бизнеса

• Быстрое внедрение технологий

• Меньше риск

• Захват информации о нагрузке• Записывает информацию о нагрузке СУБД, включая важную информацию об одновременности нагрузки

• Фильтрация захвата (сессии, пользователи и т.д.)

• Минимальные накладные расходы (<5% CPU)

• Database Replay - проигрывание• Синхронное и асинхронное воспроизведение

• Анализ и отчетность• Отчеты об ошибках

• Изменение данных

• Изменение производительности

••

• Обнаружение ухудшения производительности SQL прежде, чем это отразится на конечных пользователях

• RAT полезен при следующих изменениях

• Обновление БД

• Изменение статистики оптимизатора

• Новые индексы, материализованные представления, секционирование и т.д.

• Автоматически отслеживает изменение производительности сотен и тысяч запросов – невозможно сделать вручную

• Минимальные накладные расходы

Real-time

Queries

Real-time

Queries

• После окончания тестов необходима всего лишь синхронизация с промышленной БД, не требуется пересоздание standby заново

Real-time

Queries

Real-time

Queries

Штатный режим работы

• Две системы – отчетность и процессинг

• Системы на разных серверах

• Две системы – отчетность и процессинг

• Системы на разных серверах

Загрузка 100% Загрузка 50%

Завершение месяца (отчетность)

=>50% ресурсовсервера Процессинга проистаивает

Штатный режим работы

Несколько узлов кластера работают с одной БД

Пиковый режим работы (обработка заказов)

Завершение квартала (отчетность)

Ситуация сбоя узла

Миграция сервисов на резервный узел

• RAC объединяет для совместной работы стандартные недорогие сервера

• Отличное масштабирование & высокая готовность

• Нет простаивающих ресурсов

• Тысячи пользователей по всему миру

• Улучшенная производительность, масштабируемость, обработка аварийных ситуаций, управляемость

Возможность достижениялюбого уровня защиты данных

Значительное уменьшение сложности использования

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

Для промышленных баз данных и для тестирования начиная с версии APEX 3.1 появилась возможность устанавливать только runtime версию APEX.

Для этого используется скрипт apxrtins.sql. Это уменьшает шаги инсталяции и привилегии пользователя APEX_030200. Скрипты также предоставляют возможность удалять (apxdevrm.sql) или добавлять (apxdvins.sql) интерфейс разработчика на существующий экземпляр.

Эта новая возможность улучшает защиту приложения ввиду того что на runtime экземпляре разработчик не может изменять приложение непосредственно на промышленном экземпляре.

•Декларативная установка таймаутов отключения неактивных сессий и максимальной продолжительности работы сессии•Декларативное шифрование контекста сессии•Новый элемент для ввода паролей позволяет ввести пароль не сохраняя его в контексте сессии•Гибкая схема аутентификации и авторизации•Защита от фальсификации URL•Возможность требовать соединения через HTTPS для администраторов и разработчиков,•Возможность настройки строгой политики паролей для административных учётных записей

(&P10_AREA_CODE.) &P10_PREFIX.-&P10_LINE_NUMBER.

•DECLARE l_return_value VARCHAR2(300) DEFAULT NULL;

BEGIN

l_return_value := '('||:P10_AREA_CODE||')'||

:P10_PREFIX||'-'||:P10_LINE_NUMBER;

RETURN l_return_value;

END;

•SELECT '('||:P10_AREA_CODE||')'||:P10_PREFIX||'-'||:P10_LINE_NUMBER

FROM DUAL

•'('||:P10_AREA_CODE||')'||:P10_PREFIX||'-'||:P10_LINE_NUMBER

•SELECT 1 FROM customers

WHERE last_name = :P1_LAST_NAME

•BEGIN

IF :P1_COUNTRY = ‘RU' THEN RETURN FALSE;

ELSE RETURN TRUE;

END IF;

END;

илиNOT (:P1_COUNTRY=‘RU');

•Если необходима проверка присвоено ли какое либо значение Item

•Различны шаблоны сравнения значения Item с строкой(строками)

•^\([[:digit:]]{3}\) [[:digit:]]{3}-[[:digit:]]{4}$

номер телефона должен быть формата (999) 999-9999

Процессы выполняются

во время визуализации страницы

или при возникновения события на странице.

• On Load

• On Submit

• по условию (Expression)

• по нажатию кнопки (When Button Pressed)

• через URL (Request = Expression или APPLICATION_PROCESS = имя процесса)

apex_collection.create_or_truncate_collection

(p_collection_name => 'ORDER');

select c001, c003, sum(c004) c004

from apex_collections

where collection_name = 'ORDER'

group by c001, c003

for x in (select * from demo_product_info where product_id = :P12_PRODUCT_ID)

loop

apex_collection.add_member(p_collection_name => 'ORDER',

p_c001 => x.product_id,

p_c002 => x.product_name,

p_c003 => x.list_price,

p_c004 => 1);

end loop;

Функция валидации определяется в

заголовке страницы :

Вызов функции происходит по событию на элементе страницы :

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

i

• Различные версии приложения могут использоваться одновременно• Новые клиенты подключаются к новой активной версии;

• Существующие сессии продолжают работать с предыдущей версией

• Политика автоматического изолирования старой версии приложения: постепенное или по таймауту

• Возможность отката на предыдущую версию приложения

• Новая версия приложения может быть установлена на сервер в режиме тестирования

• – запросы распределяются на первое в списке JDBC-соединение, в случае неудачи на следующее по списку

• – запросы распределяются равномерно между всеми валидными JDBC-соединениями в списке

WLS instance

WLS instance

WLS instance

Балансировка нагрузки

•iPlanet/SunOne•Apache•IIS•WLS with HttpCLusterServlet

•BigIP from F5•Alteon from Nortel•Cisco

WLS instance

WLS instance

WLS instance

BA B

C

B C

A

Информация о первичном и вторичном экземплярах, хранящих состояние сессии, может быть получена черезHTTP Session ID или Client’s browser cookie.

Синхронная, асинхронная in-memory репликация

между экземплярами кластера

• Данные распределены в памяти на всех серверах

• Данные автоматически и синхронно реплицируются на другие сервера (по крайней мере на один из серверов в кластере) для постоянной готовности

• На каждом сервере Single System Image - логическое представление всех данных на всех серверах

• Сервера производят мониторинг состояния друг друга

• В случае, если один из серверов вышел из строя, другие совместно диагностируют его состояние

• Сервера, имеющие репликацию данных, немедленно берут на себя обязанности сервера, вышедшего из строя

• Нет прекращения сервиса или потери данных

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

• Templating

• Определение стандартного шаблона страниц

• Page Fragments

• Разработка областей для многократного использования

• Page Regions

• Конструирование страниц из фрагментов

Забелин АндрейOracle СНГandrey.zabelin@oracle.com

WindowsWindows

Windows

Linux

Unix

Oracle 11g,10g, 9i, or 8i

Other

• С чего начать:

Getting Started : DBA , Developershttp://otn.oracle.com/getting-started

• Пошаговые инструкции, примеры использования технологий Oracle:

Oracle By Example

http://otn.oracle.com/obe

• Телефон в Москве

+(7 495) 641-14-00

• www.oracle.com

• Andrey.Zabelin@oracle.com

top related