Пишу статью первый раз, поэтому извиняйте если что-то не так. Сразу хочется отметить, что все что будет изложено ниже, является исключительно точкой зрения автора, поэтому возможны неточности, ошибки и даже откровенный бред. Итак, только для www.antichat.ru : Введение в СУБД OracleOracle является клиент-серверной СУБД, сильно похожей на MSSQL (для тех кто знает). Так же как в MSSQL в Oracle есть свое процедурное расширение языка sql, называющееся PL-SQL – аналог T-SQL. Программирование на Pl-SQL напоминает обычное программирование, например в Pascal. Т е существует возможность написания отдельных программ, выполняющих какие-либо действия исключительно с использованием PL-SQL. Мне не известны результаты тестов производительности, защищенности и тд. Но вроде как Oracle считается одной из самых защищенных и надежных СУБД, обладает огромным количеством настроек, тонкостей и соответственно стоит много денег. . В связи с этим грамотные DBA (Database Administrator) Oracle очень высоко ценятся. Правда, чтобы получить сертификат нужны немалые деньги (http://www.certification.ru/library/articlesdir/big35.html?26 – чуть-чуть инфы). Дальше немного слухов: Слышал про то, что при выпуске очередной версии Oracle, компания сделала сайт на его базе и предложила его сломать всем желающим. Через месяц примерно он рухнул, но попыток взлома было очень много и компания осталась довольна результатом. С другой стороны в каком-то релизе СУБД, была ошибка с left join, в связи с чем, любой пользователь мог получать любые права. Но ее быстро устранили Также авторизация происходит регистронезависимая (не знаю по поводу последних версий), т е AntiChat и aNtiCHAt это один и тот же пароль или логин, что существенно увеличивает возможность подбора пароля. Некоторые факты по Oracle8 (вышла в 1997, по новым не знаю, кому интересно – найдет, на данный момент последняя версия Oracle10): - фиксирование транзакций, откат, блокировка записей и таблиц на update, insert – почти везде сейчас есть - встроенная в ядро Java-машина, т е можно использовать Java, а можно PL-SQL - управление БД, объемом до 512 ПЕТАбайт (это на 1997 год, петабайт = 1024 терабайт) - возможность создания распределенной БД - секционирование таблиц и индексов (горизонтальная фрагментация) - постепенный переход к объектной СУБД – абстрактные типы данных Object и др. BLOB,CLOB и др. – видео файлы, тексты и тд. Весом до 4 Гбайт. - политика безопасности: поддерживается срок действия пароля, блокировка аккаунта после N попыток входа и др. - главные пользователи SYS (По умолчанию пароль change_on_install) и SYSTEM (По умолчанию пароль manager) Сам SQL в Oracle мало отличается от MSSQL. Попробую описать какие-то особенности Оракла, конечно не все, но так сходу трудно сказать, что особенность, а что нет, так как не общался тесно с другими СУБД: Надо отметить, что каждому пользователю Oracle соответствует определенная схема – набор объектов БД: таблицы, привилегии, вьюхи и тд. У каждой схемы только один пользователь. Для просмотра схемы текущего пользователя можно использовать запрос select * from user_objects Выполнение команд через ; должно работать, но это не факт. Обход фильтрации кавычек можно осуществить с помощью Chr(цифры разные тут). Конкатенация (или как там это называется) строк осуществляется при помощи ‘stroka’||’stroka2’. Существует таблица dual. Используется чаще всего для вывода констант в запросах. Например, select to_date(‘20063112’,’yyyyddmm’) NY from dual, чтобы не писать везде в запросе длинную конструкцию тудэйт. To_date не обязательная контрукция, но желательная, так как формат даты зависит от настроек. Можно и DateOf = ’27.03.2006’ писать. Существует метатаблица ALL_TAB_COLUMNS, в которой основные поля: owner, table_name, column_name, data_type. Data_type может пригодится при sql-inj так как при использовании UNION требуется приводить соответствующие поля к одному типу. Null может сработать, только для строкового типа поля. Также в Oracle обязательно писать select null FROM table. Хотя в качестве table вполне сойдет dual, доступ к которой имеют все пользователи. Вместо top в MSSQL и limit в MySQL используется конструкция where rownum = 1 или in (1,2). Также в Оракле возможны операции типа: insert into table1 select 'че-нить типа шелла' from dual и update table1 tcd1 set tcd1.id = (select sub1.id from (select tcd.idCD, tor.id from tableO tor, tableCC tcc,tableCD tcd where tor.idO = tcc.idO and tcc.IDCC = tcd.IDCC) sub1 where sub1.idCD = tcd1.idCD ) where tcd1.idD is null В запрос можно не вникать – скопировал его из файла, убрав имена таблиц. Т е можно передать в апдейт, делит и инсерт результат подзапроса. Есть типы полей BFILE, в которых содержится ссылка на файл. Правда не много где применяется. Думаю можно использовать в корыстных целях. )) Комментарии в Oracle обозначаются стандартно: --однострочный /*многострочный*/ Если интересует что-то конкретно, то спрашивайте - по возможности отвечу.
Щас посмотрел на часы - чуть не прослезился - времени ушло многовато... Понял что такое писать статьи с нуля - теперь понимаю и уваажаю людей, которые их пишут.
ZaCo попросил написать статью про отличие Oracle от других СУБД. Я написал. Можно было конечно как обычно написать, что надо подобрать количество столбцов в скл-инж, найти тот, который выводится на экран, вывести первую запись итд. Но на одном античате я думаю таких тем с десяток. Я написал то, что такое Оракл вообще и то, чем он отличается от остального.
2qBiN ну не соглашусь имхо довольно полезная статья, хоть по информации наделся чуть на большее. тем более описания оракла "вкратце" пока не видел. 2podkashey спасибо за статью, узнал кое-чего нового. надеюсь на продолжение, хотелось бы увидеть более подроное описание пунктов: -встроенная в ядро Java-машина, т е можно использовать Java, а можно PL-SQL -Выполнение команд через ; должно работать, но это не факт -Null может сработать, только для строкового типа поля. Также в Oracle обязательно писать select null FROM table. третий не очень понятен из-за двух протеворечивых предложений+) все таки мне кажется (следуя стандартам) null - специальный типа данных, содержащий пустое значение ЛЮБОГО типа. Ещё хотелось бы узнать по-больше о системный таблицах как dual и тд
Про это лучше почитать в интернете, потому что я не совсем понял, что ты имеешь в виду - пример программы на Java? При установке Оракла и создании БД под него - указываешь, реализовать ли поддержку Java Или нет. Интересный факт: на Пентиуме 4 Oracle8 глючит при установке его с поддержкой Java. Надо ставить либо пропатченную версию (трудно найти, не всегда помогает), либо еще как-то. Причем причины глюков толком не ясны и много где обсуждаются в инете. Хотя на АМД все нормально. Работать они должны на 99,9 процентов. Не правильно выразился. Тут аналогично MSSQL... на сколько я MSSQL помню... select null /* не прокатит, а select null from dual/* прокатит. В отличии от MSSQL, где можно написать Union select null/* при скл-инж и не указывать откуда брать нул. select id from table1 union select null from dual выдаст ошибку ORA-1790 (описание ошибок http://nkaram.h1.ru/ora_err/16-17.htm#17 ) Надо писать select id from table1 union select to_number(null) from dual Исключение составляет, если select tut_strokovoe_pole from table1 union select null from dual. Могут еще помочь функции to_date и to_char. Только сейчас обратил внимание, что забыл вставить небольшой кусок. select * from user_tables – таблицы схемы текущего пользователя select user from dual - текущий user select * from V$session – текущие сессии select * from user_objects – вся схема текущего пользователя