![]() |
Про Oracle
Пишу статью первый раз, поэтому извиняйте если что-то не так.
Сразу хочется отметить, что все что будет изложено ниже, является исключительно точкой зрения автора, поэтому возможны неточности, ошибки и даже откровенный бред. ;) Итак, только для www.antichat.ru : Введение в СУБД Oracle Oracle является клиент-серверной СУБД, сильно похожей на MSSQL (для тех кто знает). Так же как в MSSQL в Oracle есть свое процедурное расширение языка sql, называющееся PL-SQL – аналог T-SQL. Программирование на Pl-SQL напоминает обычное программирование, например в Pascal. Т е существует возможность написания отдельных программ, выполняющих какие-либо действия исключительно с использованием PL-SQL.Мне не известны результаты тестов производительности, защищенности и тд. Но вроде как Oracle считается одной из самых защищенных и надежных СУБД, обладает огромным количеством настроек, тонкостей и соответственно стоит много денег. ;) . В связи с этим грамотные DBA (Database Administrator) Oracle очень высоко ценятся. Правда, чтобы получить сертификат нужны немалые деньги (http://www.certification.ru/library/.../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 обозначаются стандартно: --однострочный /*многострочный*/ Если интересует что-то конкретно, то спрашивайте - по возможности отвечу. |
Щас посмотрел на часы - чуть не прослезился - времени ушло многовато... :(
Понял что такое писать статьи с нуля - теперь понимаю и уваажаю людей, которые их пишут. ;) |
Цитата:
Ты уж прости но это не статья, а одна вода. |
Цитата:
|
2qBiN ну не соглашусь :) имхо довольно полезная статья, хоть по информации наделся чуть на большее. тем более описания оракла "вкратце" пока не видел.
2podkashey спасибо за статью, узнал кое-чего нового. надеюсь на продолжение, хотелось бы увидеть более подроное описание пунктов: -встроенная в ядро Java-машина, т е можно использовать Java, а можно PL-SQL -Выполнение команд через ; должно работать, но это не факт -Null может сработать, только для строкового типа поля. Также в Oracle обязательно писать select null FROM table. третий не очень понятен из-за двух протеворечивых предложений+) все таки мне кажется (следуя стандартам) null - специальный типа данных, содержащий пустое значение ЛЮБОГО типа. Ещё хотелось бы узнать по-больше о системный таблицах как dual и тд |
Цитата:
При установке Оракла и создании БД под него - указываешь, реализовать ли поддержку Java Или нет. Интересный факт: на Пентиуме 4 Oracle8 глючит при установке его с поддержкой Java. Надо ставить либо пропатченную версию (трудно найти, не всегда помогает), либо еще как-то. Причем причины глюков толком не ясны и много где обсуждаются в инете. Хотя на АМД все нормально. Цитата:
Цитата:
Цитата:
выдаст ошибку 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 – вся схема текущего пользователя |
| Время: 04:50 |