Отправляет email-рассылки с помощью сервиса Sendsay

СУБД Oracle "с нуля"

  Все выпуски  

Выпуск №22


Информационный Канал Subscribe.Ru

Выпуск 22

Здравствуйте, уважаемые читатели!

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

Ну и конечно, уже организована независимая группа перевода официальной документации Oracle. Работа идет полным ходом. Скоро появятся первые плоды нашего труда. Работа переводчика тоже весьма интересна. В процессе перевода глубже понимаешь технические тонкости. Это все равно, что прочитать книгу, но чрезвычайно внимательно – вчитываешься и пытаешься понять каждую фразу. А без понимания перевод будет выполнен подобно роботу. Вы наверняка уже видели автоматические переводы. Их же невозможно читать!

Вы всегда можете посмотреть последние новости проекта ORANET, заглянуть в архив рассылки, а также задать вопрос на форуме сайта oranet.ru. Заходите, не пожалеете! Для зарегистрированных пользователей есть возможность скачать несколько книг на русском языке.

Ну и, наконец, подключайтесь к проекту! Если Вы хотите попробовать себя на стезе переводчика, или написать техническую статью по тематике баз данных Oracle – наш проект всегда открыт. Пишите – zlygostev@gmail.com

В этом выпуске:

Новости

Oracle выбрала Solaris 10 для разработки и внедрения ПО

Компания Oracle выбрала ОС Solaris 10 производства компании Sun Microsystems в качестве предпочтительной платформы разработки и внедрения ПО для большинства архитектур x64, в том числе систем на базе процессоров AMD Opteron и Intel Xeon, а также систем на базе процессоров Sun UltraSPARC.

http://www.cybersecurity.ru/news/6849.html

Выпущена вторая версия Oracle Enterprise Manager 10g

Корпорация Oracle объявила о выпуске Oracle Enterprise Manager 10g Release 2 — очередной версии решения для управления ИТ-инфраструктурой предприятия. Основной программный модуль — Oracle Enterprise Manager 10g Grid Control (Oracle Grid Control) — обладает новыми возможностями мониторинга прикладных программ, работающих в распределенной вычислительной среде Oracle. Кроме того, данный модуль позволяет сохранять сертифицированные образы программных конфигураций (операционной системы, сервера приложений, баз данных и Oracle Real Application Clusters) в специальной библиотеке, используя которую можно автоматически развертывать новые экземпляры ПО (в том числе многоуровневые приложения) и впоследствии держать под контролем их обновление и модификацию.

http://pcweek.ru/?ID=502676

Oracle усиливает безопасность своих продуктов

Корпорация Oracle объявила о внесении дополнений в лучший в своем классе комплекс продуктов Oracle для управления идентификационными данными, призванный обеспечить широкий спектр потребностей организаций из любых отраслей. Благодаря приобретению компании Thor Technologies, ведущего поставщика межплатформенных решений для администрирования учетных записей пользователей, и компании OctetString, ведущего поставщика программного обеспечения для служб виртуальных каталогов, Oracle значительно усилила свой ассортимент передовых продуктов для управления идентификационными данными и доступом к информационным ресурсам.

http://www.cybersecurity.ru/news/6951.html

Управление таблицами

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

Таблицы – это фундамент схемы данных, ведь именно они непосредственно хранят данные, а все остальные объекты являются вспомогательными. Таблицу можно представить как множество сведений (свойств) однотипных объектов.

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

На самом деле, все довольно просто. Вы наверняка видели за свою жизнь тысячи таблиц. Так вот, столбцы – это наименования колонок, а строки – это данные, связанные с наименованием. Чтобы лучше понять эту мысль, давайте рассмотрим пример.

Допустим, мы хотим получить таблицу о клиентах. Клиенты обладают следующими свойствами: наименование, телефон, контактное лицо. Когда мы говорим о свойствах множества клиентов, мы говорим именно о столбцах таблицы. Строки – это конкретные свойства конкретных клиентов. Например, так:

При создании пустой таблицы, Вы должны определить столбцы и их типы данных. В строках не обязательно должны быть заполнены поля всех столбцов, но обычно они не пустуют. Если в строке образовалось пустое поле, то оно содержит значение NULL, что значит «пусто» или «ничего».

Как создается таблица

Любая таблица создается в выделенном табличном сегменте. Табличный сегмент, в свою очередь, состоит из одного или более экстентов. Если таблица разрастается, то могут быть добавлены дополнительные экстенты. Способ добавления экстентов задается при создании таблицы с помощью директивы STORAGE.

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

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

Замечание: Разные базы данных требуют различных параметров хранения. Целью управления параметрами хранения является максимально эффективное использование буферного кэша (buffer cache). В идеале все необходимые блоки данных должны находится в кэше, но обычно это невозможно. Чтобы улучшить процент попадания в кэш (cache-hit rate), используйте параметры хранения при создании таблиц и базы данных в целом.

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

CREATE TABLE mammals
(
mammal_name VARCHAR2(35),
mammal_class VARCHAR2(40),
main_food VARCHAR2(20)
)
TABLESPACE users
STORAGE
(
INITIAL 2M NEXT 2M PCTINCREASE 0 MINEXTENTS 2
);

Этой командой создается таблица MAMMALS (млекопитающие) с тремя столбцами: наименование, класс и основная пища млекопитающего. Табличный сегмент будет создан в табличном пространстве USERS со следующими параметрами хранения: сразу будут созданы два экстента общим объемом 2 мегабайта, при нехватке свободного пространства в сегмент будут добавляться дополнительные экстенты по 2 мегабайта каждый.

Более подробно таблицы будут рассмотрены в следующем выпуске рассылки.

Введение в SQL

Тема SQL столь обширна, что довольно сложно написать небольшое введение. Но пусть это вас не пугает, поскольку SQL станет постоянной рубрикой в этой рассылке. Одновременно с SQL мы начнем изучать PL/SQL (со следующего выпуска). Итак, давайте для начала разберемся, что же такое SQL.

Мы уже знаем, что БД – это хранилище данных. Просто так хранить данные довольно бессмысленно, поэтому были разработаны средства для извлечения данных, а также для манипуляции ими. SQL (Structured Query Language – язык структурированных запросов; аббревиатуру следует произносить как «сИкуэл») позволяет полностью контролировать содержимое БД и извлекать данные в удобной для человека форме.

Существует множество разновидностей языка SQL. Но базовыми являются три стандарта языка. Первый был разработан ANSI (American National Standards Institute – Американский институт национальных стандартов, неправительственная организация, создающая промышленные стандарты, не обязательные к применению). Следующая версия стандарта была принята в 1992 году и носит название SQL-92, или SQL2. Наконец, самый последний стандарт принят в 1999 году ( SQL-99, или SQL3). СУБД Oracle придерживается стандарта SQL3, начиная с версии 9i. В то же время любая СУБД вносит свои дополнения в SQL, и Oracle не является исключением.

Давайте теперь рассмотрим группы операторов SQL, которые являются подмножествами языка (см. таблицу 1).

Таблица 1. Операторы SQL
SELECT

Получение данных

Извлечение данных из БД.

INSERT

UPDATE

DELETE

MERGE

DML (Data Manipulation Language – язык манипуляции данными )

Вставка новых строк, изменение существующих строк, удаление нежелательных строк из БД.

CREATE

ALTER

DROP

RENAME

TRUNCATE

DDL (Data Definition Language – язык описания данных )

Создание, изменение и удаление структур данных.

COMMIT

ROLLBACK

SAVEPOINT

Управление транзакциями

Группировка изменений в логические транзакции.

GRANT

REVOKE

DCL ( Data Control Language – язык контроля данных)

Предоставляет и отнимает права доступа как к БД, так и к структурам данных.

Мы начнем изучение с наиболее распространенной операции – извлечение данных (оператор SELECT). Этот оператор позволяет осуществлять следующее:

  • Проекция ( projection ): Вы можете выбрать лишь те столбцы из таблицы, которые нужны. Можно выбрать любое количество столбцов, имеющееся в таблице.
  • Селекция ( selection ): Вы можете извлечь часть строк из таблицы, которые отвечают заданным условиям.
  • Объединение ( joining ): Вы можете извлекать данные одновременно из нескольких таблиц, создавая связи между ними.

Наиболее простая синтаксическая конструкция оператора SELECT :

SELECT * | { [DISTINCT] столбец | выражение [синоним], ... }
FROM таблица;

Где:

SELECT - открытие списка одного или более столбцов;

* - выбор всех столбцов;

DISTINCT - устранение повторяющихся строк;

столбец | выражение - выборка указанного столбца или выражения;

синоним – заголовок столбца в результате выборки;

FROM таблица - указывается таблица, из которой выбираются столбцы.

В предыдущем выпуске рассылки я просил подготовить пробную схему данных HR для занятий. Если Вы установили СУБД Oracle (например, версию XE) и подготовили схему HR, то можете опробовать следующие примеры.

Для начала подключимся к схеме HR :

Start - > Run... - > cmd

SQL*Plus: Release 10.2.0.1.0 - Beta on Sun Dec 4 14:21:20 2005

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect hr/hr
Connected.

Пример 1. Вы можете сделать выборку всех столбцов таблицы указав * (звездочку) сразу после оператора SELECT. Выберем все данные из таблицы подразделений:

SQL> SELECT *
  2  FROM departments;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
           10 Administration                        200        1700
           20 Marketing                             201        1800
           30 Purchasing                            114        1700
           40 Human Resources                       203        2400
           50 Shipping                              121        1500
           60 IT                                    103        1400
           70 Public Relations                      204        2700
           80 Sales                                 145        2500
           90 Executive                             100        1700
          100 Finance                               108        1700
          110 Accounting                            205        1700

 ...

27 rows selected.

Совершенно эквивалентный запрос:

SELECT department_id, department_name, manager_id, location_id
FROM departments;

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

SQL> SELECT department_id, location_id
  2  FROM departments;

DEPARTMENT_ID LOCATION_ID
------------- -----------
           10        1700
           20        1800
           30        1700
           40        2400
           50        1500
           60        1400
           70        2700
           80        2500
           90        1700
          100        1700
          110        1700

 ...

27 rows selected.

Практика. Выведите только наименования всех стран из таблицы COUNTRIES (страны).

Примечание: Описание схемы HR смотрите в 21-м выпуске рассылки. Ответ на задание будет дан в следующем выпуске.

Вопросы читателей

Вопрос:Доброе вам время суток...
вот есть такой вопрос, который встречался не уже не раз, и каждый раз
вызывает затруднения у всех моих знакомых...
После установки Oracle на машину, у нее было изменено сетевое имя и, как
следствие, возникают проблемы...
Можно как-нибудь раскрыть этот вопрос в ближайшем выпуске...

Заранее благодарен

--
Всего вам доброго
Леонгардт Александр

Ответ: Это вопрос по сетевым настройкам. На самом деле все зависит от того, как у Вас настроено разрешение имен. В одном из самых простых случаев (если настроено локальное разрешение имен), надо перенастроить слушатель сети (Listener) для этого рекомендую использовать утилиту Oracle Net Manager. Эта утилита представляет собой визуальный инструмент управления несколькими файлами настройки сети. В частности, listener.ora и tnsnames.ora. Все что надо сделать – это изменить имя прослушиваемого сервера для слушателя сети.

Кроме этого, на всех рабочих местах, которые работают с базой данных надо тоже перенастроить файл tnsnames.ora с помощью той же утилиты Net Manager. Для этого в разделе “Service naming” во всех используемых сервисах следует изменить Host name (имя сервера).

Если в сети много рабочих станций, то файл tnsnames.ora можно скопировать с уже настроенной машины (которая может подключаться к удаленной БД) на все остальные.

Файл tnsnames.ora расположен в директории $ORA_HOME\network\ADMIN.

Читайте также книгу Net Services Administrator's Guide ( главы 5, 6, 9).

 

Вопрос: добрый день,
 хочу воспользоваться вашим предложением по поводу вопросов.
 У меня он пока один наболевший вопрос: существует ли в 9 оракле возможность упаковать базу (разрослась до 15 Гб )
 без операции экспорта-импорта и почистить временные журналы без того
 чтобы не грохнуть что-нибудь важное. У меня в базе несколько
 схем, которые взаимосвязаны между собой.

--
Best regards,
 vamfiri

Ответ: Во-первых, все зависит от самих данных, хранимых в базе. Как Вы уже упомянули, можно воспользоваться экспортом-импортом для того, чтобы избавиться от миграции строк, а также произвести дефрагментацию табличных пространств. Но, поскольку экспорт-импорт не интересует, то есть еще вариант избавиться от неиспользуемых индексов. Индексы на свою поддержку требуют дополнительных системных ресурсов и съедают некоторый объем свободного места на дисках. Эту процедуру я не смогу объяснить в двух словах, поэтому поищите в документации. Если читатели заинтересуются этой темой, то можно ее раскрыть в отдельном выпуске.

Во-вторых, Вы спрашиваете: « существует ли … возможность … почистить временные журналы без того чтобы не грохнуть что-нибудь важное». Вопрос сам по себе не совсем корректен. Такого понятия как «временный журнал» не существует. Мне кажется, Вы имели в виду архивные журналы. Если СУБД работает в архивном режиме ( archive log ), то определенная директория постоянно пополняется архивными файлами журналов. Для освобождения дискового пространства можно удалить эти файлы сразу после создания полной резервной копии базы данных.

Что дальше?

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

Теперь несколько слов о переводе документации. Как я уже сказал, группа переводчиков очень активна, и это радует. Мы уже практически закончили 2 книги: "Руководство по установке Oracle Database 10g XE для MS Windows", и "Вводное руководство Oracle Database XE для MS Windows". Более того, переведено уже более половины книги "Oracle Database 10g Двухдневный курс администратора". Все это скоро появится на сайте рассылки. Следите за новостями.

Чем Вы можете помочь рассылке?

  1. Пишите мне письма! Я обязательно прочитаю КАЖДОЕ из пришедших писем. И отвечу КАЖДОМУ читателю. Самые интересные письма будут опубликованы. Если Вы не хотите, чтобы Ваше письмо было опубликовано, то укажите об этом в письме.
  2. Если Вы способны перевести одну-две страницы в неделю, то пишите мне письмо о своем желании участия в проекте перевода.
  3. Если Вы хотите написать статью для этой рассылки, но не знаете о чем можно написать, то обращайтесь ко мне. Я пришлю список возможных тем. Это позволит Вам лучше понять рассматриваемый вопрос, оказать услугу другим читателям и познакомится с другими читателями (которые наверняка захотят прислать письмо автору по возникшим вопросам).

Я рад, что Вы подключились к этой рассылке, надеюсь на Ваше посильное участие.

Злыгостев А.А. aka Lemon – lemon@oranet.ru или zlygostev@gmail.com


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.db.oraclefromzero
Архив рассылки
Отписаться
Вспомнить пароль

В избранное