Как сделать связь arc в oracle

Обновлено: 08.07.2024

Думаю, настало время разобраться с тем как же создаются "схемы" в БД Oracle. Под понятием схема имеется ввиду сам созданный аккаунт или говоря прямо – пользователь БД! Целью создания пользователя как раз и является получение схемы БД, с определенными правами и привилегиями. Создание пользователя в БД Oracle достаточно не сложный, но в тоже время довольно концептуальный момент. Для создания пользователя (схемы), применяется команда DDL – CREATE USER. Она имеет следующий синтаксис:

Этот синтаксис не совсем полный, но для начала нам достаточно, далее мы рассмотрим то, что было не указано. Как правило, создание пользователей (схем) БД производится при подключении к БД, пользователем SYS или SYSTEM. Так как эти две схемы имеют права администраторов БД. Рассмотрим основные параметры команды – CREATE USER:

  • [пользователь] [Username] – Имя пользователя (название схемы).
  • [пароль] [Password] – Пароль для учетной записи.
  • DEFAULT TABLESPACE – Табличное пространство в котором будут находиться создаваемые в данной схеме объекты. Эта настройка не дает пользователю права создавать объекты – здесь устанавливается только значение по умолчанию.
  • TEMPORARY TABLESPACE – Табличное пространство, в котором находятся временные сегменты, используемые в процессе сортировки транзакций.
  • QUOTA – Позволяет пользователю сохранять объекты в указанном табличном пространстве, занимая там место вплоть до определенного в квоте общего размера.

К слову сказать, в чем мы далее и убедимся. Для того, чтобы запросы пользователей могли создавать временные сегменты в табличном пространстве TEMP, им не нужны квоты на дисковое пространство. Попробуем создать пользователя! Запускайте SQL*Plus с пользователем SYS или SYSTEM пароли администраторов смотрите в шаге 5! Из всего выше сказанного, запишем вот такую конструкцию:

Здесь мы создаем пользователя (схему) DUMMY с паролем DUMB и позволяем ему резвится на 100 Мб пространства USERS и еще немного выделяем из пространства TEMP. Получаем в результате:

Ок! Пользователь (схема) создан. Наверное, можно уже подключится и начать создавать объекты! Пробуем!

Именное такой синтаксис подключения можно использовать, он еще называется строка коннекта и расписывается вот так:

Опа! Не повезло! Создание пользователя – это еще не все! Теперь ему нужно разрешить самое основное – создавать сессию с сервером. Сделать это можно командой GRANT. Она достаточно объемная и мы ей займемся чуть позже, а пока восстановим подключение:

Даем пользователю право создавать сессию с сервером:

Вот теперь можно немного перевести дух. Итак, мы создали пользователя, определили ему табличные пространства, назначили квоты на них. И даже позволили создавать сессию с сервером. Давайте убедимся, что пользователь создан и чувствует себя нормально. Производим переконнект на админа БД:

Дадим такой запрос к представлению DBA_USERS:

Кто знаком с криптографией, может на досуге раскусить – E888ADB4D5FFE1B2 или хотя бы провести аналогию с DUMB! Итак, все с нашей схемой в порядке! Осталось только разрешить пользователю создавать объекты БД.

Да, так как оператор GRANT это DDL, то COMMIT вызывается не явно! В данном случае мы разрешили пользователю, создавать такие основные объекты БД как – TABLE, PROCEDURE, TRIGGER, VIEW, SEQUENCE. Для начала этого достаточно. А что делать, если пользователю будет необходимо изменять эти объекты? Тогда нужно добавить еще немного прав, на изменение (ALTER) вот так:

Вот теперь он может не только создавать эти объекты, но и изменять их! А, что если пользователю необходимо будет удалить какой-либо объект или удалить записи из таблиц? Тогда нужно добавить права на удаление объектов БД вот так:

Уфф! Ну вот теперь кажется все! Пользователь действительно полноценный и может работать! Помните в шаге 6 мы с вами это уже проделывали, но тогда я не вдавался в подробности, так как было не до того! А, вот теперь давайте разберемся более детально и продолжим далее.

По умолчанию аккаунт не имеет никаких прав в БД Oracle. Невозможно даже создать подключения без назначенных прав. И даже после получения прав на подключения, аккаунт не может сделать ничего полезного (или опасного) без получения соответсвующих прав. Права назначаются с помощью команды GRANT и убираются с помощью команды REVOKE. Дополнительные директивы команды используются для разрешения аккаунта делится правами которые у него есть с другими пользователями. По умолчанию только аккаунта администратора (SYS и SYSTEM) владеют правами назначения прав. Пользователь который назначает права другому пользователю называется grantor когда получатель прав – grantee. Права разбиты на две группы: системные права, которые грубо говоря позволяют пользователю совершать действия влияющие на словарь данных, и права над объектами, которые позволяют пользователю совершать действия влияющие на данные.

Системные права

Всего доступно около двух сотен системных прав. Большинство из них влияет на действия затрагивающие словать данных (такие как создание таблиц или пользователей). Остальные влияют на экземпляр или БД (создание табличны пространств, изменение параметров БД и создание сессий). Наиболее часто используемые права это

  • CREATESESSION – права на подключения. Без этих прав вы даже не сможете подключиться к БД
  • RESTRICTEDSESSION – Если БД запущена с директивой STARTUPRESTRICT или применялась команда ALTERSYSTEMENABLERESTRICTEDSESSION, то только пользователи с этими правами смогут подключаться к БД
  • ALTERDATABASE – разрешает выполнять команды влияющие на физические структуры
  • ALTERSYSTEM – разрешает изменять параметры экземпляра и структуры памяти
  • CREATETABLESPACE – вместе с ALTERTABLESPACE и DROPTABLESPACE позволяют пользователю управлять табличными пространтсвами
  • CREATETABLE – позволяет gratee создавать таблицы в своей схеме; включает возможность создавать, изменять и удалять таблицы, выполнять команды DML и select и управлять индексами
  • GRANTANYOBJECTPRIVILEGE – позволяет grantee управлять правами объектов которые ему не принаджлежат, но не даёт прав ему самому
  • CREATEANYTABLE – grantee может создавать таблицы которые принадлежат другим аккаунтам
  • DROPANYTABLE – grantee позволяется удалять таблицы которые принадлежат другим аккаунтам
  • INSERTANYTABLE, UPDATEANYTABLE, DELETEANYTABLE – даёт grantee право выполнять DML команды над объектами которые ему не принадлежат
  • SELECTANYTABLE – Даёт право grantee выполнять SELECT к любмы таблицам.

Синтаксис для назначения прав

GRANT privilege [,privilege…] TO username;

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

grant create session, alter session,

create table, create view, create synonym, create cluster,

create database link, create sequence,

create trigger, create type, create procedure, create operator

Эти права позволяют подключаться и настраивать сессию, создавать объекты и хранить PL/SQL объекты. Объекты могут быть созданы только в схеме аккаунта; нет прав к схемам других аккаунтов. Также создание объектов ограничивается лмимитами табличных пространств.

Другим вариантом назначения прав будет назначение grantee доступа для переназначения прав другим аккаунтам. Например

grant create table to scott with admin option;

grant create table to jon;

Выполнение этих команд позволит SCOTT создавать таблицы в совей схеме, и выполнять команду GRANT. SCOTT даёт права пользователю JON создавать таблицы – но JON сможет создавать таблицы только в схеме JON. На рисунке 6-5 показаны права пользователя в Database Control; ту же информацию можно получить выполнив запрос к представлению DBA_SYS_PRIVS.

Если системные разрешения были отозваны, все действия которые вы выполнили пока у вас были права остаются в силе. Если у вас были права с ADMIN OPTION то у всех пользователей которым вы назначили права – права остаются, несмотря на то что у вас права отозвали. Не остаётся записей кто именно назначил системные привилегии, таким образом невозможно забрать права CASCADE как показано на рисунке 6-6

Revocation of a system privilege will not cascade (unlike

revocation of an object privilege).

Права ANY дают доступ ко всем объектам в БД. Таким образом

grant select any table to scott

позволить аккаунту SCOTT выполнять запрос SELECT ко всем таблицам во всех схемах БД. Такое назначение прав считается дурным тоном и ANY права назначаются только DBA.


In fact, ANY is not as dangerous now as with earlier releases. It no longer

includes tables in the SYS schema, so the data dictionary is still protected. But

ANY should still be used with extreme caution, as it removes all protection

from user tables.


Объектные права

Объектные права дают доступ к выполнению команд DML и SELECT к соответствующим объектам и выполнению PL/SQL объектов. Эти права не существуют для объектов в схеме аккаунта; если у пользователя есть системные права CREATE TABLE – это значит что он может выполнять SELECT и DML запросы к таблицам которые он создал без дополнительных прав.

The ANY privileges, that grant permissions against objects in

every user account in the database, are not object privileges—they are

Объектные права применяются к разным группам объектов


GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];

grant select on store.customers to scott;

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

grant select on store.orders to scott;

grant update (order_status) on store.orders to scott;

grant all on store.regions to scott;

Эти команды позволят аккаунту SCOTT выполнять запрос SELECT ко всем столбцам таблицы ORDERS в схеме STORE но обновлять данные только в одном столбце. Также у аккаунта SCOTT есть доступ ко всем операциям к таблице REGIONS. На рисунке 6-7 отображается результат назначения прав при просмотре в Database Control

Granting privileges at the column level is often said to be bad practice

because of the massive workload involved. If it is necessary to restrict peoples’

access to certain columns, creating a view that shows only those columns will


often be a better alternative.

Использование директивы WITH GRANT OPTION позволит пользователю передавать свои права другим аккаунта. Оракл хранит информацию о том кто и кому дал доступ на объектном уровне; это позволяет отзывать права учитывая эту информацию. Рассмотрим пример

grant select on customers to sales with grant option;

grant select on store.customers to webapp with grant option;

grant select on store.customers to scott;

revoke select on customers from sales;

После выполнения этих команд, ни у пользователя SALES ни у пользователя WEBAPP ни у пользователя SCOTT нет прав на выполнение команд SELECT к таблице STORE.CUSTOMERS.

Revocation of an object privilege will cascade (unlike revocation of

Полномочия – это право на выполнение конкретного типа SQL-оператора или на доступ к объекту базы данных, принадлежащему другому пользователю. В базе данных Oracle необходимо явно предоставить пользователю полномочия для выполнения любых действий, включая подключение к базе данных или выборку, изменение и обновление данных в любой таблице, кроме собственной.

Существуют два основных типа полномочий Oracle: системные полномочия и объектные полномочия. Для предоставления пользователям как системных, так и объектынх полномочий служит оператор GRANT.

Системные полномочия:

Системные полномочия позволяют пользователю выполнить конкретное действие в базе данных либо действие с любым объектом схемы, конкретного типа. Хороший пример первого типа системных полномочий – полномочия, которые позволяют подключаться к базе данных, носящие название полномочий CONNECT. Другими полномочиями этого типа являются полномоичия CREATE TABLESPACE, CREATE USER, DROP USER и ALTER USER.

Второй класс системных полномоичий предоставляет пользователям право на выполнение операций, которыевлияют на объекты в любой схеме. Примерами этого типа системных полномочий служат ANALYZE ANY TABLE, GRANT ANY PRIVILEGE, INSERT ANY TABLE, DELETE ANY TABLE и т.п. Системные полномочия являются очень мощным средством и выдача их не тому пользователю может оказать разруши тельное влияние на базу данных.

Ниже перечислены некоторые наиболее часто используемые полномочия базы данных Oracle:

  • ADVISOR
  • ALTER DATABASE
  • ALTER SYSTEM
  • AUDIT SYSTEM
  • CREATE DATABASE LINK
  • CREATE TABLE
  • CREATE ANY INDEX
  • CREATE SESSION
  • CREATE TABLESPACE
  • CREATE USER
  • DROP USER
  • INSERT ANY TABLE

Пример:

Объектыные полномочия:

Объектыне полномочия – это полномочия по отношению к различным типам объектов базы данных. Объектыные полномочия дают пользователю возможность выполнять действия с конкретной таблицей, представлением, материализованным представлением, последовательностью, процедурой, функцией или пакетом. Следовательно, всем пользователям базы данных нужны объектные полномочия.

Для выдачи объектных полномочий можно использовать следующие SQL-операторы.

Мне нужно моделировать базу данных в Oracle SQL Developer Data Modeler.

Я должен создать отношения ARC (XOR), но я не знаю как. Я нашел флажок "В Arc" в свойствах внешних ключей, но он отключен (серый). Я не вижу других вариантов, которые относятся к Arc.

1 ответ

Вам нужно выбрать линии отношений на диаграмме, а затем нажать кнопку "Новая дуга" на главной панели инструментов.

"Чтобы создать дугу, сделайте это после создания всех взаимосвязей, которые необходимо включить. Выберите блок сущностей, выберите все линии взаимосвязей, которые нужно включить (удерживайте Shift и щелкните каждую линию), а затем нажмите кнопку" Новая дуга "на панели инструментов".

В первой части поста я остановился на онлайн журнальных файлах. Продолжим.

Онлайн журнальные файлы используются по кругу (рис. 1).


Рис. 1. Запись в онлайн журнальные файлы ORACLE.

  • ARCHIVELOG MODE,
  • NOARCHIVELOG MODE,

В первом случае, если база данных находится в режиме ARCHIVELOG, то прежде чем процесс записи в онлайн журналы сможет удалить данные и начать писать в журнал, журнальный файл должен быть сохранен в специальную директорию. По-умолчанию, это директория /oracle/ /oraarch (до версии базы данных ORACLE 9i это была директория /oracle/ /saparch). Сохраненные файлы имеют порядковый номер и называются оффлайн журнальными файлами ORACLE. Вид имеют примерно такой:

Это и есть некая история операций с данными во временном срезе с помощью которой можно проводить восстановление базы данных практически на любую точку в прошлом. Стоит отметить, что для восстановления обязательно нужна копия дата файлов базы, на которые можно "накатывать" последовательно журналы. Последовательность крайне важна. Если потеряете хотя бы один оффлайн журнальный файл, дальнейшее восстановление во времени будет невозможно. Копированием онлайн журнальных файлов в оффлайн журнальные файлы занимается процесс ARC0 (Часть I: рис. 1). Он обязательно должен быть запущен, установкой параметра log_archive_start = true.

Так же стоит отметить, что копирование производится в директорию, которая имеет ограниченный размер. Поэтому, если директория переполнится, то работа базы данных будет невозможна. Все операции изменения данных просто "повиснут", так как процесс записи в онлайн журнальные файлы не сможет записать команды изменения данных (SQL запросы типа DELETE, UPDATE, INSERT и так далее). Подробно о важности контроля свободного места в директории /oracle/ /oraarch я писал в этом посте.

Как уже отмечалось, данные файлы очень важны для восстановления системы, поэтому их надо резервировать. SAP рекомендует создавать две копии оффлайн журнальных файлов, после чего удалять их из директории /oracle/ /oraarch.

  • не нужно выделять отдельную файловую систему и мониторить свободное место в директории /oracle/ /oraarch,
  • цикл резервного копирования упрощается: делать необходимо только холодные копии базы данных,
  • немного увеличивается быстродействие работы базы данных и SAP системы соответственно.

    Используя SQLPlus и SQL запросы следующего вида:
    - > select LOG_MODE from V$DATABASE; - просмотр текущего режима,


- > alter database NOARCHIVELOG; - перевод базы данных в NOARCHIVELOG режим,
- > alter database ARCHIVELOG; - перевод базы данных в ARCHIVELOG режим.

Команды необходимо выполнять в состоянии базы данных MOUNT.



Для изменения режима необходимо пройти путь по меню:
- (1) Instance management -> (3) Alter database instance -> (3) Set archivelog mode или (4) Set noarchivelog mode


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

Мне нужно смоделировать базу данных в Oracle SQL Developer Data Modeler.

Я должен создать отношения ARC (XOR), но я не знаю как. Я нашел checkbox "In Arc" в свойствах внешних ключей, но он отключен (серый). Я не вижу никаких других вариантов, которые относятся к Arc.

1 ответ

Oracle Data Modeler использует xml в качестве формата файла для сохранения моделей. Есть ли у кого-нибудь ключ к разгадке, существует ли схема xml, которую подтверждают эти файлы? Заранее спасибо!

Это может быть простой вопрос, но я не могу найти никаких ресурсов Oracle в руководстве пользователя для Oracle Data Modeler о том, как создать триггер (кроме его определения в разделе потока данных руководства) Представьте себе на мгновение: У меня есть таблица в реляционной модели, и я создал.

Вам нужно выбрать линии связи на диаграмме, а затем нажать кнопку 'New Arc' на главной панели инструментов.

"To создайте дугу, сделайте это после создания всех отношений, которые будут включены. Установите флажок сущность, выберите все линии связи, которые будут включены (удерживайте нажатой клавишу Shift и щелкните каждую линию), и нажмите кнопку Новая дуга на панели инструментов."

enter image description here

Похожие вопросы:

при попытке просмотреть отчеты > отчеты-моделирование данных > содержание дизайн > реляционная модель > реляционные конструкции в Oracle SQL разработчика. Он дает Data Modeler reporting repository.

Существует ли подробное нотационное руководство для диаграмм реляционных моделей, сгенерированных разработчиком моделей данных Oracle ? Я использую Oracle Data Modeler для создания реляционных.

Поэтому я сделал студенческую схему и хотел знать, как сделать логическую модель с помощью oracle data modeler. Я никогда не использовал oracle data modeler. спасибо

Oracle Data Modeler использует xml в качестве формата файла для сохранения моделей. Есть ли у кого-нибудь ключ к разгадке, существует ли схема xml, которую подтверждают эти файлы? Заранее спасибо!

Это может быть простой вопрос, но я не могу найти никаких ресурсов Oracle в руководстве пользователя для Oracle Data Modeler о том, как создать триггер (кроме его определения в разделе потока данных.

Я пытаюсь подключиться к MS SQL Server 2005 из Oracle SQL Developer Data Modeler 3.1.4.710. Я иду в файл - > импорт - >словарь данных, а затем пытаюсь создать соединение с SQL Server. Я продолжаю.

У меня есть реляционная модель в Oracle SQL Developer Data Modeler с таблицами и отношениями. Можно ли экспортировать эту реляционную модель в файл изображения?

Как создать подтипы в логической модели с помощью пользовательского интерфейса в Oracle SQL Data Modeler? У меня есть одна сущность, которая является VEHICLE с такими атрибутами, как: дата.

Ниже приведен пример логической модели, созданной с помощью Oracle SQL Developer Data Modeler: После преобразования модели в реляционную модель полученная модель выглядит следующим образом.

Favorite

Добавить в избранное

7 шагов для создания новой базы данных Oracle из командной строки

Е сли вы сисадмин Linux или разработчик, то приходит время, когда вам потребуется управление базой данных Oracle, которая может работать в вашей среде.

В этом случае важно, чтобы понять некоторые основные DBA деятельности Oracle. В этом уроке мы расскажем, как создать базу данных Oracle из командной строки.

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

Если вы решили не создавать новую базу данных, а установить только программное обеспечение Oracle, то вы можете потом создать базу данных отдельно.

Для того, чтобы создать базу данных Oracle, у вас есть два варианта:

1. Настройка соответствующих переменных среды Oracle

Во-первых, вы должны установить соответствующую переменную среды на сервере правильно.

В этом примере предполагается, что оракул установлен в каталоге /u01/app/oracle/product. Измените это значение в соответствии с вашей средой.

2. Создание файла ini-initdev.ora

Затем создайте файл ora.ini для новой базы данных. Это файл инициализации для новой базы данных.

В зависимости от версии вашей Oracle, вы можете увидеть образец файла init.ora в $ ORACLE_HOME. Если у вас есть, используйте его в качестве базового и отредактируйте соответствующие значения.

Как было показано выше, файл инициализации для новой базы данных должен быть такого формата: INIT .ora – Итак, в этом случае имя файла будет: initdev.ora

Если вы не видите шаблон по умолчанию init.ora в вашем $ORACLE_HOME/DBS, используйте следующий образец.

Несколько пунктов необходимо рассмотреть в указанном файле:

3. Создание Serve Parameter file (spfile)

SP файл означает файл параметров сервера. В отличие от файла sp, инициализация файла ведется в двоичном файле, и вы не можете отредактировать SPFILE вручную.

Файл sp создается из ini файла. Преимущество sp-файла является то, что вы можете изменить значение параметров инициализации после запуска базы данных с помощью команды ALTER SYSTEM.

Затем, при запуске базы данных Oracle, он сначала ищет файл sp для значения параметра. Если он не может найти файл sp, то он будет использовать текст на основе ini-файла.

Чтобы создать файл sp для нашей новой базы данных, используйте следующую команду.

Во-первых, используйте команду sqlplus и получить приглашение SYSDBA Oracle, откуда мы создадим новую базу данных.

Таким образом, первый шаг заключается в создании нового файла sp, основанный на ini-файле. spfile означает ini файл. Следующая команда создаст новый spfile.

Как вы видите ниже, команда автоматически создала spfiledev.ora.

4. Запустите Idle Instance

В команде выше, он будет читать spfile по умолчанию с именем spfile.ora от места расположения spfile по умолчанию $ORACLE_HOME/dbs. Если spfile не существует, он будет использовать по умолчанию инициализацию файла init.ora

По какой-то причине, если вы хотите указать местоположение spfile у себя, вы можете сделать это путем передачи параметра spfile, как показано ниже.

Кроме того, вы можете получить следующее ORA-01078 и LRM-00109, если spfile, или файл инициализации отсутствует в расположении по умолчанию.

5. Создание новой базы данных Oracle

Используйте следующую команду CREATE DATABASE, чтобы создать пустую базу данных.

В приведенной выше команде:

Если вы укажете DB_CREATE_FILE_DEST в файле инициализации на расположение каталога, то вам не нужно указывать точное местоположение и имена файлов для всех файлов данных, Oracle позаботиться об этом за вас.

Например, если вы указали это в файле initdev.ora.

В этом случае, вы можете упростить вашу команду CREATE DATBASE, как показано ниже.

Команды выше создадут соответствующие файлы данных, необходимые для всех табличных пространств (undo, temporary и т.д.) в соответствии с местом, указанным в каталоге DB_CREATE_FILE_DEST.

6. Постройте словарь данных Views

В качестве последнего шага, выполните catalog.sql и catproc.sql. каталог сценарий создаст все словарные таблицы, представления, связанные с производительностью, необходимые общественные синонимы. Он также предоставит соответствующий доступ ко всем синонимам, который был создан. Скрипт catproc выполняет все сценарии, которые необходимы для функциональности PL/SQL.

Частичный вывод из указанных выше команд.

Если вам интересно, вы можете посмотреть на каталог и сценарий catproc, чтобы понять, что именно он делает.

7. Проверка – Завершение работы и ввод в эксплуатацию

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: