Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 12.2 / 20 сообщений из 20, страница 1 из 1
08.11.2016, 18:01
    #39343772
локатор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
...
Рейтинг: 0 / 0
08.11.2016, 18:17
    #39343795
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
...
Рейтинг: 0 / 0
08.11.2016, 18:18
    #39343797
veep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
локатор,

В облаке пока. Когда будет доступно для скачивания? Наверное не раньше следующего года.
...
Рейтинг: 0 / 0
08.11.2016, 18:19
    #39343798
12.2
славься, славься, продукт незабвенный
славься, славься во веки веков..
...
Рейтинг: 0 / 0
08.11.2016, 18:20
    #39343801
12.2
я ещё от 10g What's new не дочитал :(
...
Рейтинг: 0 / 0
08.11.2016, 18:23
    #39343804
локатор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
veep,

хз.

Все равно до версии 12.2.0.2 пользовать не рекомендуется :)
...
Рейтинг: 0 / 0
08.11.2016, 18:24
    #39343806
veep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
локаторveep,

хз.

Все равно до версии 12.2.0.2 пользовать не рекомендуется :)

Ну на каких нибудь глубоко тестовых средах можно :)
...
Рейтинг: 0 / 0
08.11.2016, 19:00
    #39343827
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
veepлокаторВсе равно до версии 12.2.0.2 пользовать не рекомендуется :)Ну на каких нибудь глубоко тестовых средах можно :)Если есть предрасположенность к нетрадиционному сексу.
...
Рейтинг: 0 / 0
08.11.2016, 19:09
    #39343832
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
-2-локатор,

http://docs.oracle.com/database/122/index.htm Прочитал что нового в SQL и PL/SQL guide .

Во втором ничего особо не заинтересовало... кроме общего для двоих "The maximum length of all identifiers used and defined by PL/SQL is increased to 128 bytes, up from 30 bytes in previous releases."
Только не это!!! Иногда больную фантазию надо ограничивать техническими средствами.

Касательно SQL guide.
1)
Самое революционное имхо - изменения в секционировании. Теперь может быть до 16-ти (!) ключей секционирования для (partition & sub-partition), то есть 16 * 2 = 32, тогда как раньше было 1 * 2. Верно Оракл держит путь в сторону Big Data.
В целом изменений для секционирования множество от "You can create partitioned external tables" и "new clause modify_to_partitioned of ALTER TABLE" до "You can specify read-only mode for a table, partition, or subpartition".
2)
Еще бы выделил, что такие функции как cast, TO_DATE, TO_NUMBER теперь поддерживают значение по умолчанию для кривых данных. Например
Код: plsql
1.
2.
SELECT TO_NUMBER('2,00' DEFAULT 0 ON CONVERSION ERROR) "Value"
  FROM DUAL;

Ну этот пункт по значимости не идет ни в какое сравнение с предыдущим.

Больше ничего особо не впечатлило. :)

Видно, что много чего допилили для аналитики и data mining начиная от "CREATE ANALYTIC VIEW", добавления разнообразных APPROX_* функций (для distinct уже было в 12.1.0.2) и заканчивая "The data mining functions are enhanced so they can be applied to models built using the native algorithms of Oracle, as well as those built using R through the extensibility mechanism of Oracle Advanced Analytics". Мне до сих пор непонятно почему Oracle так пропихивает R, но видимо этому есть причины.

Продолжают добавлять фишки MSSQL как было с identity columns. Теперь вот COLLATE Operator.
...
Рейтинг: 0 / 0
08.11.2016, 19:17
    #39343841
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
dbms_photoshopТеперь может быть до 16-ти (!) ключей секционирования для (partition & sub-partition), то есть 16 * 2 = 32, тогда как раньше было 1 * 2.Все оказалось весьма прозаично. Просто можно делать список из кортежей атрибутов.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
REATE TABLE sales_by_region_and_channel
 (deptno           NUMBER, 
  deptname         VARCHAR2(20),
  quarterly_sales  NUMBER(10,2),
  state            VARCHAR2(2),
  channel          VARCHAR2(1)
 )
 PARTITION BY LIST (state, channel)
 (
  PARTITION q1_northwest_direct VALUES (('OR','D'), ('WA','D')),
  PARTITION q1_northwest_indirect VALUES (('OR','I'), ('WA','I')),
  PARTITION q1_southwest_direct VALUES (('AZ','D'),('UT','D'),('NM','D')),
  PARTITION q1_ca_direct VALUES ('CA','D'),
  PARTITION rest VALUES (DEFAULT)
 );

Это совсем не то, что в BigData.
Где могут быть partitions, sub-partitions, sub-sub-partitions etc.
...
Рейтинг: 0 / 0
08.11.2016, 19:57
    #39343857
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
DBA_STATEMENTS - прикольная штука
...
Рейтинг: 0 / 0
08.11.2016, 20:00
    #39343858
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
xtenderDBA_STATEMENTS - прикольная штука http://docs.oracle.com/database/122/REFRN/ALL_STATEMENTS.htm#REFRN-GUID-36FF82A6-DD4B-45E4-8B46-2ECD38C2AE47
Намного упростит жисть :)
...
Рейтинг: 0 / 0
08.11.2016, 20:05
    #39343861
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
авторStatic PL/SQL Expressions Now Allowed Where Previously Literals Were Required
Some examples of places where, in earlier releases, a literal was required are:

The length of the constraint in a VARCHAR2 declaration.
The precision and scale in a NUMBER declaration.
Now you can use expressions, but the values must allow computation at compile time.

You can now write PL/SQL programs so that the intention is self-evident without comments. You can also change PL/SQL programs to reflect changed requirements by making changes at far fewer sites. The canonical example is the VARCHAR2 that holds the text of a simple SQL identifier. This needs to be 128 bytes plus 2 additional bytes; 128 bytes for the name, and 2 bytes to enable double quoting.
Тоже замечательно
...
Рейтинг: 0 / 0
08.11.2016, 20:41
    #39343874
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
xtenderНамного упростит жисть :)Не разработчику, а тем, кто его считает врагом-партизаном?
...
Рейтинг: 0 / 0
08.11.2016, 21:09
    #39343881
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
xtenderавторStatic PL/SQL Expressions Now Allowed Where Previously Literals Were Required
Some examples of places where, in earlier releases, a literal was required are:

The length of the constraint in a VARCHAR2 declaration.
The precision and scale in a NUMBER declaration.
Now you can use expressions, but the values must allow computation at compile time.

You can now write PL/SQL programs so that the intention is self-evident without comments. You can also change PL/SQL programs to reflect changed requirements by making changes at far fewer sites. The canonical example is the VARCHAR2 that holds the text of a simple SQL identifier. This needs to be 128 bytes plus 2 additional bytes; 128 bytes for the name, and 2 bytes to enable double quoting.
Тоже замечательноКакое ты видишь этому практическое применение?
...
Рейтинг: 0 / 0
08.11.2016, 21:13
    #39343882
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
dbms_photoshopxtenderпропущено...

Тоже замечательноКакое ты видишь этому практическое применение?объявить в пакете константу и определение длины переменных через нее и ее производные.
...
Рейтинг: 0 / 0
08.11.2016, 21:35
    #39343889
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
-2-,

Принцип работы понятен - по аналогии с директивой #define в си.
Не совсем понятна конкретная польза учитывая оракловую специфику и имеющиеся %type, %rowtype.
...
Рейтинг: 0 / 0
08.11.2016, 21:55
    #39343897
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
dbms_photoshopПринцип работы понятен - по аналогии с директивой #define в си.
Не совсем понятна конкретная польза учитывая оракловую специфику и имеющиеся %type, %rowtype.Меньше шансов допустить ошибку при сопровождении кода вроде:
Код: plsql
1.
2.
3.
4.
5.
6.
x varchar2(100);
...
if length(:y) > 100 then
  raise ...;
end if;
x := :y;

Код: plsql
1.
x varchar2(100) := substr(:y, 1, 100);

Да и код почитабельней может стать.
...
Рейтинг: 0 / 0
09.11.2016, 02:54
    #39343963
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
dbms_photoshop,

Я видел уже много велосипедов, где так или иначе решают эту же вещь. Кто-то через препроцессинг собственной утилиткой, которая хранит и подставляет такие настройки, другие - пакеты-генераторы внутри оракла создают. Используют свои обозначения типа SHORT_STRING, LONG_STRING - для строк, что-нибудь типа IDENT - для суррогнатных ключей на сиквенсах, а потом по мере развития, спустя годы увеличивают их
...
Рейтинг: 0 / 0
09.11.2016, 05:34
    #39343974
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
12.2
dbms_photoshop,

dbms_photoshopЕще бы выделил, что такие функции как cast, TO_DATE, TO_NUMBER теперь поддерживают значение по умолчанию для кривых данных. Например
Там, похоже, это писала таже группа из Бангалора, кто и approximate функции делали, т.к. в доступной бете считает быстро, но не точно.
В публичных версиях не проверял, но сомневаюсь, что исправили.
Вот листинг тест-кейса.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
SQL> create table conv_error_tc as
  2  select 'X' value from dual union all
  3  select '11' from dual union all
  4  select 'X' from dual union all
  5  select '10' from dual union all
  6  select '1' from dual
  7  /

Table created.

SQL> 
SQL> create or replace function my_to_number(p_input in varchar2)
  2    return number
  3  is
  4    pragma udf;
  5  begin
  6    return to_number(p_input);
  7  exception
  8    when value_error
  9    then
 10      return 0;
 11  end;
 12  /

Function created.

SQL> 
SQL> col dump16 for a30
SQL> 
SQL> select 'TO_NUMBER' type,
  2         sum(to_number(value default 0 on conversion error)) amount,
  3         dump(sum(to_number(value default 0 on conversion error)), 16) dump16
  4    from conv_error_tc
  5   union all
  6  select 'UDF',
  7         sum(my_to_number(value)),
  8         dump(sum(my_to_number(value)), 16)
  9    from conv_error_tc
 10  /

TYPE          AMOUNT DUMP16
--------- ---------- ------------------------------
TO_NUMBER         21 Typ=2 Len=2: c1,16
UDF               22 Typ=2 Len=2: c1,17

2 rows selected.


Поменяем порядок
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
SQL> create table conv_error_tc as
  2  select 'X' value from dual union all
  3  select '10' from dual union all
  4  select 'X' from dual union all
  5  select '11' from dual union all
  6  select '1' from dual
  7  /

Table created.

SQL> 
SQL> create or replace function my_to_number(p_input in varchar2)
  2    return number
  3  is
  4    pragma udf;
  5  begin
  6    return to_number(p_input);
  7  exception
  8    when value_error
  9    then
 10      return 0;
 11  end;
 12  /

Function created.

SQL> 
SQL> col dump16 for a30
SQL> 
SQL> select 'TO_NUMBER' type,
  2         sum(to_number(value default 0 on conversion error)) amount,
  3         dump(sum(to_number(value default 0 on conversion error)), 16) dump16
  4    from conv_error_tc
  5   union all
  6  select 'UDF',
  7         sum(my_to_number(value)),
  8         dump(sum(my_to_number(value)), 16)
  9    from conv_error_tc
 10  /

TYPE          AMOUNT DUMP16
--------- ---------- ------------------------------
TO_NUMBER         23 Typ=2 Len=2: c1,18
UDF               22 Typ=2 Len=2: c1,17

2 rows selected.



Вот причина и обходное решение
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
SQL> select 'TO_NUMBER' type,
  2         sum(to_number(value default 0 on conversion error)) amount,
  3         dump(sum(to_number(value default 0 on conversion error)), 16) dump16
  4    from conv_error_tc
  5   union all
  6  select 'UDF',
  7         sum(my_to_number(value)),
  8         dump(sum(my_to_number(value)), 16)
  9    from conv_error_tc
 10  /

TYPE          AMOUNT DUMP16
--------- ---------- ------------------------------
TO_NUMBER         23 Typ=2 Len=2: c1,18
UDF               22 Typ=2 Len=2: c1,17

2 rows selected.

SQL> #0 explain plan for
SQL> /

Explained.

SQL> 
SQL> select * from table(dbms_xplan.display( format=> 'projection'));

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------
Plan hash value: 3428364256

-------------------------------------------------------------------------------------
| Id  | Operation           | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |               |     2 |     4 |     6   (0)| 00:00:01 |
|   1 |  UNION-ALL          |               |       |       |            |          |
|   2 |   SORT AGGREGATE    |               |     1 |     2 |            |          |
|   3 |    TABLE ACCESS FULL| CONV_ERROR_TC |     5 |    10 |     3   (0)| 00:00:01 |
|   4 |   SORT AGGREGATE    |               |     1 |     2 |            |          |
|   5 |    TABLE ACCESS FULL| CONV_ERROR_TC |     5 |    10 |     3   (0)| 00:00:01 |
-------------------------------------------------------------------------------------

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - STRDEF[9], STRDEF[22], STRDEF[4000]
   2 - (#keys=0) SUM(TO_NUMBER("VALUE" DEFAULT 0 ON CONVERSION ERROR ))[22]
   3 - (rowset=256) "VALUE"[VARCHAR2,2]
   4 - (#keys=0) SUM("MY_TO_NUMBER"("VALUE"))[22]
   5 - "VALUE"[VARCHAR2,2]

21 rows selected.

SQL> select /*+ opt_param('_rowsets_enabled' 'false')*/'TO_NUMBER' type,
  2         sum(to_number(value default 0 on conversion error)) amount,
  3         dump(sum(to_number(value default 0 on conversion error)), 16) dump16
  4    from conv_error_tc
  5   union all
  6  select 'UDF',
  7         sum(my_to_number(value)),
  8         dump(sum(my_to_number(value)), 16)
  9    from conv_error_tc
 10  /

TYPE          AMOUNT DUMP16
--------- ---------- ------------------------------
TO_NUMBER         22 Typ=2 Len=2: c1,17
UDF               22 Typ=2 Len=2: c1,17

2 rows selected.

...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 12.2 / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]