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

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

хз.

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

хз.

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

Ну на каких нибудь глубоко тестовых средах можно :)
...
Рейтинг: 0 / 0
12.2
    #39343827
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
veepлокаторВсе равно до версии 12.2.0.2 пользовать не рекомендуется :)Ну на каких нибудь глубоко тестовых средах можно :)Если есть предрасположенность к нетрадиционному сексу.
...
Рейтинг: 0 / 0
12.2
    #39343832
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-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
12.2
    #39343841
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
12.2
    #39343857
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DBA_STATEMENTS - прикольная штука
...
Рейтинг: 0 / 0
12.2
    #39343858
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
xtenderDBA_STATEMENTS - прикольная штука http://docs.oracle.com/database/122/REFRN/ALL_STATEMENTS.htm#REFRN-GUID-36FF82A6-DD4B-45E4-8B46-2ECD38C2AE47
Намного упростит жисть :)
...
Рейтинг: 0 / 0
12.2
    #39343861
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
автор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
12.2
    #39343874
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderНамного упростит жисть :)Не разработчику, а тем, кто его считает врагом-партизаном?
...
Рейтинг: 0 / 0
12.2
    #39343881
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
12.2
    #39343882
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopxtenderпропущено...

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

Принцип работы понятен - по аналогии с директивой #define в си.
Не совсем понятна конкретная польза учитывая оракловую специфику и имеющиеся %type, %rowtype.
...
Рейтинг: 0 / 0
12.2
    #39343897
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
12.2
    #39343963
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dbms_photoshop,

Я видел уже много велосипедов, где так или иначе решают эту же вещь. Кто-то через препроцессинг собственной утилиткой, которая хранит и подставляет такие настройки, другие - пакеты-генераторы внутри оракла создают. Используют свои обозначения типа SHORT_STRING, LONG_STRING - для строк, что-нибудь типа IDENT - для суррогнатных ключей на сиквенсах, а потом по мере развития, спустя годы увеличивают их
...
Рейтинг: 0 / 0
12.2
    #39343974
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 12.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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