Показаны сообщения с ярлыком Database 12C. Показать все сообщения
Показаны сообщения с ярлыком Database 12C. Показать все сообщения

четверг, 10 ноября 2016 г.

Расширения функционала Oracle 12R2 (12.2) которые показались мне наиболее интересными.


Добавлена PL/SQL  pragma для пометки устаревших программных единиц.

Не обновленные материализованные представления могут быть  использованы в query rewrite для получения корректного результата используя materialized view logs.

К событиям обновления материализванного представления ON COMMIT и ON DEMAND добавлено событие ON STATEMENT.

Добавлены параметры в аггрегирующей функции LISTAGG для управления переполнением результирующей строки.

Максимальная длина идентификаторов увеличена до 128 байт для большинства идентификаторов, по сравнению с 30 байтами в предыдущих версиях.

Начало поддержки sharding в not managed driver ODP.NET

JDBC полностью поддерживает JDK 8 и стандарт JDBC 4.2

OJVM поддерживает Java SE 8

Вы можете выполнить JavaScript в базе данных, используя движок Nashorn JavaScript, встроенный в Oracle JVM

Начало поддержки операций с CLOB, BLOB и XMLType через database links.
Fast Application Notification (FAN) позволяет уменьшить объём обработки исключений слоя передачи данных в приложении.

Конвертация на лету не партиционированной таблицы в партиционированную.

Split на лету партиций и субпартиций.

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

Новая команда DDL позволяет создать таблицу с копированием описания партиций  из существующей таблицы.

Новая архитектура Oracle Database Sharding для оперативной обработки OLTP в которой данные горизонтально распределены между несколькими дискретными базами данных Oracle не имеющими общего аппаратного и программного обеспечения.  Приложение работает с набором баз данных как с одной логической базой.

Поддержка партиционирования внешних таблиц. Поддержка декларативных ограничений целостности для внешних таблиц.

Аналитические представления/

dbms_stat стал работать с внешними таблицами и In-Memory полями таблиц.

Band join связывание является особым типом связывания таблиц при котором ключевые значения в одного набора данных, должны находиться в пределах указанного диапазона другого набора. Одна таблица служит в качестве первого и второго наборов данных.

NFS сервер в базе данных.

Ограничение лимита операций ввода вывода на уровня монтируемой базы.

Монтируемые базы теперь могут иметь различные character set в нутри одной контейнерной базы (CDB).

Поддержка периодического распространения изменений из монтируемой базы источника в базы клоны.

Возможность распараллеливания (указания степени паралелизма) при создании монтируемой базы из seed PDB.

Возможность копирования монтируемой базы данных без перевода базы источника в режим только для чтения, если база источник в режиме archivelog. База источник во время копирования является полностью работоспособной.

Новый механизм proxy монтируемых баз является функционалом для доступа  к одной или нескольким удаленным базам через одну логическую.

Возможность отката состояния монтируемой базы данных с помощью FLASHBACK DATABASE.

Увеличено максимальное количество поддерживаемых монтируемых баз данных в одной контейнерной (CDB) базе до 4098.

Возможность обновления (upgrade) всех монтируемых баз одной операцией.

SQL*Loader, expdp, impdp, exp, и imp теперь являются утилитами instant client.

Поддержка многосимвольных строк в параметрах ENCLOSED_BY, OPTIONALLY_ENCLOSED_BY, и TERMINATED_BY утилиты  SQL*Loader.
Новая утилита командной строки Trace File Analyzer.


четверг, 21 января 2016 г.

Особенности сравнения таблиц из записей %ROWTYPE

Имеем таблицы в двух схемах
create table MESSAGE
(
  message_id        INTEGER not null,
  message_code   VARCHAR2(128) not null,
  message_name  NVARCHAR2(256) not null,
  message_type   VARCHAR2(128) not null,
  message_level   INTEGER not null,
);

И процедуру сравнения содержимого в двух схемах
DECLARE
  TYPE t_m_tbl    IS TABLE OF message%ROWTYPE INDEX BY BINARY_INTEGER;
  v_sql1         CLOB;
  v_sql2         CLOB;
  v_cur1         SYS_REFCURSOR;
  v_cur2         SYS_REFCURSOR;

  v_m_tbl1       t_m_tbl;
  v_m_tbl2       t_m_tbl;
BEGIN
  v_sql1  := 'SELECT t.*
                FROM schema1.message t
              ORDER BY t.message_code';
  v_sql2  := 'SELECT t.*
                FROM schema2.message t
              ORDER BY t.message_code';          
  OPEN v_cur1 FOR v_sql1;
  FETCH v_cur1 BULK COLLECT INTO v_m_tbl1;
 
  OPEN v_cur2 FOR v_sql2;
  FETCH v_cur2 BULK COLLECT INTO v_m_tbl2;

  IF v_m_tbl1.count >0 THEN
    FOR prc_m1 IN v_m_tbl1.first..v_m_tbl1.last LOOP
    .................
    END LOOP;
  END IF;
END;

Если таблицы в разных схемах будут иметь одинаковую структуру но разную последовательность полей то получим ошибку не совместимости типов в строке
  FETCH v_cur1 BULK COLLECT INTO v_m_tbl1;
или
  FETCH v_cur2 BULK COLLECT INTO v_m_tbl2;

проблема решается явным перечислением полей в запросе
вместо t.* указать
t.message_id,
t.message_code,
t.message_name,
t.message_type,
t.message_level



пятница, 24 апреля 2015 г.

ошибка ORA-00604: error occurred at recursive SQL level 1 возникающая при создании PLUGGABLE DATABASE

При создании PLUGGABLE DATABASE командой

CREATE PLUGGABLE DATABASE PDBTest
  ADMIN USER user1 IDENTIFIED BY user1
  ROLES = (connect,dba)
  DEFAULT TABLESPACE users
  file_name_convert = ('+DATA/MYSERVER/A587A94B8C72405CB40663EF8F521E9E/DATAFILE/system.271.876592207', 'C:\ORACLE\ORADATA\MYSERVER\PDBTest\system.271'
                      ,'+DATA/MYSERVER/A587A94B8C72405CB40663EF8F521E9E/DATAFILE/sysaux.270.876592197','C:\ORACLE\ORADATA\MYSERVER\PDBTest\sysaux.270'
                      ,'+DATA/MYSERVER/A587A94B8C72405CB40663EF8F521E9E/DATAFILE/users.269.876592195','C:\ORACLE\ORADATA\MYSERVER\PDBTest\users.269'
                      ,'+DATA/MYSERVER/A587A94B8C72405CB40663EF8F521E9E/TEMPFILE/temp.286.876595197','C:\ORACLE\ORADATA\MYSERVER\PDBTest\temp.286')
  STORAGE (MAXSIZE 100G MAX_SHARED_TEMP_SIZE 100M)
  TEMPFILE REUSE
  PATH_PREFIX = '+DATA';  

при наличии табличного пространства users  в шаблоне pluggable database pdb$seed
возникает ошибка ORA-00604: error occurred at recursive SQL level 1

решением в данной ситуации является создание  контейнерной базы с пользователем без назначения ему табличного пространства по умолчанию
без параметров   DEFAULT TABLESPACE users

и установке табличного пространства по умолчанию позже командами

ALTER PLUGGABLE DATABASE PDBTest OPEN;
alter session set container=PDBTest;
ALTER USER user1 DEFAULT TABLESPACE users;



вторник, 17 сентября 2013 г.

Краткий интерактивный обзор Oracle Database 12C

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/poster/OUTPUT_poster/poster.html#tab_1

четверг, 12 сентября 2013 г.

Некоторые новые возможности в базе 12C

1.Наконец появился синтаксис для страничной выборки данных.
Синтаксис таков.
o53asktom-f1

 Пример выборки пяти первых записей.

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.