Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите состряпать хитрый запрос (результат - новый запрос) / 25 сообщений из 42, страница 1 из 2
29.10.2016, 00:50
    #39336727
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Нужно сделать хитрый селект, в результате которого будет строка нового скл запроса.
объясню на примере.
1. drop user BARABAS;
2. create user BARABAS identified by values '42A33E770380E712' default tablespace users temporary tablespace temp;
3. grant connect to BARABAS;

Теперь мне нужно сделать некий условный селект (в частности, наличие привилегии коннекта, без указания имени юзера), результатом которого будет строка №2

Поясните, плз, на примере как это сделать?
...
Рейтинг: 0 / 0
29.10.2016, 01:04
    #39336730
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperнужно сделать некий условный селект ... без указания имени юзера ... результатом которого будет строка №2Наркоман штоле?

Код: plsql
1.
2.
3.
4.
5.
6.
SQL> select replace(q'$create user $ identified by values '42A33E770380E712' default tablespace users temporary tablespace temp;$', '$', u) str
  2    from (select utl_raw.cast_to_varchar2('42415241424153') u from dual);

STR
--------------------------------------------------------------------------------------------------------------------------------------------
create user BARABAS identified by values '42A33E770380E712' default tablespace users temporary tablespace temp;



Надеюсь помог.
...
Рейтинг: 0 / 0
29.10.2016, 09:27
    #39336782
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Галоперидол,

не, не то..
поясню чего нужно добиться на пальцах
есть пачка юзеров в базе с некими привилегиями
в данном случае меня интересуют все юзера с привилегией коннект

нужно одной строкой запроса получить строки их создания (не указывая их имена и хэши, их нужно получить) и сохранить в файл dump.sql
...
Рейтинг: 0 / 0
29.10.2016, 09:40
    #39336784
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
DBA_SYS_PRIVS (CREATE SESSION), DBA_ROLE_PRIVS (CONNECT), DBMS_METADATA
...
Рейтинг: 0 / 0
29.10.2016, 10:02
    #39336789
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Вячеслав Любомудров,

чето пусто получилось..
а откуда селектить? from user$?
...
Рейтинг: 0 / 0
29.10.2016, 10:50
    #39336803
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
- "что-то не получилось"
- "сделайте что-нибудь"

Конкретика где?

Системная привилегия CREATE SESSION может быть дана роли, роль дана пользователю.
...
Рейтинг: 0 / 0
29.10.2016, 11:01
    #39336811
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
По хорошему, еще роль может быть назначена роли и тогда еще интересным будет ROLE_ROLE_PRIVS
...
Рейтинг: 0 / 0
29.10.2016, 12:28
    #39336835
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dmdmdmКонкретика где?

а куда конкретней то?
есть дефолтная установка, пустая база, делаю по шагам, 3 запрса...

дальше, мне нужно отселектировать всех юзеров с привелегией коннект (в данном случае один единственный барабас) и сформировать строку скл запроса его создания (например, в другой базе, на другом сервере)
...
Рейтинг: 0 / 0
29.10.2016, 13:03
    #39336848
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Вячеслав ЛюбомудровПо хорошему, еще роль может быть назначена роли и тогда еще интересным будет ROLE_ROLE_PRIVS
не проще ли DBMS_SESSION.IS_ROLE_ENABLED?


ps
в древних версиях был недокументированный параметр create user .... by valus xxx
....
stax
...
Рейтинг: 0 / 0
29.10.2016, 13:07
    #39336849
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloper,

гляньте dba_users

....
stax
...
Рейтинг: 0 / 0
29.10.2016, 13:10
    #39336850
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
stax..Вячеслав ЛюбомудровПо хорошему, еще роль может быть назначена роли и тогда еще интересным будет ROLE_ROLE_PRIVS
не проще ли DBMS_SESSION.IS_ROLE_ENABLED?


ps
в древних версиях был недокументированный параметр create user .... by valus xxx
....
stax
ой
не подойдет IS_ROLE_ENABLED для текущей

.....
stax
...
Рейтинг: 0 / 0
29.10.2016, 13:51
    #39336873
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
stax..dekloper,

гляньте dba_users

....
stax

авторselect name,password from dba_users where name = 'BARABAS'
*
ошибка в строке 1:
ORA-00904: "NAME": недопустимый идентификатор

если
авторselect name,password from user$ where name = 'BARABAS';
то получаем

авторNAME
--------------------------------------------------------------------------------
PASSWORD
--------------------------------------------------------------------------------
BARABAS
42A33E770380E712


но мне надо сформировать строку, причем указывая не имя юзера, а его привилегию (коннекта в моем примере)
...
Рейтинг: 0 / 0
29.10.2016, 14:13
    #39336879
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperstax..dekloper,

гляньте dba_users

....
stax

авторselect name,password from dba_users where name = 'BARABAS'
*
ошибка в строке 1:
ORA-00904: "NAME": недопустимый идентификатор

если
авторselect name,password from user$ where name = 'BARABAS';
то получаем

авторNAME
--------------------------------------------------------------------------------
PASSWORD
--------------------------------------------------------------------------------
BARABAS
42A33E770380E712


но мне надо сформировать строку, причем указывая не имя юзера, а его привилегию (коннекта в моем примере)
Код: plsql
1.
2.
3.
4.
5.
6.
SQL> desc dba_users
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 USERNAME                                  NOT NULL VARCHAR2(30)
 USER_ID                                   NOT NULL NUMBER
 PASSWORD                                           VARCHAR2(30)




с привелегией есть проблемка, если она дана через роль, надо искать в dba_role_privs
и в иерархии ролей на предмет наличия (напр connect ...)


......
stax
...
Рейтинг: 0 / 0
29.10.2016, 14:20
    #39336883
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperа куда конкретней то?

Когда вы говорите "в результате пусто", неплохо бы показать запрос, который дал пустой результат. И из-под кого он выполнялся.

dekloperесть дефолтная установка, пустая база, делаю по шагам, 3 запрса...


Вот-вот, опять. "Делаю запрос, в результате - пусто".

dekloperюзеров с привелегией коннект

Повторяю то, что сказал выше. Привилегия может быть дана не напрямую.
Для начала покажите выборку из USER_SYS_PRIVS под пользователем, который вас интересует.
...
Рейтинг: 0 / 0
29.10.2016, 14:30
    #39336888
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
stax..в древних версиях был недокументированный параметр create user .... by valus xxx
....
stax

зы. забыл уточнить, у меня 12g (11.2.0.3.0)

если уж совсем конкретней, то пытаюсь доработать скрипт, который, вероятно работал в более древней версии

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 'create user '||username||' identified by values "'||password||'" default tablespace users temporary tablespace temp;'
from dba_users
where username in (
        select GRANTEE
                from dba_role_privs
                where GRANTED_ROLE='ROLE_1'
        minus
        select GRANTEE
                from dba_role_privs
                where GRANTED_ROLE='ROLE_2' )



результатом этого запроса (с учетом того, что ROLE_1, ROLE_2 существуют), получаем строку с пустым хэшем
авторcreate user BARABAS_1 identified by values "" default tablespace users temporary tablespace temp;
...
Рейтинг: 0 / 0
29.10.2016, 14:33
    #39336889
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dmdmdmПовторяю то, что сказал выше. Привилегия может быть дана не напрямую.
Для начала покажите выборку из USER_SYS_PRIVS под пользователем, который вас интересует.
как посмотреть под пользователем?

.....
stax
...
Рейтинг: 0 / 0
29.10.2016, 14:45
    #39336896
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperstax..в древних версиях был недокументированный параметр create user .... by valus xxx
....
stax

зы. забыл уточнить, у меня 12g (11.2.0.3.0)



первая ссылка из гугла
http://www.peasland.net/2016/02/18/oracle-12c-identified-by-values/

user$ или dbms_metadata.get_ddl

.....
stax
...
Рейтинг: 0 / 0
29.10.2016, 14:56
    #39336903
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Вот так выглядит конкретика.

Код: 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.
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as system@test

-------------------------------------------------------------------------------------------------------------
SQL> create user user1 identified by "1";
User created
SQL> create role user_role;
Role created
SQL> grant connect to user_role;
Grant succeeded
SQL> grant user_role to user1;
Grant succeeded
SQL> conn user1/1;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as user1

SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
USER1                          USER_ROLE                      NO           YES          NO

-------------------------------------------------------------------------------------------------------------
SQL> drop user user1;
SQL> create user user1 identified by "1";
SQL> grant connect to user1;
SQL> conn user1/1;
SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
USER1                          CONNECT                        NO           YES          NO

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as user1

-------------------------------------------------------------------------------------------------------------
SQL> create user user1 identified by "1";
SQL> grant create session to user1;
SQL> conn user1/1;
SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
USER1                          CREATE SESSION                           NO

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
...
Рейтинг: 0 / 0
29.10.2016, 15:08
    #39336910
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dmdmdmВот так выглядит конкретика.

Код: 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.
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as system@test

-------------------------------------------------------------------------------------------------------------
SQL> create user user1 identified by "1";
User created
SQL> create role user_role;
Role created
SQL> grant connect to user_role;
Grant succeeded
SQL> grant user_role to user1;
Grant succeeded
SQL> conn user1/1;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as user1

SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
USER1                          USER_ROLE                      NO           YES          NO

-------------------------------------------------------------------------------------------------------------
SQL> drop user user1;
SQL> create user user1 identified by "1";
SQL> grant connect to user1;
SQL> conn user1/1;
SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------
USER1                          CONNECT                        NO           YES          NO

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as user1

-------------------------------------------------------------------------------------------------------------
SQL> create user user1 identified by "1";
SQL> grant create session to user1;
SQL> conn user1/1;
SQL> select * from user_sys_privs;
USERNAME                       PRIVILEGE                                ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
USER1                          CREATE SESSION                           NO

SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADMIN_OPTION DEFAULT_ROLE OS_GRANTED
------------------------------ ------------------------------ ------------ ------------ ----------



dekloper надо хеш пароля витащить, а его нет в dba_users
надо брать с user$

зы
с ролями еще усложнить можно "роль включить в роль" т тд

.....
stax
...
Рейтинг: 0 / 0
29.10.2016, 15:20
    #39336916
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperс привелегией коннектЧудак, такой привилегии нет.
...
Рейтинг: 0 / 0
29.10.2016, 17:50
    #39336982
dekloper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dmdmdmВот так выглядит конкретика.

дык а где конкретика то? где видно как вы достаете хеш?
stax..
dekloper надо хеш пароля витащить, а его нет в dba_users
надо брать с user$
stax
вот то то и оно.. надо как то скомбинировать запрос..

stax..зы
с ролями еще усложнить можно "роль включить в роль" т тд

.....
staxусложнять пока не надо) у меня тут и так не разгрести..
потому вопрос был изначально с простейшей дефолтной инсталляцией..

и да, не 12g, а 11g конечно же..

dmdmdmПовторяю то, что сказал выше. Привилегия может быть дана не напрямую.
Для начала покажите выборку из USER_SYS_PRIVS под пользователем, который вас интересует.

под барабасом нет ниче
Код: sql
1.
2.
3.
SQL> select * from USER_SYS_PRIVS;

строки не выбраны
...
Рейтинг: 0 / 0
29.10.2016, 17:53
    #39336984
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperвот то то и оно.. надо как то скомбинировать запрос..


Лазать по data dictionary tables тебе еще рановато. Кури DBMS_METADATA.

SY.
...
Рейтинг: 0 / 0
29.10.2016, 18:01
    #39336989
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Дык под обычным юзером не много ему интересного принесет
...
Рейтинг: 0 / 0
29.10.2016, 18:10
    #39336992
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
dekloperнадо как то скомбинировать запросВсе уже давно скомбинировано, для тех, кто в состоянии пользоваться гуглом.
Listing privileges recursively

Хотя мне приходилось что-то допиливать в тех запросах...
...
Рейтинг: 0 / 0
29.10.2016, 18:12
    #39336993
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите состряпать хитрый запрос (результат - новый запрос)
Вячеслав ЛюбомудровДык под обычным юзером не много ему интересного принесет

Ну так на кошках (всмысле на себе) потрeнируется .

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


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