powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создавать ли БД? Нужен совет по переходу с MSSQL
10 сообщений из 10, страница 1 из 1
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177284
Finder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен совет от гуру. Разрабатываю приложение, работающее с БД. В качестве СУБД раньше использовался MSSQL, но теперь потребовалось добавить поддержку ORACLE. В варианте с MSSQL все решалось элементарно: при установке приложения создавалась новая БД, пользователь (роль приложения), необходимые таблицы, процедуры и функции и все это делалось через SQL-команды.
В случае с ORACLE все несколько сложнее - БД в терминах Oracle это практически отдельный сервер. Отсюда вопрос:
1. имеет ли смысл пытаться полуавтоматом создавать БД, или проще создавать юзера, под него добавится схема, все нужные таблицы и процедуры поместить внутри этой схемы? Насколько болезненно администратор ORACLE может отреагировать на запрос приложения указать имя/пароль (желательно SYSTEM)?
2. Существует ли в ORACLE что-то вроде "роли приложения" в MSSQL, т.е. возможность залогиниться под пользователем с минимальными правами, затем приложение само дешифрует пароль и без ReConnect устанавливает себе роль приложения. Вся дальнейшая работа ведется уже не от имени пользователя, а от имени роли приложения. На роль приложения обычно давал права dbo и в MSSQL это вполне нормально работало.
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177295
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Разумеется, не надо создавать БД, это неправильно и невозможно :) . Скрипт, создающий юзера, должен выполнять DBA, главное, чтобы это имя пользователя не было жёстко зашито в приложение.

2. С трудом понял, что имеется в виду. А кто определяет, может ли пользователь с минимальными привилегиями "включить" себе эту роль?
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177309
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Scott Tiger

Разумеется, не надо создавать БД, это неправильно и невозможно :)

То что невозможно через скрипт полностью автоматизировать создание базы это понятно, а почему неправильно?

Не ужели правильнее в одной базе смешивать данные разных приложений чем держать несколько баз? Ведь для каждого приложения могут понадобиться разные настроийки для оптимизации базы?

to Finder

2) Существуют роли, защищенные паролем. То есть если приложение попытается включить роль, потребуется пароль для ее активации.
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177325
Finder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идеология следующая (для MSSQL):
Приложение при создании БД (в терминах MSSQL)
1. Создать БД, таблицы, ХП
2. Создать для БД роль приложения со всеми правами на БД
3. Создать пользователя с правом выполнения ХП "Дай имя и шифрованный пароль роли приложения"
При обычном входе приложение подключается как пользователь (его пароль особо не шифруется - т.е. может рассылаться по почте администартором), далее приложение узнает пароль роли, самое его дешифрует и представляется уже как роль (без ReConnect) при помощи команды:
EXEC sp_setapprole 'MyAppRole','MeEncryptPaswd'
Приложение имеет свою собственную систему ограничений прав доступа, т.е. у приложения должны быть все права, поэтому и применяется такая "двухуровневая авторизация".
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177344
Finder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Не ужели правильнее в одной базе смешивать данные разных приложений чем держать несколько баз? Ведь для каждого приложения могут понадобиться разные настроийки для оптимизации базы? 

- Вот! Именно это меня и смущает больше всего! А создать из программы на С++ инсталляшку БД вполне возможно: делаем InitSID.ora/SPFILESID.ora (вроде, для Oracle9i он именно так теперь называется), затем вызываем внешнюю утилиту
ORADIM -new -sid NSID -intpwd ORACLE -startmode AUTO -pfile C:\....SPFILESID.ora
но наверное это так просто только в теории :(

[scr]
2) Существуют роли, защищенные паролем. То есть если приложение попытается включить роль, потребуется пароль для ее активации.
[/scr]
Ну вроде это похоже на роль приложения, только если не создавать отдельной БД, можно ли создать роль со всеми правами на схему (никак не могу перейти с представлений БД MSSQL = схема Oracle, хотя и понимаю, что это всего лишь принадлежность той же таблицы конкретному пользователю)???
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177358
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina, дело в том, что вопросы соответствия настроек экземпляра и используемых с ней приложений решает администратор, консультируясь с разработчиком. К тому же, многие параметры, влияющие на работу, например, CBO, можно задавать на уровне сессии, что может использоваться девелопером при разработке приложения. Если такого нет - это проблема, опять же, DBA - как сделать лучше - поднять ещё один экземпляр, возможно, на новом оборудовании, или мириться с неидеальной работой. Никакое приложение такой вопрос решить не в состоянии.

Finder, если приложение само пароль дешифрует, что мешает это сделать другому пользователю/приложению? :) И почему ты думаешь, что СУБД должна работать на той же машине, что и твоё приложение и обязательно на win платформе? Есть же масса *nix-ов и не только, где нет oradim.exe и *.exe :)
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177382
Finder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логично. Создание БД Oracle надо оставить целиком на откуп администратору, т.к. велика вероятность UNIX и т.п. БД приложения приравниваем к схеме приложения, при инсталляции новой версии приложения для MSSQL определялось, существует такая БД или нет, если существует, предлагалось пересоздать БД, либо заапргрейтить (изменить структуры таблиц с сохранением данных, ХП пересоздавались по-новой). Все решалось простыми командами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 -- Проверка наличия БД
 
SELECT * FROM master..sysdatabases WHERE name = MyDataBase
 -- Пересоздать БД
 
DROP DATABASE MyDataBase
CREATE DATABASE MyDataBase

Как быть в случае с ORACLE?
1. Проверять наличие пользователя?
2. Можно ли приверить наличие схемы (обьектов, созданных для пользователя/приложения). Если можно, то как?
3. Как в случае необходимости режима пересоздания убить все содержимое схемы (все таблицы и т.д.)?
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177384
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никак не могу перейти с представлений БД 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 давая привилегии ему они становятся доступными каждому.
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177395
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Проверять наличие пользователя?
2. Можно ли приверить наличие схемы (обьектов, созданных для пользователя/приложения). Если можно, то как?

Есть куча вьюшек dba_users, dba_tables итп.

3. Как в случае необходимости режима пересоздания убить все содержимое схемы (все таблицы и т.д.)?

в Оракл user=схема

drop user USER_NAME cascade;
...
Рейтинг: 0 / 0
Создавать ли БД? Нужен совет по переходу с MSSQL
    #32177406
Finder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть куча вьюшек dba_users, dba_tables итп.
drop user USER_NAME cascade;

Большое спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создавать ли БД? Нужен совет по переходу с MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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