Sysdba oracle что это

Обновлено: 30.06.2024

Разница между sys и системными пользователями в Oracle

Разница между sys и системными пользователями в Oracle

1. Чтобы запустить базу данных, войдите как SYSDBA / SYSOPER.

2. Если вы используете IPC для подключения к базе данных на том же хосте и используете авторизацию операционной системы, любой пользователь, который входит в систему, может иметь как sysdba, так и sysoper.

3. Разница между sys и пользователями системы

Пользователь SYS имеет полномочия администратора базы данных и режим SYS. Вы можете войти в базу данных только через SYSDBA, которая является самой привилегированной учетной записью в базе данных Oracle. Пользователь sys имеет разрешения «SYSDBA» и «SYSOPER» и может использовать эти два идентификатора только при входе в em, а не в обычном режиме. Когда система входит в em, она может войти только в обычном режиме. sys имеет словарь данных (словарь), или словарь относится к схеме sys.

Системный пользователь имеет полномочия администратора БД, но не обладает полномочиями SYSDBA. Обычно используют эту учетную запись для управления базой данных. При входе в em вы можете использовать только обычный вход.

4. Разница между полномочиями SYSDBA и полномочиями SYSOPER

Разрешение «SYSOPER», то есть разрешение оператора базы данных, sysoper в основном используется для запуска и закрытия базы данных, пользователь общедоступен после входа в систему сисопера. Разрешения включают в себя: открытая база данных (ЗАПУСК, ALTER DATABASE OPEN / MOUNT / OPEN), сервер (CREATE SPFILE и т. Д.)

Закройте сервер базы данных
Резервное копирование базы данных
Восстановить базу данных ВОССТАНОВЛЕНИЕ
ARCHIVELOG
ОГРАНИЧЕННАЯ СЕССИЯ

Полномочия «SYSDBA», то есть полномочия администратора базы данных, наивысшие полномочия системы. Любой пользователь с логином sysdba - "SYS". Разрешения включают в себя: функции управления, создание базы данных (CREATE DATABASE) и все разрешения для «SYSOPER»

Другим пользователям необходимо вручную предоставить разрешение, и показывать пользователя - это имя пользователя.

SQL>conn / as sysdba
подключен.
SQL>grant sysoper to test;
Авторизация прошла успешно.
SQL>grant sysdba to test;
Авторизация прошла успешно.
SQL>conn test/test as sysoper;
подключен.
SQL>show user
ПОЛЬЗОВАТЕЛЬ "ОБЩЕСТВЕННЫЙ"
SQL>conn test/test as sysdba;
подключен.
SQL>show user;
ПОЛЬЗОВАТЕЛЬ - "SYS"
SQL>conn test/test;
подключен.
SQL>show user
ПОЛЬЗОВАТЕЛЬ является «тестовым»

5. Разница между dba и sysdba:

Sysdba должен управлять экземпляром oracle. Его существование не зависит от полного запуска всей базы данных. Пока экземпляр запускается, он уже существует. Войдите в систему как sysdba, загрузите базу данных и откройте базу данных.

Только после того, как база данных полностью запущена, роль dba имеет основу для существования.


Обновлено: 25 мая 2016 г. 11:51:11 Автор: Цинь Фэн Я хочу комментировать

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

1) Самое важное отличие, важность хранимых данных отличается

[Sys] Базовые таблицы и представления всех словарей данных oracle хранятся у пользователей sys. Эти базовые таблицы и представления имеют решающее значение для работы oracle и поддерживаются самой базой данных. Ни один пользователь не может изменить их вручную. Пользователь sys имеет роли или разрешения, такие как dba, sysdba и sysoper, и является пользователем с самыми высокими разрешениями оракула.

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

2) Во-вторых, разница в авторитете.

[Система] Пользователи могут входить в систему только с обычным статусом, если вы не предоставите ей системные разрешения sysdba или системные разрешения syspoer.

[Sys] Пользователь имеет системные полномочия «SYSDBA» или «SYSOPER», и входящий в систему em может использовать только эти два идентификатора, а не нормально.

Войдите в Oracle как пользователь sys и выполните select * from V_ $ PWFILE_USERS, к пользователям с разрешениями sysdba могут быть запрошены следующие запросы:

Скопировать код Код выглядит следующим образом:

SQL> select * from V_$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
SYS TRUE TRUE

Sysdba и Sysoper две системные права доступа

В чем разница между нормальным, sysdba и sysoper

нормальный нормальный пользователь

Два других вы узнаете, изучив их авторитет

sysdba имеет самые высокие системные разрешения, после входа в систему sys

sysoper в основном используется для запуска и закрытия базы данных, пользователь является публичным после входа в систему sysoper

sysdba и sysoper принадлежат системной привилегии, также известной как административная привилегия, и имеют некоторые разрешения уровня управления системой, такие как открытие и закрытие базы данных. Конкретные разрешения sysdba и sysoper можно увидеть в следующей таблице:

//files.jb51.net/file_images/article/201605/2016525115143054.jpg

oracle <wbr> разница между sys и системными пользователями

Если система входит в систему нормально, это на самом деле обычный пользователь dba, но если вы входите в систему как sysdba, в результате вы фактически входите в систему как пользователь sys. Это похоже на чувство sudo в Linux. Из информации о входе в систему мы можем видеть Выходи Поэтому после того, как sysdba подключится к базе данных, созданные объекты фактически будут сгенерированы в sys. То же самое верно и для других пользователей. Если вы вошли в систему как sysdba, вы также вошли в систему как пользователь sys. См. Следующий эксперимент:

SQL> create user strong identified by strong;

Пользователь был создан.

SQL> create table test(a int);

Таблица была создана.

SQL> select owner from dba_tables where table_name='test';

Невыбранные строки // Поскольку оракул автоматически преобразуется в верхний регистр при создании таблицы, он не существует при проверке в нижнем регистре;

SQL> select owner from dba_tables where table_name='TEST';

Разница между dba и sysdba

В чем разница между двумя системными ролями dba и sysdba?

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

Создать экземпляр → запустить экземпляр → создать базу данных (требуется системное табличное пространство)

Запуск экземпляра → загрузить базу данных → открыть базу данных

sysdba предназначен для управления экземпляром oracle. Его существование не зависит от запуска всей базы данных. Пока экземпляр запущен, он уже существует. Войдите в систему как sysdba, загрузите базу данных и откройте базу данных. Только после открытия базы данных или после полного запуска всей базы данных роль dba имеет основание для существования!

1. Разрешения DBA в основном включают разрешения, связанные с управлением базой данных.

2. Вы должны дать своему администратору разрешение на создание таблиц и другие связанные разрешения, такие как
предоставить создание таблицы администратору; -создать таблицу предоставить создание представления администратору; -создать представление

3. Вы также можете напрямую назначать роли подключения и ресурса, включая большую часть гранта, ресурса администратору;
Разрешения, включенные в эти две роли (например, Oracle 10g):

Роль CONNECT: - это типичное право, предоставляемое конечным пользователям, самое основное
CREATE SESSION - установить сеанс
Роль RESOURCE: -наделена для разработчика.
CREATE CLUSTER-установить кластер
CREATE PROCEDURE-процесс создания
CREATE SEQUENCE-установить последовательность
CREATE TABLE TABLE-таблица построения
CREATE TRIGGER - Создать триггер
CREATE TYPE TYPE - Тип здания
CREATE OPERATOR - создайте оператор
CREATE INDEXTYPE - создать тип индекса
CREATE TABLE TABLE - Создать таблицу

Статьи, которые могут вас заинтересовать:

Разница между пользователем sys и пользователем системы в oracle

1. Самое важное отличие: важность хранения данных отличается

[Sys] Базовые таблицы и представления всех словарей данных Oracle хранятся у пользователей sys. Эти базовые таблицы и представления имеют решающее значение для работы oracle и поддерживаются самой базой данных. Ни один пользователь не может изменить их вручную. Пользователь sys имеет роли или разрешения, такие как dba, sysdba и sysoper, и является пользователем с самыми высокими разрешениями оракула.

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

Во-вторых, второе отличие: разные разрешения

[Система] Пользователи могут войти в em только с обычным состоянием, если вы не предоставите ему системные разрешения sysdba (системная привилегия sysdba) или системные разрешения sysoper.
[sys] У пользователя есть полномочия системы «SYSDBA» или «SYSOPER», и при входе в систему em могут использовать только эти два идентификатора, а не обычные.

Войдите в Oracle как пользователь sys и выполните select * from V_ $ PWFILE_USERS, к пользователям с разрешениями sysdba можно сделать запрос, например:

SQL> select * from V_$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
SYS TRUE TRUE

Различия между системными разрешениями Sysdba и sysoper

В чем разница между нормальным, sysdba и sysoper
normal - обычный пользователь
Два других вы узнаете, изучив имеющиеся у них разрешения
sysdba имеет самые высокие системные разрешения после входа в систему как sys
Сисопер в основном используется для запуска и закрытия базы данных, пользователь является публичным после входа в систему сисопера

sysdba и sysoper принадлежат системной привилегии, также известной как административная привилегия, и имеют некоторые разрешения уровня управления системой, такие как открытие и закрытие базы данных. Конкретные разрешения sysdba и sysoper можно увидеть в таблице ниже:

Системные разрешения sysdba sysoper
Запуск автозагрузки различий (база данных запуска)
Завершение работы (Завершение работы базы данных) Завершение работы
alter database open/mount/backup alter database open/mount/backup
Изменить набор символов
создать базу данных (Создать базу данных) Никто не может создать базу данных
удалить базу данных (удалить базу данных)
create spfile create spfile
изменить архив базы данных (архив журнала) изменить архив архива базы данных
изменить восстановление базы данных (восстановить базу данных) можно только полностью восстановить, неполное восстановление не может быть выполнено
Иметь ограниченные разрешения сеанса (ограниченный сеанс) Иметь ограниченные разрешения сеанса
позволяет пользователю подключаться как пользователь sys и может выполнять некоторые основные операции, но не может просматривать пользовательские данные
После входа в систему пользователь sys. После входа пользователь является открытым

Если система входит в систему в обычном режиме, это на самом деле обычный пользователь dba, но если вы входите в систему как sysdba, то в результате вы вошли в систему как пользователь sys, что похоже на чувство sudo в Linux. Выходи Следовательно, когда sysdba подключается к базе данных, созданные объекты фактически создаются в sys. То же самое верно и для других пользователей. Если вы входите в систему как sysdba, вы также входите в систему как пользователь sys, см. Следующий эксперимент:
SQL> create user strong identified by strong;

Существует два способа подключения к Oracle в качестве администратора с помощью sqlplus:

  1. sqlplus sys as sysdba
  2. sqlplus system/manager

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

Какие задачи предназначены для этих двух схем? Когда я должен использовать один или другой из них?

3 ответа

  • автоматически создается при установке базы данных Oracle
  • автоматически предоставлена ​​роль DBA
  • имеет пароль по умолчанию: CHANGE_ON_INSTALL (убедитесь, что вы его изменили)
  • владеет базовыми таблицами и представлениями для словаря данных базы данных
  • схема по умолчанию при подключении как SYSDBA

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

  • автоматически создается при установке базы данных Oracle
  • автоматически предоставлена ​​роль DBA
  • имеет пароль по умолчанию: MANAGER (убедитесь, что вы его изменили)
  • используется для создания дополнительных таблиц и представлений, отображающих административную информацию.
  • используется для создания внутренних таблиц и представлений, используемых различными параметрами и инструментами базы данных Oracle.

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

Пользователи SYS AND SYSTEM

При установке Oracle Database автоматически создаются следующие учетные записи администратора. Они оба создаются с паролем, который вы предоставили при установке, и оба они автоматически получают роль DBA.

Эта учетная запись может выполнять все административные функции. Все базовые (базовые) таблицы и представления для словаря данных базы данных хранятся в схеме SYS. Эти базовые таблицы и представления имеют решающее значение для работы Oracle Database. Чтобы поддерживать целостность словаря данных, таблицы в схеме SYS управляются только базой данных. Они никогда не должны быть изменены любым пользователем или администратором базы данных. Вы не должны создавать таблицы в схеме SYS.

Пользователю SYS предоставляется привилегия SYSDBA, которая позволяет пользователю выполнять административные задачи высокого уровня, такие как резервное копирование и восстановление.

Эта учетная запись может выполнять все административные функции, кроме следующих:

Резервное копирование и восстановление

Обновление базы данных

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

Системные привилегии SYSDBA и SYSOPER

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

Системные привилегии SYSDBA и SYSOPER разрешают доступ к экземпляру базы данных, даже если база данных не открыта. Таким образом, контроль этих привилегий полностью за пределами самой базы данных. Этот элемент управления позволяет администратору, которому предоставлена ​​одна из этих привилегий, подключиться к экземпляру базы данных для запуска базы данных.

Вы также можете придумать привилегии SYSDBA и SYSOPER как типы соединений, которые позволяют выполнять определенные операции с базой данных, для которых привилегии не могут быть предоставлены каким-либо другим способом. Например, если у вас есть привилегия SYSDBA, вы можете подключиться к базе данных с помощью AS SYSDBA.

Пользователь SYS автоматически получает привилегию SYSDBA при установке. Когда вы входите в систему как пользователь SYS, вы должны подключиться к базе данных как SYSDBA или SYSOPER. Подключение в качестве пользователя SYSDBA вызывает привилегию SYSDBA; поскольку SYSOPER вызывает привилегию SYSOPER. Oracle Enterprise Manager Database Control не позволяет вам войти в систему как пользователь SYS без подключения в качестве SYSDBA или SYSOPER.

Когда вы подключаетесь к привилегии SYSDBA или SYSOPER, вы соединяетесь со схемой по умолчанию, а не с схемой, которая обычно связана с вашим именем пользователя. Для SYSDBA эта схема - SYS; для SYSOPER схема является PUBLIC.

Пример существенного различия между SYS (или любым другим подключением SYSDBA) и каждым другим пользователем: SYS не может выполнить последовательное чтение . Одним из последствий этого (есть и другие) является то, что вы не можете экспортировать CONSISTENT = Y в виде SYS, используя старую утилиту exp.

Сотрудник Oracle и эксперт Том Ките считают, что вы редко должны использовать один из них . Что касается SYS, он указывает, что он работает по-другому, как показывает вышеприведенный пример, но в более общем плане он считает, что они «принадлежат» Oracle Corporation. Если вы внесете изменения или добавите что-то в любую схему, и возникает проблема (например, сбой обновления базы данных), я подозреваю, что ответ Oracle Support будет следующим: «Вы не должны этого делать».

Существует два способа подключения к Oracle в качестве администратора с использованием sqlplus:

  1. sqlplus sys as sysdba
  2. sqlplus system/manager

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

Для каких задач предназначены эти две схемы? Когда я должен использовать один или другой среди них?

  • Автоматически создается при установке базы данных Oracle
  • Автоматически предоставляется DBA роль
  • Имеет пароль по умолчанию: CHANGE_ON_INSTALL (убедитесь, что вы изменили его)
  • Владеет базовыми таблицами и представлениями для словаря данных базы данных.
  • Схема по умолчанию при подключении как SYSDBA

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

  • Автоматически создается при установке базы данных Oracle
  • Автоматически предоставляется DBA роль
  • Имеет пароль по умолчанию: MANAGER (убедитесь, что вы изменили его)
  • Используется для создания дополнительных таблиц и представлений, которые отображают административную информацию
  • Используется для создания внутренних таблиц и представлений, используемых различными опциями и инструментами базы данных Oracle

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

На практике каждый администратор баз данных занимается sqlplus / as sysdba повседневной работой - за 15 лет работы с десятками опытных администраторов баз данных я никогда не сталкивался с кем-то, кто беспокоится об SYSTEM учетной записи.

SYS AND SYSTEM Пользователи

Следующие учетные записи администраторов создаются автоматически при установке Oracle Database. Оба они созданы с паролем, который вы указали при установке, и им автоматически предоставляется роль DBA.

Эта учетная запись может выполнять все административные функции. Все базовые (базовые) таблицы и представления для словаря данных базы данных хранятся в схеме SYS. Эти базовые таблицы и представления имеют решающее значение для работы базы данных Oracle. Для обеспечения целостности словаря данных таблицы в схеме SYS управляются только базой данных. Они никогда не должны быть изменены любым пользователем или администратором базы данных. Вы не должны создавать таблицы в схеме SYS.

Пользователю SYS предоставляется привилегия SYSDBA, которая позволяет пользователю выполнять высокоуровневые административные задачи, такие как резервное копирование и восстановление.

Эта учетная запись может выполнять все административные функции, кроме следующих:

Резервное копирование и восстановление

Обновление базы данных

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

Системные привилегии SYSDBA и SYSOPER

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

Системные привилегии SYSDBA и SYSOPER разрешают доступ к экземпляру базы данных, даже если база данных не открыта. Таким образом, контроль над этими привилегиями полностью находится за пределами самой базы данных. Этот элемент управления позволяет администратору, которому предоставлена ​​одна из этих привилегий, подключаться к экземпляру базы данных для запуска базы данных.

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

Пользователь SYS автоматически получает привилегию SYSDBA при установке. Когда вы входите в систему как пользователь SYS, вы должны подключиться к базе данных как SYSDBA или SYSOPER. Подключение в качестве пользователя SYSDBA вызывает привилегию SYSDBA; соединение как SYSOPER вызывает привилегию SYSOPER. Oracle Enterprise Manager Database Control не позволяет вам входить в систему как пользователь SYS, не подключаясь как SYSDBA или SYSOPER.

При подключении с привилегией SYSDBA или SYSOPER вы подключаетесь со схемой по умолчанию, а не со схемой, которая обычно связана с вашим именем пользователя. Для SYSDBA это схема SYS; для SYSOPER схема является ОБЩЕСТВЕННОЙ.

Пример существенного различия между SYS (или любым другим соединением SYSDBA) и любым другим пользователем: SYS не может выполнять последовательное чтение . Одним из следствий этого (есть и другие) является то, что вы не можете выполнить экспорт CONSISTENT = Y как SYS, используя старую утилиту exp.

Сотрудник и эксперт Oracle Том Кайт считает, что вам редко следует использовать какой-либо из них . Что касается SYS, он указывает, что он работает по-другому, как показывает пример выше, но в более общем плане он считает, что они «принадлежат» корпорации Oracle. Если вы вносите изменения или добавляете что-либо в любую из схем, и возникает проблема (например, сбой обновления базы данных), я подозреваю, что ответ службы поддержки Oracle будет: «Вы не должны были этого делать».

Это звучит так, как будто на плакате написано, что есть только два способа подключения:

«Существует два способа подключения к Oracle в качестве администратора с использованием sqlplus:

Учетная запись администратора - это любая учетная запись пользователя Oracle с привилегией SYSDBA или ролью DBA. SYS - предопределенный пользователь с SYSDBA, а SYSTEM - предопределенный пользователь с DBA. Если в базе данных есть n учетных записей администраторов, то есть n пользователей, которые могут подключиться с правами администратора (по определению) - их не просто две.

Еще один момент касается SQL * Plus. Вы можете подключиться как SYS, используя аутентификацию ОС по приглашению ОС: sqlplus / as sysdba. Вы также можете запустить SQL * Plus, а затем CONNECT / AS SYSDBA. Вы можете указать пароль в командной строке ОС, в операторе CONNECT или попросить SQL * Plus запросить его. Вы можете использовать сетевое имя сервиса. Вы можете (и должны) изменить системный пароль. И так далее.

Я думаю, что автор хотел сказать, что в базе данных Oracle есть как минимум две учетные записи администратора, и если в SYSTEM установлен пароль по умолчанию и если установлена ​​аутентификация ОС, то это два (из многих) примеров как SYS и SYSTEM могут войти в базу данных, используя SQL * Plus.

Oracle рекомендует следующий порядок действий для запуска БД: запуск Database Control, запуск listener-а, запуск БД. Запуск БД также является составным процессом. При запуске более сложного окружения, такого как cluster system или любого другого управляемого Enterprise Manager Grid Control могут быть дополнительные этапы, однако для Single Instance архитектуры этой последовательности вполне достаточно.

Запуск и подключение к Database Control

Для запуска Database Control необходимо запустить программу emctl, расположенную в папке $ORACLE_HOME/bin. Ниже перечислены команды для запуска, остановки и проверки состояния Database Control

emctl start dbconsole

emctl stop dbconsole

ecmtl status dbconsole

Для успешного выполнения этих команд должны быть установлены следующие системные переменные: PATH, ORACLE_HOME и ORACLE_SID. PATH используется операционной системой для поиска пути к программе emctl. ORACLE_HOME и ORACLE_SID используются для поиска командой emctl файлов конфигурации. Эти файлы расположены в трёх местах: папка ORACLE_HOME/sysman/config содержит общие настройки для всех экземпляров Database Control работающих с текущей домашней директорией Oracle. ORACLE_HOME/hostname_sid/sysman/config и ORACLE_HOME/oc4j/j2ee/ OC4J_DBConsole_ hostname_sid/config содержат дополнительные расширенные настройки для каждой БД(hostname – имя компьютера, sid – значение переменной ORACLE_SID).

На рисунке 3-3 показан результат выполнения команды запуска Database Control

16

Первая попытка запуска была неудачной так как не была установлена переменная ORACLE_SID. Без корректного значения этой переменной emctl не может найти необходимые файлы конфигурации (значение используется в названии папок). Команда проверки состояния ни что иное как запрос по адресу URL; доступность этого URL так же можно проверить в браузере

где hostname – это сетевое имя компьютера на котором запущен Database Control и port – это порт ответственный за входящие подключения. Если у вашего сервера несколько сетевых имён или несколько сетевых интерфейсов – можно использовть любой. Для определения порта можно использовать команду emctl либо посмотреть конфигурационный файл ORACLE_HOME/install/portlist.ini где указаны все порты настроенные OUI и DBCA. При незапущенном listener-е при подключении к Database Control вы увидите окно изображенное на рисунке 3-4.

Запуск listener-а БД

Listener – это процесс который следит за запросами к порту для подключения к базе данных. Запросы к БД (и весь остальной трафик после создания сессии) использует Oracle Net, закрытый протокол Oracle. Oracle Net – это прокотор который работает над любым низлежащим сетевым протоколом, обычно над TCP/IP. Управление listener-ом более детально расммотрим в главе 4, сейчас же рассмотрим как запустить listener. Это можно сделать двумя (в windows тремя) способами: используя программу lsnrctl, с помощью Database Control, запустить windows сервис.

Программа lsnrctl расположена в каталоге ORACLE_HOME/bin. Параметрами могут быть

lsnrctl start [listener name]

lsnrctl status [listener name]

17

Обратите внимание на первую строчку – там указаны сетевое имя и порт listener-а, а также на пятую снизу строку, которая обозначает что listener будет принимать подключения для сервиса ocp11g который создан для экземпляра ocp11g. Это критически важная информация для подключения к БД. Если БД была успешна создана с помощью DBCA значит listener настроен и запущен. Если нет вы увидите другой ответ команды lsnrctl status, тогда используйте команду lsnrctl для запуска или нажмите кнопку START LISTENER в окне Database Control показанном на рисунке 3-4.

Запуск SQL *Plus

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

Запуск и остановка БД

Если быть точным – нельзя запустить и остановить БД: только экземпляр может быть запущен и остановлен, а база данны может быть подключена, открыта, отключена и закрыта. Данные операции можно совершить с помощью SQL *Plus выполнив команды STARTUP и SHUTDOWN или используя Database Control. В Windows это можно сделать также с помощью управления сервисом созданным для экземпляра БД. Системный журнал содержит подробную информацию об этих операциях когда бы они не были вызваны. Запуск и остановка – очень важные операции, информация об их выполнении всегда записывается и они могут быть инициированы только пользователями с особым уровнем доступа.

Подключение с повышенными правами доступа

Обычный пользователь не может запустить или остановить БД – потому что он авторизуется используя словарь данных. Это логически невозможно поскольку в момент запуска словарь данных ещё не доступен. Таким образом для запуска необходимо подключаться к серверу используя механизм внешней авторизации: системная авторизация пользователя как члена группы Oracle, или авторизация с использованием файла паролей. Тип авторизации указывается при выполнении команды CONNECT. Ниже представлены различные комбинации команды CONNECT после подключения к серверу используя программу SQL *Plus с параметром /NOLOG

connect user/pwd[@connect_alias] as sysdba

connect user/pwd[@connect_alias] as sysoper

connect / as sysdba

connect / as sysoper

где user – имя пользователя, pwd – пароль, connect_alias – сетевой идентификатор (рассмотрим в главе 4). Первый пример использует авторизацию с помощью словаря данных, база данных должны быть открыта или команда вернёт ошибку. Любой пользователь после подключения к БД используя данный синтаксис не сможет выполнить команды запуска и остановки базы данных. Два следующих примеры указывают Oracle использовать авторизацию с помощью файла паролей. Последние команды используют авторизацию операционной системы: Oracle проверяет является ли текущий пользователь членом группы Oracle, и если проверка успешна – пользователь подключается к БД как SYSOPER или SYSDBA. Пользователь подключившийся к базе данных любым способом из последних четырёх может выполнить команды запуска и остановки БД вне зависимости от состояния базы данных – она может быть даже не создана на этом этапе.

Если Database Control обнаруживает запущенный listener – то он использует авторизацию через словарь данных или файл паролей (в зависимости от выбора пользователя – рисунок 3-6). Если же listener не запущен (рисунок 3-4) при нажатии на кнопку STARTUP Database Control запрашивает системные имя пользователя и пароль для подключения к серверу.

19

SYSOPER и SYSDBA

SYSOPER и SYSDBA – это уровни доступа с повышенными полномочиями. Они доступны только при системной авторизации или авторизации с помощью файла паролей. Уровень доступа SYSOPER может выполнять команды

ALTER DATABASE [MOUNT|OPEN|CLOSE|DISMOUNT]

ALTER [DATABASE|TABLESPACE][BEGIN|END] BACKUP

Уровень доступа SYSDBA также может выполнять эти команды, плюс возможность создавать БД, запускать неполное восстановление и давать полномочия SYSOPER и SYSDBA другим пользователям.

Вам может быть интерестно под каким пользователем вы подключаетесь к БД когда используется системная авторизация. Чтобы это выяснить, после подключения к базе данных выполните команду show user (эту команду можно вызвать набрав sho user – не стоит недооценивать сокращения, они могут ускорить время набора команд) – результат показан на рисунке 3-7.

Уровень доступа SYSDBA использует пользоватля SYS – суперпользователя в системе и владельца словаря данных. Уровень доступа SYSOPER подключается как пользователь PUBLIC. PUBLIC – не пользователь в нормальном смысле, это пользователь который используется для задач администрирования, но (по умолчанию) не может просматривать или изменять данные. Подключаться с данными уровнями доступа стоит только для выполнения задач, которые не могут быть выполнены обычными пользователями.

20

Запуск: NOMOUNT, MOUNT и OPEN

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

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

Когда база данных остановлена (SHUTDOWN) все файлы закрыты и экземпляр не существует. В отключенном состоянии (NOMOUNT) – экземпляр БД построен в памяти (SGA создана и фоновые процессы запущены согдасно файлу параметров), но база данных недоступна и может быть даже ещё не создана. В подключенном состоянии (MOUNT) экземпляр находит и читает файл контроля. В открытом состоянии (OPEN) все файлы найдены и открыты – т.е. база данных доступна для пользователей. Когды вы запускаете команду STARTUP – будут выполнены все шаги, однако команда может быть разбиты на этапы. Напирмер если файл контроля испорчен или копия недоступна – вы не сможете подключить базу данных. Однако вы можете запустить базу в неподключенном режиме (NOMOUNT) и восстановить файл контроля. Точно так же если у вас возникли проблемы с файлами данных или логовов, вы можете попробовать восстановить данные в MOUNT состоянии, перед тем как открывать БД.

Как же экземпляр находит файлы которые ему нужны на каждом из шагов? Начнём с NOMOUNT. Когда вы запускаете команду STARTUP, Oracle будет искать файл параметров в определённом порядке как отображено на рисунке 3-8.

Всего существует три пути и имени файла. На Unix подобных системах это

21

Во всех случаях – SID это имя экземпляра. Порядок поиска очень важен. Oracle будет использовать первый найденный файл вне зависимости от наличия остальных. Если ни одного файла не существует – экземпляр не будет запущен. В режиме NOMOUNT используются только файл параметров и системный журнал. Значения параметров из файла параметров используются для создания SGA в памяти и запуска фоновых процессов. В системный журнал записывается информация об этот процессе. Где находится системный журнал? Путь можно узнать посмотрев параметр BACKGROUND_DUMP_DEST в файле параметров или выполнив команду

sho parameter background_dump_dest

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

Когда экземпляр запущен в режиме NOMOUNT, переход в состояние MOUNT будет осуществляться путём чтения файла контроля. Oracle находит эти файлы используя параметр CONTROL_FILES, прочитанный во время запуска экземпляра. Если файл контроля (или хотя бы одна копия) не найдены или повреждены, база данных не будет подключена и вы обязаны восстановить их перед подключением. Все копии должны быть доступны и одинаковы для успешного подключения БД.

Как часть процесса подключения, все именя файлов данных и логов и пути к ним считываются из файла контроля, но Oracle просто запоминает эти значения, не пытаясь найти файлы. Поиск и чтение файлов происходит во время открытия базы данных (OPEN). Если какой-либо файл поврежден или отсутствует база данных останется в режиме MOUNT пока вы не исправите ошибки. Более того, все файлы должны быть синхронизированы перед тем как база данных будет открыта. Если последнее выключение было выполнено в определённом порядке, то все буферы из буфера кэша БД записаны на диск процессом DBWn и файлы синхронизированы, и Oracle будет знать при запуске что все подтверждённые транзакции сохранены в файлах данных и нет неподтвержденных транзакций ожидающих отмены. Если же последнее выключение было не запланированным (к примеру от потери питания или системной перезагрузке сервера без правильного выключения экземпляра) то Oracle должен синхроинизировать файлы данных и файлы логов (отменив неподтверждённые транзакции). Процесс который подключает и открывает БД (и синхронизирует данные) называется SMON. Только когда база данных успешно открыта будет возможно подключение пользователей. Процесс запуска графически представлен на рисунке 3-9.

Остановка процесс зеркальный запуску. Вначале закрывается БД (CLOSE), затем отключается (DISMOUNT) и далее останавливается экземпляр. Во время закрытия БД все сессии отключаются: текущие транзакции отменяются процессом PMON, подтверждённые транзакции записываются в файлы данных DBWn и файлы данных и логов закрываются. Во время отключения закрывается файл контроля. И экземпляр останавливается с освобождением памяти и остановкой фоновых процессов.

22

Выключение: NORMAL, TRANSACTIONAL, IMMEDIATE и ABORT

Существуют параметры которые используются с командой SHUTDOWN – вызов SHUTDOWN команды требует уровня доступа SYSDBA или SYSOPER

NORMAL: это значение по умолчанию. Новые подключения нельзя создать, но все текущие сессии могут работать до конца сессии. Когда все пользователю отключатся база данных будет выключена.

TRANSACTIONAL: новые подключения недоступны; существующие сессии которые не выполняют транзакции отключаются; сессии которые выполняют транзанкцию завершают транзакцию и отключаются. Когда все сессии будут отключены, база данных останавливается.

IMMEDIATE: новые подключения не разрешены. Все активные сессии отключаются. Все активные транзакции отменяются и база данных выключается.

ABORT: это эквивалент отключению питания. Экземпляр останавливается без записи чего либо на диск, закрытия файлов, отмены транзакций.

Параметр “abort” оставляет базу данных в рассинхронизированном состоянии: возможно что подтверждённые транзакции не записаны в файлы данных, так как на момент выключения они были сохранены в памяти и DBWn не записал изменения из буфера в файлы. Также может быть и такое, что неподтверждённые транзакции записаны в файлы данных. Это определение испорченной БД: она содержит некорректные данные. Эти повреждения должны быть восстановлены используя instance recovery. Таким образом можно протестировать что произойдёт если к примерну непредвиденно обесточить сервер в процессе работы БД.

Так как выключение это пошаговый процесс, то возможно управлять этапами используя SQL *Plus и команды

alter database close;

alter database dismount;

Эти команды полная противоположность командам запуска. На практике SHUTDOWN это единственная команда которой пользуются DBA. Пошаговый процесс также недоступен из Database Control.

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