|
|
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
HI ALL! А можно в Oracle юзеру назначить схему по умолчанию? Т.е. user1 логинится, пишет select * from table1 и получает данные из таблицы table1 находящейся в схеме user2 (все гранты предварительно прописаны). Я знаю что добиться этого можно создав синоним user1.table1 на user2.table1, но объектов у user2 много, иногда они добавляются, к тому же это надо обеспечить доступ и для user3, и для user4, и для ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 12:50:56 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
ALTER SESSION SET CURRENT_SCHEMA = user2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 12:58:11 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Видимо это как раз то что нужно. Удивляет отсутствие описания ALTER SESSION SET CURRENT_SCHEMA в документации, но работает. Почти. выдает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Чего ему еще надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 13:21:14 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Всё же лучше создавать public синонимы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 13:28:28 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Чем лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 13:50:41 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Чем кодировать имя схемы в приложение С таким подходом будет невозможно (без изменения кода) поднять в рамках одного инстанса несколько экземпляров приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 13:54:09 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
2 Scott Tiger В приложение никто ничего писать не собирается. Сделано будет так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Только вот синтаксическая ошибка около ALTER SESSION... где-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 14:30:35 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Я вот который раз задаюсь вопросом - зачем вы.бываться, если есть хороший и проверенный веками :) способ? И не нахожу ответа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 15:57:23 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
2 iNT Синтаксическая ошибка лезет из-за невозможности напрямую задавать DDL в PL/SQL. Надо использовать или dbms_sql или execute immediate. 2 Scott Tiger Я тоже не понимаю, зачем. Но кому-то хочется быть не такими, как все. Покруче, что ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 16:06:18 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Я тоже не понимаю, зачем. Но кому-то хочется быть не такими, как все. Для этого случая есть пиво Тинькофф:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 16:14:15 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
В плане пефоманса это правильный подход. Да и вообще гораздо более логичный чем вешать public-синонимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 17:29:34 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Перформанс - не единственное и не самое главное. ИМХО, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 19:02:42 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
В дополнение к сказанному Scott Tiger-om: Если лень писать public синонимы для каждого объекта, то сделать это можно и таким способом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 20:30:21 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
в любом случае не забывай что привелегии на объекты все равно нужны :-) PS По мне способ 1 лучче, хоть и не веками проверенный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 09:07:25 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
надо делать не паблик а private синонимы (нафига всем юзерам видеть эти объекты??) а гранты вешать на роль и эту роль назначать юзеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 09:12:41 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
2Scott Tiger > Чем кодировать имя схемы в приложение ALTER SESSION SET CURRENT_SCHEMA можно забубенить в триггер after logon. Зачем синонимы, если без них можно обойтись ? Меньше объектов в базе - меньше головной боли - проще сопровождение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 09:56:58 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
"ALTER SESSION SET CURRENT_SCHEMA" А то, что это недокументированная возможность не пугает в связи с будущими переходами на новые версии и потенциальной ситуацией, когда придёться переписывать весь код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 09:59:18 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
"ALTER SESSION SET CURRENT_SCHEMA" вообще звучит как то алогично - ведь CURRENT_SCHEMA есть схема текущего юзера. /* to softbuilder */ Что current это просто слово, понимаю. Хорошо хоть аналога переменной PATH нету - прописываешь список схем где Ораклу следует искать объекты если их нет в схеме юзера:-) Вот бы была потеха! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 10:27:27 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Simon, как я понял, у автора топика объекты эпизодически (или автоматически) появляются и, возможно, исчезают, что, конечно, само по себе погано, но тем не менее... В таком случае при создании каждого нового объекта для каждого пользователя приложения придётся создавать private синоним, что и геморройно, и действительно сильно загрузит словарь, если пользователей и объектов много. Как мне думается, однозначно на этот вопрос ответить можно, только полностью зная условия задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 10:31:50 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Обратите внимание на наличие sys_context('USERENV','CURRENT_SCHEMA'). ALTER SESSION SET CURRENT_SCHEMA=... не только документировано (2softbuilder) , но и не представляется поэтому какой-то нелогичной (2Violina) по крайней мере с точки зрения программиста - есть возможность и получить, и установить. Если приложение построено с "владельцем главной схемы", то появляется возможность делать несколько таких "главных" схем (например для разработки-отладки) без разруливания синонимами и модификации клиентских программ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 10:55:55 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
С точки зрения программиста на стадии разработки, согласна, очень удобно, сама часто этим пользуюсь. Но когда начинают это закладывать в механизм работы приложения, ИМХО это уже плохо. Интересная дока по этому поводу из Оракл Management of Schema Objects. Может кому поможет избежать граблей. Because of how Oracle resolves references, it is possible for an object to depend on the nonexistence of other objects. This situation occurs when the dependent object uses a reference that would be interpreted differently were another object present. For example, assume the following: At the current point in time, the company schema contains a table named emp. A PUBLIC synonym named emp is created for company.emp and the SELECT privilege for company.emp is granted to the PUBLIC role. The jward schema does not contain a table or private synonym named emp. The user jward creates a view in his schema with the following statement: Код: plaintext 1. 2. 3. When jward creates the dept_salaries view, the reference to emp is resolved by first looking for jward.emp as a table, view, or private synonym, none of which is found, and then as a public synonym named emp, which is found. As a result, Oracle notes that jward.dept_salaries depends on the nonexistence of jward.emp and on the existence of public.emp. Now assume that jward decides to create a new view named emp in his schema using the following statement: Код: plaintext 1. 2. Notice that jward.emp does not have the same structure as company.emp. As it attempts to resolve references in object definitions, Oracle internally makes note of dependencies that the new dependent object has on "nonexistent" objects--schema objects that, if they existed, would change the interpretation of the object's definition. Such dependencies must be noted in case a nonexistent object is later created. If a nonexistent object is created, all dependent objects must be invalidated so that dependent objects can be recompiled and verified and all dependent function-based indexes must be marked unusable. Therefore, in the previous example, as jward.emp is created, jward.dept_salaries is invalidated because it depends on jward.emp. Then when jward.dept_salaries is used, Oracle attempts to recompile the view. As Oracle resolves the reference to emp, it finds jward.emp (public.emp is no longer the referenced object). Because jward.emp does not have a sal column, Oracle finds errors when replacing the view, leaving it invalid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2003, 12:06:06 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Сколько флейма вызвал невинный вопрос! Надо было наверное описать проблему целиком, а не задавать частный вопрос. Проблема такова: на сервере крутится десяток задач, (каждая в своей схеме) есть десять юзеров, каждый из которых имеет доступ к своей задаче. Нужно завести еще 50 юзеров, 5 из которых будут работать в первой задаче, 5 во второй, 5 в третьей и т.д. Т.е. в каждой задаче должно работать 6 пользователей (владелец схемы и 5 новозаведенных). Public синонимы не подходят сразу, в схемах есть объекты с одинаковыми именами. Private синонимов получается слишком много, делать долго... в общем не нравится такое решение. Особенно в контексте переодического добавления/убивания разных объектов. Хочется сделать просто и элегантно, например написав Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ЭТО НЕ РАБОТАЕТ! alter session... выполняется, (проверял заменив alter session... на insert into...) но текущая схема остается прежней! А как было бы хорошо: добавляется объект -- разрешения на него в роль добавил и все. Завести пользователя -- присвоил роль, триггер изменил (если будет работать, соответствие юзера и схемы будет брать из таблички, так что один insert) сиди плюй в потолок. Ладно насоздаю я эти тысячи синонимов, не так уж долго, но как подобные проблемы решаются в БОЛЬШОМ И СЕРЬЕЗНОМ мире? Неужели для задач с 1000 пользователями и 500 объектами создаются полмиллиона синонимов? Или на сервере принципиально крутится ОДНА задача и можно обойтись создав 500 public? Или все юзеры под одним именем? HELP!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 07:56:22 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
to iNT Дискуссии о CURRENT_SCHEMA в форуме уже встречались, советы которыя я сочла полезными следующие 1) Создавать единый account для приложения а потом раздавать привилегии включая или не включая определенные роли 2) Использовать синонимы Странно что у тебя EXECUTE IMMEDIATE 'ALTER SESSION SET ... не работает. Возможно это из за триггера. Проверила на процедуре, схема меняется Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 10:08:00 |
|
||
|
А можно в Oracle юзеру назначить схему по умолчанию?
|
|||
|---|---|---|---|
|
#18+
Теоретически, у тебя есть два решения (и оба ты уже описал :) ) Написать скрипт который дает гранты на объекты владельца 5 новозавенным пользователям, и создает в 5-ти новозавенных схемах синонимы на эти объекты Обеспечить 5-и новозавенным пользователям, вход и работу в схеме владельца. В первом случае новозавенные пользователи работают в своих схемах, во втором, в схеме владельца. Для втрого случая новозавенные пользователи должны предоставить ПАРОЛЬ владельца!!! Стандартные механизмы сокрытия пароля владельца в Oracle есть, насколько я знаю, в Oracle Application Server 9i и только для WEB-приложений (что-то типа Personalization, непомню точно). Насколько я понимаю тебе это не подходит - клиентское приложение уже есть и оно не под web... Тогда тебе придется сказать пароль владельца или хранить пароль где-нибудь в базе. И то и другое, наверное, недопустимо. Итак используй 1-й вариант: создание синонимов в схемах новозавенных пользователей и дуступ к ним к объектам владельцев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 10:55:50 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32189928&tid=1989846]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
283ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 647ms |

| 0 / 0 |
