powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не работает, но и не даёт ошибку! alter table .. drop unused columns
9 сообщений из 9, страница 1 из 1
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097155
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, привет.
Имеется большая база (терабайты данных). Надо кое-какие колонки в ней затереть, желательно за небольшое время (Боевая БД уходит в тест).
Была идея удалить (на самом деле безвозвратно спрятать) колонки методом:
"alter table .. set unused column .." - такая конструкция работает мгновенно на любых объёмах. Колонка остаётся в DBA_TAB_COLS.HIDDEN_COLUMNS = 'YES', и декларируется, что нет возможности вернуть данные обратно.
Но наши админы нашли способ, как хакнуть этот результат, и восстановить данные.
Ну ок, говорим мы, давайте ещё сделаем "alter table .. drop unused columns" - хоть и долго, но данные теперь уже должны потереться безвозвратно.
Но что странно: почему-то эта команда ничего не делает: отрабатывает мгновенно, ошибку (exception) не выкидывает, и запись о колонке остаётся в DBA_TAB_COLS.
Быстрый гуглёж ничего не подсказал.
Может быть не то гуглил, и благородное сообщество ткнёт меня в правильные ссылки? А то вдруг прям расскажете, что я делаю не так? :)
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097179
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел предупреждение, что нужно быть аккуратным при выполнении такой операции
ALTER TABLE … DROP UNUSED COLUMNS CHECKPOINT
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097182
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь тоже по ускорению операции советы дают
https://www.club-oracle.com/threads/how-to-drop-a-column-fast.49583/
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097237
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22,

Можете сделать тест-кейс или продемонстрировать выводом в sqlplus?
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097239
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22
...Но наши админы нашли способ, как хакнуть этот результат, и восстановить данные.
Ну ок, говорим мы, давайте ещё сделаем "alter table .. drop unused columns" - хоть и долго, но данные теперь уже должны потереться безвозвратно.
Но что странно: почему-то эта команда ничего не делает: отрабатывает мгновенно, ошибку (exception) не выкидывает, и запись о колонке остаётся в DBA_TAB_COLS...


Если я все правильно понял то ты пытаешься выполнить "alter table .. drop unused columns" после того как "админы нашли способ, как хакнуть этот результат".
Внимание вопрос - а что сделали твои админы? Сдается мне что проблема началась после того как "хакнули". Я не прав?
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40097438
Фотография aamazur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22,

таблица с компрессией? поищите drop unused + compressed.
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40098882
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aamazur
shurka22,
таблица с компрессией? поищите drop unused + compressed.

Спасибо, оно!

select compression, compress_for from tabs where table_name = 'X';
-------- --------
ENABLED ADVANCED

Как было (колонка не удалялась):
alter table X set unused column CL; --отмечаю колонку "на удаление"
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- проверяю, что колонка ещё осталась в таблице
alter table X drop unused columns; -- выполняется мгновенно, несмотря на 100млн записей, что наводит на подозрения
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- запись присутствует - колонка осталась неудалённой!!

Решилось так:
alter table X move nocompress; -- снимаю компрессию
alter table X drop unused columns; -- теперь работает как надо
alter table X move compress for OLTP; -- возвращаю компрессию
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- колонка удалилась!
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40099084
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22
aamazur
shurka22,
таблица с компрессией? поищите drop unused + compressed.

Спасибо, оно!

select compression, compress_for from tabs where table_name = 'X';
-------- --------
ENABLED ADVANCED

Как было (колонка не удалялась):
alter table X set unused column CL; --отмечаю колонку "на удаление"
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- проверяю, что колонка ещё осталась в таблице
alter table X drop unused columns; -- выполняется мгновенно, несмотря на 100млн записей, что наводит на подозрения
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- запись присутствует - колонка осталась неудалённой!!

Решилось так:
alter table X move nocompress; -- снимаю компрессию
alter table X drop unused columns; -- теперь работает как надо
alter table X move compress for OLTP; -- возвращаю компрессию
select * from dba_tab_cols where table_name ='X' and hidden_column = 'YES' and column_name = 'CL'; -- колонка удалилась!

Опция Advanced Compression лицензирована?
...
Рейтинг: 0 / 0
не работает, но и не даёт ошибку! alter table .. drop unused columns
    #40099169
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus
Опция Advanced Compression лицензирована?

Ну вы спросили. Не знаю, но подозреваю, что - да.
Мне выдали БД, сказали, мол надо сделать то-то и то-то. В детали я не вдавался. И даже не знал о таких подробностях.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не работает, но и не даёт ошибку! alter table .. drop unused columns
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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