Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Privilege на удаленную таблицу  [new]
Aleks Niches
Member

Откуда:
Сообщений: 161
Пользователю USER_1 дан грант SELECT на определенную таблицу TABLE_NAME.

Данная таблица TABLE_NAME каждый день удаляется при помощи jo b (DROP) и создается заного (CREATE) в целях экономии времени.

Соотвесно удаляется привилегия у пользователя USER_1 .

Накидайте варианты кому не сложно без
GRANT SELECT ANY TABLE
, чтобы у пользователя оставались привилегии на данную таблицу.

Можно конечно запихнуть в процедую GRANT SELECT ON TABLE_NAME , но каждый раз давать привилегии при срабатывании JOB-a после таблицы DROP , CREATE как-то нето.
21 май 21, 12:05    [22325212]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
AmKad
Member

Откуда:
Сообщений: 5305
Цель удаления какая? Очистка данных? Если да, то чем не подходит truncate, выполненные в соответствующем порядке в зависимости от FK?

P.S. Для циклических ссылок нужно будет делать доп. действия.
21 май 21, 12:16    [22325216]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15498
Aleks Niches,

про truncate вам уже выше сказали
а еще - указывайте версию (и редакцию) сервера, от которого вам чего-то надо
21 май 21, 12:28    [22325223]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
Правильный Вася
Member

Откуда:
Сообщений: 444
Aleks Niches
но каждый раз давать привилегии при срабатывании JOB-a после таблицы DROP , CREATE как-то нето.

А drop-create - значит, как-то самое то?
Логика не просматривается.

Хочешь съесть орех, так купи и почисть. Или чистить после каждой покупки - не то?
21 май 21, 20:04    [22325488]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
Aleks Niches
Member

Откуда:
Сообщений: 161
AmKad
Цель удаления какая? Очистка данных? Если да, то чем не подходит truncate, выполненные в соответствующем порядке в зависимости от FK?

P.S. Для циклических ссылок нужно будет делать доп. действия.


Таблица удаляется и создается по новой, в целях экономии времени. Если TRUNCATE придется инсертить 360 млн. строк, DML не катит.
24 май 21, 09:36    [22326049]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10215
Aleks Niches

Таблица удаляется и создается по новой, в целях экономии времени. Если TRUNCATE придется инсертить 360 млн. строк, DML не катит.


А если создается по новой то что инсертить 360 млн. строк не надо? А если ты про UNDO то INSERT /*+ APPEND */. Ну и индексы, констрейнты, триггеры дропаем перед INSERT.

SY.
24 май 21, 12:02    [22326133]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8282
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
+ Пример набора команд

SQL> SET ECHO ON;

SQL> CREATE USER test IDENTIFIED BY test;
User TEST created.

SQL> ALTER USER test QUOTA UNLIMITED ON users;
User TEST altered.

SQL> GRANT CONNECT TO test;
Grant succeeded.

SQL> GRANT CREATE TABLE TO test;
Grant succeeded.

SQL> GRANT CREATE VIEW TO test;
Grant succeeded.

SQL> CREATE USER scott IDENTIFIED BY tiger;
User SCOTT created.

SQL> GRANT CREATE SESSION TO scott;
Grant succeeded.

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 4;
Table TEST_TAB created.

SQL> CREATE VIEW test_view
  2  AS
  3  SELECT * FROM test_tab;
View TEST_VIEW created.

SQL> GRANT SELECT ON test_view TO SCOTT;
Grant succeeded.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
         1
         2
         3

SQL> CONNECT test/test
Connected.

SQL> DROP TABLE test_tab PURGE;
Table TEST_TAB dropped.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

Error starting at line : 35 in command -
SELECT * FROM test.test_view
Error at Command Line : 35 Column : 20
Error report -
SQL Error: ORA-04063: view "TEST.TEST_VIEW" имеет ошибки

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM*100 AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 5;
Table TEST_TAB created.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
       100
       200
       300
       400

Скрипт с командами примера прилагается.

К сообщению приложен файл (CRE_TAB_VIEW_PRIV.sql - 823bytes) cкачать
24 май 21, 16:38    [22326351]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
Aleks Niches
Member

Откуда:
Сообщений: 161
SQL*Plus
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
+ Пример набора команд

SQL> SET ECHO ON;

SQL> CREATE USER test IDENTIFIED BY test;
User TEST created.

SQL> ALTER USER test QUOTA UNLIMITED ON users;
User TEST altered.

SQL> GRANT CONNECT TO test;
Grant succeeded.

SQL> GRANT CREATE TABLE TO test;
Grant succeeded.

SQL> GRANT CREATE VIEW TO test;
Grant succeeded.

SQL> CREATE USER scott IDENTIFIED BY tiger;
User SCOTT created.

SQL> GRANT CREATE SESSION TO scott;
Grant succeeded.

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 4;
Table TEST_TAB created.

SQL> CREATE VIEW test_view
  2  AS
  3  SELECT * FROM test_tab;
View TEST_VIEW created.

SQL> GRANT SELECT ON test_view TO SCOTT;
Grant succeeded.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
         1
         2
         3

SQL> CONNECT test/test
Connected.

SQL> DROP TABLE test_tab PURGE;
Table TEST_TAB dropped.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

Error starting at line : 35 in command -
SELECT * FROM test.test_view
Error at Command Line : 35 Column : 20
Error report -
SQL Error: ORA-04063: view "TEST.TEST_VIEW" имеет ошибки

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM*100 AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 5;
Table TEST_TAB created.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
       100
       200
       300
       400

Скрипт с командами примера прилагается.


Спасибо вам , лучший варинат я так думаю
2 июн 21, 14:20    [22330329]     Ответить | Цитировать Сообщить модератору
 Re: Privilege на удаленную таблицу  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8282
Aleks Niches
SQL*Plus
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
+ Пример набора команд

SQL> SET ECHO ON;

SQL> CREATE USER test IDENTIFIED BY test;
User TEST created.

SQL> ALTER USER test QUOTA UNLIMITED ON users;
User TEST altered.

SQL> GRANT CONNECT TO test;
Grant succeeded.

SQL> GRANT CREATE TABLE TO test;
Grant succeeded.

SQL> GRANT CREATE VIEW TO test;
Grant succeeded.

SQL> CREATE USER scott IDENTIFIED BY tiger;
User SCOTT created.

SQL> GRANT CREATE SESSION TO scott;
Grant succeeded.

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 4;
Table TEST_TAB created.

SQL> CREATE VIEW test_view
  2  AS
  3  SELECT * FROM test_tab;
View TEST_VIEW created.

SQL> GRANT SELECT ON test_view TO SCOTT;
Grant succeeded.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
         1
         2
         3

SQL> CONNECT test/test
Connected.

SQL> DROP TABLE test_tab PURGE;
Table TEST_TAB dropped.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

Error starting at line : 35 in command -
SELECT * FROM test.test_view
Error at Command Line : 35 Column : 20
Error report -
SQL Error: ORA-04063: view "TEST.TEST_VIEW" имеет ошибки

SQL> CONNECT test/test
Connected.

SQL> CREATE TABLE test_tab
  2  AS 
  3  SELECT ROWNUM*100 AS n 
  4  FROM dual 
  5  CONNECT BY LEVEL < 5;
Table TEST_TAB created.

SQL> CONNECT scott/tiger
Connected.

SQL> SELECT * FROM test.test_view;

         N
----------
       100
       200
       300
       400

Скрипт с командами примера прилагается.


Спасибо вам , лучший варинат я так думаю

На доброе здоровье! :-)
2 июн 21, 14:22    [22330331]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить