Побачення з Оракулом, Інші СУБД, Бази даних, статті

Установка і доступ до Oracle


Деяким людям вдалося заробити багато грошей, займаючись програмуванням. Багато хто мріє стати такими ж успішними і багатими, як Білл Гейтс. Але в його біографії, крім успіху з продажем MS-DOS в 19-річному віці, немає нічого цікавого.


Тому я б вважав за краще Білла Ларрі Еллісону – засновнику Oracle Corporation, другому мільйонера IT-бізнесу, який бере особисту участь в гонках на яхтах, літає на власному винищувачі і зустрічається з топ-моделями. А основний продукт компанії – реляційна база даних Oracle – найпотужніша СУБД в світі. І ми, натхненні життєвим прикладом Ларрі, розглянемо його дітище в деталях.


Ставити ми будемо останню версію – Oracle 10g. Під Linux. З тих пір як в 2002 році Ларрі оголосив перехід всього бізнесу на цю ОС, вибір операційки став справою принципу. Інсталяцію, як це не дивно, можна завантажити абсолютно безкоштовно з сайту www.oracle.com. Не треба лякатися, коли у тебе попросять логін з паролем. Пара кліків на Sign Up, заповнюємо форму з ім’ям, прізвищем, посадою та місцем проживання. Після підтвердження реєстрації відкривається віконце Download. Трохи заморочене, але з другої спроби розібратися можна. І все це ще квіточки порівняно з тим, що доведеться зробити для того, щоб встановити все це господарство. Забудь про простоту MySQL. Це Oracle!


Ларрі Еллісон: виступ на тему лідерства web-сервера Apache


Одного разу Microsoft вже був убитий продуктом з відкритим вихідним кодом. Зарізаний, розтертий, викинутий з ринку за недоречність. У них в руках була віртуальна монополія на web-сервери, і вони були стерті з лиця землі. І вони ще отримають від Linux “а.


Ставимо!


Скачаний з oracle.com файл називається ship.db.lnx32.cpio.gz і важить близько 600 Мб. Слідуючи інструкціям на сайті, ми для початку розгортаємо цей архів:


$ gunzip ship.db.lnx32.cpio.gz


$ cpio -idmv < ship.db.lnx32.cpio


В Disk1 /, крім іншого, буде поміщений скрипт runInstall, але не варто поспішати з переможними криками і його запуском. Потрібно підготувати систему до установки. Простота – аж ніяк не девіз Oracle. Я б на їх місці зробив скрипт, який створював би потрібні групи і директорії. Виглядав би він приблизно так:


лістинг


groupadd oinstall


groupadd dba


mkdir -p /u01/app/oracle


useradd -g oinstall -d /u01/app/oracle -G dba oracle


passwd oracle


chown -R oracle:oinstall /u01/app/oracle


chmod -R 775 /u01/app/oracle


Якщо б цим всі приготування обмежувалися, прікрутка Oracle не нагадувала б запуск космічного корабля. Але потужність варто прикладених зусиль, та й ставиться зазвичай ця СУБД на століття. Так що, крім створення каталогів, нам доведеться поправити налаштування ядра Linux. Для цього додамо наступні рядки в / etc / sysctl.conf:


лістинг


kernel.shmall = 2097152


kernel.shmmax = 2147483648


kernel.shmmni = 4096


kernel.sem = 250 32000 100 128


fs.file-max = 65536


net.ipv4.ip_local_port_range = 1024 65000


І запустимо:


# sysctl -p


Уже підготовлена ​​найпростіша інсталяція. У промислових масштабах рекомендується виділяти окремий диск для файлів БД і монтувати його в / u02 /. Всі розумні поради по установці можна знайти в доці, якщо відкрити файл welcome.htm і уважно вивчити його вміст.


Тепер зробимо:


$ su – oracle


Потім зайдемо в Disk1 / і запустимо:


./runInstall -ignoreSysPrereqs


Незважаючи на всі заяви про підтримку Linux, інсталятор ставиться до вибору дистрибутива дуже вибірково, залишаючи користувачам свободу вибору між останніми RedHat-ами, SuSE і якимось UnitedLinux. І хоча спочатку здається, що людям, люблячим Mandrake, Debian або Gentoo, пряма дорога смоктати чупа-чупс, є спосіб змусити інсталятор працювати на будь-якому дистрибутиві, що ми, власне, і зробили – задали ключик-ignoreSysPrereqs.


Так як інтерфейс у інсталятора графічний, запускати його треба під X-Window. На всі запитання відповідаємо позитивно, натискаючи кнопку Next. Також нас попросять запустити невеликий скріптец від рута (Його назва буде в вискочив діалозі) і встановити паролі для системних користувачів в базі Oracle. Користувачі, такі як system, можуть при неакуратному зверненні зіпсувати в базі даних багато чого, тому до безпеки доступу для таких функцій варто підходити з деяким фанатизмом.


Після створення бази, в самому кінці нас попросять запустити ще один скрипт, щоб завершити установку. Якщо для того, щоб інсталятор запустився, довелося поставити ключик-ignoreSysPrereqs, тут же доведеться зіткнутися з наслідками, тобто закоментувати пару рядків скрипта перед запуском.


Щоб root.sh не вилітав при спробі запуску під Linux, відмінним від RedHat і UnitedLinux, треба знайти і закоментувати наступні два рядки:


$LNS $ID/init.cssd $rc/”$RC_START”init.cssd // { $ECHO $?; exit 1; }


$LNS $ID/init.cssd $rc/”$RC_KILL”init.cssd // { $ECHO $?; exit 1; }


В залежності від підверсії 10g вони можуть знаходитися як поруч, так і в двох сусідніх циклах for / done.


От і все. Тепер:


#. <Шлях до Oracle> / root.sh


У вікні інсталятора при цьому потрібно натиснути OK. В результаті – створилися всі потрібні файли, Oracle стартував, а разом з ним запустилися усілякі корисні сервіси, про які нам бадьоро доповіли. Але перед тим як зайнятися дослідженням знову встановленого монстра, переконайся, що вміємо стартувати його вручну. Справа в тому, що після першої ж перезавантаження наш Oracle стане недоступний. А запустити інсталятор з тим, щоб він нам знову підняв базу, ми вже не зможемо. Для цього познайомимося з файлом / etc / oratab, в якому визначається, які бази даних стартують автоматично при запуску утиліти dbstart. За замовчуванням останній рядок файлу виглядають наступним чином:


orcl: <шлях до Oracle>: N


В останньому полі потрібно поміняти N на Y. Це означає, що інстанцію Oracle потрібно-таки вантажити. Перейдемо до старту. Підготовка:


$ Export ORACLE_HOME = <шлях до Oracle>


$ export ORACLE_SID=orcl


$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib


$ export PATH=$PATH:$ORACLE_HOME/bin


Це має сенс прописати десь в. Bash_profile, бо інакше доведеться встановлювати ці змінні всякий раз при необхідності скористатися якимось інструментом від Oracle. Плюс їх повинен мати кожен користувач системи, який має намір працювати з інструментами або програмами, що використовують БД.


Ну а тепер – безпосередньо старт:


$ dbstart


$ lsnrctl start


Зупиняється все наступними командами:


$ dbshut


$ lsnrctl stop


Розкидаємо користувачів


За 22 роки існування компанії та її основного продукту, сервера баз даних, змінилося багато чого. Змінилися мови програмування, на яких розроблявся софт (перша версія була написана на асемблері). Два рази змінювалося назва фірми: на момент підстави вона називалася Software Development Laboratories, потім Rational Software Inc, після чого, нарешті, – Oracle Corporation. Також додавалися нові можливості і росли обсяги продажів, але лише одна річ залишалася незмінною – знаменитий користувач scott з паролем tiger. В свіжовстановленому базі Oracle його не може не бути. Scott – це данина традиції, прізвище першого працівника компанії, Брюса Скотта (Bruce Scott), співавтора Oracle V1, V2 і V3).


У Брюса був кіт, якого звали Тигром (звідси і пароль). Не думаю, що кіт цей все ще живий, швидше за все, він вже лежить в кам’янистій американській землі, або ж днем ​​бродить, виблискуючи очиськами, а по ночах гризе – людські глотки (у разі якщо був він похований на “кладовище домашніх тварин” з книжки Кінга).


У нинішній версії Oracle користувач scott заблокований. При спробі увійти під ним швидше за все трапиться наступне:


$ sqlplus scott/tiger@orcl


SQL*Plus: Release 10.1.0.3.0 – Production on Mon Jan 10 02:55:59 2005


Copyright © 1982, 2004, Oracle. All rights reserved.


ERROR:


ORA-28000: the account is locked


Щоб розблокувати Скотта, нам потрібно буде познайомитися з командами управління користувачами. Найпростіший спосіб поспілкуватися з Oracle – запустити sqlplus. В її особі ми маємо цілком традиційний засіб для відсилання команд та перегляду відповідей на них.


$ sqlplus system@orcl


Вводимо пароль, заданий при установці, і потрапляємо в командний рядок. Тут пишемо:


SQL> alter user scott account unlock;


User altered.


Загалом-то, управління користувачами хоч і має дещо відмінний синтаксис, в цілому схоже на інші SQL-бази даних. Наприклад, створення користувача виглядає так:


лістинг


SQL> create user osama identified by binladen;


User created.


SQL> grant connect to osama;


Grant succeeded.


Крутимо настройки


Крім аскетичною командного рядка, остання версія Oracle включає і просунутий графічний web-інтерфейс для роботи з користувачами, настройками, логами і інш. Також можна дивитися завантаження системи, стартувати та зупиняти інстанції, робити багато всього корисного. Можна навіть створити схему бази даних, особливо не вдаючись в подробиці SQL.


Називається це чудо web-інтерфейсостроенія так: Oracle Enterprise Manager. Щоб ним скористатися, потрібно зробити наступне:


$ emctl start dbconsole


Після чого зайти на http://імя.машіни:5500/em/. Якщо Oracle встановлений локально, то ім’я буде localhost. Очевидне зручність тут в тому, що за допомогою того ж менеджера можна рулювати сервером, встановленим де завгодно, з тією ж простотою, тобто клікаючи мишкою і дивлячись на красивий GUI.


Працюємо з даними: C + +


Раніше, щоб достукатися до Oracle з програми, написаної на C або C + +, доводилося користуватися OCI (Oracle Call Interface), який, хоча і був неабияк гнучким, страждав головним недоліком універсальних рішень – відсутністю легких шляхів. Треба було викликати як мінімум п’ять різних функцій бібліотеки, щоб зробити простий запит до БД. Крім цього, доводилося виділяти пам’ять для безлічі структур, внаслідок чого нерідко траплялися витоку. Для спрощення кодинга були написані десятки бібліотек-надбудов, як для C, так і для C + +. Кожен прагнув написати для цього свій виріб, і в программізме під Oracle панувала неабияка плутанина.


Нарешті, подумавши протягом досить тривалого часу, хлопці вирішили надати C + + розробникам більш зручний і, що важливо, стандартний інтерфейс. Називається він OCCI. Користуватися ним просто, основи цього процесу можна зрозуміти за допомогою невеликого прокоментував лістингу, який лежить на нашому диску (файл – occi.txt).


Працюємо з даними: PHP


Крім C + +, з базами Oracle можна працювати з маси інших мов програмування. API є під все. Візьмемо улюблений інструмент web-девелопера – PHP. Тут у нас є три інтерфейсу для доступу. Це ODBC, стара (стандартна підтримка) Oracle і, нарешті, самий гнучкий і просунутий інтерфейс – OCI (Oracle 8 в доці). Його і розглянемо.


Коннект:


$c = oci_connect(“scott”, “tiger”, “orcl”)


or die(“cannot connect”);


Вставка запису:


$s = oci_parse($c, “insert into phonebook values (“Ushat Pomoev”, “765-XX-XX”)”);


oci_execute($s);


Вибірка всіх записів:


$s = oci_parse($c, “select * from phonebook”);


oci_execute($s);


while(oci_fetch($s)) {


print “name: “.oci_result($s, “NAME”).


” phone: “.oci_result($s, “PHONE”).”
“;


}


Це кінець:


oci_free_statement($s);


oci_close($c);


Опис цих і всіх інших функцій є прямо в стандартному мануалі, тому залишу його вивчення на совість читача (поцікався заодно і на нашому диску). Взагалі, за що я люблю PHP, так це за мануал. Всі без винятку бібліотеки, стандартні і опціональні, в ньому описані. Тому не треба борознити простори інтернету в пошуках потрібної інформації або прикладів. Все це входить в комплект PHP.


Працюємо з даними: Java


В “Жабі” робота з будь-якою базою даних – завдання проста. Є JDBC, а в постачанні Oracle до нього є драйвер. Код виходить таким. Для початку зареєструємо драйвер:


DriverManager.registerDriver(new oracle.jdbc.OracleDriver());


Тепер відкриємо підключення:


Connection conn =


DriverManager.getConnection(“jdbc:oracle:oci8:@”, “scott”, “tiger”);


Для кожного запиту до бази даних нам потрібен примірник класу Statement. Зробимо insert:


Statement istmt = conn.createStatement();


istmt.execute(“insert into phonebook values (“Zabeg Debilov”, “456-XX-XX”)”);


istmt.close();


Тепер select:


Statement stmt = conn.createStatement();


ResultSet rset = stmt.executeQuery(“select name, phone from phonebook”);


Пройдемося по курсору, поки є результати:


while(rset.next())


System.out.println(“name: ” + rset.getString(1) + ” phone: ” + rset.getString(2));


Йдучи, зливаємо воду і тушкуємо світло:


rset.close();


stmt.close();


Потім закриваємо підключення:


conn.close();


Компілювати і запускати його потрібно попередньо додавши в CLASSPATH шлях до файлу $ ORACLE_HOME/jdbc/lib/classes12.zip. Все виходить більш ніж стандартно.


Секретна зброя джедаїв


Уміння та таланти Oracle воістину невичерпні. Криються вони не в розробці і не в налаштуванні цієї потужної Годзілли від баз даних. З більшістю з них ти зіткнешся тоді, коли почнеш вивчати діалект SQL, якою розмовляє ця СУБД. Ім’я йому – PL / SQL. Якщо ти думаєш, що на ньому можна тільки писати запити, то глибоко помиляєшся. На відміну від стандартного SQL, його Oracle “овий діалект – справжній мова програмування, на якому можна писати вбудовані процедури, тригери – обробники, що визначають поведінку бази в різних ситуаціях, і багато іншого. Опанували PL / SQL досконало здають на сертифікати з адміністрування та розробці і отримують серйозні бабки у великих конторах.


Також PL / SQL – це спосіб доступу до унікальних функцій, що відрізняє Oracle від інших СУБД. Справа в тому, що в основу сервера баз даних належить незліченна кількість алгоритмів і підходів, головна мета яких зводиться до забезпечення надійності і цілісності даних. Для всіх змін, що відбуваються в базі, ведеться лог, з якого можна повністю відновити картину відбувалися змін. Завдяки такому підходу можна робити такі речі, як, наприклад, flashback, яка дозволяє вичитувати записи з “знімка” таблиці, якою вона була раніше, в певний момент часу:


select * from table_name as of timestamp to_timestamp (“дата / час”, “формат”);


За допомогою тієї ж функції можна відновити раніше прибиту командою drop таблицю з усім наявним на той момент вмістом:


flashback table <удаленная.табліца> to before drop;


Оптимізатор запитів Oracle теж зовсім не дитячий. Принцип його дії називається cost-based (вартісний). На основі статистики, яка збирається за таблицями і індексами, він сам будує оптимальний план виконання запиту і вирішує, підключати або не підключати при цьому індекси.


Також Oracle спочатку пристосований для роботи в кластері. Це означає, що сервер можна “розмазати” по декільком комп’ютерам і не боятися того, що один з них випадково впаде, як в прямому, так і в переносному сенсі.


Вбити Ларрі


Щоб заробити багато грошей програмуванням, досить почати раніше за інших і постійно вдосконалювати свій продукт. Саме завдяки такій стратегії протягом багатьох років Oracle вважається (і є) найкращим у світі сервером баз даних. Він є стандартом, використовуваним у великих корпораціях і виробництвах. У Oracle Corporation маса великих клієнтів. Вона непотопляєма. Ну а секрет успіху в бізнесі розробки софта – цілеспрямованість, наполегливість і талант. Приклад Ларрі це підтверджує.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*