Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не меняется last_ddl_time при перекомпиляции пакета / 21 сообщений из 21, страница 1 из 1
19.01.2018, 05:41
    #39586787
Ивечныйбой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Компилитруем тело пакета, компиляция успешна, last_ddl_time не меняется.
Мне говорят "если код не изменялся, то и last_ddl_time не изменится".
Код действительно тот же самый.
Но неужели так может быть? Я что-то сильно пропустил в своем понимании Oracle??
...
Рейтинг: 0 / 0
19.01.2018, 07:47
    #39586800
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Ивечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.
ИвечныйбойЯ что-то сильно пропустил в своем понимании Oracle??Здесь нет ничего экстраординарного.
...
Рейтинг: 0 / 0
19.01.2018, 12:10
    #39586972
Ивечныйбой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicИвечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.
ИвечныйбойЯ что-то сильно пропустил в своем понимании Oracle??Здесь нет ничего экстраординарного.
Да што вы говорите?
Это полная, полнейшая и невозможная чушь.
Перекомпиляция меняет last_time_ddl. И никак иначе. У Oracle нет проверки идентичности нового кода
тому, который в данный момент скомпилирован.
...
Рейтинг: 0 / 0
19.01.2018, 12:20
    #39586980
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ИвечныйбойПерекомпиляция меняет last_time_ddl. И никак иначе. У Oracle нет проверки идентичности нового кода
тому, который в данный момент скомпилирован.Иди-ка ты эту чушь пороть в свой ПТ.
...
Рейтинг: 0 / 0
19.01.2018, 12:45
    #39586999
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Есть CREATE OR REPLACE (меняет в любом случае), а есть ALTER PACKAGE COMPILE (не меняет)
...
Рейтинг: 0 / 0
19.01.2018, 12:52
    #39587009
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Вячеслав ЛюбомудровЕсть CREATE OR REPLACE (меняет в любом случае), а есть ALTER PACKAGE COMPILE (не меняет)Ты, наверное, перепутал?
...
Рейтинг: 0 / 0
19.01.2018, 13:00
    #39587014
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Точно, попутал
Хотя был уверен, что именно так правильно
...
Рейтинг: 0 / 0
19.01.2018, 13:00
    #39587015
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Elic, он просто поленился проверить.
...
Рейтинг: 0 / 0
19.01.2018, 13:00
    #39587016
Не меняется last_ddl_time при перекомпиляции пакета
Вячеслав ЛюбомудровЕсть CREATE OR REPLACE (меняет в любом случае), а есть ALTER PACKAGE COMPILE (не меняет)
кусочек текста с простор металинкаHere is what appears to be happening:

1. When you use the create or replace syntax the last_ddl_time does not get
changed and keeps the original create time.
2. If you use alter function compile syntax the last_ddl_time is
incremented.
3. You can drop and create the function also to ensure the last_ddl_time is
incremented.
...
Рейтинг: 0 / 0
19.01.2018, 13:03
    #39587019
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Я помню, что в этом отношении они разные
А при пересоздании мне казалось логичней менять last_ddl_time, ведь если текст меняется, то и LAST_DDL_TIME меняется
...
Рейтинг: 0 / 0
19.01.2018, 13:05
    #39587023
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
А COMPILE сам-по себе не очень-то DDL, ведь может быть вызван и неявно
И тогда LAST_DDL_TIME, насколько помню, тоже не меняется
...
Рейтинг: 0 / 0
20.01.2018, 03:39
    #39587397
Valergrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
Я согласен с Вячеславом - чисто интутивно казалось бы что должно быть наоборот!
...
Рейтинг: 0 / 0
20.01.2018, 14:42
    #39587506
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicИвечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.

LAST_DDL_TIME также изменится при CREATE OR REPLACE (явном или неявном) даже если код не изменялся когда статус меняется.

SY.
...
Рейтинг: 0 / 0
20.01.2018, 15:07
    #39587516
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
SYдаже если код не изменялся когда статус меняется.Валидация посредством replace что-ли?
...
Рейтинг: 0 / 0
20.01.2018, 15:33
    #39587530
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicВалидация посредством replace что-ли?

Дa, валидация/инвалидация:

Код: 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.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Warning: Procedure created with compilation errors.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2  from user_objects
  3  where object_name = 'P1'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
01/20/2018 07:31:16

SQL> create table no_such_table(n number);

Table created.

SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Procedure created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2  from user_objects
  3  where object_name = 'P1'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
01/20/2018 07:32:22

SQL> drop table no_such_table purge;

Table dropped.

SQL> exec p1;
BEGIN p1; END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00905: object SCOTT.P1 is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2  from user_objects
  3  where object_name = 'P1'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
01/20/2018 07:32:42

SQL> create table no_such_table(n number);

Table created.

SQL> exec p1;

PL/SQL procedure successfully completed.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2  from user_objects
  3  where object_name = 'P1'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
01/20/2018 07:33:06

SQL> 



SY.
...
Рейтинг: 0 / 0
20.01.2018, 15:58
    #39587537
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
SYвалидацияПопытка валидации.
SYинвалидацияПока не продемонстрировано:
SY
Код: plsql
1.
2.
3.
4.
5.
SQL> drop table no_such_table purge;

Table dropped.

SQL> exec p1;

...
Рейтинг: 0 / 0
20.01.2018, 16:15
    #39587543
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicПока не продемонстрировано:


Код: 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.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
SQL> create table no_such_table(n number);

Table created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 07:33:06 INVALID

SQL> exec p1;

PL/SQL procedure successfully completed.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:08:52 VALID

SQL> drop table no_such_table purge;

Table dropped.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:08:52 INVALID

SQL> exec p1;
BEGIN p1; END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00905: object SCOTT.P1 is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored


SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:10:18 INVALID

SQL> create table no_such_table(n number);

Table created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:10:18 INVALID

SQL> exec p1;

PL/SQL procedure successfully completed.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:11:00 VALID

SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Procedure created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:11:00 VALID

SQL> drop table no_such_table purge;

Table dropped.

SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Warning: Procedure created with compilation errors.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:13:05 INVALID

SQL> create table no_such_table(n number);

Table created.

SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Procedure created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:13:25 VALID

SQL> 



SY.
...
Рейтинг: 0 / 0
20.01.2018, 16:19
    #39587545
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
SY
Код: plsql
1.
2.
3.
4.
5.
SQL> drop table no_such_table purge;

Table dropped.

SQL> create or replace

Мимо.
Код: plsql
1.
2.
3.
4.
5.
SQL> drop table no_such_table purge;

Table dropped.

SQL> select …

...
Рейтинг: 0 / 0
20.01.2018, 16:31
    #39587548
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicМимо.

Удаление dependent object меняет статус на INVALID без всякой компиляции. Но если ты настаиваешь:

Код: 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> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:13:25 VALID

SQL> drop table no_such_table purge;

Table dropped.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:13:25 INVALID

SQL> create or replace
  2  procedure p1
  3  is
  4  v_cnt number;
  5  begin
  6  select count(*) into v_cnt from no_such_table;
  7  end;
  8  /

Warning: Procedure created with compilation errors.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss'),
  2         status
  3  from user_objects
  4  where object_name = 'P1'
  5  /

TO_CHAR(LAST_DDL_TI STATUS
------------------- -------
01/20/2018 08:27:04 INVALID

SQL> 



Т.e. CREATE OR REPLACE без изменения кода изменит LAST_DDL_TIME при попытке валидации.

SY.
...
Рейтинг: 0 / 0
20.01.2018, 17:13
    #39587565
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
SYУдаление dependent object меняет статус на INVALID без всякой компиляции. Но если ты настаиваешь:Я вижу, что инвалидация (которую ты упомянул) не изменяет last_ddl_time.
SYТ.e. CREATE OR REPLACE без изменения кода изменит LAST_DDL_TIME при попытке валидации.А я бы говорил, что попытка валидации меняет last_ddl_time. А replace всего лишь частный случай валидации невалидного.
...
Рейтинг: 0 / 0
20.01.2018, 17:20
    #39587567
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не меняется last_ddl_time при перекомпиляции пакета
ElicА replace всего лишь частный случай валидации невалидного.

Естественно, ведь я и сказал как явного (CREATE OR REPLACE) так и неявного (выполнение) да и пример с exec привeл. Но вопрос-то был про CREATE OR REPLACE.

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


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