powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Privilege на удаленную таблицу
9 сообщений из 9, страница 1 из 1
Privilege на удаленную таблицу
    #40071902
Aleks Niches
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователю 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
Privilege на удаленную таблицу
    #40071903
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цель удаления какая? Очистка данных? Если да, то чем не подходит truncate, выполненные в соответствующем порядке в зависимости от FK?

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

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

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

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

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


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

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


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

SY.
...
Рейтинг: 0 / 0
Privilege на удаленную таблицу
    #40072507
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
Privilege на удаленную таблицу
    #40075047
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
Privilege на удаленную таблицу
    #40075049
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Privilege на удаленную таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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