В прошлый раз мы с вами создали пару табличных пространств, и поработали с ними. Кое, что надеюсь, стало уже яснее, а кое что может еще потребовать рассмотрения. Если вы оставили табличные пространства из прошлого шага, то можете работать с ними, если нет, то давайте проделаем следующее. Посмотрим как можно, создав табличное пространство, добавить к нему файл данных, а затем рассмотрим что из этого вытекает! Итак, запускаем SQL*Plus и заходим в ваш экземпляр с правами DBA пользователем SYS или SYSTEM, (можете и MILLER'ом, если ваш админ дал вам права на создание табличных пространств) затем запускаем такой SQL код: (если хотите, можете использовать табличное пространство из прошлого шага):
CREATE TABLESPACE PROBATBS DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBONE.DAT' SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M /
Видим после прохода:
SQL> CREATE TABLESPACE PROBATBS DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBONE.DAT' 2 SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M 3 / Раздел создан.
Мы создали табличное пространство PROBATBS величиной 100M и возможностью расширения до 200M. А что если вам по какой-либо причине, скажем, почти полной загрузке этого пространства, добавить еще один раздел! Запустим вот такой скрипт:
ALTER TABLESPACE PROBATBS ADD DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBTWO.DAT' SIZE 50M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M /
Видим после прохода:
SQL> ALTER TABLESPACE PROBATBS ADD DATAFILE 'C:\ORACLE\ORADATA\PROBA\PRBTWO.DAT' 2 SIZE 50M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M 3 / Раздел изменен.
Теперь к вашему табличному пространству PROBATBS добавлен еще один кусочек пространства в виде файла данных PRBTWO.DAT. Который может расширяться до 100M, что в совокупности составит 300M табличного пространства PROBATBS. Для большей убедительности давайте дадим запрос к системному представлению:
SELECT tablespace_name, file_name, status, bytes FROM dba_data_files WHERE tablespace_name LIKE 'PROB%' ORDER BY tablespace_name, file_name /
Получаем:
SQL> SELECT tablespace_name, file_name, status, bytes 2 FROM dba_data_files 3 WHERE tablespace_name LIKE 'PROB%' 4 ORDER BY tablespace_name, file_name 5 / TABLESPACE_NAME FILE_NAME STATUS BYTES ----------------- ------------------------------------ -------------- ------------ PROBATBS C:\ORACLE\ORADATA\PROBA\PRBONE.DAT AVAILABLE 104857600 PROBATBS C:\ORACLE\ORADATA\PROBA\PRBTWO.DAT AVAILABLE 52428800
Хорошо видно, что мы получили одно табличное пространство PROBATBS состоящее из двух(!) файлов данных. Вот таким образом можно строить и вводить в работу табличные пространства, которые будут вам необходимы в дальнейшем.
И вот здесь мы подходим к тематике, которая напрашивается сама собой. Все табличные пространства это не что иное, как файлы данных на жестких дисках ваших серверов! Так? Значит здесь необходимо продумывать такой вопрос, как настройка всей системы в целом для достижения наибольшей производительности системы. Сама по себе настройка системы ввода-вывода заключается в основном в настройке физической структуры сегментов (таблиц и индексов), которые образуют базу данных. Настройка охватывает табличные пространства состоящие из экстентов, которые в свою очередь состоят из блоков и файлов данных. Все это представляет из себя, в конечном счете, объекты операционной системы! Операции ввода-вывода представляют из себя не что иное, как операции чтения и записи. А вернее это DML - операции такие как SELECT, INSERT, UPDATE, DELETE. Где SELECT - это операция чтения, а UPDATE, INSERT, DELETE - это операции записи! Так!? И DDL - операции это тоже операции записи! Таким образом, любые операции ввода-вывода требуют настройки не только табличных пространств, экстентов, блоков и файлов данных, но также сегментов отката и журналов регистрации транзакций. В связи с тем, что DML - операции пользователей затрагивают все эти объекты.
Думаю, все помнят, я не говорил, что все будет просто! Oracle достаточно сложная СУБД, но и в тоже время простая и надежная БД! Далее попробуем во всем этом разобраться! :)