CftClub.ru
Клуб специалистов ЦФТ-Банк

Удаление в PICK

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Bens
Участник со стажем


Вступление в Клуб: 19.04.2013
СообщениеВт Апр 23, 2013 08:14   Удаление в PICK Ответить с цитатой
Полезность: Нет оценки
Здравствуйте.

Удалил в pick один давно не используемый справочник с сохранением удаляемого объекта в mdb. После чего снова накатил его из этого mdb. По логике (моей) в справочнике данные должны были исчезнуть. Облазил mdb-файл - ничего похожего на данные в нем не нашел. Получает удаляя в pick справочник мы удаляем только структуру данных, а сами данные мусором остаются в базе? Я правильно понимаю? Поправьте меня или поддтвердите
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеВт Апр 23, 2013 08:23    Ответить с цитатой
Полезность: Нет оценки
Вполне возможно, скорее всего Оракл восстановил вашу таблицу из recycle bin. Надо настройки смотреть его.
Bens
Участник со стажем


Вступление в Клуб: 19.04.2013
СообщениеВт Апр 23, 2013 08:49    Ответить с цитатой
Полезность: Нет оценки
Откуда Оракл знает что мы накатываем ранее удаленную таблицу? Recycle bin сам как то очищается или DBA его должен "пнуть"?
Получается удаляя структуру данных надо предварительно очистить его от данных чтоб они не лежали "мертвым грузом"?
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеВт Апр 23, 2013 09:11    Ответить с цитатой
Полезность: Нет оценки
Ну, как, как. Это ещё на FAT32 было, файлы не удаляются физически, а просто сносится метка, если место никто не занял, то спокойно восстанавливается метка и файл. Вы с админами вашими говорили Оракловыми?
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеВт Апр 23, 2013 12:22    Ответить с цитатой
Полезность: Нет оценки
По-моему, таблицы остаются в оракле даже если удалить структуры из модели данных платформы развития (на всякий случай). При обновлении ТЯ есть скрипт, который удаляет такие таблицы.
alex_orb
Участник со стажем


Вступление в Клуб: 28.09.2007
СообщениеЧт Апр 25, 2013 07:43    Ответить с цитатой
Полезность: Нет оценки
При удалении ТБП средствами АРМ Администратор Проекта или АРМ словаря данных удаляются исключительно их описания в соответствующих таблицах ТЯ сами таблицы а так же записи родительских таблиц если удаляемый тип является дочерним ассоциированные с удаляемым ТБП не удаляются. Удалить из можно только напрямую средствами ORACLE.
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеЧт Апр 25, 2013 08:14    Ответить с цитатой
Полезность: Нет оценки
alex_orb пишет:
При удалении ТБП средствами АРМ Администратор Проекта или АРМ словаря данных удаляются исключительно их описания в соответствующих таблицах ТЯ сами таблицы а так же записи родительских таблиц если удаляемый тип является дочерним ассоциированные с удаляемым ТБП не удаляются. Удалить из можно только напрямую средствами ORACLE.

Как найти все такие таблицы, которые не удалились из Oracle и уже не используются?
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеЧт Апр 25, 2013 08:18    Ответить с цитатой
Полезность: Нет оценки
Andry пишет:

Как найти все такие таблицы, которые не удалились из Oracle и уже не используются?

В апгрейде ТЯ был скрипт для этого. Название не помню. Поищите там.
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Апр 25, 2013 09:42    Ответить с цитатой
Полезность: Нет оценки
Скорее всего ваш случай:

Удаление таблиц

Удаление таблицы выполняется командой DROP TABLE имя_таблицы.

Сведения о таблице СУБД хранит в двух отдельных местах БД: в справочной части БД (в словаре-справочнике) — описание и в виде самостоятельной структуры (сегмента) в файлах табличного пространства — содержимое, данные.

До версии 10 единственным способом удаления по команде DROP TABLE было удаление из словаря-справочника сведений о таблице и удаление сегмента с данными из "рабочей части" БД. С версии 10 возможен (и действует автоматически по умолчанию) второй вариант, когда по команде DROP TABLE описание таблицы и сегмент с ее данными получают новое системное имя, после чего таблица под прежним именем перестает существовать, но фактически какое-то время может быть еще восстановлена. Этот второй способ удаления таблицы воплощает идею "мусорной корзины".

Мусорная корзина

С версии 10 смысл команды DROP изменился. В основном случае после нее и описание, и данные таблицы продолжают храниться на своих местах, но под новыми, присвоенными системой автоматически именами. Для пользователя таблица, как и прежде, пропала, однако на деле все, что нужно для ее восстановления, если такая необходимость возникнет, продолжает храниться в БД. Тем самым для таблиц реализована техника мусорной корзины (recycle bin), хорошо известная по файловым системам.

Список содержимого мусорной корзины можно получить из системной таблицы USER_RECYCLEBIN (публичный синоним — RECYCLEBIN):

SELECT object_name, original_name, droptime FROM user_recyclebin;

Восстановить таблицу по исходному имени (поле ORIGINAL_NAME из USER_RECYCLEBIN) можно, например, так:

FLASHBACK TABLE dept_copy2 TO BEFORE DROP;

Восстанавливается не все и не точно. У восстановленной подобным образом таблицы будут отсутствовать, возможно, имевшиеся до удаления ограничения целостности, а индексы, хотя и восстановятся, но с системными именами.

Для удаления из мусорной корзины нужно использовать команду PURGE, например:

PURGE TABLE dept_copy3;
PURGE RECYCLEBIN;

Чтобы таблица удалялись сразу безвозвратно, следует использовать конструкцию PURGE в команде DROP, например:

DROP TABLE dept_copy3 PURGE;
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеЧт Апр 25, 2013 10:14    Ответить с цитатой
Полезность: Нет оценки
lexus пишет:
Andry пишет:

Как найти все такие таблицы, которые не удалились из Oracle и уже не используются?

В апгрейде ТЯ был скрипт для этого. Название не помню. Поищите там.


может этот

c_clear.sql - удаление лишних интерфейсных пакетов
классов, операций, очистка таблицы sources;
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеЧт Апр 25, 2013 11:32    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
lexus пишет:
Andry пишет:

Как найти все такие таблицы, которые не удалились из Oracle и уже не используются?

В апгрейде ТЯ был скрипт для этого. Название не помню. Поищите там.


может этот

c_clear.sql - удаление лишних интерфейсных пакетов
классов, операций, очистка таблицы sources;


Не совсем. Там интерфейсные пакеты неиспользуемые. А сами таблицы вроде здесь:
\Compile\u_clear.sql
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Апр 25, 2013 11:39    Ответить с цитатой
Полезность: Нет оценки
Andry пишет:
alex_orb пишет:
При удалении ТБП средствами АРМ Администратор Проекта или АРМ словаря данных удаляются исключительно их описания в соответствующих таблицах ТЯ сами таблицы а так же записи родительских таблиц если удаляемый тип является дочерним ассоциированные с удаляемым ТБП не удаляются. Удалить из можно только напрямую средствами ORACLE.

Как найти все такие таблицы, которые не удалились из Oracle и уже не используются?


Не забудьте, что, хотя сами таблицы уже не используются, есть код, который без них сломается.
Это, к примеру, функция поиска обратных ссылок.
Там список ТБП получается с помощью макроса, поэтому при удалении элемента из модели эти операции не перекомпилируются, и в pl/sql-коде остаётся упоминание о таблицах удалённых справочников.
Удалите таблицу - пакет станет невалидным, поиск обратных ссылок сломается.

Так что будьте осторожны.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах