Шаг 20 - Подходим ближе! Основные компоненты БД Oracle

Не скрою, перед тем как начать, этот шаг, мне пришлось, кое что полистать. :) Так как, вобрать в себя все то, что я вам собираюсь рассказать, не так то просто! Материал очень обширный и состоит из множества понятий и определений! Давайте договоримся сразу, я попытаюсь, донести все это, как можно понятнее и проще. По этому если буду, делать обобщения, то не в ущерб самому предмету, согласитесь, все знать не возможно, а мне просто доставляет удовольствие все это проходить вместе с вами и за одно освежать все в памяти!!! Если я где-либо ошибусь, то можете мне на это указать! Я не обижусь!!! Так как не являюсь истиной в последней инстанции. Давайте собственно, переходить к делу! Зададимся таким тривиальным вопросом, что же такое собственно база данных (БД) и в частности БД Oracle? По своей сути сам термин БД, подразумевает систему обработки данных и определяет физическую и логическую структуру данных в ней находящуюся! Немного запутано, но понять можно! А сама БД, находится в ведении системы управления реляционными базами данных (СУРБД)! Естественно каждая БД, состоит из набора компонент. Часть из них, используется внутри самой системы и необходима собственно для функционирования самой СУБД, а часть, доступна любому внешнему процессу. Так вот первые называются системными объектами, а вторые пользовательскими объектами. Давайте для начала, разберемся с системными объектами. Они в БД Oracle, включают такие основные понятия как:

  1. Файлы параметров инициализации.
  2. Управляющие файлы.
  3. Оперативные и архивные файлы журналов регистрации транзакций.
  4. Файлы трассировки.
  5. Идентификаторы записей ROWID (Их еще называют "Атомарная матрица Oracle" :) )
  6. Блоки ORACLE.

Файл параметров инициализации имеющий имя init.ora, собственно является основным средством настройки БД. Он представляет из себя обычный ASCII файл, содержащий ряд параметров, которые БД, использует при старте и последующем разворачивании в ОС. Правда здесь есть один нюанс, сама БД ищет, файл инициализации с именем initSID.ora. Где SID, напомню, если кто забыл, это служебное имя вашего экземпляра БД. В нашем случае, если вы инсталлировали БД, как я вам предлагал, это будет PROBA (например, моя экспериментальная БД имеет в качестве SID значение HOME. Не самое удачное решение, хотя она у меня уже скоро развалится, и я ее переделаю, а за одно выберу другое имя!). Так вот ваш файл инициализации БД будет находиться в каталоге $ORACLE_HOME\DATABASE, $ORACLE_HOME - это в вашем случае каталог С:\Oracle\Ora81, значит в совокупности получается C:\Oracle\Ora81\DATABASE. Там должен лежать файл с именем initPROBA.ora, загляните что у него внутри, должно быть что-то вроде:

IFILE='C:\Oracle\admin\proba\pfile\init.ora'

Вот теперь надеюсь ясно, параметр IFILE просто указывает вашему экземпляру БД, где искать именно свой, а не чей попало, файл инициализации. Найдя этот файл ваша БД, счастливо стартует и начинает свою трудовую деятельность! Параметр IFILE вообще-то и применяется для лучшего структурирования вашего севера Oracle! А вот в каталоге $ORACLE_HOME\dbs, есть еще один файл init.ora, если его внимательно изучить, то можно настроить любую БД Oracle в различных вариантах исполнения. Малая, средняя, крупная БД, ну и т. д. А теперь давайте заглянем внутрь вашего, файла init.ora. Можно увидеть примерно следующее:

db_name = proba

db_domain = com

instance_name = proba

service_names = proba.com

db_files = 1024

control_files = ("C:\Oracle\oradata\proba\control01.ctl", "C:\Oracle\oradata\proba\control02.ctl")

db_file_multiblock_read_count = 8

db_block_buffers = 49285

shared_pool_size = 134582272

log_checkpoint_interval = 10000

log_checkpoint_timeout = 1800

processes = 50

parallel_max_servers = 5

log_buffer = 32768

#audit_trail = true  # if you want auditing
#timed_statistics = true  # if you want timed statistics
max_dump_file_size = 10240  # limit trace file size to 5M each

# Global Naming -- enforce that a dblink has same name as the db it connects to
global_names = true

# Uncomment the following line if you wish to enable the Oracle Trace product
# to trace server activity.  This enables scheduling of server collections
# from the Oracle Enterprise Manager Console.
# Also, if the oracle_trace_collection_name parameter is non-null,
# every session will write to the named collection, as well as enabling you
# to schedule future collections from the console.
# oracle_trace_enable = true

oracle_trace_collection_name = ""
# define directories to store trace and alert files
background_dump_dest = C:\Oracle\admin\proba\bdump
user_dump_dest = C:\Oracle\admin\proba\udump

db_block_size = 8192

remote_login_passwordfile = exclusive

os_authent_prefix = ""

distributed_transactions = 10
compatible = 8.1.0
sort_area_size = 66560

В вашем случае его содержимое может быть различным, в зависимости кто, как ставился сам сервер, но основные параметры будут примерно одинаковыми, так что не огорчайтесь, если увидите что-то не похожее на мой пример! :) Все параметры мы прямо сейчас разбирать не станем, остановимся лишь на нескольких. Тем более что, мы еще не раз будем возвращаться к этому файлу.

db_name = proba

Это собственно и есть тот самый SID, вашего экземпляра БД. Экземпляров, может быть, много и у каждого свой уникальный SID!

db_domain = com

А это вторая часть, доменного имени, которая идет сразу за дот (.) То есть proba.com или как-то еще, как вам больше нравиться!

service_names = proba.com

А это имя сервиса вашего экземпляра БД, то есть два предыдущих параметра вместе. Пока все понятно?

Идем дальше! Собственно все параметры инициализации вашего экземпляра БД можно просмотреть через представление v$parameter. Таких "представлений" в самой БД сотни. С их помощью о вашем экземпляре, можно узнать все. Именно их применяют в своей работе люди, гордо носящие имя Администраторы БД! Можно сказать, что один из них, ваш покорный слуга, так как пару сотен "представлений" я уже изучил! Давайте откроем SQLPlus и дадим такой запрос, естественно воспользовавшись знаниями об однотабличных запросах из прошлых шагов:

SELECT a.name, a.value 
FROM v$parameter a
ORDER BY a.name
/

.
.
.
.

NAME                                                             VALUE
---------------------------------------------------------------- --------
db_block_lru_latches                                             1
db_block_max_dirty_target                                        49285
db_block_size                                                    8192
db_domain                                                        com
db_file_direct_io_count                                          64
db_file_multiblock_read_count                                    8
db_file_name_convert                                             
db_files                                                         1024
dblink_encrypt_login                                             FALSE
db_name                                                          proba
dbwr_io_slaves                                                   0
db_writer_processes                                              1
disk_asynch_io                                                   TRUE
distributed_transactions                                         10
dml_locks                                                        264
enqueue_resources                                                1308
ent_domain_name                                                  
event                                                            
fast_start_io_target                                             49285
fast_start_parallel_rollback                                     LOW
fixed_date                                                       

.
.
.

Приведу только часть, запроса. Так как в моем случае, было 195 строк! Но из этой части достаточно, хорошо видно, что все параметры представлены в очень удобном виде и очень наглядны! Напомню, что изменять параметры лучше в самом файле init.ora! И не забудьте, что изменения вступят в силу только после рестарта вашего экземпляра БД! Но пока настоятельно не рекомендую что-либо менять, особенно параметр db_block_size, если это сделать, то может случиться непоправимое! :)))) Вот собственно пока все о первом системном объекте. Тема получилась объемной, по этому продолжим в следующий раз!


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей.