powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как скриптом пересоздать колонки в таблицах?
14 сообщений из 39, страница 2 из 2
Как скриптом пересоздать колонки в таблицах?
    #40053048
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Как ты думаешь какая производительность будет у
Код: plsql
1.
SELECT REMAP_STR_FUNC(COL1),REMAP_NUMBER_FUNC(COL2),REMAP_DATE_FUNC(COL3),... FROM TABLE_WITH_10_MILLION_ROWS;

Соломон, 10 лямов - это семечки. Особенно, когда дамп снимается изредка по запросу.
SY
RBMS_RLS в разы быстрее
Не мерял, но это не важно. RBMS_RLS был вариантом в 9i для аналога QUERY=, когда не было DataPump-а. DataPump тупо удобней и функциональней. Всего лишь один пакет и один конфиг экспорта. Практически никакого вмешательства в исходную БД.
И, кстати, как там у RLS с маскированием, а не тупым обнулением данных?


P.S. Это бессмысленный спор. Разработчик не поймёт местами замшелого админа. У каждого свои тараканы и болото для кулика.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40053065
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic

И, кстати, как там у RLS с маскированием, а не тупым обнулением данных?


Все зависит от задачи. В моем случае - дать данные кроме sensitive третьему лицу. И RLS прекрасно с этим справляется. Для "максимально похожей на пром по производительности" конечно RLS не подходит. Тут надо пробовать DBMS_REDACT или REMAP_DATA хотя с "набор колонок (несколько тысяч)" это будет еще та портянка и далеко неясно какой предел размера parfile. Есть еще одна возможность export view as a table - пользовался несколько раз, работает нормально. Просто создаем view маскируя нужные поля и в expdp VIEWS_AS_TABLES но теряются физические свойства исходной таблицы, constraints, indexes, etc. так что для "максимально похожей на пром по производительности" не пойдет.

SY.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40053535
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
"набор колонок (несколько тысяч)".

Я опять что-то пропустил?
A.3 Logical Database Limits
ItemType of LimitLimit ValueColumnsPer table 1000 columns maximum ColumnsPer index (or clustered index)32 columns maximumColumnsPer bitmapped index30 columns maximum
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40053572
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
SY
"набор колонок (несколько тысяч)".

Я опять что-то пропустил?
A.3 Logical Database Limits
ItemType of LimitLimit ValueColumnsPer table 1000 columns maximum ColumnsPer index (or clustered index)32 columns maximumColumnsPer bitmapped index30 columns maximum


А кто сказал что весь "набор колонок (несколько тысяч)" это одна таблица?

SY.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40053575
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
А кто сказал что весь "набор колонок (несколько тысяч)" это одна таблица?

Ну "набор колонок" по сути и является частью определения таблицы, в единственном числе => таблица одна, как-то так...
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40053579
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous

Ну "набор колонок" по сути и является частью определения таблицы, в единственном числе => таблица одна, как-то так...


Выдираешь из контекста - Есть набор колонок (несколько тысяч), которые надо почистить .

SY.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40054858
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oragraf
shurka22,
Ну очистите вы колонки, дальше что? Статистика изменится, запросы по пустышкам будут работать по-другому.

Очищаться будут только поля в больших таблицах (более 100млн записей). По этим полям нет индексов, их не жалко.
oragraf

Ваша задача называется - data masking. Есть покупные тулзовины(дорого), есть(где-то) самописные. Например, вместо реальных номеров карт можно генерировать фейковые, вместо реальных ИНН - фейковые. Тогда статистически данные будут подобны данным на проде, но при этом не будут персональными. ФИО тоже можно перемешивать. Ну и т.д.

update на некий мусор - нам бы уже сгодился. Но он выполняется непозволительно долго (неделю).
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40054864
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY
Выдираешь из контекста - Есть набор колонок (несколько тысяч), которые надо почистить .

Всё верно: секретные данные содержатся в нескольких тысячах колонок, которые содержатся в (примерно) тысячи таблицах.
Всего таблиц и колонок - десятки-сотни тысяч.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40054872
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
Ну да. Но после этого это будет уже совсем другая таблица. Не говоря уже о проблемах с FBI и виртуальными колонками.

Хм. А почему таблица будет другой? В каком смысле?
Логически? Вот мой вопрос в том и состоит - как сделать точно такую же колонку, как была? С той же логикой: индексами, констрейнтами итд.
Или физически? То есть другие сегменты-экстенты итд?
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40054896
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22
Хм. А почему таблица будет другой? В каком смысле?
Физический порядок столбцов.
shurka22
Вот мой вопрос в том и состоит - как сделать точно такую же колонку, как была?
Отбрось страхи и домыслы. DataPump
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40055092
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
Отбрось страхи и домыслы. DataPump

Я правильно понимаю, это более долгая операция, нежели update?
Нас уже update не устраивает своей скоростью. Хотя и полностью решает остальные проблемы.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40055123
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22
Я правильно понимаю, это более долгая операция, нежели update?
Неправильно.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40055252
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22

update на некий мусор - нам бы уже сгодился.


На NULL сгодится? Если да, то создаем RLS ф-цию и политики на нужные поля для маскировки от пользователя U1:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE
  FUNCTION null_sensitive_data(
                               p_owner IN VARCHAR2,
                               p_name  IN VARCHAR2
                              )
    RETURN VARCHAR2 AS
    BEGIN
        RETURN 'USER != ''U1''';
END;
/
BEGIN
  DBMS_RLS.ADD_POLICY (
                       object_schema         => 'SCOTT',
                       object_name           => 'EMP',
                       policy_name           => 'null_sensitive_data_rls',
                       function_schema       => 'SCOTT',
                       policy_function       => 'null_sensitive_data',
                       policy_type           => DBMS_RLS.STATIC,
                       sec_relevant_cols     => 'SAL,COMM',
                       sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS
                      );
END;
/



Теперь:

Код: 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.
SQL> SHOW USER
USER is "U2"
SQL> SELECT  *
  2    FROM  SCOTT.EMP
  3  /

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
----- ---------- --------- ---------- --------- ---------- ---------- ----------
 7369 SMITH      CLERK           7902 17-DEC-80        800                    20
 7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
 7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
 7566 JONES      MANAGER         7839 02-APR-81       2975                    20
 7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
 7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
 7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
 7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
 7839 KING       PRESIDENT            17-NOV-81       5000                    10
 7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
 7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
 7900 JAMES      CLERK           7698 03-DEC-81        950                    30
 7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
 7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

14 rows selected.

SQL>
...
SQL> SHOW USER
USER is "U1"
SQL> SELECT  *
  2    FROM  SCOTT.EMP
  3  /

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
----- ---------- --------- ---------- --------- ---------- ---------- ----------
 7369 SMITH      CLERK           7902 17-DEC-80                               20
 7499 ALLEN      SALESMAN        7698 20-FEB-81                               30
 7521 WARD       SALESMAN        7698 22-FEB-81                               30
 7566 JONES      MANAGER         7839 02-APR-81                               20
 7654 MARTIN     SALESMAN        7698 28-SEP-81                               30
 7698 BLAKE      MANAGER         7839 01-MAY-81                               30
 7782 CLARK      MANAGER         7839 09-JUN-81                               10
 7788 SCOTT      ANALYST         7566 19-APR-87                               20
 7839 KING       PRESIDENT            17-NOV-81                               10
 7844 TURNER     SALESMAN        7698 08-SEP-81                               30
 7876 ADAMS      CLERK           7788 23-MAY-87                               20
 7900 JAMES      CLERK           7698 03-DEC-81                               30
 7902 FORD       ANALYST         7566 03-DEC-81                               20
 7934 MILLER     CLERK           7782 23-JAN-82                               10

14 rows selected.

SQL>



Далее выполняем data pump export из-под U1 и вручаем заказчику - все "секретные" поля обнулены. Это куда быстрее чем expdp параметр REMAP_DATA который будет вызывать REMAP_DATA ф-ции N * M раз где N число "секретных" полей а M число строк в таблице.

SY.
...
Рейтинг: 0 / 0
Как скриптом пересоздать колонки в таблицах?
    #40055297
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Это куда быстрее чем expdp параметр REMAP_DATA который будет вызывать REMAP_DATA ф-ции N * M раз где N число "секретных" полей а M число строк в таблице
Соломон, ты закусил удила. Мифологическая скорость "обнуления" в ущерб функциональности здесь offtopic.
Он не рассматривает DataPump как вариант.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как скриптом пересоздать колонки в таблицах?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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