powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не меняется last_ddl_time при перекомпиляции пакета
21 сообщений из 21, страница 1 из 1
Не меняется last_ddl_time при перекомпиляции пакета
    #39586787
Ивечныйбой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компилитруем тело пакета, компиляция успешна, last_ddl_time не меняется.
Мне говорят "если код не изменялся, то и last_ddl_time не изменится".
Код действительно тот же самый.
Но неужели так может быть? Я что-то сильно пропустил в своем понимании Oracle??
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39586800
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ивечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.
ИвечныйбойЯ что-то сильно пропустил в своем понимании Oracle??Здесь нет ничего экстраординарного.
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39586972
Ивечныйбой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicИвечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.
ИвечныйбойЯ что-то сильно пропустил в своем понимании Oracle??Здесь нет ничего экстраординарного.
Да што вы говорите?
Это полная, полнейшая и невозможная чушь.
Перекомпиляция меняет last_time_ddl. И никак иначе. У Oracle нет проверки идентичности нового кода
тому, который в данный момент скомпилирован.
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39586980
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИвечныйбойПерекомпиляция меняет last_time_ddl. И никак иначе. У Oracle нет проверки идентичности нового кода
тому, который в данный момент скомпилирован.Иди-ка ты эту чушь пороть в свой ПТ.
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39586999
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть CREATE OR REPLACE (меняет в любом случае), а есть ALTER PACKAGE COMPILE (не меняет)
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587009
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЕсть CREATE OR REPLACE (меняет в любом случае), а есть ALTER PACKAGE COMPILE (не меняет)Ты, наверное, перепутал?
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587014
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно, попутал
Хотя был уверен, что именно так правильно
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587015
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic, он просто поленился проверить.
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587016
Вячеслав ЛюбомудровЕсть 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
Не меняется last_ddl_time при перекомпиляции пакета
    #39587019
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я помню, что в этом отношении они разные
А при пересоздании мне казалось логичней менять last_ddl_time, ведь если текст меняется, то и LAST_DDL_TIME меняется
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587023
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А COMPILE сам-по себе не очень-то DDL, ведь может быть вызван и неявно
И тогда LAST_DDL_TIME, насколько помню, тоже не меняется
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587397
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я согласен с Вячеславом - чисто интутивно казалось бы что должно быть наоборот!
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587506
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicИвечныйбой"если код не изменялся, то и last_ddl_time не изменится"Правильно.

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

SY.
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587516
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYдаже если код не изменялся когда статус меняется.Валидация посредством replace что-ли?
...
Рейтинг: 0 / 0
Не меняется last_ddl_time при перекомпиляции пакета
    #39587530
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Не меняется last_ddl_time при перекомпиляции пакета
    #39587537
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYвалидацияПопытка валидации.
SYинвалидацияПока не продемонстрировано:
SY
Код: plsql
1.
2.
3.
4.
5.
SQL> drop table no_such_table purge;

Table dropped.

SQL> exec p1;

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

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

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


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