Oracle database concepts на русском

Oracle database concepts на русском

В ходе чтения твоих книг и ответов в этом форуме, а также руководства " Oracle Database Concepts ", у меня возник ряд вопросов о транзакциях и уровнях изоляции.

1. Ты утверждаешь, что использование уровня изолированности serialazable не снижает общую производительность:

Однако в руководстве Oracle Database Concepts , мне кажется, утверждается, что уровень изолированности serializable приводит к снижению производительности по сравнению с read committed :

Процитирую раздел " Read Committed Isolation ":

"Уровень изолированности чтение зафиксированного (read committed) может обеспечивать существенно более высокую степень параллелизма за счет повышения вероятности получить несогласованные результаты в некоторых транзакциях из-за неповторяемости при чтении и чтения фантомов."

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

Это что, различие в масштабах?

2. Если существенного различия производительности не наблюдается (в контексте определенного приложения, конечно), мне кажется, лучше использовать уровень изолированности serializable вместо read committed, чтобы получить повторяемость при чтении и т.д.

Есть ли у тебя какие-то критерии определения того, какой уровень изолированности устанавливать? Меня интересуют, прежде всего, приложения ООТ (OLTP). Я не могу придумать причину устанавливать уровень, отличный от serializable, но хотелось бы спросить у более опытного человека.

3. Далее, в следующем обсуждении ты дал понять, что сеанс не всегда находится в транзакции, если используется уровень изолированности read committed (предполагая, что какие-то SQL-операторы были выполнены):

Аналогичное утверждение ты делаешь в главе 4 книги Expert One-on-One (" Oracle для профессионалов " в моем переводе — прим. В.К. ), " Операторы управления транзакциями ": "Транзакция неявно начинается с первого оператора, изменяющего данные. ".

Однако, в руководстве Oracle Database Concepts достаточно ясно утверждается, что сеанс находится в транзакции, если выполнен хоть один SQL-оператор:

Не мог бы ты разрешить мои сомнения на этот счет?

Ответ Тома Кайта

1) Я не согласен с их выводами.

Мы запускаем тесты TPC-C с уровнем изолированности serializable (это требуется по условиям теста). Я бы даже сказал, что во многих случаях верно обратное — уровень изолированности serializable является одним из способов добиться высокой пропускной способности и ускорить время ответа, прчем, с минимальным объемом кода.

2) Нет, так делать не стоит. Уровень изолированности serializable повысит вероятность неудачного завершения транзакции при увеличении ее продолжительности. Он подходит как раз для сред с большой частотой транзакций, когда они короткие и выполняются быстро, читая и изменяя данные. Такой уровень изолированности не подходит для многих систем.

Я использую почти исключительно уровень read committed. Уровень serializable я использую только когда необходима согласованность по чтению нескольких операторов, что требуется редко, а если и требуется, то, в основном, для построения отчетов — для них же я обычно использую транзакции только для чтения.

3) Оператор select не начинает транзакцию на уровне изолированности чтение зафиксированного (read committed). Она начинается при изменении данных. На уровне serializable начало транзакции отмечает оператор set (он должен быть первым )

Если бы оператор select отмечал начало транзакции, оператор set transaction НЕ СРАБОТАЛ бы, как в следующем случае:

А следующий пример показывает, что оператор SET действительно начинает транзакцию:

Теперь выполним запрос к таблице emp — если мы увидим данные, значит, транзакция была начата, поскольку данные выдаются в том виде, как они были на момент выполнения оператора set transaction

Это доказывает, что оператор SET был первым оператором в транзакции.

Фактически начинают транзакцию, отмечая ее начало, только операторы, изменяющие данные, и операторы set transaction .

Оператор select тоже может начать транзакцию, если это select . for update , но select . for update — это, фактически, просто своеобразный оператор изменения данных.

Оригинал обсуждения этого вопроса можно найти здесь.

Copyright © 2003 Oracle Corporation

Все вышедшие выпуски рассылки можно найти на сайте рассылки. Там же реализована возможность поиска материалов по ключевым словам (с помощью Google. )

Данная статья — это обзор концепций и структур, относящихся к ядру СУБД Oracle Database. Разобравшись в архитектуре сервера Oracle, вы заложите фундамент для понимания остальных обширных средств, предоставляемых базой данных Oracle. СУБД Oracle Database состоит из физических и логических компонентов.

Читайте также:  Какой linux выбрать для программирования

Базы данных и экземпляры Oracle

Многие пользователи Oracle Database употребляют термины экземпляр и база данных как синонимы. На самом деле это разные (хотя и взаимосвязанные) вещи. Различие существенно, так как проливает свет на архитектуру Oracle.

В Oracle термином база данных описывается физическое хранилище информации, а термином экземпляр – программное обеспечение, работающее на сервере и предоставляющее доступ к информации в базе данных Oracle Database. Экземпляр исполняется на конкретном компьютере или сервере; база данных хранится на дисках, подключенных к этому серверу. Эта взаимосвязь изображена на рисунке 1 ниже:

Рис. 1. Экземпляр и база данных

База данных Oracle Database – физическая сущность: она состоит из файлов, хранящихся на дисках. Экземпляр – сущность логическая: он состоит из структур в оперативной памяти и процессов, работающих на сервере.

Например, Oracle использует область разделяемой памяти System Global Area (SGA, системная глобальная область) и области памяти в каждом процессе – Program Global Area (PGA, программная глобальная область). Экземпляр может быть частью одной и только одной базы данных. Напротив, с одной базой данных может быть ассоциировано несколько экземпляров. Время жизни экземпляров ограничено, тогда как база данных при должном обслуживании может существовать вечно.

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

В реальном мире есть хорошая аналогия экземплярам и базам данных. Можно считать экземпляр мостом к базе данных, а саму ее – островом. Транспорт попадает на остров и уходит с него по мосту. Если мост перекрыт, то остров на месте, но транспорту туда не попасть. В терминологии Oracle, если экземпляр запущен, то данные могут попадать в базу и уходить из нее. Физическое состояние базы данных при этом изменяется. Если же экземпляр остановлен, то пользователи не могут обращаться к базе данных, пусть даже физически она никуда не делась. База данных в этом случае статична, никаких изменений в ней не происходит. Экземпляр снова запущен – и данные тут как тут.

Структура базы данных Oracle Database

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

Табличные пространства

Любые данные, хранящиеся в базе Oracle, должны находиться в каком-то табличном пространстве. Табличное пространство (tablespace) – это логическая структура; нельзя попросить операционную систему показать вам табличное пространство. Каждое табличное пространство состоит из физических структур, называемых файлами данных (data files). В одном табличном пространстве может быть один или несколько файлов данных, тогда как каждый файл данных принадлежит ровно одному табличному пространству. При создании таблицы можно указать, в какое табличное пространство ее поместить. Тогда Oracle найдет для нее место в одном из файлов данных, составляющих указанное табличное пространство.

На рисунке 2 показано соотношение между табличными пространствами и файлами данных. Здесь мы видим два табличных пространства в базе данных Oracle.

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

Начиная с версии Oracle Database 10g Release 2 для всех типов таблиц по умолчанию подразумеваются локально управляемые табличные пространства. В таком табличном пространстве можно создавать большие файлы, то есть при работе в 64-разрядных системах задействуется возможность создавать сверхбольшие файлы.

Рис. 2. Табличные пространства и файлы данных Oracle

В Oracle9i появился механизм файлов, управляемых Oracle (Oracle Managed Files, OMF), позволяющий автоматически создавать, именовать и, если понадобится, удалять все файлы, составляющие базу дан­ных. OMF упрощает обслуживание базы данных, поскольку не нужно помнить имена всех составляющих ее файлов. К тому же не возникают проблемы из-за ошибок человека, ответственного за именование фай­лов. Начиная с версии Oracle Database 10g сочетание OMF и таблич­ных пространств с большими файлами делает работу с файлами дан­ных совершенно прозрачной.

Читайте также:  Программа чтобы играть по сети в майнкрафт

Максимальное количество файлов данных в базе Oracle — 64 000. По­скольку табличное пространство с большими файлами может содер­жать файл, который в 1024 раза больше файла в табличном пространст­ве с малыми файлами, а размер блока в табличном пространстве с боль­шими файлами для 64-разрядных операционных систем составляет 32 Кбайт, общий размер базы данных Oracle может достигать 8 экза­байт (1 экзабайт = 1 000 000 терабайт) . Табличные пространства с большими файлами предназначены для использования совместно с подсис­темой автоматического управления хранением Automatic Storage Ma­nagement (ASM), иными менеджерами логических томов, поддержи­вающими расслоение, и RAID-массивами .

Файлы базы данных Oracle

База данных Oracle состоит из физических файлов трех основных ти­пов:

  • управляющие файлы (control files);
  • файлы данных (datafiles);
  • журнальные файлы, или журналы (redo log files).

На рис. 3 показаны эти три типа файлов и отношения между ними.

В управляющем файле хранится информация о местонахождении дру­гих физических файлов, составляющих базу данных, — файлов дан­ных и журналов. Там же хранится важнейшая информация о содер­жимом и состоянии базы данных:

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

Рис. 3. Файлы, составляющие базу данных

Управляющие файлы не только содержат важную информацию, необ­ходимую при запуске экземпляра, они полезны и при удалении базы данных. Начиная с версии Oracle Database 10g с помощью команды DROP DATABASE можно удалить все файлы, перечисленные в управ­ляющем файле базы данных, а также сам управляющий файл.

Инициализация базы данных

При запуске экземпляра Oracle считываются параметры инициализа­ции. Они определяют, как база данных должна использовать физиче­скую инфраструктуру и иную конфигурационную информацию об эк­земпляре. Параметры инициализации хранятся в файле параметров инициализации экземпляра, который обычно называют просто INIT.ORA, или, начиная с версии Oracle9i, в репозитории, который на­зывается файлом параметров сервера (или SPFILE). Количество обяза­тельных параметров инициализации уменьшается с выходом каждой новой версии Oracle. В дистрибутиве Oracle есть пример файла инициа­лизации, пригодный для запуска базы данных. Либо можно воспользо­ваться программой Database Configuration Assistant (DCA), которая подскажет обязательные значения (например, имя базы данных).

Вот обязательные параметры инициализации для версии Oracle Data­base 11g:

Местонахождение управляющих файлов.

Локальное имя базы данных.

Имя домена базы данных (например, us.companyname.com).

Местонахождение архивного журнала.

Параметр, включающий архивирование журналов.

Местонахождение области быстрого восстановления (flash recovery area) (каталог, файловая система или группа дисков ASM).

Максимальный размер области быстрого восстановления базы дан­ных в байтах.

Размер блока базы данных в байтах (например, для 4 Кбайт указы­вается значение 4096).

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

Максимальное число сеансов работы с базой данных.

Максимальное число открытых в базе данных курсоров.

Минимальное число разделяемых серверов базы данных.

REM O TE_LI S TENER

Имя удаленного прослушивателя.

Версия базы данных, с которой должна поддерживаться совмести­мость, в тех случаях, когда то или иное средство затрагивает фор­мат файла (например, 11.1.0, 10.0.0).

Размер области памяти, автоматически выделяемой для SGA и PGA экземпляра.

Для команд языка определения данных (DDL) — время (в секундах) ожидания возможности установить монопольную блокировку, пре­жде чем сообщить об ошибке.

Язык, определенный в подсистеме поддержки национальных язы­ков (National Language Support, NLS) для базы данных.

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

В качестве признака взятого курса на автоматизацию отметим, что в версии Oracle Database 11g параметр UNDO_MANAGEMENT по умол­чанию устанавливается в режим автоматического управления откатом (undo). Механизм отката применяется при откате транзакций, а также для восстановления базы данных, обеспечения согласованности по чтению и реализации ретроспекции. (Однако записи о повторном вы­полнении располагаются в физических журналах повтора, или нака­та, redo log; в них хранятся изменения, произведенные в сегментах данных и блоках сегментов отката, там же хранится таблица транзак­ций для сегментов отката.) Время хранения информации для отката Oracle теперь подбирает автоматически, исходя из того, как сконфигу­рировано табличное пространство отката.

Читайте также:  Как сделать несколько видео в одном кадре

Изучите поставляемую с вашей версией СУБД документацию в части дополнительных параметров инициализации, поскольку эта информа­ция изменяется от версии к версии.

Hi: In our new application we have to use the oracle as the db,and we use mysql/sqlserver before,when I come to oracle I am confused by its concepts,for exmaple,the table space,the object,the schema table,index, procedure, database link. (

And the schema is closed to the user,I can not make it.

Since when we use the mysql,I just know that one database contain as many tables,and contain as many users,user have different authentication for different table.

But in oracle,everything is different.

Anyone can tell me some basic concepts of oracle,and some quick start docs?

2 Answers 2

Oracle has specific meanings for commonly-used terms, and you’re right, it is confusing. I’ll build a hierarchy of terms from the bottom up:

  • Database — In Oracle, the database is the collection of files that make up your overall collection of data. To get a handle on what Oracle means, picture the database management system (dbms) in a non-running state. All those files are your "database."
  • Instance — When you start the Oracle software, all those files become active, things get loaded into memory, and there’s an entity to which you can connect. Many people would use the term "database" to describe a running dbms, but, once everything is up-and-running, Oracle calls it an, "instance."
  • Tablespace — A abstraction that allows you to think about a chunk of storage without worrying about the physical details. When you create a user, you ask Oracle to put that user’s data in a specific tablespace. Oracle manages storage via the tablespace metaphor.
  • Data file — The physical files that actually store the data. Data files are grouped into tablespaces. If you use all the storage you have allocated to a user, or group of users, you add data files (or make the existing files bigger) to the tablespace they’re configured to use.
  • User — An abstraction that encapsulates the privileges, authentication information, and default storage areas for an account that can log on to an Oracle instance.
  • Schema — The tables, indices, constraints, triggers, etc. that are owned by a particular user. There is a one-to-one correspondence between users and schemas. The schema has the same name as the user. The difference between the two is that the user concept is all about account information, while the schema concept deals with logical database objects.

This is a very simplified list of terms. There are different states of "running" for an Oracle instance, for example, and it’s easy to get into very nuanced discussions of what things mean. Here’s a practical exercise that will let you put your hands on these things, and will make the distinctions clearer:

  1. Start an already-created Oracle instance. This step will transform a group of files, or as Oracle would say, a database, into a running Oracle instance.
  2. Create a tablespace with the CREATE TABLESPACE command. You’ll have to specify some data files to put into the tablespace, as well as some storage parameters.
  3. Create a user with the CREATE USER command. You’ll see that the items you have to specify have to do with passwords, privileges, quotas, and the like. Specify that the user’s data be stored in the tablespace you created in step 2.
  4. Connect to the Oracle using the credentials you created with the new user from step 3. Type, "SELECT * FROM CAT". Nothing should come back yet. Your user has a schema, but it’s empty.
  5. Run a CREATE TABLE command. INSERT some data into the table. The schema now contains some objects.
Ссылка на основную публикацию
Logitech deluxe 250 keyboard драйвер
Ниже показаны совместимые с ОС Windows 7 драйвера для Logitech Deluxe 250 USB Keyboard. Каждый драйвер клавиатуры Logitech Deluxe 250...
Adblock detector