powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как восстановить...
16 сообщений из 16, страница 1 из 1
как восстановить...
    #33790629
lnkz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
благодаря своим кривым рукам перекомпилировал процедуру с абсолютно левым кодом... как можно восстановить?
кто подскажет буду очень благодарен..
...
Рейтинг: 0 / 0
как восстановить...
    #33790645
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятен вопрос. Если был грубо заменен код и не осталось копии, то никак
...
Рейтинг: 0 / 0
как восстановить...
    #33790647
lnkz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясн.. придется заново писать(
...
Рейтинг: 0 / 0
как восстановить...
    #33790665
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnkz wrote:
> благодаря своим кривым рукам перекомпилировал процедуру с абсолютно
> левым кодом... как можно восстановить?
> кто подскажет буду очень благодарен..

Если еще не поздно и Oracle 9i , то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select text
from all_source as of timestamp (systimestamp - interval '3' hour)
where owner = :owner
   and name = :object_name
   and type = :object_type
order by name
        , type
        , line;

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как восстановить...
    #33790715
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А из архивлогов через логминер нельзя ничего достать?
...
Рейтинг: 0 / 0
как восстановить...
    #33790840
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вытащить можно, но только операторы по созданию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
execute sys.DBMS_LOGMNR.ADD_LOGFILE ('/ebs/arch_0000000641_0001.log');
execute sys.DBMS_LOGMNR.START_LOGMNR;
select SQL_REDO from V$LOGMNR_CONTENTS where operation='DDL';

SQL_REDO
---------------------------------
create or replace procedure a as
begin
null;
end;
;
А в SQL_UNDO пусто...
...
Рейтинг: 0 / 0
как восстановить...
    #33790857
lnkz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не непомогает... возращает пустоту(
...
Рейтинг: 0 / 0
как восстановить...
    #33790859
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты вспомни, когда создавал правильную процедуру и возьми оттуда...
...
Рейтинг: 0 / 0
как восстановить...
    #33790867
lnkz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин всем спасибо восстановил!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как восстановить...
    #39970790
kiki123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zdravstvuite,

u menia takaja zhe problema.. No all_sources ne pomogaet. Pozdno. A po sovetu Takuravy ne umeju. Kak vsio zhe poluchilosj vosstanovitj? Esli mozhno, objasnite eshe raz..
...
Рейтинг: 0 / 0
как восстановить...
    #39970797
kiki123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lnkz,

Здравствуйте,

у меня такая же проблема. Но all_sources не помогает. Поздно. А по совету Takuravy не умею. Если можно, обясните ещё раз..
...
Рейтинг: 0 / 0
как восстановить...
    #39970823
ilyuha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у были такие проблемы поставил такой триггер



Код: 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.
-- Create table
create table T_DDL_LOG
(
  object_owner          VARCHAR2(150) not null,
  object_name           VARCHAR2(150) not null,
  object_type           VARCHAR2(150) not null,
  date_log              DATE not null,
  is_get_ddl_error_flag NUMBER not null,
  old_object_ddl        CLOB,
  ddl_command           CLOB
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 25M
    next 1M
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table T_DDL_LOG
  is 'Таблица изменений DDL объектов';
-- Add comments to the columns 
comment on column T_DDL_LOG.object_owner
  is 'Владелец объекта';
comment on column T_DDL_LOG.object_name
  is 'Имя объекта';
comment on column T_DDL_LOG.object_type
  is 'Тип объекта';
comment on column T_DDL_LOG.date_log
  is 'Дата создания/изменения записи';
comment on column T_DDL_LOG.is_get_ddl_error_flag
  is '1 - если попытка получения DDL объекта вызвала ошибку, в этом случае в  OLD_OBJECT_DDL записано сообщение об ошибке (например объекта не существовало), 0 - все ок';
comment on column T_DDL_LOG.old_object_ddl
  is 'DDL объекта ДО изменения';
comment on column T_DDL_LOG.ddl_command
  is 'команда DDL, вызвавшая изменение объекта';





Код: 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.
CREATE OR REPLACE TRIGGER "TR_DDL_LOG"
  before DDL on ORGANIZ.SCHEMA
declare
  PRAGMA AUTONOMOUS_TRANSACTION;
  vl_old_object_ddl         CLOB;
  vl_ddl_command            CLOB;
  vl_is_get_ddl_error_flag  t_ddl_log.is_get_ddl_error_flag%TYPE := 0;
  vl_ora_dict_obj_name varchar2(200);
  vl_ora_dict_obj_owner varchar2(200);
  vl_ora_dict_obj_type varchar2(200);
  n NUMBER;
  sql_text ora_name_list_t;

BEGIN
  IF ora_dict_obj_name NOT IN ('TR_DDL_LOG', 'T_DDL_LOG') THEN
    BEGIN
      SELECT dbms_metadata.get_ddl(decode(ora_dict_obj_type, 'PACKAGE BODY', 'PACKAGE', ora_dict_obj_type), ora_dict_obj_name, ora_dict_obj_owner)
        INTO vl_old_object_ddl
        FROM dual;
    EXCEPTION
      WHEN OTHERS THEN BEGIN
        vl_is_get_ddl_error_flag := 1;
        vl_old_object_ddl := SQLERRM;
      END;
    END;

    n := ora_sql_txt(sql_text);
    FOR i IN 1..n LOOP
      vl_ddl_command := vl_ddl_command || sql_text(i);
    END LOOP;

    vl_ora_dict_obj_name := nvl(ora_dict_obj_name,'UNDEFINED');
    vl_ora_dict_obj_owner := nvl(ora_dict_obj_owner,'UNDEFINED');
  vl_ora_dict_obj_type := nvl(ora_dict_obj_type,'UNDEFINED');

    INSERT INTO t_ddl_log
      (object_owner, object_name, object_type, date_log, is_get_ddl_error_flag, old_object_ddl, ddl_command)
    VALUES
      (vl_ora_dict_obj_owner, vl_ora_dict_obj_name, vl_ora_dict_obj_type, SYSDATE, vl_is_get_ddl_error_flag, vl_old_object_ddl, vl_ddl_command);

    COMMIT;
  END IF;
end TR_DDL_LOG;



...
Рейтинг: 0 / 0
как восстановить...
    #39970836
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiki123,

есть 10 типов людей - те, кто делают бекапы и те, кто пока не делает бекапы.
...
Рейтинг: 0 / 0
как восстановить...
    #39970840
kiki123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilyuha111,

Спасибо,

это удобно и целесообразно, особенно в старом оракле.

А что имелось ввиду в другом сообщении: "взять первичную правильную процедуру.." откуда?
...
Рейтинг: 0 / 0
как восстановить...
    #39970843
kiki123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oragraf,

согласна:) вообще-то первичный ддл я у себя всё-таки нашла.. но сколько было написано позже..:/
...
Рейтинг: 0 / 0
как восстановить...
    #39970985
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiki123
oragraf,

согласна:) вообще-то первичный ддл я у себя всё-таки нашла.. но сколько было написано позже..:/


для целей программирования есть различные control version system

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


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