|
|
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
Нужен совет от гуру. Разрабатываю приложение, работающее с БД. В качестве СУБД раньше использовался MSSQL, но теперь потребовалось добавить поддержку ORACLE. В варианте с MSSQL все решалось элементарно: при установке приложения создавалась новая БД, пользователь (роль приложения), необходимые таблицы, процедуры и функции и все это делалось через SQL-команды. В случае с ORACLE все несколько сложнее - БД в терминах Oracle это практически отдельный сервер. Отсюда вопрос: 1. имеет ли смысл пытаться полуавтоматом создавать БД, или проще создавать юзера, под него добавится схема, все нужные таблицы и процедуры поместить внутри этой схемы? Насколько болезненно администратор ORACLE может отреагировать на запрос приложения указать имя/пароль (желательно SYSTEM)? 2. Существует ли в ORACLE что-то вроде "роли приложения" в MSSQL, т.е. возможность залогиниться под пользователем с минимальными правами, затем приложение само дешифрует пароль и без ReConnect устанавливает себе роль приложения. Вся дальнейшая работа ведется уже не от имени пользователя, а от имени роли приложения. На роль приложения обычно давал права dbo и в MSSQL это вполне нормально работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:12:32 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
1. Разумеется, не надо создавать БД, это неправильно и невозможно :) . Скрипт, создающий юзера, должен выполнять DBA, главное, чтобы это имя пользователя не было жёстко зашито в приложение. 2. С трудом понял, что имеется в виду. А кто определяет, может ли пользователь с минимальными привилегиями "включить" себе эту роль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:19:34 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
to Scott Tiger Разумеется, не надо создавать БД, это неправильно и невозможно :) То что невозможно через скрипт полностью автоматизировать создание базы это понятно, а почему неправильно? Не ужели правильнее в одной базе смешивать данные разных приложений чем держать несколько баз? Ведь для каждого приложения могут понадобиться разные настроийки для оптимизации базы? to Finder 2) Существуют роли, защищенные паролем. То есть если приложение попытается включить роль, потребуется пароль для ее активации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:28:08 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
Идеология следующая (для MSSQL): Приложение при создании БД (в терминах MSSQL) 1. Создать БД, таблицы, ХП 2. Создать для БД роль приложения со всеми правами на БД 3. Создать пользователя с правом выполнения ХП "Дай имя и шифрованный пароль роли приложения" При обычном входе приложение подключается как пользователь (его пароль особо не шифруется - т.е. может рассылаться по почте администартором), далее приложение узнает пароль роли, самое его дешифрует и представляется уже как роль (без ReConnect) при помощи команды: EXEC sp_setapprole 'MyAppRole','MeEncryptPaswd' Приложение имеет свою собственную систему ограничений прав доступа, т.е. у приложения должны быть все права, поэтому и применяется такая "двухуровневая авторизация". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:36:36 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. - Вот! Именно это меня и смущает больше всего! А создать из программы на С++ инсталляшку БД вполне возможно: делаем InitSID.ora/SPFILESID.ora (вроде, для Oracle9i он именно так теперь называется), затем вызываем внешнюю утилиту ORADIM -new -sid NSID -intpwd ORACLE -startmode AUTO -pfile C:\....SPFILESID.ora но наверное это так просто только в теории :( [scr] 2) Существуют роли, защищенные паролем. То есть если приложение попытается включить роль, потребуется пароль для ее активации. [/scr] Ну вроде это похоже на роль приложения, только если не создавать отдельной БД, можно ли создать роль со всеми правами на схему (никак не могу перейти с представлений БД MSSQL = схема Oracle, хотя и понимаю, что это всего лишь принадлежность той же таблицы конкретному пользователю)??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:45:41 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
Violina, дело в том, что вопросы соответствия настроек экземпляра и используемых с ней приложений решает администратор, консультируясь с разработчиком. К тому же, многие параметры, влияющие на работу, например, CBO, можно задавать на уровне сессии, что может использоваться девелопером при разработке приложения. Если такого нет - это проблема, опять же, DBA - как сделать лучше - поднять ещё один экземпляр, возможно, на новом оборудовании, или мириться с неидеальной работой. Никакое приложение такой вопрос решить не в состоянии. Finder, если приложение само пароль дешифрует, что мешает это сделать другому пользователю/приложению? :) И почему ты думаешь, что СУБД должна работать на той же машине, что и твоё приложение и обязательно на win платформе? Есть же масса *nix-ов и не только, где нет oradim.exe и *.exe :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 13:51:47 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
Логично. Создание БД Oracle надо оставить целиком на откуп администратору, т.к. велика вероятность UNIX и т.п. БД приложения приравниваем к схеме приложения, при инсталляции новой версии приложения для MSSQL определялось, существует такая БД или нет, если существует, предлагалось пересоздать БД, либо заапргрейтить (изменить структуры таблиц с сохранением данных, ХП пересоздавались по-новой). Все решалось простыми командами: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Как быть в случае с ORACLE? 1. Проверять наличие пользователя? 2. Можно ли приверить наличие схемы (обьектов, созданных для пользователя/приложения). Если можно, то как? 3. Как в случае необходимости режима пересоздания убить все содержимое схемы (все таблицы и т.д.)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 14:03:43 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
никак не могу перейти с представлений БД MSSQL = схема Oracle \r \r Рассматривай просто схему как дополнительный классификатор наподобие того как необходимо предварять название столбца названием таблицы если оно одинаковое в нескольких таблицах. Правда такой подход может привести к большим заблуждениям в понимании концепции ролей привилегий.\r \r можно ли создать роль со всеми правами на схему \r \r Привилегии бывают либо на объекты либо на системные действия. Привилегии на все объекты схемы просто так не дать. Поищи в форуме, такой вопрос часто поднимался, решение - писать скрипт.\r \r /topic/32909\r \r Можно конечно сразу после создания объектов добавлять привилегии на него к роли\r \r create role APP;\r \r create table t1 ...\r \r grant all on t1 to APP;\r \r create table t2 ...\r \r grant all on t2 to APP;\r \r итд.\r \r В Оракл еще есть user PUBLIC давая привилегии ему они становятся доступными каждому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 14:04:03 |
|
||
|
Создавать ли БД? Нужен совет по переходу с MSSQL
|
|||
|---|---|---|---|
|
#18+
1. Проверять наличие пользователя? 2. Можно ли приверить наличие схемы (обьектов, созданных для пользователя/приложения). Если можно, то как? Есть куча вьюшек dba_users, dba_tables итп. 3. Как в случае необходимости режима пересоздания убить все содержимое схемы (все таблицы и т.д.)? в Оракл user=схема drop user USER_NAME cascade; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2003, 14:12:00 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32177382&tid=1990154]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 441ms |

| 0 / 0 |
