<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6018591205056478049</id><updated>2025-05-21T14:36:52.583-07:00</updated><category term="SQL"/><category term="sqlplus"/><category term="CURRVAL"/><category term="DDL"/><category term="DUAL"/><category term="DUMMY"/><category term="GRANT"/><category term="Google Custom Search"/><category term="Linux"/><category term="NEXTVAL"/><category term="NULL"/><category term="Oracle error"/><category term="REGEX"/><category term="REVOKE"/><category term="UPSERT"/><category term="VARCHAR"/><category term="asktom"/><category term="autoincrement"/><category term="flashback"/><category term="full-text"/><category term="identity"/><category term="increment"/><category term="inner join"/><category term="joins"/><category term="left join"/><category term="limit"/><category term="oerr"/><category term="oracle text"/><category term="outer join"/><category term="purge"/><category term="recyclebin"/><category term="relation"/><category term="right join"/><category term="rownum"/><category term="sequence"/><category term="trigger"/><category term="web-сайты по Oracle"/><category term="Кодд"/><category term="Том Кайт"/><category term="автоинкремент"/><category term="виртуализация"/><category term="гуру"/><category term="код ошибки"/><category term="кодировка"/><category term="коды ошибок"/><category term="корзина"/><category term="логин"/><category term="образы"/><category term="описание ошибки"/><category term="основы"/><category term="ошибки"/><category term="пароль"/><category term="переименование"/><category term="поиск"/><category term="пользователь"/><category term="последовательность"/><category term="реляционный"/><category term="роли"/><category term="сиквенс"/><category term="сообщения об ошибках"/><category term="столбец"/><category term="строка"/><category term="строки"/><category term="строковые литералы"/><category term="схема"/><category term="схема БД"/><category term="счетчик"/><category term="таблица"/><category term="триггер"/><title type='text'>Оракл для начинающих | Oracle for beginners (18+)</title><subtitle type='html'>Оракл для начинающих. Советы программистам, администраторам, IT-специалистам, только начинающим изучать СУБД Oracle. Оракл для чайников.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oraclestart.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-3402776593823683201</id><published>2018-09-04T15:24:00.000-07:00</published><updated>2018-09-04T18:40:00.803-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="inner join"/><category scheme="http://www.blogger.com/atom/ns#" term="joins"/><category scheme="http://www.blogger.com/atom/ns#" term="left join"/><category scheme="http://www.blogger.com/atom/ns#" term="outer join"/><category scheme="http://www.blogger.com/atom/ns#" term="right join"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><title type='text'>INNER JOIN vs LEFT RIGHT FULL OUTER JOIN</title><content type='html'>Джойны&amp;nbsp;- это запросы, комбинирующие строки из нескольких таблиц, представлений или материализованных представлений, которые перечислены в секции FROM запроса.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;INNER JOIN&lt;/b&gt;&lt;br /&gt;
Inner join или просто join возвращает только те строки из двух таблиц, которые удовлетворяют условию указанному в ON:&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;SELECT&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; s.id,&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; s.supplier_name,&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; o.order_date&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;FROM suppliers s&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;INNER JOIN orders o&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; ON o.supplier_id = s.id;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;OUTER JOIN&lt;/b&gt;&lt;br /&gt;
Outer join возвращает все строки, удовлетворяющие условию, указанному в ON, а также некоторые строки, которые не удовлетворяют этому условию:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;LEFT JOIN&lt;/b&gt; - дополнительно возвращает все строки из левой части условия;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RIGHT JOIN&lt;/b&gt; - дополнительно возвращает все строки из правой части условия;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;FULL JOIN&lt;/b&gt; - дополнительно возвращает все строки из обеих частей условия.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Поясняющая картинка из статьи на &lt;a href=&quot;https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins&quot;&gt;CodeProject&lt;/a&gt;:

&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_V2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;472&quot; data-original-width=&quot;600&quot; height=&quot;315&quot; src=&quot;https://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_V2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3402776593823683201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3402776593823683201'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2018/09/inner-join-vs-left-right-full-outer-join.html' title='INNER JOIN vs LEFT RIGHT FULL OUTER JOIN'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-729326999425095280</id><published>2013-08-25T11:58:00.004-07:00</published><updated>2018-09-04T18:33:33.066-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="full-text"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle text"/><title type='text'>Полнотекстовый поиск при помощи Oracle Text</title><content type='html'>Oracle Text - это бесплатная компонента, входящая в состав Oracle Database, предназначенная для создания приложений с использованием полнотекстового поиска. В предыдущих версиях Oracle имела также названия ConText и interMedia Text. Начиная с 11ой версии входит во все редакции СУБД.&lt;br /&gt;
&lt;br /&gt;
Полнотекстовый поиск - поиск документов в базе данных текстов с использованием полнотекстового индекса. Полнотекстовый индекс - это индекс, в котором перечислены все слова, встречающиеся в тексте, и указаны позиции, на которых эти слова встречаются. Полнотекстовый индекс позволяет производить поиск очень быстро, в отличие например от поиска при помощи оператора like. Кроме того, системы полнотекстового поиска обычно включают в себя функционал, расширяющий возможности поиска, например поиск с учетом морфологии языка, синонимов, созвучных слов, с учетом меры близости между словами в запросе и другие.&lt;br /&gt;
&lt;br /&gt;
Oracle Text позволяет строить полнотекстовые индексы 4-ёх типов:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;CONTEXT - основной тип индекса. Применяется для индексирования содержимого одной или нескольких колонок таблицы;&lt;/li&gt;
&lt;li&gt;CTXCAT - применяется для индексации небольших текстовых фрагментов, не требует периодической переиндексации;&lt;/li&gt;
&lt;li&gt;CTXRULE - применяется при создании приложений для классификации документов;&lt;/li&gt;
&lt;li&gt;CTXXPATH - предназначен для ускорения работы с полями типа XMLType.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Рассмотрим пример создания контекстного полнотекстового индекса по таблице документов docs.&lt;br /&gt;
&lt;br /&gt;
Создадим таблицу документов и наполним ее данными:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;create table docs (id number not null, text varchar2(1000) not null);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;insert into docs values (1, &#39;Шла Саша по шоссе и сосала сушку.&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;insert into docs values (2, &#39;London is the capital of The United Kingdom of Great Britain and Northern Ireland.&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Создадим настройки для полнотекстового индекса и выполним его построение:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;begin&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; ctx_ddl.create_preference(&#39;my_wordlist&#39;, &#39;BASIC_WORDLIST&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; ctx_ddl.create_preference(&#39;my_lexer&#39;, &#39;AUTO_LEXER&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; ctx_ddl.set_attribute(&#39;my_lexer&#39;, &#39;INDEX_STEMS&#39;,&#39;YES&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;end;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;create index docs_idx on docs (text) indextype is ctxsys.context parameters (&#39;LEXER my_lexer WORDLIST my_wordlist&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тестируем построенный индекс:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;select * from docs where contains(text, &#39;саша&#39;) &amp;gt; 0;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ID TEXT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;1 Шла Саша по шоссе и сосала сушку.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;select * from docs where contains(text, &#39;$идти&#39;) &amp;gt; 0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ID TEXT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;1 Шла Саша по шоссе и сосала сушку.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что слово &#39;идти&#39; в тексте документов не встречается, но благодаря использованию оператора стемминга $, найден документ, в котором встречается словоформа слова&amp;nbsp;&#39;идти&#39;, т.е. слово &#39;шла&#39;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;select * from docs where contains(text, &#39;united&#39;) &amp;gt; 0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ID TEXT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;2 London is the capital of The United Kingdom of Great Britain and Northern Ireland.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;select * from docs where contains(text, &#39;uni%&#39;) &amp;gt; 0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;ID TEXT&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;2 London is the capital of The United Kingdom of Great Britain and Northern Ireland.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Что еще полезного (помимо вышеприведенных поиска с морфологией и поиска по шаблонам) есть в Oracle Text:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;подстветка искомых слов в найденном - реализуется при помощи процедур CTX_DOC.MARKUP или CTX_DOC.POLICY_MARKUP;&lt;/li&gt;
&lt;li&gt;поиск с учетом логических выражений (AND, OR, NOT), расстояния между словами (при помощи оператора NEAR);&lt;/li&gt;
&lt;li&gt;поиск с учетом тезауруса, синонимов, созвучных слов - к сожалению не работает для русского языка;&lt;/li&gt;
&lt;li&gt;встоенное извлечение текста из документов разных форматов, например MS Word, Excel, Pdf, RTF, HTML и массы других при помощи утилиты cthxh или процедур CTX_DOC.FILTER или&amp;nbsp;CTX_DOC.IFILTER;&lt;/li&gt;
&lt;li&gt;возможность индексирования документов, расположенных не только в БД, но и на внешних ресурсах, например в файлах ОС или даже в интернет. Реализуется при помощи установки параметра DATASTORE.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Начиная с версии 11.2 Oracle Text позволяет извлекать из текста документов сущности - например, имена и должности персон, названия стран, городов, компаний, url-адреса, почтовые индексы и т.д., с помощью функций пакета ctx_entity, правда пока только для документов на английском языке.&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/729326999425095280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/729326999425095280'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2013/08/oracle-text.html' title='Полнотекстовый поиск при помощи Oracle Text'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-1997442445201795972</id><published>2013-07-06T10:08:00.001-07:00</published><updated>2018-09-04T18:01:57.594-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oerr"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle error"/><category scheme="http://www.blogger.com/atom/ns#" term="код ошибки"/><category scheme="http://www.blogger.com/atom/ns#" term="описание ошибки"/><title type='text'>Описания ошибок в Oracle Database</title><content type='html'>Найти описание ошибки по ее коду можно в разделе &lt;a href=&quot;http://docs.oracle.com/cd/E11882_01/server.112/e17766/toc.htm&quot;&gt;Oracle® Database Error Messages&lt;/a&gt; официального сайта &lt;a href=&quot;http://www.oracle.com/pls/db112/homepage&quot;&gt;Oracle Database Documentation Library&lt;/a&gt;.

Если же у вас нет доступа в интернет, то можно воспользоваться утилитой oerr, которую можно найти в папке bin сервера.

К сожалению, и в первом и во втором случаях описания доступны только на английском языке, так что если у вас проблемы с английским, Google Translate в помощь! А лучше учите английский, например вот &lt;a href=&quot;https://ad.admitad.com/g/ovnibpq1066d452a3d6ac814d4b7c0/?i=4&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1997442445201795972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1997442445201795972'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2013/07/oracle-database.html' title='Описания ошибок в Oracle Database'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-6923894422219808920</id><published>2011-11-02T00:28:00.000-07:00</published><updated>2011-11-02T00:28:16.675-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flashback"/><category scheme="http://www.blogger.com/atom/ns#" term="purge"/><category scheme="http://www.blogger.com/atom/ns#" term="recyclebin"/><category scheme="http://www.blogger.com/atom/ns#" term="корзина"/><title type='text'>Корзина и восстановление удаленных таблиц в Oracle</title><content type='html'>Начиная с 10-ой версии СУБД Oracle содержит такой инструмент восстановления случайно удаленных таблиц как корзина (recycle bin), хорошо известный пользователям Windows, MacOS и других операционных систем. При удалении таблицы и их индексы не стираются с диска физически, а специальным образом переименовываются Ораклом, т.е. перемещаются в корзину.&lt;br /&gt;
&lt;br /&gt;
Посмотреть содержимое корзины можено через представление USER_RECYCLEBIN или просто RECYCLEBIN. Очистка корзины производится командой PURGE RECYCLEBIN, а восстановление таблицы - FLASHBACK TABLE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
create table TEST (TEST_COLUMN number primary key);&lt;br /&gt;
insert into TEST values (100);&lt;br /&gt;
insert into TEST values (200);&lt;br /&gt;
select * from TEST;&lt;br /&gt;
&lt;br /&gt;
-- удаляем таблицу&lt;br /&gt;
drop table TEST;&lt;br /&gt;
&lt;br /&gt;
-- создаем новую таблицу TEST с новыми данными&lt;br /&gt;
create table TEST (TEST_COLUMN number primary key);&lt;br /&gt;
insert into TEST values (999);&lt;br /&gt;
select * from TEST;&lt;br /&gt;
&lt;br /&gt;
-- просмотр содержимого таблицы&lt;br /&gt;
select * from RECYCLEBIN;&lt;br /&gt;
&lt;br /&gt;
-- восстановление таблицы TEST под именем TEST_OLD&lt;br /&gt;
flashback table TEST to before drop rename to TEST_OLD;&lt;br /&gt;
select * from TEST_OLD;&lt;br /&gt;
&lt;br /&gt;
-- очистка таблицы&lt;br /&gt;
purge RECYCLEBIN;&lt;br /&gt;
select * from RECYCLEBIN;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6923894422219808920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6923894422219808920'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2011/11/oracle.html' title='Корзина и восстановление удаленных таблиц в Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-3087885562125486513</id><published>2011-05-22T21:17:00.000-07:00</published><updated>2011-05-22T21:17:58.767-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="схема БД"/><title type='text'>Примеры схем БД</title><content type='html'>Нашел на сайте британской конторы Database Answers &lt;a href=&quot;http://databaseanswers.org/data_models/&quot;&gt;примеры схем&lt;/a&gt; различных БД. &lt;br /&gt;
Вот, к примеру, пример схемы БД &lt;a href=&quot;http://databaseanswers.org/data_models/swimming_clubs/index.htm&quot;&gt;плавательного бассейна&lt;/a&gt; или &lt;a href=&quot;http://databaseanswers.org/data_models/police_departments/index.htm&quot;&gt;полицейского департамента&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3087885562125486513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3087885562125486513'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2011/05/blog-post_22.html' title='Примеры схем БД'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-1563200683301444261</id><published>2011-05-18T21:19:00.000-07:00</published><updated>2011-05-18T21:19:56.748-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DDL"/><category scheme="http://www.blogger.com/atom/ns#" term="переименование"/><title type='text'>Как переименовать таблицу или столбец</title><content type='html'>Переименование таблицы:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;alter table OLD_TABLE rename to NEW_TABLE;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
или короче&lt;br /&gt;
&lt;i&gt;rename OLD_TABLE TO NEW_TABLE;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Переименование столбца:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;alter table TEST_TABLE rename column OLD_COLUMN TO NEW_COLUMN;&lt;/i&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1563200683301444261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1563200683301444261'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2011/05/blog-post.html' title='Как переименовать таблицу или столбец'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-8683671868966049265</id><published>2010-12-16T08:13:00.000-08:00</published><updated>2010-12-16T08:13:58.336-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UPSERT"/><title type='text'>UPSERT = UPdate or inSERT</title><content type='html'>&lt;b&gt;UPSERT&lt;/b&gt; (от UPDATE OR INSERT)- условное наименование конструкции на языке SQL, которая&lt;br /&gt;
позволяет обновлять данные в таблице или вставлять их, если их еще не существует.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
UPDATE tablename &lt;br /&gt;
SET val1 = :p1, &lt;br /&gt;
val2 = :p2&lt;br /&gt;
WHERE val3 = :p3; &lt;br /&gt;
&lt;br /&gt;
IF ( sql%rowcount = 0 ) &lt;br /&gt;
THEN &lt;br /&gt;
INSERT INTO tablename &lt;br /&gt;
VALUES (:p1, :p2, :p3); &lt;br /&gt;
END IF;&lt;br /&gt;
&lt;br /&gt;
обновит таблицу tablename, если val3 = :p3, или вставит новую запись в противном случае.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/8683671868966049265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/8683671868966049265'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2010/12/upsert-update-or-insert.html' title='UPSERT = UPdate or inSERT'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-8447541653196339272</id><published>2009-08-10T12:51:00.000-07:00</published><updated>2009-08-10T12:57:15.902-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sqlplus"/><title type='text'>Советы по работе с sqlplus</title><content type='html'>1. При работе с sqlplus последний выполненный оператор всегда сохраняется в текстовый файл &lt;span style=&quot;font-style:italic;&quot;&gt;afiedt.buf&lt;/span&gt;. Можно использовать этот файл для того чтобы выполнить последнюю команду или подредактировать ее. Для этого нужно просто ввести в командной строке sqlplus команду &lt;span style=&quot;font-style:italic;&quot;&gt;edit&lt;/span&gt; (или просто &lt;span style=&quot;font-style:italic;&quot;&gt;ed&lt;/span&gt;). При закрытии окна редактора измененная команда автоматически станет текущей в sqlplus.&lt;br /&gt;&lt;br /&gt;2. Выполняя SQL-операторы, не завершайте их точкой с запятой (;), а указывайте символ косой черты (/) в строке, следующей за оператором.&lt;br /&gt;&lt;br /&gt;3. Можно сначала написать sql-запрос в тектовом файле, а потом загрузить его в sqlplus и выполнить. Для этого сохраните файл с расширением .sql и загрузите командой &lt;span style=&quot;font-style:italic;&quot;&gt;get&lt;/span&gt; или &lt;span style=&quot;font-style:italic;&quot;&gt;@&lt;/span&gt;, например:&lt;br /&gt;1) сохраняем оператор в файл my_select.sql&lt;br /&gt;2) выполняем команду&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;@my_select&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Если Вам нужно сохранить выходные данные скрипта в файл, используйте команду SPOOL.&lt;br /&gt;Пример:&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;spool out.txt&lt;/span&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;select * from DUAL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Результат запишется в файл out.txt&lt;br /&gt;&lt;br /&gt;5. Для более удобного чтения результатов запросов можно использовать форматирование при помощи команды column. Например, операторы&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;column ID a3&lt;/span&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;column FIRSTNAME a12&lt;/span&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;column LASTNAME a12&lt;/span&gt;&lt;br /&gt;SQL&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;select ID, FIRSTNAME, LASTNAME from EMPLOYEE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;выведут результат в виде 3 колонок, первая из которых будет иметь ширину 3 символа, а вторая и третья – по 12 символов.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/8447541653196339272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/8447541653196339272'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/08/sqlplus.html' title='Советы по работе с sqlplus'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-6868235891961263246</id><published>2009-04-16T12:56:00.000-07:00</published><updated>2009-04-16T13:00:56.546-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sqlplus"/><category scheme="http://www.blogger.com/atom/ns#" term="кодировка"/><title type='text'>Неправильная кодировка в sqlplus</title><content type='html'>Новички часто сталкиваются с такой проблемой: при запуске sqlplus все сообщения выдаются в неправильной кодировке.&lt;br /&gt;&lt;a title=&quot;ошибка кодировки в sqlplus&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5q26nyvi-79IZS64-XsW8LT1hbG1x7h7J8O5_hqlz302fkhPFdJNDSmHQ-S-xMktckZnGMdKXyTPejAz85Log0qOdwKXeGIIOx2_Y2Nri2zyfpb7PcV6gJuUyho03WjDXSxh-uZCCPQA4/s1600-h/1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 205px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5q26nyvi-79IZS64-XsW8LT1hbG1x7h7J8O5_hqlz302fkhPFdJNDSmHQ-S-xMktckZnGMdKXyTPejAz85Log0qOdwKXeGIIOx2_Y2Nri2zyfpb7PcV6gJuUyho03WjDXSxh-uZCCPQA4/s320/1.jpg&quot; border=&quot;0&quot; alt=&quot;sqlplus ошибка кодировки&quot; id=&quot;BLOGGER_PHOTO_ID_5325380882284575362&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Проблема возникает при несовпадении кодировки Oracle клиента с кодировкой, заданной для Dos-консоли. Соответственно, надо либо изменить первую, либо вторую.&lt;br /&gt;&lt;br /&gt;Кодировка клиента Oracle задается в реестре&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG, либо переменной окружения NLS_LANG. Поэтому проще всего сменить кодировку клиента командой: &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;set NLS_LANG=RUSSIAN_RUSSIA.RU8PC866&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Кодировка  Dos-консоли меняется командой chcp:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;C:\&gt;chcp 1251&lt;br /&gt;Текущая кодовая страница: 1251&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Замечание: при смене кодовой страницы для DOS-консоли на 1251, следует убедиться что для неё установлены шрифты Lucida Console.&lt;br /&gt; &lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNv5KcY72kM44c0kK3JVenU-fjILn6Ysxg10Mft_nbf4uHT2jPxErCuFt_OqK37ZAg2MsGDxjnL-J6X8f68Yt-TOjTiRLNrYogA5sTlNuiVH-5jl47MUL2fKDo67iHjJjqJKM3KV69Y1SB/s1600-h/2.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 257px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNv5KcY72kM44c0kK3JVenU-fjILn6Ysxg10Mft_nbf4uHT2jPxErCuFt_OqK37ZAg2MsGDxjnL-J6X8f68Yt-TOjTiRLNrYogA5sTlNuiVH-5jl47MUL2fKDo67iHjJjqJKM3KV69Y1SB/s320/2.jpg&quot; border=&quot;0&quot; alt=&quot;смена шрифта на Lucida Console&quot; id=&quot;BLOGGER_PHOTO_ID_5325381427391646690&quot; /&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6868235891961263246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6868235891961263246'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/04/sqlplus.html' title='Неправильная кодировка в sqlplus'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5q26nyvi-79IZS64-XsW8LT1hbG1x7h7J8O5_hqlz302fkhPFdJNDSmHQ-S-xMktckZnGMdKXyTPejAz85Log0qOdwKXeGIIOx2_Y2Nri2zyfpb7PcV6gJuUyho03WjDXSxh-uZCCPQA4/s72-c/1.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-712737487599955299</id><published>2009-04-05T14:21:00.000-07:00</published><updated>2009-04-05T14:31:00.584-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><title type='text'>Полезные SQL-запросы</title><content type='html'>-- Получение данных о версии БД Oracle&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT * FROM V$VERSION;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение текущей даты и времени на сервере&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT TO_CHAR(sysdate,&#39;dd/mm/yyyy hh24:mi:ss&#39;) FROM DUAL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение имён всех таблиц в БД&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT TABLE_NAME FROM SYS.ALL_TABLES;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение имён пользователей в базе данных&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT USERNAME FROM USERS;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получения всех объектов пользователя (таблиц, представлений, последовательностей, индексов и т.д.)&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT OBJECT_NAME FROM ALL_OBJECTS WHERE OWNER=&#39;...&#39;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение количества записей в таблице&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT T.NR FROM (SELECT ROWNUM R, NUM_ROWS NR, TABLE_NAME TN FROM SYS.ALL_TABLES) T WHERE TN=&#39;...&#39;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение имён всех колонок в заданной таблице&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME=&#39;...&#39;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Получение информации о типе заданной колонки в заданной таблице&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SELECT DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME=&#39;...&#39; AND COLUMN_NAME=&#39;...&#39;;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/712737487599955299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/712737487599955299'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/04/sql.html' title='Полезные SQL-запросы'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-5712073775939062972</id><published>2009-04-05T14:09:00.000-07:00</published><updated>2009-04-05T14:33:37.512-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asktom"/><category scheme="http://www.blogger.com/atom/ns#" term="Том Кайт"/><category scheme="http://www.blogger.com/atom/ns#" term="гуру"/><title type='text'>Кто такой Том Кайт?</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;Томac Кай&lt;/span&gt;т (Tom Kyte) - самый авторитетный &lt;span style=&quot;font-weight:bold;&quot;&gt;гуру&lt;/span&gt; по СУБД Оракл, вице-президент Oracle Corporation и архитектор СУБД Oracle. Том работает с базами данных Oracle еще с 1987 года, а в 1993 году Том работает непосредственно в корпорации.&lt;br /&gt; &lt;br /&gt;Любой ораклоид знает Тома как автора популярных книг, в том числе &lt;span style=&quot;font-weight:bold;&quot;&gt;Oracle for professionals&lt;/span&gt;, &lt;span style=&quot;font-weight:bold;&quot;&gt;Expert One on One Oracle&lt;/span&gt;, &lt;span style=&quot;font-weight:bold;&quot;&gt;Effective Oracle by Design&lt;/span&gt; и других, а также популярного сайта &lt;span style=&quot;font-weight:bold;&quot;&gt;AskTom&lt;/span&gt; (&lt;a href=&quot;http://asktom.oracle.com&quot;&gt;asktom.oracle.com&lt;/a&gt;), где Том отвечает на многочисленные вопросы по Ораклу.&lt;br /&gt;&lt;br /&gt;Кстати, у тома есть свой персональный блог на блогспоте - &lt;a href=&quot;http://tkyte.blogspot.com/&quot;&gt;tkyte.blogspot.com&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5712073775939062972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5712073775939062972'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/04/blog-post.html' title='Кто такой Том Кайт?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-5236318125630238003</id><published>2009-01-29T12:59:00.000-08:00</published><updated>2009-01-29T13:02:53.704-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="виртуализация"/><category scheme="http://www.blogger.com/atom/ns#" term="образы"/><title type='text'>Виртуальные машины с Oracle 9i, 10g, 11g</title><content type='html'>Если Вы хотите попробовать что-то сделать в Oracle, но не хотите заниматься установкой и настройкой СУБД, то в сети есть ресурсы, где можно скачать готовые виртуальные машины с Oracle, например &lt;br /&gt;1. &lt;a href=&quot;http://www.oracle.com/technology/products/vm/templates.html&quot;&gt;Oracle VM Templates&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;http://www.racsig.ru/vmimages/&quot;&gt;Образы&lt;/a&gt; с Oracle Database 9i, 10g, 11g, Oracle Enterprise Linux и образы для построения Oracle EE DB 11g RAC</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5236318125630238003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5236318125630238003'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/01/oracle-9i-10g-11g.html' title='Виртуальные машины с Oracle 9i, 10g, 11g'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-2181024767455893858</id><published>2009-01-26T13:43:00.000-08:00</published><updated>2009-01-26T13:55:15.160-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Custom Search"/><category scheme="http://www.blogger.com/atom/ns#" term="web-сайты по Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="поиск"/><title type='text'>Новый поиск по сайтам о СУБД Oracle</title><content type='html'>Обратите внимание на поисковую форму от Google в правом верхнем углу блога - с помощью нее теперь Вы можете искать необходимую информацию по ведущим ресурсам сети, посвященным СУБД Оракл, в том числе asktom.oracle.com, otn.oracle.com, forums.oracle.com, а также российским сайтам с полезной информацией о базе данных №1.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/2181024767455893858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/2181024767455893858'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2009/01/oracle.html' title='Новый поиск по сайтам о СУБД Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-1119087562461756059</id><published>2008-08-06T11:21:00.000-07:00</published><updated>2009-01-26T14:32:34.632-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="коды ошибок"/><category scheme="http://www.blogger.com/atom/ns#" term="ошибки"/><category scheme="http://www.blogger.com/atom/ns#" term="сообщения об ошибках"/><title type='text'>Описание некоторых распространенных сообщений об ошибках Oracle</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-00001 : unique constraint violated&lt;/span&gt;  - Вы пытаетесь выполнить вставку или изменение поля, значение которого будет нарушать ограничение уникальности поля.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-01001 : invalid cursor&lt;/span&gt; -   Вы пытаетесь использовать несуществующий курсор. Вероятная причина – курсор не был открыт, или уже закрыт.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-01012 : not logged on&lt;/span&gt; -  Вы не авторизованы, но пытаетесь выполнить запрос. Попробуйте залогиниться и повторить запрос.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-01017 : invalid username/password; logon denied&lt;/span&gt; - Неверная комбинация логин/пароль.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-01476 : divisor is equal to zero&lt;/span&gt; - Вы пытаетесь выполнить деление на ноль.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-01000 : maximum open cursors exceeded&lt;/span&gt; - количество открытых курсоров превысило значение параметра OPEN_CURSORS базы данных. Уменьшите количество используемых курсоров в БД в Вашей программе. Если это не помогло, затормозите сервис БД, увеличьте значение параметра OPEN_CURSORS в init.ora и перезапустите сервис БД.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-06511 :  PL/SQL: cursor already open&lt;/span&gt; - Вы пытаетесь открыть уже открытый курсор&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12545: Connect failed because target host or object does not exist&lt;/span&gt; – что-то не то с хостом или ip-адресом, с которым вы пытаетесь соединиться. Проверьте существование хоста командами tnsping в unix и ping в windows.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12541 : TNS:no listener&lt;/span&gt; – Убедитесь, что на сервере запущен прослушивающий процесс (листенер). Если нет, то используйте команду lsnrctl, либо запустите сервис в службах Windows. Если процесс запущен, проверьте правильность настроек файла listener.ora.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12500 : TNS:listener failed to start a dedicated server process&lt;/span&gt; – вероятно, сервис базы данных не запущен. Для Windows проверьте что сервис запущен, обычно сервис имеет имя OracleService&lt;SID&gt;, где SID – название базы данных. Для Unix убедитесь, что запущен процесс smon при помощи команды ps: ps -ef | grep ora_smon&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12154 : TNS:could not resolve service name&lt;/span&gt; – Вы пытаетесь выполнить подключение к БД, которая неизвестна Вашему клиенту. Проверьте существование и настройки файла tnsnames.ora.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12514 : TNS:listener does not currently know of service requested in connect descriptor&lt;/span&gt; – Во-первых, проверьте что запущен сервис базы данных. Ошибка также может возникать, если сервис БД и листенер еще стартуют, в этом случае подождите минуту-две. Если сервисы запущены, то причина ошибки – сервисы БД и листенер не настроены друг на друга. Проверьте настройки файлов tnsnames.ora и listener.ora.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-12560 : TNS:protocol adapter error&lt;/span&gt; – вероятно, не запущен сервис базы данных. Запустите сервис в службах Windows или выполните команду startup в sqlplus.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ORA-20001 : A user specified error message&lt;/span&gt; – ошибки с кодами 20000-20999 отданы на откуп разработчикам приложений.  Разработчики могут возбуждать такие ошибки в своих приложениях функцией raise_application_error. Обратитесь к разработчикам приложения за более подробной информацией.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1119087562461756059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/1119087562461756059'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/08/oracle_06.html' title='Описание некоторых распространенных сообщений об ошибках Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-4597187717353836234</id><published>2008-08-05T12:25:00.000-07:00</published><updated>2009-01-26T14:34:10.450-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GRANT"/><category scheme="http://www.blogger.com/atom/ns#" term="REVOKE"/><category scheme="http://www.blogger.com/atom/ns#" term="роли"/><title type='text'>Роли и полномочия (привилегии) в Oracle</title><content type='html'>После аутентификации пользователя в базе данных, ему разрешается выполнять в ней действия над данными. Но какие действия? Над какими данными? Ответы на&lt;br /&gt;эти вопросы зависят от &lt;span style=&quot;font-weight:bold;&quot;&gt;полномочий&lt;/span&gt;, предоставленных пользователю.&lt;br /&gt;Не имея никаких полномочий, пользователь не может выполнять никакие действия с БД, даже установить соединение с ней. Поэтому для работы, пользователь как&lt;br /&gt;минимум должен иметь право на подключение к БД. С другой стороны, большинству пользователей не требуется создавать или удалять таблицы БД, поэтому&lt;br /&gt;привилегии на создание и удаление таблиц они не имеют.&lt;br /&gt;Полномочия могут назначаться как отдельным пользователям, так и ролям. &lt;span style=&quot;font-weight:bold;&quot;&gt;Роль&lt;/span&gt; – это именованный набор полномочий. Использование ролей существенно облегчает&lt;br /&gt;управление привилегиями. Вместо того, чтобы предоставлять десятки полномочий каждому пользователю, можно создать несколько типичных ролей (например -&lt;br /&gt;пользователь, администратор, …), наделить их необходимыми полномочиями и назначить пользователям их роли. В дальнейшем, будет гораздо легче лишить&lt;br /&gt;пользователя роли, нежели отобрать у него список нежелательных полномочий.&lt;br /&gt;И полномочия, и роли предоставляются пользователям оператором &lt;span style=&quot;font-weight:bold;&quot;&gt;GRANT&lt;/span&gt;, а отбираются соответственно - &lt;span style=&quot;font-weight:bold;&quot;&gt;REVOKE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;GRANT INSERT, UPDATE, DELETE, SELECT ON ZVEZDA.MY_TABLE TO SCOTT;&lt;/span&gt;&lt;br /&gt;-       Даст пользователю SCOTT полномочия на вставку, изменение, удаление и выборку данных из таблицы MY_TABLE схемы ZVEZDA.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;REVOKE DBA FROM SCOTT;&lt;/span&gt;&lt;br /&gt;-       Лишит пользователя SCOTT полномочий роли DBA.&lt;br /&gt;&lt;br /&gt;Создаются, изменяются и удаляются роли стандартными операторами DDL – CREATE, ALTER и DELETE.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;CREATE ROLE ZVEZDA_MANAGER IDENTIFIED BY xyz123;&lt;/span&gt;&lt;br /&gt;-       Создаст защищенную паролем «xyz123» роль ZVEZDA_MANAGER;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;GRANT SELECT ON ZVEZDA.CUSTOMERS TO ZVEZDA_MANAGER;&lt;/span&gt;&lt;br /&gt;-       Предоставит полномочия на выборку данных из таблицы ZVEZDA.CUSTOMERS роли ZVEZDA_MANAGER;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;GRANT ZVEZDA_MANAGER TO SCOTT;&lt;/span&gt;&lt;br /&gt;-       Предоставит полномочия роли ZVEZDA_MANAGER пользователю SCOTT.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/4597187717353836234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/4597187717353836234'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/08/oracle.html' title='Роли и полномочия (привилегии) в Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-3370808744285874025</id><published>2008-06-27T13:32:00.000-07:00</published><updated>2010-08-06T15:59:32.357-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="логин"/><category scheme="http://www.blogger.com/atom/ns#" term="пароль"/><category scheme="http://www.blogger.com/atom/ns#" term="пользователь"/><category scheme="http://www.blogger.com/atom/ns#" term="схема"/><title type='text'>Пользователи и схемы в Oracle</title><content type='html'>Одна из основных задач СУБД - это возможность дать право на просмотр, создание и модификацию информации только тем лицам, которые имеют для этого законную причину. Для этого пользователи должны проходить идентификацию и на ее основе получать доступ лишь к четко определенным объектам.&lt;br /&gt;
Традиционный подход к процедуре идентификации состоит в том, что у каждого пользователя есть свое уникальное имя пользователя (&lt;span style=&quot;font-weight:bold;&quot;&gt;логин&lt;/span&gt;) и &lt;span style=&quot;font-weight:bold;&quot;&gt;пароль&lt;/span&gt;. СУБД Oracle также поддерживает использование различных альтернативных технологий, таких как смарт-карты или другие физические устройства в сочетании с паролями и PIN-кодами посредством опции Oracle Advanced Security Option.&lt;br /&gt;
В базе данных учетная запись не является физической структурой. Тем не менее, все объекты базы данных принадлежат пользователям. Так, системный пользователь &lt;span style=&quot;font-weight:bold;&quot;&gt;SYS&lt;/span&gt; владеет таблицами словаря данных, содержащим информацию обо всех остальных структурах  базы данных. Системному пользователю &lt;span style=&quot;font-weight:bold;&quot;&gt;SYSTEM&lt;/span&gt; принадлежат представления, полученные на основе таблиц пользователя SYS. Все объекты базы данных создаются с учетными записями их владельцев.&lt;br /&gt;
Набор объектов, принадлежащих учетной записи пользователя называется &lt;span style=&quot;font-weight:bold;&quot;&gt;схемой&lt;/span&gt;. Можно создать пользователя, у которого не будет права входа в систему, но схему которого можно будет использовать для отдельного хранения объектов базы данных.&lt;br /&gt;
До версии Oracle 10g существовало несколько системных учетных записей, обладавших паролями, заданными по умолчанию. Ленивые или не особо осведомленные администраторы часто оставляли эти пароли без изменения, что создавало огромную брешь в системе безопасности.&lt;br /&gt;
Теперь при установке Oracle обязательно запрашивает пароль для системных учетных записей – это хотя и не решает всех проблем, но теперь администратор хотя бы узнает об их существовании ;)&lt;br /&gt;
Пользователи и правила их аутентификации определяются и изменяются с помощью SQL-операторов &lt;span style=&quot;font-weight:bold;&quot;&gt;CREATE USER&lt;/span&gt; и &lt;span style=&quot;font-weight:bold;&quot;&gt;ALTER USER&lt;/span&gt;.&lt;br /&gt;
&lt;img width=&#39;1&#39; height=&#39;1&#39; src=&#39;http://blogun.ru/it.000000.008578.i.gif&#39;&gt;&lt;br /&gt;
&lt;span style=&quot;font-style:italic;&quot;&gt;create user test_user identified by &quot;0rA083urt6&quot;&lt;/span&gt;;&lt;br /&gt;
- создаст пользователя test_user с паролем 0rA083urt6&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style:italic;&quot;&gt;alter user test_user account lock;&lt;/span&gt;&lt;br /&gt;
- изменяет состояние пользователя, делает его заблокированным&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Скачать бесплатно &lt;a href=&quot;http://catalogsofta.ru/text/text_editors/26287-openoffice.org-3.2.0-final.html&quot;&gt;OpenOffice.org 3.2.0 Final&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3370808744285874025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/3370808744285874025'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/06/oracle.html' title='Пользователи и схемы в Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-6635115428606936935</id><published>2008-04-21T10:25:00.000-07:00</published><updated>2009-01-26T14:33:32.464-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="NULL"/><category scheme="http://www.blogger.com/atom/ns#" term="REGEX"/><category scheme="http://www.blogger.com/atom/ns#" term="VARCHAR"/><category scheme="http://www.blogger.com/atom/ns#" term="строки"/><category scheme="http://www.blogger.com/atom/ns#" term="строковые литералы"/><title type='text'>Строки и символьные функции в Оracle</title><content type='html'>Строковые литералы в Оracle - это последовательность из нуля, одного или более символов, заключенных в одинарные кавычки.&lt;br /&gt;У новичков часто встречается ошибка, когда строки заключаются в двойные кавычки или наоборот, названия объектов в одинарные.&lt;br /&gt;&lt;br /&gt;insert into &#39;MY_DOC&#39; (&#39;DOC_ID&#39;, &#39;DOC_NAME&#39;) values (&quot;1&quot;, &quot;Документ 1&quot;);&lt;br /&gt;&lt;br /&gt;Error at Command Line:1 Column:12&lt;br /&gt;SQL Error: ORA-00903: неверно имя таблицы&lt;br /&gt;00903. 00000 -  &quot;invalid table name&quot;&lt;br /&gt;&lt;br /&gt;Error at Command Line:1 Column:57&lt;br /&gt;SQL Error: ORA-00984: употребление столбца здесь недопустимо&lt;br /&gt;00984. 00000 -  &quot;column not allowed here&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Строка нулевой длины, т.е. &#39;&#39; это не то же самое что NULL. Если в строке NULL, это говорит о том, что значение не известно или &lt;br /&gt;не установлено. Если в строке &#39;&#39;, это значит что строка пустая, но ее значение известно.&lt;br /&gt;&lt;br /&gt;Конкатенация (соеднинение) строк выполняется оператором || (две вертикальные черты) или функцией CONCAT&lt;br /&gt;&lt;br /&gt;select &#39;Employee: &#39; || initcap(ename), concat(&#39;Dept: &#39;,deptno)&lt;br /&gt;from emp;&lt;br /&gt;&lt;br /&gt;Oracle предлагает обширный набор функций для манипулирования строковыми данными:&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;CHR&lt;/span&gt;(N) - Возвращает символ ASCII кода для десятичного кода N &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;ASCII&lt;/span&gt;(S) - Возвращает десятичный ASCII код первого символа строки &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;INSTR&lt;/span&gt;(S2.S1.pos[,N] - Возвращает позицию строки S1 в строке S2 большую или равную pos.N - число вхождений &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;LENGHT&lt;/span&gt;(S) - Возвращает длину строки &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;LOWER&lt;/span&gt;(S) - Заменяет все символы строки на прописные символы &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;INITCAP&lt;/span&gt;(S) - Устанавливает первый символ каждого слова в строке на заглавный, а остальные символы каждого слова - на прописные &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SUBSTR&lt;/span&gt;(S,pos,[,len]) - Выделяет в строке S подстроку длиной len, начиная с позиции pos &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;UPPER&lt;/span&gt;(S) - Преобразует прописные букцвы в строке на заглавные буквы &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;LPAD&lt;/span&gt;(S,N[,A]) - Возвращает строку S, дополненную слева симолами A до числа символов N. Символ - наполнитель по умолчанию - пробел &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;RPAD&lt;/span&gt;(S,N[,A]) - Возвращает строку S, дополненную справа симолами A до числа символов N. Символ - наполнитель по умолчанию - пробел &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;LTRIM&lt;/span&gt;(S,[S1]) - Возвращает усеченную слева строку S. Символы удаляются до тех пор, пока удаляемый символ входит в строку - шаблон S1 (по умолчанию - пробел) &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;RTRIM&lt;/span&gt;(S,[S1]) - Возвращает усеченную справа строку S. Символы удаляются до тех пор, пока удаляемый символ входит в строку - шаблон S1 (по умолчанию - пробел &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;TRANSLATE&lt;/span&gt;(S,S1,S2) - Возвращает строку S, в которой все вхождения строки S1 замещены строкой S2. Если S1 &lt;&gt; S2, то символы, которым нет соответствия,&lt;br /&gt;исключаются из результирующей строки &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;REPLACE&lt;/span&gt;(S,S1,[,S2]) - Возвращает строку S, для которой все вхождения строки S1 замещены на подстроку S2. Если S2 не указано, то все вхождения подстроки S1&lt;br /&gt;удаляются из результирующей строки &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;NVL&lt;/span&gt;(X,Y) - Если Х есть NULL, то возвращает в Y либо строку, либо число, либо дату в зависимости от исходного типа Y &lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;SOUNDEX&lt;/span&gt;(S) - Возвращает фонетическое представление строки&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;REGEX_INSTR&lt;/span&gt;(S,S1,[N1],[N2],[N3],[S2]) - Возвращает позицию в строке S текста, удовлетворяющего регулярному выражению S1&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;REGEX_REPLACE&lt;/span&gt;(S,S1,S2,[N1],[N2],[S3]) - Возвращает строку S, в которой все вхождения строк, удовлетворяющих регулярному выражению S1, замещены на S2&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;REGEX_SUBSTR&lt;/span&gt;(S,S1,[N1],[N2],[S2]) - Возвращает подстроку из строки S, удовлетворяющего регулярному выражению S1</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6635115428606936935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/6635115428606936935'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/04/racle.html' title='Строки и символьные функции в Оracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-5024352747887904518</id><published>2008-04-14T13:15:00.000-07:00</published><updated>2009-01-26T14:34:44.547-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="limit"/><category scheme="http://www.blogger.com/atom/ns#" term="rownum"/><title type='text'>Что такое ROWNUM</title><content type='html'>&lt;span style=&quot;font-weight:bold;&quot;&gt;Rownum&lt;/span&gt; – это псевдостолбец, значения которого можно увидеть, включив его в любой результирующий набор, например в список столбцов оператора SELECT.&lt;br /&gt;Значениям столбца ROWNUM присваиваются номера 1, 2, 3, 4, ... N, где N – число строк результирующего набора запроса.&lt;br /&gt;&lt;br /&gt;select rownum, doc_name from docs;&lt;br /&gt;&lt;br /&gt;ROWNUM -- DOC_NAME&lt;br /&gt;1     --     Тестовый документ&lt;br /&gt;2     --     Договор подряда&lt;br /&gt;3     --     Документ 3&lt;br /&gt;&lt;br /&gt;В основном стоблец rownum применяется для ограничения в запросе первых N записей. Это похоже на использование предложения &lt;span style=&quot;font-weight:bold;&quot;&gt;LIMIT&lt;/span&gt; в других СУБД, например в SQL Server. К примеру, запрос&lt;br /&gt;&lt;br /&gt;select *&lt;br /&gt;  from my_table&lt;br /&gt; where ROWNUM &lt; 5;&lt;br /&gt;&lt;br /&gt;отберет первые 4 записи из таблицы my_table.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5024352747887904518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/5024352747887904518'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/04/rownum.html' title='Что такое ROWNUM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-588260206963479553</id><published>2008-04-10T10:11:00.000-07:00</published><updated>2009-10-15T11:50:40.034-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="autoincrement"/><category scheme="http://www.blogger.com/atom/ns#" term="CURRVAL"/><category scheme="http://www.blogger.com/atom/ns#" term="identity"/><category scheme="http://www.blogger.com/atom/ns#" term="increment"/><category scheme="http://www.blogger.com/atom/ns#" term="NEXTVAL"/><category scheme="http://www.blogger.com/atom/ns#" term="sequence"/><category scheme="http://www.blogger.com/atom/ns#" term="trigger"/><category scheme="http://www.blogger.com/atom/ns#" term="автоинкремент"/><category scheme="http://www.blogger.com/atom/ns#" term="последовательность"/><category scheme="http://www.blogger.com/atom/ns#" term="сиквенс"/><category scheme="http://www.blogger.com/atom/ns#" term="счетчик"/><category scheme="http://www.blogger.com/atom/ns#" term="триггер"/><title type='text'>Автоинкрементные поля (счетчики) в Oracle</title><content type='html'>В Oracle нельзя сделать поле, автоматически увеличивающее свое значение напрямую, как например поле Identity в SQL Server. Поэтому для этих целей обычно используются последовательности (сиквенсы, sequences).&lt;br /&gt;
Конечно, сиквенсы не так удобны, но и имеют определенные преимущества. К примеру, сиквенс замечательно подходит для сквозных нумераций в нескольких таблицах.&lt;br /&gt;
&lt;br /&gt;
Синтаксис создания последовательности выглядит так:&lt;br /&gt;
CREATE SEQUENCE имя&lt;br /&gt;
[START WITH начальное_значение]&lt;br /&gt;
[INCREMENT BY значение_инкремента];&lt;br /&gt;
&lt;br /&gt;
Реализуем автоинкремент в Oracle. Cначала создадим сиквенс:&lt;br /&gt;
&lt;br /&gt;
CREATE SEQUENCE my_seq;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE my_doc (&lt;br /&gt;
doc_id NUMBER(20)&lt;br /&gt;
, doc_name VARCHAR2(256)&lt;br /&gt;
, CONSTRAINT pk_my_table PRIMARY KEY (doc_id)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
Для получения очередного уникального значения сиквенс может быть использован напрямую, либо через триггер:&lt;br /&gt;
&lt;br /&gt;
1. напрямую&lt;br /&gt;
&lt;br /&gt;
INSERT INTO my_doc (doc_id, doc_name) VALUES (my_seq.nextval, &#39;Документ 1&#39;);&lt;br /&gt;
&lt;br /&gt;
2. через триггер&lt;br /&gt;
&lt;br /&gt;
CREATE OR REPLACE TRIGGER my_trigger&lt;br /&gt;
BEFORE INSERT ON my_doc&lt;br /&gt;
FOR EACH ROW&lt;br /&gt;
BEGIN&lt;br /&gt;
  SELECT my_seq.NEXTVAL INTO :NEW.doc_id FROM dual;&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
INSERT INTO my_doc (doc_name) VALUES (&#39;Документ 2&#39;);&lt;br /&gt;
INSERT INTO my_doc (doc_id, doc_name) VALUES (null, &#39;Документ 3&#39;);&lt;br /&gt;
&lt;br /&gt;
В версии Oracle 11g также появилась возможность делать вот так:&lt;br /&gt;
&lt;br /&gt;
CREATE OR REPLACE TRIGGER my_trigger&lt;br /&gt;
BEFORE INSERT ON my_doc FOR EACH ROW&lt;br /&gt;
BEGIN&lt;br /&gt;
:NEW.doc_id := my_seq.NEXTVAL;&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Любопытно, что атрибут NEXTVAL, вычисляется не при каждом использовании, а только один раз для каждой очередной строки результата, независимо от того,&lt;br /&gt;
сколько раз вызывается NEXTVAL на одну строку.&lt;br /&gt;
Попробуйте:&lt;br /&gt;
&lt;br /&gt;
CREATE SEQUENCE seq_1;&lt;br /&gt;
&lt;br /&gt;
CREATE SEQUENCE seq_2 INCREMENT BY 2;&lt;br /&gt;
&lt;br /&gt;
SELECT seq_1.NEXTVAL, seq_1.CURRVAL, seq_1.NEXTVAL, seq_2.CURRVAL, seq_2.NEXTVAL, seq_2.NEXTVAL&lt;br /&gt;
FROM all_objects&lt;br /&gt;
WHERE ROWNUM &lt;= 10;&lt;br /&gt;
&lt;br /&gt;
NEXTVAL CURRVAL NEXTVAL CURRVAL NEXTVAL NEXTVAL&lt;br /&gt;
------- ------- ------- ------- ------- -------&lt;br /&gt;
1       1       1       1       1       1&lt;br /&gt;
2       2       2       3       3       3&lt;br /&gt;
3       3       3       5       5       5&lt;br /&gt;
4       4       4       7       7       7&lt;br /&gt;
5       5       5       9       9       9&lt;br /&gt;
6       6       6      11      11      11&lt;br /&gt;
7       7       7      13      13      13&lt;br /&gt;
8       8       8      15      15      15&lt;br /&gt;
9       9       9      17      17      17&lt;br /&gt;
10      10      10      19      19      19</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/588260206963479553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/588260206963479553'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/04/oracle.html' title='Автоинкрементные поля (счетчики) в Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-7818126993851870440</id><published>2008-04-10T10:06:00.000-07:00</published><updated>2008-04-10T10:10:08.606-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DUAL"/><category scheme="http://www.blogger.com/atom/ns#" term="DUMMY"/><title type='text'>Таблица DUAL и для чего она нужна</title><content type='html'>В Oracle, в отличие от того же MS SQL Server, нельзя сделать запрос &quot;из ниоткуда&quot;.&lt;br /&gt;&lt;br /&gt;SELECT 1;&lt;br /&gt;&lt;br /&gt;SELECT 1&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-00923: FROM keyword not found where expected&lt;br /&gt;&lt;br /&gt;Поэтому в большинстве запросов должна быть ссылка на таблицу или представление. Как правило, для таких запросов используется таблица DUAL. Таблица DUAL - это реальная таблица в схеме SYS, содержащая только одну запись.&lt;br /&gt;&lt;br /&gt;SELECT * FROM DUAL;&lt;br /&gt;&lt;br /&gt;DUMMY &lt;br /&gt;----- &lt;br /&gt;X     &lt;br /&gt;&lt;br /&gt;1 rows selected&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Как можно использовать таблицу DUAL в запросах? К примеру мы хотим получить системное время. Тогда, раз что-то во FROM указывать надо - укажем таблицу DUAL:&lt;br /&gt;&lt;br /&gt;SELECT SYSDATE FROM DUAL;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SYSDATE                   &lt;br /&gt;------------------------- &lt;br /&gt;10.04.08                  &lt;br /&gt;&lt;br /&gt;1 rows selected</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/7818126993851870440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/7818126993851870440'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/04/dual.html' title='Таблица DUAL и для чего она нужна'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6018591205056478049.post-2832241093724798187</id><published>2008-03-27T11:39:00.000-07:00</published><updated>2008-03-28T15:15:25.979-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="relation"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Кодд"/><category scheme="http://www.blogger.com/atom/ns#" term="основы"/><category scheme="http://www.blogger.com/atom/ns#" term="реляционный"/><category scheme="http://www.blogger.com/atom/ns#" term="столбец"/><category scheme="http://www.blogger.com/atom/ns#" term="строка"/><category scheme="http://www.blogger.com/atom/ns#" term="таблица"/><title type='text'>Основные понятия реляционных баз данных (в двух словах)</title><content type='html'>&lt;i&gt;&lt;span&gt;Если Вы уже работали с базами данных, то наверняка уже знаете что такое реляционные БД. В этом случае смело можете пропускать эту статью, ибо ничего нового Вы в ней не узнаете.&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Если же с реляционными СУБД Вы еще не сталкивались, то вкратце рассмотрим основные понятия реляционных баз данных.&lt;br /&gt;Итак, реляционая база данных - это структурированный набор данных, представленный в виде совокупности двумерных таблиц. Вообще, понятие &quot;реляционный&quot; (от relation - отношение) было заложено в работах известного английского специалиста в области систем баз данных Эдгара Кодда еще в 70-е годы прошлого века. Реляционные модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.&lt;br /&gt;Каждая таблица реляционной БД состоит из столбцов (атрибутов) и строк (записей). У каждого столбца таблицы есть своё имя, которое служит его названием, и все значения в одном столбце имеют один тип. Таблицы БД должны содержать первичный ключ. Первичный ключ обозначает поле (столбец) или группу полей таблицы, значение которого (или комбинация значений которых) используется в качестве уникального идентификатора строки (записи) этой таблицы. То есть значение полей столбцов, входящих в первичный ключ, для каждой строки должно быть уникальным.&lt;br /&gt;Также таблица может содержать внешние (вторичные) ключи -  поля таблицы, в которых хранятся значения первичного ключа из другой таблицы. Внешние ключи служат для организации связи между этими таблицами.&lt;br /&gt;Чтобы получить или изменить данные в реляционной БД ей надо отправить запрос. Общепринятым языком, стандартом, на котором пишутся запросы к базе данных, является язык SQL - Structured Query Language (язык структурированных запросов).&lt;br /&gt;Для работы с базами данных используют системы управления базами данных (СУБД). СУБД - это специальная программа, точнее комплекс программ, предназначенный для манипулирования базой данных. Наиболее известные реляционные СУБД - это Oracle, MS SQL Server, IBM DB/2, Sybase, MySQL, PostgreSQL, MS Access и другие. Все из перечисленных СУБД поддерживают работу на языке SQL, но в равной степени. То есть, SQL-запрос, который работает в одной из СУБД не обязательно будет работать в другой. Также некоторые СУБД имеют расширения над языком SQL, как например PL/SQL в Oracle или Transact-SQL в SQL Server. Понятно, что каждая компания гнет свою линию  и программы на таких языках будут не совместимы.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/2832241093724798187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6018591205056478049/posts/default/2832241093724798187'/><link rel='alternate' type='text/html' href='http://oraclestart.blogspot.com/2008/03/blog-post.html' title='Основные понятия реляционных баз данных (в двух словах)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>