Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Privilege на удаленную таблицу / 9 сообщений из 9, страница 1 из 1
21.05.2021, 12:05
    #40071902
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Пользователю USER_1 дан грант SELECT на определенную таблицу TABLE_NAME.

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

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

Накидайте варианты кому не сложно без
Код: plsql
1.
GRANT SELECT ANY TABLE

, чтобы у пользователя оставались привилегии на данную таблицу.

Можно конечно запихнуть в процедую GRANT SELECT ON TABLE_NAME , но каждый раз давать привилегии при срабатывании JOB-a после таблицы DROP , CREATE как-то нето.
...
Рейтинг: 0 / 0
21.05.2021, 12:16
    #40071903
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Цель удаления какая? Очистка данных? Если да, то чем не подходит truncate, выполненные в соответствующем порядке в зависимости от FK?

P.S. Для циклических ссылок нужно будет делать доп. действия.
...
Рейтинг: 0 / 0
21.05.2021, 12:28
    #40071907
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Aleks Niches,

про truncate вам уже выше сказали
а еще - указывайте версию (и редакцию) сервера, от которого вам чего-то надо
...
Рейтинг: 0 / 0
21.05.2021, 20:04
    #40072044
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Aleks Niches
но каждый раз давать привилегии при срабатывании JOB-a после таблицы DROP , CREATE как-то нето.

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

Хочешь съесть орех, так купи и почисть. Или чистить после каждой покупки - не то?
...
Рейтинг: 0 / 0
24.05.2021, 09:36
    #40072374
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
AmKad
Цель удаления какая? Очистка данных? Если да, то чем не подходит truncate, выполненные в соответствующем порядке в зависимости от FK?

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


Таблица удаляется и создается по новой, в целях экономии времени. Если TRUNCATE придется инсертить 360 млн. строк, DML не катит.
...
Рейтинг: 0 / 0
24.05.2021, 12:02
    #40072415
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Aleks Niches

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


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

SY.
...
Рейтинг: 0 / 0
24.05.2021, 16:38
    #40072507
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
Пример набора команд
Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
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


Скрипт с командами примера прилагается.
...
Рейтинг: 0 / 0
02.06.2021, 14:20
    #40075047
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
SQL*Plus
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
Пример набора команд
Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
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


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


Спасибо вам , лучший варинат я так думаю
...
Рейтинг: 0 / 0
02.06.2021, 14:22
    #40075049
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Privilege на удаленную таблицу
Aleks Niches
SQL*Plus
Создайте на таблицу VIEW и выдайте грант не на таблицу, а на VIEW.
Тогда удаление таблицы никак не будет влиять на грант.
Пример набора команд
Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
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


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


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

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


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