<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Напоминалка системного администратора!</title>
	<atom:link href="http://kochetov.org.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://kochetov.org.ua</link>
	<description></description>
	<lastBuildDate>Thu, 23 Feb 2012 07:03:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Oracle. Форматирование и буферизация выходных данных</title>
		<link>http://kochetov.org.ua/2012/02/23/oracle_formatting_buffering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle_formatting_buffering</link>
		<comments>http://kochetov.org.ua/2012/02/23/oracle_formatting_buffering/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 05:30:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=2189</guid>
		<description><![CDATA[     Вероятно, вы уже заметили, что SELECT очень мало заботится о красоте отображаемых записей. Он не выравнивает количество десятичных знаков в числах, обрезает заголовки столбцов по своему усмотрению и настойчиво показывает все содержимое большого текстового столбца в одной строке, независимо от того, насколько широким будет этот столбец на экране. Всего лишь несколько простых команд могут [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">     Вероятно, вы уже заметили, что SELECT очень мало заботится о красоте отображаемых записей. Он не выравнивает количество десятичных знаков в числах, обрезает заголовки столбцов по своему усмотрению и настойчиво показывает все содержимое большого текстового столбца в одной строке, независимо от того, насколько широким будет этот столбец на экране. Всего лишь несколько простых команд могут радикально улучшить внешний вид выходных данных SELECT.</p>
<p style="text-align: justify;">     Секрет заключен в команде COLUMN. Она не взаимодействует с базой данных Oracle. Ее единственная задача — повлиять на способ отображения информации. По этой причине команды COLUMN не требуется завершать точкой с запятой, как стандартные команды SQL.</p>
<p>&nbsp;</p>
<p><strong>Форматирование чисел.</strong></p>
<p style="text-align: justify;">     Обычно с числами требуется осуществлять три действия:<br />
• Выравнивать количество десятичных знаков<br />
• Помещать разделитель между сотнями, тысячами и т.д.<br />
• Добавлять знак денежной единицы</p>
<p>Сначала мы рассмотрим каждое из этих действий в отдельности, а потом скомбинируем их.</p>
<p>&nbsp;</p>
<p><strong>Выравнивание количества десятичных знаков.</strong></p>
<p style="text-align: justify;">     Команда COLUMN, выравнивающая количество десятичных знаков, имеет следующий синтаксис:</p>
<blockquote>
<p style="text-align: justify;">COLUMN имя_столбца FORMAT код_формата</p>
</blockquote>
<p style="text-align: justify;">     Вместо аргумента имя_столбца подставляется имя того столбца, который вы хотите отформатировать. Обратите внимание: здесь не упоминается, какой таблице принадлежит столбец! Команда COLUMN воздействует на все столбцы с указанным именем, независимо от того, в какой таблице они находятся. Впрочем, если два столбца имеют одинаковые имена, они с большой вероятностью содержат похожие данные, и форматирование, примененное к одному из них, обычно имеет смысл и для другого.</p>
<p style="text-align: justify;">     Аргумент код_формата заменяется на представление числа. Это представление содержит по одной цифре &#171;9 &#187; для каждого десятичного знака, который требуется для ваших чисел, а также символ &#171;.&#187; для обозначения десятичного разделителя. (Если в вашей стране целая и дробная части разделяются другим символом, используйте вместо точки букву &#171;D&#187;. В этом случае будет использован десятичный разделитель из национальной конфигурации базы данных.)</p>
<blockquote><p>COLUMN product_price FORMAT 9999.99<br />
SELECT * FROM table1;</p></blockquote>
<p>&nbsp;</p>
<p><strong>Добавления разделителя групп разрядов.</strong></p>
<p style="text-align: justify;">     Разделитель групп разрядов (group separator) — это символ, разделяющий сотни, тысячи и т.д. в пределах числа. Иногда в  столбце вашей таблицы будут содержатся значения, которые будут смотреться лучше при наличии запятой, отделяющей сотни от тысяч. Этого результата можно достичь при помощи того же синтаксиса COLUMN, который использовался для выравнивания количества десятичных знаков; нужно лишь изменить код формата. Это представление содержит по одной цифре &#171;9&#8243; для каждого десятичного знака, который требуется для ваших чисел, а также символ &#171;,&#187; для разделителя групп разрядов.</p>
<blockquote><p>COLUMN quantity_on_hand FORMAT 99,999<br />
SELECT * FROM table1;</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/02/23/oracle_formatting_buffering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle. Более сложные манипуляции с данными</title>
		<link>http://kochetov.org.ua/2012/02/22/oracle_data_manipulation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle_data_manipulation</link>
		<comments>http://kochetov.org.ua/2012/02/22/oracle_data_manipulation/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 11:24:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=2137</guid>
		<description><![CDATA[Ограничение диапазона выбираемых записей.      Одной из наиболее распространенных операций, которые вы будете выполнять при выборе записей из таблицы, является получение определенного подмножества записей. Это подмножество будет постоянно меняться в зависимости от поставленных вопросов (например: &#171;Какие клиенты не получали от меня сообщений более двух недель?&#187; или &#171;Какие товары продавались партиями, содержащими более чем 100 штук [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Ограничение диапазона выбираемых записей.</strong></p>
<p style="text-align: justify;">     Одной из наиболее распространенных операций, которые вы будете выполнять при выборе записей из таблицы, является получение определенного подмножества записей. Это подмножество будет постоянно меняться в зависимости от поставленных вопросов (например: &#171;Какие клиенты не получали от меня сообщений более двух недель?&#187; или &#171;Какие товары продавались партиями, содержащими более чем 100 штук за последние 30 дней?&#187;). Подобная фильтрация записей выполняется путем добавления к оператору SELECT специальной конструкции WHERE. В ней указываются условия (conditions), которым должны удовлетворять отображаемые записи. Синтаксис выглядит следующим образом:</p>
<blockquote><p>SELECT столбцы FROM имя_таблицы WHERE условие(я);</p></blockquote>
<p>&nbsp;</p>
<p><strong>Использование шаблонов.</strong></p>
<p style="text-align: justify;">     При поиске в текстовых столбцах часто возникает потребность отыскать небольшой фрагмент текста в любом месте столбца. Это делается с помощью шаблонов (wildcards), представляющих произвольную часть текста. При поиске текста можно применять шаблоны &#171;_&#187; (для представления одиночных символов) и &#171;%&#187; (для представления группы символов), а также оператор LIKE.</p>
<p>&nbsp;</p>
<p><strong>Сортировка по отдельным столбцам.</strong></p>
<p style="text-align: justify;">Для изменения последовательности вывода записей достаточно добавить к команде SELECT конструкцию ORDER BY. В ней указывается один или несколько столбцов, по которым Oracle будет сортировать записи. Синтаксис конструкции ORDER BY следующий:</p>
<blockquote><p>SELECT * FROM имя_таблицы ORDER BY столбец_сортировки ASC или DESC;</p></blockquote>
<p>где, ASC &#8212; возрастающая сортировка, а DESC &#8212; убывающая сортировка.</p>
<p>&nbsp;</p>
<p><strong>Отображение только уникальных значений.</strong></p>
<p style="text-align: justify;">     Бывают ситуации, когда нужно узнать, какие значения содержит столбец, но при этом желательно увидеть только по одному экземпляру каждого значения для этого используются модификаторы DISTINCT или UNIQUE.</p>
<p style="text-align: justify;">     Выбор уникальных значений похож на выбор обычного списка значений, нужно лишь указать в команде SELECT модификатор DISTINCT или UNIQUE. Модификаторы DISTINCT и UNIQUE дают одинаковый эффект, но DISTINCT более распространен.</p>
<p>&nbsp;</p>
<p><strong>Выбор из DUAL.</strong></p>
<p style="text-align: justify;">     Согласитесь — было бы удобно иметь таблицу, где гарантированно присутствует только одна запись. Светлые головы из Oracle тоже об этом подумали и предусмотрели в процессе установки Oracle создание таблицы с именем DUAL, доступной всем пользователям.</p>
<p>&nbsp;</p>
<p><strong>Модификация данных в таблице.</strong></p>
<p style="text-align: justify;">     Изменить данные в таблице Oracle очень легко. Используемая для этого команда называется UPDATE, а ее синтаксис выглядит следующим образом:</p>
<blockquote><p>UPDATE имя_таблицы SET имя_столбца = новое_значение WHERE условие;</p></blockquote>
<p>&nbsp;</p>
<p><strong>Удаления записей с таблицы.</strong></p>
<p style="text-align: left;">     Последний из фундаментальных навыков, необходимых при работе с таблицами, — это умение удалять записи. Команда DELETE имеет следующий синтаксис:</p>
<blockquote>
<p style="text-align: left;">DELETE FROM имя_таблщы WHERE условие;</p>
</blockquote>
<p>&nbsp;</p>
<p><strong>Удаление всех строк.</strong></p>
<p style="text-align: justify;">     Для этого применяются два способа: использовать команду DELETE, не указывая условие WHERE, или использовать новую для вас команду TRUNCATE (Усечь).</p>
<p>&nbsp;</p>
<p><strong>Усечение таблицы.</strong></p>
<p style="text-align: justify;">     Основное достоинство команды TRUNCATE — скорость. Когда Oracle выполняет эту команду, он не просматривает существующие записи, а просто выбрасывает их. Другой выигрыш от использования этой команды состоит в том, что она автоматически освобождает табличное пространство, которое занимали усеченные записи. Команда TRUNCATE имеет следующий синтаксис:</p>
<blockquote>
<p style="text-align: justify;">TRUNCATE TABLE имя_таблицы;</p>
</blockquote>
<p>&nbsp;</p>
<p><strong>Предупреждение.</strong></p>
<p style="text-align: justify;">     Команда TRUNCATE необратима! Используйте ее только в случае действительной необходимости!</p>
<p>&nbsp;</p>
<p><strong>Управление транзакциями.</strong></p>
<p style="text-align: justify;">     До этого момента вы создавали и удаляли таблицы, вставляли и удаляли записи — короче говоря, делали все, что хотели, не задумываясь о том, как это может повлиять на других пользователей. В реальной жизни вам придется работать с таблицами, содержащими чужие данные, и выполненные вами изменения неизбежно затронут других пользователей. Чтобы отвечать за свои действия, вы должны понимать, каким образом Oracle вносит изменения в базу данных. Это немедленно принесет свою выгоду: в частности, вы научитесь использовать средства отмены (undo), предоставляемые Oracle.</p>
<p>&nbsp;</p>
<p><strong>Отмена транзакций DML.</strong></p>
<p style="text-align: justify;">     Когда вы вставляете, обновляете или удаляете данные, Oracle не выполняет эти изменения немедленно. Вам кажется, что изменения произошли тотчас же, если ввести команду SELECT, они будут отражены в выходных данных. Однако на самом деле изменения хранятся во временной области памяти и будут применены к таблице только в ответ на одну из нескольких специальных команд.</p>
<p style="text-align: justify;">     Отмена в Oracle выполняется с помощью команды ROLLBACK (Откат). Производя откат одной и более транзакций, вы сообщаете Oracle, что они не должны применяться к базе данных. Команда ROLLBACK имеет следующий синтаксис:</p>
<blockquote>
<p style="text-align: justify;">ROLLBACK TO имя_точки _отката;</p>
</blockquote>
<p style="text-align: justify;">     Возможности команды ROLLBACK не ограничиваются только одним уровнем отмены. В сочетании с другой командой, SAVEPOINT, она позволяет возвращаться в любую из предварительно установленных точек. Команда SAVEPOINT имеет следующий синтаксис:</p>
<blockquote>
<p style="text-align: justify;">SAVEPOINT имя_точки_сохранения;</p>
</blockquote>
<p style="text-align: justify;">     Что дает использование нескольких точек возврата? Прежде всего, гибкость. При выполнении большого пакета команд можно устанавливать точки сохранения после каждой логической группы команд, и если следующая группа по какой-то причине даст неудовлетворительный результат, вы всегда сможете вернуться к последней точке и применить лишь те изменения, которые<br />
были выполнены до нее.</p>
<p style="text-align: justify;">     Имена точек сохранения — всего лишь метки, поэтому они могут быть любыми. У вас есть возможность выбирать имена, по которым будет видно, какие данные охватывает каждая точка. Для имен точек сохранения используются соглашения, похожие на соглашения для имен таблиц и столбцов: максимальная длина — 30 символов, а первым символом должна быть буква. Теперь, научившись отменять изменения, вы готовы к тому, чтобы делать их постоянными. Соответствующая команда называется COMMIT (Завершить).<br />
Поскольку она приводит к записи всех ваших изменений в таблицу базы данных (что делает невозможным откат), все точки сохранения, установленные к моменту завершения транзакции, сбрасываются.</p>
<p>&nbsp;</p>
<p><strong>Доступность данных для других пользователей.</strong></p>
<p style="text-align: justify;">     По команде COMMIT изменения записываются в базу данных, разделяемую всеми остальными пользователями, поэтому завершение вашей работывлияет на то, какие данные будут им видны. Доступ к вашим изменениям станет возможен только после выдачи команды COMMIT. Следовательно, вы можете вставить тысячу новых записей, изменить тысячу существующих, еще тысячу удалить, но ни одно из этих изменений не отразится в операторах SELECT других пользователей, пока вы не завершите свою работу командой COMMIT.</p>
<p>&nbsp;</p>
<p><strong>Явное и не явное завершение.</strong></p>
<p style="text-align: justify;">     Выше мы описали команду COMMIT. Однако явный ввод команды—это лишь один из способов завершения изменений в базе данных. Некоторые команды Oracle выполняют завершение предыдущих команд, не дожидаясь ваших указаний, т.е. неявно. Говоря конкретнее, любые команды DDL (например, CREATE TABLE или DROP TABLE) неявно завершают изменение всех не сохраненных данных перед выполнением своих функций. Выход из Oracle также приводит к автоматическому завершению ваших изменений.</p>
<p><strong>Итоги.</strong></p>
<p style="text-align: justify;">     Сначала вы узнали, как с помощью конструкции WHERE оператора S ELECT ограничить диапазон записей, возвращаемых Oracle. При фильтрации можно использовать разнообразные операторы сравнения, включая =, !=, &lt;&gt;, &gt;, &lt;,  &gt;=, &lt;=, BETWEEN и NOT. Вы также научились создавать объединенные условия, разделяя их словом AND, и условия &#171;или&#187;, разделенные словом OR. Если требуется выбрать записи, содержащие любое значение из некоторого множества, то вместо многочисленных конструкций OR можно использовать функцию IN.</p>
<p style="text-align: justify;">     При поиске текста можно применять шаблоны &#171;_&#187; (для представления одиночных символов) и &#171;%&#187; (для представления группы символов), а также оператор LIKE. Чтобы найти записи с пустыми столбцами любого типа или, наоборот, избежать их вывода, нужно указать в конструкции WHERE оператор IS NULL или IS NOT NULL.</p>
<p style="text-align: justify;">     Добившись от оператора SELECT вывода именно тех записей, которые вам нужны, можно изменить порядок их отображения, добавив конструкцию ORDER BY. В ней указывается столбец (или столбцы), по которому должны сортироваться записи на экране. (Помните, что ORDER BY изменяет только порядок вывода записей, а не их фактическое расположение в таблице, так как последнее заняло бы слишком много времени.) Как правило, крайний левый из отображаемых столбцов следует делать первым столбцом сортировки, следующий отображаемый столбец — вторым, и т. д. В противном случае другим пользователям будет трудно понять, как отсортированы записи.</p>
<p style="text-align: justify;">     Бывают ситуации, когда нужно узнать, какие значения содержит столбец, но при этом желательно увидеть только по одному экземпляру каждого значения. Этого можно достичь, добавив модификатор DISTINCT сразу после ключевого слова SELECT. Вы можете в реальном времени выполнять вычисления с данными, не содержащимися в таблице, выбирая значения из DUAL.</p>
<p style="text-align: justify;">     Когда дело доходит до модификации данных в таблице, применяется команда UPDATE. В ней вы указываете таблицу, подлежащую обновлению, значения столбцов, а затем задаете условие, которому должна удовлетворять запись для обновления. Условие WHERE играет очень важную роль, поскольку при его отсутствии будет обновлена каждая запись! То же самое справедливо и при удалении записей по команде DELETE: если опустить конструкцик) WHERE, вы удалите все записи таблицы. Если ваша цель в этом и состоит, лучше использовать команду TRUNCATE TABLE, которая не считывает каждую запись таблицы перед ее удалением и поэтому работает гораздо быстрее.<br />
В Oracle есть средства отмены в виде группы команд, относящихся к категории &#171;управление транзакциями&#187;. Наиболее важна команда ROLLBACK, отменяющая любые команды DML (INSERT, UPDATE и DELETE), выполненные с момента последнего завершения. Явное завершение выполняется при вводе команды COMMIT. Неявное завершение происходит при выполнении любой из операций DDL (в частности, CREATE и DROP), а также при выходе из Oracle.</p>
<p style="text-align: justify;">     Точки сохранения обеспечивают возможность многоуровневой отмены — иначе говоря, позволяют вам решать, на какое количество команд DML выполнить откат. Выдавая команду SAVEPOINT, вы устанавливаете именованный маркер, к которому можно будет вернуться по команде ROLLBACK. Точки сохранения остаются активными до завершения изменений данных; после этого они исчезают. Измененные данные становятся видимы другим пользователям и программам, работающим с базой данных Oracle, только после завершения изменений. (Непонимание этого факта может легко привести к недоразумению. Например, кто-то вставляет, обновляет или удаляет данные, а потом удивляется, почему изменения не видны на компьютерах его коллег. Обычно это означает, что пользователь забыл завершить свои изменения.)</p>
<p>&nbsp;</p>
<p><strong>Примеры.</strong></p>
<p><strong>1.</strong> Выбрать записи из таблицы table1, где поле product_price&gt;=50 и product_price&lt;=100:</p>
<blockquote><p>SELECT * FROM table1 WHERE product_price&gt;=50 AND product_price&lt;=100;</p></blockquote>
<p>или</p>
<blockquote><p>SELECT * FROM table1 WHERE product_price BETWEEN 50 AND 100;</p></blockquote>
<p><strong>2.</strong> Выбрать записи из таблицы table1, поля  которых не входят в диапазон product_price&gt;=50 и product_price&lt;=100:</p>
<blockquote><p>SELECT * FROM table1 WHERE product_price&lt;50 OR product_price&gt;100;</p></blockquote>
<p>или</p>
<blockquote><p>SELECT * FROM table1 WHERE product_price NOT BETWEEN 50 AND 100;</p></blockquote>
<p><strong>3.</strong> Выбрать записи из таблицы table1, где поле product_name содержит любое значение из группы (&#8216;SmallWidget&#8217;, &#8216;MediumWidget&#8217;, &#8216;ChromePhoobar&#8217;):</p>
<blockquote><p>SELECT * FROM table1 WHERE product_name=&#8217;SmallWidget&#8217; OR product_name=&#8217;MediumWidget&#8217; OR product_name=&#8217;ChromePhoobar&#8217;;</p></blockquote>
<p>или</p>
<blockquote><p>SELECT * FROM table1 WHERE product_name IN (&#8216;SmallWidget&#8217;, &#8216;MediumWidget&#8217;, &#8216;ChromePhoobar&#8217;);</p></blockquote>
<p><strong>4.</strong> Выбрать данные из таблицы table1, где поле product_name содержит, сначала пять любых символов, далее слово Chrome и еще любой набор символов:</p>
<blockquote><p>SELECT * FROM table1 WHERE product_name LIKE &#8216;_____Chrome%&#8217;;</p></blockquote>
<p><strong>5.</strong> Выбрать данные из таблицы table1 и отсортировать по убыванию по полю product_price:</p>
<blockquote><p>SELECT * FROM table1 ORDER BY product_price DESC;</p></blockquote>
<p><strong>6.</strong> Выбрать уникальные значения из таблицы table1:</p>
<blockquote><p>SELECT  DISTINCT * FROM table1;</p></blockquote>
<p><strong>7.</strong> Переименовать все товары в таблице table1, поле product_name с SmallWidget в LargeWidget:</p>
<blockquote><p>UPDATE table1 SET product_name = &#8216;LargeWidget&#8217; WHERE product_name = &#8216;SmallWidget&#8217;;</p></blockquote>
<p><strong>8.</strong> Удалить все данные из таблицы table1, где поле product_name SmallWidget:</p>
<blockquote><p>DELETE FROM table1 WHERE product_name=&#8217;SmallWidget&#8217;;</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/02/22/oracle_data_manipulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle. Сохранение и выборка данных</title>
		<link>http://kochetov.org.ua/2012/02/21/oracle_database_save_select/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle_database_save_select</link>
		<comments>http://kochetov.org.ua/2012/02/21/oracle_database_save_select/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 06:00:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1998</guid>
		<description><![CDATA[Именование таблиц и столбцов.      Присваивая имена таблицам и столбцам, вы должны следовать определенным правилам. Некоторые из них носят обязательный характер, тогда как другие представляют собой рекомендации, помогающие придать таблицам профессиональный вид. Правила.      Перечисленные ниже правила обязательны для любой таблицы или столбца. Постарайтесь запомнить их прямо сейчас, чтобы впоследствии не тратить время на поиск [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Именование таблиц и столбцов.</strong></p>
<p style="text-align: justify;">     Присваивая имена таблицам и столбцам, вы должны следовать определенным правилам. Некоторые из них носят обязательный характер, тогда как другие представляют собой рекомендации, помогающие придать таблицам профессиональный вид.</p>
<p><strong>Правила.</strong></p>
<p style="text-align: justify;">     Перечисленные ниже правила обязательны для любой таблицы или столбца. Постарайтесь запомнить их прямо сейчас, чтобы впоследствии не тратить время на поиск ошибок, связанных с ненамеренным нарушением одного или нескольких из них. (Стоит переписать эти правила на лист бумаги и держать его перед собой во время упражнений с SQL):</p>
<p style="text-align: justify;">• Максимальная длина имени таблицы или столбца равна 30 символам.<br />
• Имена таблиц и столбцов могут содержать буквы, цифры и символ подчеркивания (_). (Есть еще пара специальных символов, которые можно использовать в случае острой необходимости, но в обычной работе это не принесет ничего, кроме проблем, поэтому лучше ограничиться буквами, цифрами и символом подчеркивания.<br />
• Имена таблиц и столбцов должны начинаться с буквенного символа. Имя может содержать цифры или символы подчеркивания, но в любом случае должно начинаться с буквы.<br />
• Символы верхнего и нижнего регистров в именах таблиц и столбцов считаются одинаковыми.<br />
• Имя таблицы или столбца не должно содержать пробелы.<br />
• В Oracle таблицы присваиваются пользователям; по умолчанию они присваиваются тому пользователю, который их создал . Каждая из таблиц должна иметь имя, отличное от имен других таблиц этого пользователя. Иными словами, у пользователя не может быть двух таблиц с одним и тем же именем. (Однако разные пользователи могут без проблем создавать таблицы с одинаковыми именами.) Все столбцы в пределах таблицы должны иметь уникальные имена.<br />
• Некоторые слова представляют собой команды и параметры Oracle, a следовательно, не могут использоваться в качестве имен таблиц или столбцов.</p>
<blockquote>
<p style="text-align: justify;"><strong>Совет.</strong></p>
<p style="text-align: justify;">     Единственный способ гарантировать, что имя таблицы никогда не совпадет с зарезервированным словом Oracle, — это предварять его аббревиатурой, обозначающей систему, к которой относится таблица. Например, в системе Accounts Payable (&#171;счета кредиторов&#187;) имя каждой таблицы может начинаться с &#171;AP_&#187;.</p>
</blockquote>
<p>&nbsp;</p>
<p><strong>Рекомендации.</strong></p>
<p style="text-align: justify;">     Перечисленные ниже пункты полезно учитывать при проектировании таблиц.<br />
• Имена таблиц следует записывать в единственном, а не множественном числе. Всем и так понятно, что таблица PRODUCT будет содержать записи о многих товарах, поэтому нет необходимости отмечать это в имени таблицы. К тому же, глядя на диаграммы с таблицами базы данных (они рассматриваются в главе 7), вы сможете переходить от таблицы к таблице, говоря себе примерно следующее: &#171;PURCHASE ORDER ссылается на PRODUCT&#8230;&#187;.<br />
• Не включайте слова TABLE или DATA в имя таблицы. Опытные пользователи понимают, что объектом базы данных, хранящим информацию, является таблица, а таблицы содержат данные. Не нужно напоминать им об этом.</p>
<p>&nbsp;</p>
<blockquote><p><strong>Совет.</strong></p>
<p style="text-align: justify;">     При определении столбца типа CHAR можно не указывать его длину. В этом случае будет использована длина по умолчанию, равная 1. Однако определение столбца без явного указания длины считается проявлением небрежности. Указывайте длину столбца во всех случаях, даже если она равна 1.</p>
</blockquote>
<p>&nbsp;</p>
<p style="text-align: justify;"><strong>Как в Oracle хранится текст.</strong></p>
<p style="text-align: justify;">     Для начала нужно выяснить, что в базе данных считается текстом. Это не всегда очевидно, поскольку некоторые текстовые столбцы используются только для хранения чисел.</p>
<p style="text-align: justify;">     Текстовый столбец может содержать буквы, цифры, пробелы и специальные символы — все, что можно ввести с клавиатуры. Когда в текстовый столбец вводится число, оно также рассматривается как текст. Числа в текстовых столбцах невозможно складывать, усреднять или выполнять над ними какие-либо другие математические операции. (Правда, есть функции, позволяющие преобразовывать числа из текстовых столбцов в числа, пригодные для вычислений, но пока мы не будем касаться этой темы).</p>
<p style="text-align: justify;">     Для чего может потребоваться помещать число в текстовый столбец, если с ним нельзя проводить вычисления? Дело в том, что в ряде случаев числа используются не только для вычислений. Пример — телефонные номера. Возьмем такой номер:<br />
(800)555-1212.</p>
<blockquote>
<p style="text-align: justify;"><strong>Совет.</strong></p>
<p style="text-align: justify;">     Как определить, какой столбец использовать для хранения чисел — текстовый или числовой? Подумайте, будете ли вы когда-нибудь выполнять над этими числами математические операции (например, сложение или усреднение). Если да, то используйте числовой столбец. В противном случае более подходящим может оказаться текстовый столбец.</p>
</blockquote>
<p>&nbsp;</p>
<p><strong>Как Oracle сохраняет числа.</strong></p>
<p style="text-align: justify;">     Для определения столбцов, в которых будут храниться только числа, используется тип данных NUMBER. При определении столбца типа NUMBER также указывается, сколько цифр должен хранить столбец. Эта спецификация может состоять из двух частей: количества цифр до десятичной точки и количества цифр после десятичной точки.</p>
<p style="text-align: justify;">     Тип данных NUMBER позволяет хранить поистине огромные числа: наибольшее значение составляет 999999999999999999999999999 999 999 999 990 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000. Число цифр после десятичной точки может достигать 127. Такой диапазон значений рассчитан на промышленное применение и является одной из черт, отличающих серьезные базы данных, такие, как Oracle, от офисных продуктов, к которым относятся электронные таблицы.</p>
<p>&nbsp;</p>
<p><strong>Как Oracle сохраняет даты.</strong></p>
<p style="text-align: justify;">     С датами, хранимыми в виде текста, проводить вычисления нельзя, поскольку в текстовом представлении они не имеют числовых значений. Это просто строки символов, которые мы, люди, интерпретируем как даты. Для вычислений с датами их нужно как-то преобразовать в числа. Поскольку большинство таких вычислений включает подсчет дней, самый удобный подход — присвоить каждому дню уникальный номер так, чтобы номер завтрашнего дня был на единицу больше номера сегодняшнего дня. Если теперь вычесть более раннюю дату из более поздней, разность будет равна числу дней между ними. Такой способ счета дней существует давно: это юлианский календарь. Когда система использует юлианский календарь, начальному дню присваивается номер 1, следующий за ним называется днем 2 и т. д. Поскольку каждый последующий день увеличивает счетчик на единицу, календарь такого типа идеально подходит для вычислений с датами. Oracle поддерживает юлианский календарь, где начальной датой является 1 января 4712 г. до н.э. Преобразование дат между визуальным форматом (например, &#8217;08-MAY-2004&#8242;) и его юлианским эквивалентом производится автоматически. Мы просто вводим даты в привычном текстовом представлении, затем Oracle преобразует их в свой внутренний, юлианский, формат, а при выборке этих дат из таблицы они снова отображаются виде дней, месяцев и лет. Нам никогда не потребуется просматривать даты в юлианском формате.</p>
<p><strong>Примечание.</strong></p>
<p style="text-align: justify;">     В SQL-операторах даты должны заключаться в одиночные кавычки, как и текстовые строки.</p>
<p>&nbsp;</p>
<p><strong>Определение структуры таблицы.</strong></p>
<p style="text-align: justify;">     Создавая свою собственную таблицу, вы знаете ее структуру&#8230; до поры до времени. Потом вам придется заниматься другими вещами, и вы забудете подробности того, что делали раньше. Если же таблицу создал кто-то другой, вы вообще не имеете представления об ее структуре. Следовательно, нужно иметь возможность определять структуру существующей таблицы. Вероятно, вас не очень удивит известие о том, что в Oracle есть команда, предназначенная имен но для этой цели. Она называется DESCRIBE (сокращенно — DESC) и имеет следующий синтаксис:</p>
<blockquote><p>DESC имя_таблицы</p></blockquote>
<p style="text-align: justify;">     Это одна из немногих команд, которые не требуется завершать точкой с запятой. С другой стороны, наличие точки с запятой ничему не повредит, так что можете ее ставить — просто для закрепления привычки.</p>
<p>&nbsp;</p>
<p><strong>Столбцы NULL и NOT NULL.</strong></p>
<p style="text-align: justify;">     При разработке таблиц для хранения информации определенного назначения (давайте вместо слова &#171;назначение&#187; употребим &#171;приложение&#187;) вы можете в довольно широких пределах контролировать, что может, а что не может попа- дать в эти таблицы. Коль скоро вам предоставлена такая возможность, на вас ложится ответственность за ее использование таким образом, чтобы обеспечить максимально возможное качество данных в таблицах. Одним из решений, которые следует принять в первую очередь, является решение о том, какие столбцы записи должны содержать данные, а какие могут оставаться пустыми.</p>
<p>&nbsp;</p>
<p><strong> Примечание.</strong></p>
<p style="text-align: justify;">     Отдельные единицы информации (например, имя и зарплата) на языке баз данных называются атрибутами. Атрибуты непосредственно связаны со столбцами таблицы. Столбец — это средство физического хранения, тогда как атрибут представляет собой содержимое столбца.</p>
<p>&nbsp;</p>
<p><strong>Математические операторы.</strong></p>
<p style="text-align: justify;">     На техническом языке математические символы, обозначающие операции, называются операторами (operators). Например, знаки плюса и минуса — это операторы. Oracle поддерживает четыре стандартные арифметические операции — сложение, вычитание, умножение и деление. Умножение обозначается звездочкой (*). Для деления используется символ /, а для сложения и вычитания — символы + и -, соответственно.</p>
<p>&nbsp;</p>
<p><strong>Что такое выражение?</strong></p>
<p style="text-align: justify;">     В Oracle термин выражение (expression) имеет различные значения. В нашем случае он обозначает часть команды, состоящую из одного и более имен столбцов, NULL, введенных вами значений (таких, как числа, которые также называются константами, поскольку они фиксированы), или любой комбинации этих членов, соединенных математическими операторами.</p>
<p>&nbsp;</p>
<p><strong>Приоритеты операторов.</strong></p>
<p style="text-align: justify;">     Когда выражение содержит более одного математического оператора, Oracle применяет правила, определяющие порядок выполнения операций. Умножение, деление и любые операции в скобках выполняются в первую очередь, слева направо. Затем выполняются сложение и вычитание, также слева направо. Многие забывают, какие математические операции выполняются в первую очередь, если вообще когда-либо это знали. По этой причине следует явно указывать в выражениях порядок вычислений, используя скобки. Заключите в скобки часть выражения, которая должна вычисляться в первую очередь, и ни у кого не возникнет вопросов о порядке операций.</p>
<p>&nbsp;</p>
<p style="text-align: justify;"><strong>Соединение двух и более частей текста.</strong></p>
<p style="text-align: justify;">     При работе с базами данных часто возникают ситуации, когда желательно показать содержимое двух и более текстовых столбцов в одной строке, продолжая хранить части текста в разных столбцах. Например, на почтовой наклейке в одной строке указываются имя, фамилия, город, штат и почтовый индекс (или аналогичная информация, принятая в вашей стране), но изначально эти данные хранятся в разных столбцах таблицы. Соединение двух частей текста называется конкатенацией (concatenation). Чтобы указать на необходимость соединения двух столбцов в операторе SELECT, нужно поместить между их именами две вертикальные черты (||).</p>
<p>&nbsp;</p>
<p><strong>Присваивания столбцам псевдонимов.</strong></p>
<p style="text-align: justify;">     Как вы могли заметить, в результате последней команды заголовок столбца совсем &#171;отбился от рук&#187;. По умолчанию заголовками столбцов служат их имена. Однако при выполнении оператора SELECT, в котором используется конкатенация столбцов, в качестве заголовка отображается все выражение. Обычно это выглядит непривлекательно и редко приносит пользу. SQL позволяет определить, что будет помещено на вершине столбца, выбранного оператором SELECT. Все, что для этого нужно, — ввести после имени столбца (или выражения) текст, который вы хотите видеть в качестве заголовка.</p>
<p style="text-align: justify;">     Имя-заменитель, которое вы указываете для столбца, называется псевдонимом столбца (alias). Если заключить псевдоним в двойные кавычки, в нем можно будет использовать пробелы и буквы нижнего регистра. (Двойные кавычки необходимы для того, чтобы Oracle не пытался интерпретировать псевдоним как имя столбца, подлежащего выборке.)</p>
<p>&nbsp;</p>
<p><strong>Итоги.</strong></p>
<p style="text-align: justify;">     Имя таблицы или столбца может иметь длину до 30 символов. Оно должно начинаться с буквы и может содержать буквы, цифры и ограниченный набор специальных символов, наиболее полезным из которых является символ подчеркивания &#171;_&#187; позволяющий визуально разделять слова в имени. Пробелы в именах таблиц и столбцов недопустимы. Oracle рассматривает символы верхнего и нижнего регистров как одинаковые.</p>
<p style="text-align: justify;">     Определенное количество слов зарезервировано и не может использоваться в качестве имен таблиц или столбцов. В частности, к ним относятся команды (например, CREATE) и имена объектов (например, ROW). Зарезервированных слов слишком много, и запомнить их все большинству людей не под силу. Случайно употребив одно из них, вы сразу узнаете об этом, поскольку вместо нормального завершения команды Oracle выдаст сообщение об ошибке с фразой &#171;Invalid table name&#187; или &#171;Invalid column name&#187;. Если проблема связана с именем таблицы, добавьте в начале имени аббревиатуру, обозначающую систему, частью которой является таблица (например, AP_ADMIN вместо ADMIN). Если проблема связана с именем столбца, добавьте к имени одно-два слова, чтобы лучше описать содержимое столбца.</p>
<p style="text-align: justify;">     Создавая любую таблицу, вы автоматически становитесь ее владельцем. Все принадлежащие вам таблицы должны иметь уникальные имена; у вас не может быть двух таблиц с одним и тем же именем. (Однако имена таблиц, принадлежащих двум разным пользователям Oracle, могут совпадать.) Каждый столбец в пределах одной таблицы должен иметь уникальное имя. В разных таблицах могут использоваться одни и те же столбцы.</p>
<p style="text-align: justify;">     Имена таблиц лучше всего записывать в единственном, а не множественном числе: например, таблицу служащих следует назвать EMPLOYEE, а не EMPLOYEES. Кроме того, не нужно включать в имя таблицы слова TABLE и DATA, поскольку все, о чем они сообщают, следует из самого факта работы с таблицей. При создании таблицы вы должны указать тип данных и длинукаждого столбца. Таблицы Oracle могут хранить любые разновидности данных — текст, числа, даты, изображения, звуковые файлы и т. д. Каждый тип данных имеет определенный набор свойств. Самые распространенные типы данных таблицы — это текст, числа и даты.</p>
<p style="text-align: justify;">     Текстовый столбец может содержать буквы, цифры, пробелы и специальные символы — все, что можно ввести с клавиатуры. Когда в текстовый столбец вводится число, оно также рассматривается как текст. Числа в текстовых столбцах невозможно складывать, усреднять или выполнять над ними какие-либо другие математические операции. В текстовые столбцы обычно помещаются числа, содержащие нецифровые символы — знаки математических операций, буквенные символы или пробелы. Широко известными примерами текстовых значений, содержащих большое количество чисел, являются телефонные номера, номера социального обеспечения и счетов. Если числовое значение никогда не предполагается использовать в математических операциях, оно является хорошим кандидатом на помещение в текстовый столбец.</p>
<p style="text-align: justify;">     Существуют два основных типа текстовых столбцов: с фиксированной и переменной длиной. Для создания столбца фиксированной длины нужно указать в команде CREATE TABLE тип данных CHAR. Длина текста в столбцах CHAR всегда равна длине, указанной в объявлении столбца. Более короткие данные дополняются пробелами. Это может привести к бесполезной трате места, поэтому столбцы CHAR уместны только в тех случаях, когда все данные будут иметь одинаковую длину, как, например, обозначения пола или коды штатов.</p>
<p style="text-align: justify;">     Большинство текстовых столбцов будут содержать данные переменной длины, и здесь следует использовать тип VARCHAR2. Если длина текста, который вы намереваетесь хранить в столбце, превышает 2000 символов (это максимум для типа VARCHAR2), можно воспользоваться типом LONG, который позволяет хранить до двух миллиардов символов в одном поле.</p>
<p style="text-align: justify;">     Текстовое значение обычно называется строкой. В SQL-командах строки всегда заключаются в одиночные кавычки. Простой текст, содержащий только те символы, которые можно найти на клавиатуре (без символов форматирования, вставляемых текстовыми процессорами и электронными таблицами), часто называется ASCJI-текстом. (ASCII — это сокращение от American Standard Code for Information Interchange.) Стандарт ASCII предназначен для приведения информации к &#171;общему знаменателю&#187;, чтобы обеспечить ее перенос между компьютерами.</p>
<p style="text-align: justify;">     Для числовых столбцов в отличие от текстовых Oracle предлагает всего один базовый тип данных с названием NUMBER. При создании числового столбца вы просто указываете максимальное количество цифр, которое он может содержать, вместе с требуемым количеством цифр после запятой. Наибольшее число, которое можно хранить, составляет 999 999 999 999 999 999 999 999 999 999 999 999 990 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000.</p>
<p style="text-align: justify;">     Для хранения даты и времени Oracle предоставляет тип данных DATE. Значения дат (которые, как и любой текст, заключаются в одиночные кавычки) при сохранении преобразуются в юлианские даты. Преобразование дат между визуальным форматом (например, &#8217;08-MAY-2004&#8242;) и его юлианским эквивалентом производится автоматически. Мы просто вводим даты в привычном текстовом представлении, затем Oracle преобразует их в свой внутренний, юлианский, формат, а при выборке этих дат из таблицы они снова будут отображены в виде дней, месяцев и лет. Нам никогда не потребуется просматривать даты в юлианском формате.</p>
<p style="text-align: justify;">     Тип данных DATE можно использовать для вычислений с датами. Например, чтобы получить дату, отстоящую на неделю от некоторой известной даты, нужно просто добавить 7 к этой известной дате. Oracle также проверяет достоверность дат; например, если кто-то попытается вставить дату 29 февраля 2002 г. в столбец с датами, то Oracle не позволит это сделать, поскольку 2002 г. не является високосным, а следовательно, не содержит 29 дней в феврале.</p>
<p style="text-align: justify;">     Время хранится в виде десятичной дроби, показывающей, какая часть дня прошла к этому моменту. Например, если некоторому дню соответствует юлианская дата 33333, то время 18:00 этого дня будет сохранено как 33333.75 (.75<br />
показывает, что к 18:00 прошло 75% дня).</p>
<p style="text-align: justify;">     После изучения самых распространенных типов данных Oracle вы познакомились с тем, как использовать команду DESC для просмотра структуры существующей таблицы. Вы также узнали, что в команде CREATE TABLE можно указать спецификацию NOT NULL для любого столбца (или всех столбцов), в результате чего вставка или обновление записей будут возможны только при указании значений для этих столбцов.</p>
<p style="text-align: justify;">     При добавлении или изменении данных в таблицах, столбцы которых допускают null-значения, можно избежать ввода значения в столбец, если указать NULL в том месте SQL-оператора, где должно находиться значение столбца. Пропустить столбцы в команде INSERT можно и другим способом — явно перечислить все заполняемые столбцы, не указывая те, в которые не предполагается вводить данные. Чтобы вставить данные с апострофами при помощи программы SQL*Plus, предварите команду INSERT командой SET SCAN OFF. Закончив вставку данных с апострофами, введите команду SET SCAN ON, что бы вернуть систему в нормальный режим.</p>
<p style="text-align: justify;">     Затем вы изучили ряд более сложных способов просмотра данных в таблице. Чтобы указать, какие из столбцов таблицы должны быть выведены, перечислите в операторе SELECT их имена вместо звездочки, обозначающей все столбцы. Чтобы просмотреть столбцы в другом порядке, просто перечислите их в этом порядке, когда будете писать команду SELECT.</p>
<p style="text-align: justify;">     Для проведения вычислений с данными, хранимыми в таблице, включите в оператор SELECT математические операторы, используя имена нужных столбцов в качестве переменных. Полученное выражение, имеющее вид математической формулы, будет давать ответы на основе табличных данных. Если формула содержит более одного оператора, при ее написании необходимо обращать внимание на приоритет операторов, т.е. на последовательность, в которой Oracle выполняет операции. Умножение, деление и любые операции в скобках выполняются в первую очередь, слева направо. Затем выполняются сложение и вычитание, также слева направо. Для управления порядком вычислений лучше всего использовать скобки. Заключите в скобки часть выражения, которая должна вычисляться в первую очередь, и ни у кого не возникнет вопросов о порядке операций.</p>
<p style="text-align: justify;">     Если вы хотите сложить не числа, а текстовые строки (иначе говоря, выполнить конкатенацию двух текстовых столбцов), поместите между именами столбцов в операторе SELECT две вертикальные черты (||). Чтобы разделить две<br />
части текста пробелом, поместите между именами столбцов комбинацию || &#8216; &#8216; ||. В результате этих действий заголовок столбца может оказаться слишком длинным и неудобным для чтения. В таком случае следует присвоить столбцу псевдоним, указав его после выражения, содержащего оператор конкатенации.</p>
<p>&nbsp;</p>
<p style="text-align: justify;"><strong>Примеры.</strong></p>
<p style="text-align: justify;"><strong>1.</strong> Создадим таблицу table1:</p>
<blockquote>
<p style="text-align: justify;">CREATE TABLE &#171;table1&#8243;<br />
(<br />
&#171;product_name&#187;  VARCHAR2(25) NOT NULL,<br />
&#171;product_price&#187; NUMBER(4,2) NOT NULL,<br />
&#171;product_date&#187; DATE<br />
);</p>
</blockquote>
<p style="text-align: justify;"><strong>2.</strong> Вставим данные в таблицу table1:</p>
<blockquote>
<p style="text-align: justify;">INSERT INTO &#171;table1&#8243; VALUES (&#8216;ProductName1&#8242;, 1, &#8217;5-NOV-2000&#8242;);<br />
INSERT INTO &#171;table1&#8243; VALUES (&#8216;ProductName2&#8242;, 2.5, &#8217;29-JUN-2001&#8242;);<br />
INSERT INTO &#171;table1&#8243; VALUES (&#8216;ProductName3&#8242;, 50.75, &#8217;10-DEC-2002&#8242;);<br />
INSERT INTO &#171;table1&#8243; VALUES (&#8216;ProductName4&#8242;, 1, NULL);</p>
</blockquote>
<p style="text-align: justify;"><strong>3.</strong> Выберем все поля (столбцы)  из таблицы table1:</p>
<blockquote>
<p style="text-align: justify;">SELECT * FROM &#171;table1&#8243;;</p>
</blockquote>
<p style="text-align: justify;"><strong>4.</strong> Выберем некоторые поля из таблицы table1:</p>
<blockquote>
<p style="text-align: justify;">SELECT product_name, product_price FROM &#171;table1&#8243;;</p>
</blockquote>
<p style="text-align: justify;"><strong>5.</strong> Удалим таблицу table1:</p>
<blockquote><p>DROP TABLE &#171;table1&#8243;;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/02/21/oracle_database_save_select/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Введение в базы данных</title>
		<link>http://kochetov.org.ua/2012/02/20/database_introduction/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=database_introduction</link>
		<comments>http://kochetov.org.ua/2012/02/20/database_introduction/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 09:01:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1960</guid>
		<description><![CDATA[Что такое база данных?      В самом простом виде база данных представляет собой список с информацией (или множество связанных списков). Система управления базами данных (СУБД) — это специализированная программа-менеджер, управляющая таким списком.      Базы данных присутствуют в повседневной жизни почти каждого человека. Например, телефонный справочник — это представление базы данных на бумаге. Он содержит определенную [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Что такое база данных?</strong></p>
<p style="text-align: justify;">     В самом простом виде база данных представляет собой список с информацией (или множество связанных списков). Система управления базами данных (СУБД) — это специализированная программа-менеджер, управляющая таким списком.</p>
<p style="text-align: justify;">     Базы данных присутствуют в повседневной жизни почти каждого человека. Например, телефонный справочник — это представление базы данных на бумаге. Он содержит определенную информацию о людях, упорядоченную таким образом, чтобы вы могли быстро находить нужные сведения. Если в справочнике есть раздел со списками коммерческих организаций, часто называемый &#171;желтыми страницами&#187;, информация в этом разделе упорядочена по виду их деятельности, а в пределах каждого вида деятельности — по названиям организаций.</p>
<p>&nbsp;</p>
<p><strong>Таблицы.</strong></p>
<p style="text-align: justify;">     Базы данных всегда разрабатываются для хранения информации определенного типа. Например, в случае телефонного справочника это информация о людях (на белых страницах) и о коммерческих организациях (на желтых страницах). Для хранения такой информации база данных в общем случае должна иметь две таблицы: одну для людей, а другую для организаций. Каждая из них будет во многом похожа на электронную таблицу (spreadsheet), имея по одному столбцу для каждого типа хранимой информации (имени, адреса, номера и т.д.) и по одной строке для каждого физического лица или организации.</p>
<p>&nbsp;</p>
<p><strong>Одновременное обслуживание многих пользователей.</strong></p>
<p style="text-align: justify;">     Базы данных лежат в основе деятельности многих компаний, поэтому они должны обеспечивать одновременный доступ к одной и той же информации для большого числа людей. Чтобы понять, почему это важно, представьте сеть розничных магазинов, в которых установлена сотня компьютеризированных кассовых аппаратов. В день активных продаж многие из этих аппаратов будут выполнять транзакции в одно и то же время. Если вам придется простоять у кассы, ожидая завершения всех остальных транзакций, вы наверняка будете разочарованы и больше не придете в этот магазин. Точно так же поступит множество других покупателей, и компания понесет убытки. Системы более крупного масштаба, например, для бронирования авиабилетов, могут ежесекундно иметь дело с тысячами запросов, и если каждому из них придется ожидать выполнения всех остальных, то такая система будет раздражающе медлительной.<br />
Способность обслуживать большое количество одновременно работающих пользователей является одним из ключевых свойств базы данных. Хорошо спроектированная база данных может одновременно отвечать на запросы тысяч и даже миллионов пользователей при сохранении удовлетворительной производительности.</p>
<p>&nbsp;</p>
<p><strong>Безопасность.</strong></p>
<p style="text-align: justify;">     Базы данных содержат часть самой важной информации компаний например размеры зарплат, сведения о клиентах, графики выполнения проектов. Если эта информация будет уничтожена, изменена, открыта для сотрудников или конкурентов, последствия могут варьироваться от легкого замешательства до полного краха бизнеса. В силу этого базы данных имеют исключительно надежные системы безопасности. Пароли никогда не хранятся в легко читаемых текстовых файлах, все зашифровано, включая ту информацию, которая пересылается между базой данных и компьютером пользователя при его входе в систему. Но даже легальный пользователь базы данных не обязательно получит доступ ко всему ее содержимому. Пользователям могут предоставляться привилегии только на определенные таблицы, и ни на какие другие. Можно даже сделать так, что одни столбцы таблицы будут видны всем, а другие — только определенной группе пользователей. Кроме того, базе данных можно дать указание фильтровать строки таблицы, чтобы часть пользователей видела только определенные строки, а остальные могли просматривать все. Функции средств безопасности базы данных этим не ограничиваются. Помимо контроля за видимостью информации, база данных позволяет указать, кто может вводить, обновлять или удалять сведения. Это помогает гарантировать, что люди, в служебные обязанности которых не входит изменение или<br />
удаление данных, не смогут сделать это по ошибке (или намеренно).</p>
<p>&nbsp;</p>
<p><strong>История SQL.</strong></p>
<p style="text-align: justify;">     Небольшой экскурс в историю позволит получить лучшее представление об изучаемом предмете. История SQL развивалась параллельно с историей реляционных баз данных. В1969 г. д-р Эдгар Ф. Кодд опубликовал в серии исследовательских отчетов IBM сообщение под названием Derivability, Redundancy, and Consistency of Relations Stored in Large Data Banks. Там описывался подход к структурированию баз данных, основанный на использовании связанных таблиц, который значительно отличался от принятого в то время подхода с плоскими файлами. Это сообщение имело пометку &#171;для ограниченного распространения&#187; и поэтому не получило широкой известности. Кодд переработал свои концепции и в 1970 г. опубликовал их в статье под названием A Relational Model of Data for Large Shared Data Banks в журнале ACM (Association of Computer Machinery). Реляционная модель, описанная Коддом, в 1974 г. была использована в прототипе реляционной системы управления базами данных (РСУБД), названной System R. Описывая системный язык запросов в ноябрьском номере IBM Journal ofR&amp;D за 1976 г., корпорация IBM использовала для него название Structured English QUEry Language (SEQUEL, язык структурированных английских запросов). В ходе эволюции языка название изменилось на Structured Query Language (SQL, произносится как сиквел (sequel) или &#171;S-Q-L&#187;). Первая коммерческая версия SQL была выпущена в 1979 году корпорацией<br />
Oracle (вто время называвшейся Relational Software Inc.). В 1986 г. к работе подключился Американский национальный институт стандартов (ANSI), опубликовавший официальный стандарт SQL с кодовым названием ANSI ХЗ. 135-1986. В следующем году этот стандарт был опубликован Международной организацией по стандартизации (ISO) как ISO 9075-1987. Спецификация SQL дважды расширялась — в 1992 и 1999 гг. Текущая спецификация состоит из пяти частей, имеющих названия ANSI/ISO/IEC 9051-1-1999 &#8212; 9051-5-1999. SQL фактически стал стандартным языком для выполнения запросов к базам данных. Каждый производитель систем управления базами данных слегка модифицирует его, чтобы приспособить к своим потребностям, но ядро SQL по существу остается неизменным. От этого выигрывают пользователи и разработчики баз данных, поскольку усилия, потраченные на изучение SQL, будут приносить свои плоды в течение долгих лет, при смене версий программ и даже при переходе на другие продукты. Короче говоря, SQL — это универсальный инструмент, необходимый каждому, кто регулярно работает с базами данных.</p>
<p>&nbsp;</p>
<p><strong>Категории команд SQL</strong></p>
<p>Команды SQL делятся на функциональные группы, что облегчает их запоминание. Вот эти группы:<br />
• Определение данных (Data Definition)<br />
• Манипулирование данными (Data Manipulation)<br />
• Управление данными (Data Control)<br />
• Выборка данных (Data Retrieval)<br />
• Управление транзакциями (Transaction Control)</p>
<table width="100%" border="1" cellspacing="0" cellpadding="3">
<tbody>
<tr bgcolor="#c0c0c0">
<td><strong>Категория командр SQL<br />
</strong></td>
<td><strong> Команды</strong></td>
</tr>
<tr>
<td>Язык определения данных (DDL)</td>
<td> CREATE, ALTER, DROP, RENAME, TRUNCATE</td>
</tr>
<tr>
<td>Язык манипулирования данными (DML)</td>
<td> INSERT, UPDATE, DELETE</td>
</tr>
<tr>
<td>Язык управления данными (DCL)</td>
<td> GRANT, REVOKE</td>
</tr>
<tr>
<td>Поиск данных</td>
<td> SELECT</td>
</tr>
<tr>
<td>Управление транзакциями</td>
<td> COMMIT, ROLLBACK, SAVEPOINT</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/02/20/database_introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что такое бэкап и принципы того как делать бэкап</title>
		<link>http://kochetov.org.ua/2012/02/13/principles_obackup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=principles_obackup</link>
		<comments>http://kochetov.org.ua/2012/02/13/principles_obackup/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 06:57:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Others]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1937</guid>
		<description><![CDATA[     В данной статье речь пойдет не чисто о бэкапе базы данных, ОС или определенного приложения &#8212; а чисто об основных принципах.      Бэкапы — это страховка компании от несчастного случая. Делать бэкапы — это даже не правило, это аксиома. Какой бы ни был прожженный админ, и у него иногда может «дрогнуть рука», и с [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">     В данной статье речь пойдет не чисто о бэкапе базы данных, ОС или определенного приложения &#8212; а чисто об основных принципах.</p>
<p style="text-align: justify;">     Бэкапы — это страховка компании от несчастного случая. Делать бэкапы — это даже не правило, это аксиома. Какой бы ни был прожженный админ, и у него иногда может «дрогнуть рука», и с ошибкой написанный скрипт, или случайно нажатая кнопка способны наворотить много бед, что уж говорить про посыпавшиеся HDD, пожар и прочие катаклизмы. Да, бэкапы затратны (время, ресурсы, оборудование), их сиюминутный эффект неочевиден, но главное что они дают — страховка рисков компании. А это — дорогого стоит. Казалось бы, утверждения понятные всем, но при этом нередко возникает ситуация, когда сервер упал, бэкап есть, а сделать ничего нельзя, система не восстанавливается. И начинаются пляски для бубна с оркестром, вытаскивание хоть каких-то данных и т.п. радости.</p>
<p style="text-align: justify;">     Для начала давайте введем и четко разделим такие понятия как архивирование и бэкап. Например вот так:</p>
<ul style="text-align: justify;">
<li><strong>Архивирование</strong> — это резервное копирование с ДОЛГОСРОЧНЫМ хранением данных. Процедура, когда один раз скопировали, и унесли в банковский сейф. Обращение в архив, это скорее исключение чем правило, и процедура это может быть довольно длительной (в зависимости от того где и как хранятся архивы).</li>
<li><strong>Бэкап</strong> — это резервное копирование с КРАТКОСРОЧНЫМ хранением данных. Процедура, когда копирование происходит регулярно, носители перезаписываются, есть понятие «глубина хранения». При этом доступ к бэкапу обычно должен быть максимально быстрым</li>
</ul>
<h4 style="text-align: justify;"></h4>
<h4 style="text-align: justify;"><strong>Архивирование</strong></h4>
<p style="text-align: justify;">     Архивирование нужно не всем и не всегда. Чаще всего этот вопрос встает, когда компания выходит за рамки «я, мой друг, жена и курьер», и касается обычно только файлов, финансовых баз, почтовых баз, т.е. тех документов, которые и неэлектронной жизни принято хранить в архивах (письма, приказы, бухгалтерская первичка и т.п.).<br />
Архивы обычно делаются раз в год и хранятся на внешних носителях где-нибудь в сейфе, в банковской ячейке, на даче у гендиректора (нужное подчеркнуть). Тут все в целом понятно, главное не забывать хотя бы раз в год проверять состояние архива (например одновременно с записыванием нового восстановить часть данных из старого), и следить за носителями, чтобы вы всегда могли прочитать архив любой глубины (например, была ситуация, когда потребовался архив, который был сделан 5 лет назад, и хранился на ленте, стример для которой не только был сломан и списан, но и уже давно не выпускался. Архив конечно прочитали, но сколько нервов и связей для этого потребовалось — лучше не вспоминать).</p>
<p style="text-align: justify;">     Последние пару лет, кстати, все чаще для архивов используем не ленты, а банальные HDD. Их объемов- хватает, скорость работы — достаточна для архива, цена — в рамках разумного, а единый интерфейс подключения (раньше IDE, сейчас SATA) устраняет проблему «сломанного стримера», что немаловажно, т.к. данные можно прочитать практически на любом компьютере, без привлечения спец оборудования (как в случае с лентами). Когда IDE совсем пропадет, вероятно скопируем на SATA (или что там будет после).</p>
<p style="text-align: justify;">     Задача бэкапа как такового — хранить свежие резервные копии, для быстрого восстановления «случайно\специально удаленного», или «сгоревшего», или «неправильно сконфигурированного». Если архивы обычно хранятся столько сколько живет организация, а иногда и дольше, то для бэкапов уже можно ввести понятие <strong>глубина хранения</strong>, т.е. время по истечение которого бэкап будет устаревать, и его можно перезаписать более свежими данными. Бэкап в целом можно разделить на две основные части: <strong>бэкап данных</strong> и <strong>бэкап систем</strong>, и отдельно стоящий <strong>бэкап содержимого систем</strong>. Последнее очень обширная и конкретная тема, сильно зависящая от того, содержимое каких именно систем вы хотите бэкапить (почтовый сервер, БД, CRM, настройки ПО и т.п.), здесь ее описывать не будем.</p>
<h5 style="text-align: justify;"><strong>Бэкап систем</strong></h5>
<p style="text-align: justify;">     Бэкап систем — это когда вам нужно бэкапить не отдельные файлы, а целиком всю систему, которая может состоять из нескольких компонентов (например, спец-ПО, база SQL, файловые данные), и восстанавливать ее лучше целиком, нежели по частям. Тут все довольно просто: выбираете устраивающий вас бэкап-софт (цена, функционал, удобство) и бэкапите систему так, чтобы вы гарантированно могли восстановить ее, даже в случае полной поломки сервера. Подходят всевозможные Acronis&#8217;ы, Symantec System Recovery и т.д. Важно помнить вот что:</p>
<ul style="text-align: justify;">
<li>вы должны УМЕТЬ восстанавливать из бэкапа. Тренируйтесь где угодно, когда угодно, но вы ДОЛЖНЫ УМЕТЬ это делать.</li>
<li>продумывайте что именно вы бэкапите. Это значимо для универсальных серверов, когда, например, на одном сервере крутится БД, ваш внутрикорпоративный сайт и дополнительно прицеплен том под файловые ресурсы. В такой ситуации не стоит ради бэкапа связки «сложнонастроенный SQL + ваш сайт» бэкапить с ним заодно еще и второй файловый том в 1500 Тб. Вообще стремитесь к ситуации «одна задача — один сервер», не вешайте все-все-все на одну машину, а если уж повесили то бэкапьте его «системно».</li>
<li>ваш софт должен уметь восстанавливать на другое железо, отличающееся от текущего. И вы должны это хотя бы раз попробовать!</li>
<li>«системные» бэкапы, особенно систем постоянно используемых, не стоит хранить глубиной более чем неделя. Подумайте сами, зачем вам бэкап вашего контроллера домена давностью в месяц? В случае критической ситуации вам понадобится САМЫЙ свежий бэкап. А все остальные — это подстраховка, на случай если «самый свежий» по каким то причинам не отработал. Отводить на такую подстраховку больше чем 1-2 итерации, на мой взгляд нелогично и излишне расходует место.</li>
<li>есть системы, которые сложно взаимосвязаны со всей инфраструктурой, и восстановить их, даже имея под рукой свежий «системный бэкап» конкретного сервера, бывает нелегко. Навскидку: Active Directory, Exchange и т.д. Выделите время, изучите документацию, и в тестовой среде, хотя бы раз — но попробуйте восстановить АБСОЛЮТНО ВСЕ! Лучше научитесь это делать в спокойной обстановке с Интернетом под рукой, чем с разъяренным начальником над головой.</li>
</ul>
<h5 style="text-align: justify;"><strong>Бэкап данных</strong></h5>
<p style="text-align: justify;">     Бэкап данных, это бэкап отдельных, самостоятельных данных (в основном это содержимое вашего корпоративного файлохранилища). Здесь много мудрости не нужно — бери да копируй, можно разве что поразмышлять над схемой бэкапа. Я, например, придерживаюсь следующей схемы:</p>
<p style="text-align: center;"><a href="http://kochetov.org.ua/wp-content/uploads/2012/02/principles_backup_01.jpg"><img class="wp-image-1940 aligncenter" title="principles_backup_01" src="http://kochetov.org.ua/wp-content/uploads/2012/02/principles_backup_01.jpg" alt="" width="600" height="421" /></a></p>
<ol style="text-align: justify;">
<li>По выходным делается полный бэкап всех данных. Глубина хранения 28 дней, т.е. есть четыре независимых полных бэкапа. Таким образом за последний месяц мы сможем восстановить данные за любой выходной день.</li>
<li>По рабочим дням делается дифференциальный бэкап, с глубиной хранения 14 дней. Таким образом за последние две недели мы можем восстановить данные за любой из дней.</li>
<li>в первые выходные каждого месяца, отдельно от остальных работ, делается месячный бэкап, с глубиной хранения в 12 месяцев. Это нечто среднее между бэкапом и архивом. С одной стороны срок хранения довольно большой, с другой — нередка ситуация когда нужно восстановить данные «пару месяцев назад, максимум полгода». Как вариант, можно не делать месячный бэкап отдельной работой, а просто копировать подходящий недельный.</li>
</ol>
<p style="text-align: justify;">Кроме того, старайтесь придерживаться вот каких правил:</p>
<ul>
<li style="text-align: justify;">использую дифференциальный, а не инкрементальный бэкап. (Если вы не знаете что это такое — обязательно прочитайте документацию, это весьма важные понятия). Мне важнее выигрыш в скорости восстановления, нежели в объеме резервных копий.</li>
<li style="text-align: justify;">планирую время бэкапа так чтобы успевать до утра. Если бэкап выполняется дольше — разбиваю его на несколько работ, несколько серверов, или поднимаю вопрос про другое, более скоростное, оборудование.</li>
<li style="text-align: justify;">в расписании бэкапа стараюсь придерживаться промежутков связанных с неделями(7 дней, 28 дней и т.д.) и не привязываться к «первым\последним дням месяца». Неделя — довольно постоянная величина, 7 дней и в большинстве случаев суббота, воскресенье — это выходные.</li>
<li style="text-align: justify;">использую диски, а не ленты. Мне не нравится дорогостоящий посредник-стример между данными в бэкапе и данными в файлохранилище. Если он по каким то причинам не работает, то надолго нарушается вся система бэкапа. Если использовать жесткие диски, то этого можно избежать.</li>
<li style="text-align: justify;">стараюсь чтобы логически самостоятельная часть данных лежала в отдельном бэкапе. Например, если говорить про Symantec Backup Exec, то одна работа=одна media. Очень не люблю ситуацию, когда одна работа «размазана» по нескольким файлам. Это не только вносит сумбур в систему, но и в случае случайного затирани одного из файлов («рука дрогнула») наносит вред не только одной работе но и всем соседним.</li>
<li style="text-align: justify;">в обязательном порядке использую софт с уведомлениями по почте. Если это самописный скрипт — никто не мешает дописать кусочек, который будет проверять хотя бы наличие нового бэкапа, его размера и слать данные по почте. Это сильно экономит время в мониторинге бэкапа.</li>
</ul>
<p><strong>Статья взята с www.sql.az</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/02/13/principles_obackup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chmod</title>
		<link>http://kochetov.org.ua/2012/01/24/linux_chmod/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux_chmod</link>
		<comments>http://kochetov.org.ua/2012/01/24/linux_chmod/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 13:12:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1854</guid>
		<description><![CDATA[Файлы в Unix имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец пользователь может не являтся членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам. Для определения владельцев файла текущего каталога можно получить подробный листинг командой ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы: 1 2 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Файлы в Unix имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец пользователь может не являтся членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам.</p>
<p style="text-align: justify;">Для определения владельцев файла текущего каталога можно получить подробный листинг командой <strong>ls -l</strong>. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы:</p>
<table width="100%" border="0">
<tbody>
<tr>
<td width="18%"><span style="font-family: Courier New;">1</span></td>
<td width="4%"><span style="font-family: Courier New;">2</span></td>
<td width="8%"><span style="font-family: Courier New;">3</span></td>
<td width="8%"><span style="font-family: Courier New;">4</span></td>
<td width="12%"><span style="font-family: Courier New;">5</span></td>
<td width="14%"><span style="font-family: Courier New;">6</span></td>
<td width="15%"><span style="font-family: Courier New;">7</span></td>
<td width="21%"><span style="font-family: Courier New;">8</span></td>
</tr>
<tr>
<td width="18%"><span style="font-family: Courier New;">drwxr-x&#8212;x </span></td>
<td width="4%"><span style="font-family: Courier New;">2</span></td>
<td width="8%"><span style="font-family: Courier New;">root</span></td>
<td width="8%"><span style="font-family: Courier New;">root</span></td>
<td width="12%"><span style="font-family: Courier New;">5456</span></td>
<td width="14%"><span style="font-family: Courier New;">Dec 31 </span></td>
<td width="15%"><span style="font-family: Courier New;">23:59</span></td>
<td width="21%"><span style="font-family: Courier New;">Santa.Claus</span></td>
</tr>
<tr>
<td width="18%"><span style="font-family: Courier New;">-rw-r&#8212;r&#8212; </span></td>
<td width="4%"><span style="font-family: Courier New;">1 </span></td>
<td width="8%"><span style="font-family: Courier New;">andy</span></td>
<td width="8%"><span style="font-family: Courier New;">group</span></td>
<td width="12%"><span style="font-family: Courier New;">23456</span></td>
<td width="14%"><span style="font-family: Courier New;">Nov 12 </span></td>
<td width="15%"><span style="font-family: Courier New;">13:29 </span></td>
<td width="21%"><span style="font-family: Courier New;">readme.txt</span></td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Владельцем-пользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от конкретной версии Unix. Таким образом, владение файлом определяет тот набор операций, который пользователь  может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла может осуществить толко владелец(или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение(для исполняемых файлов) дополнительно контролируется правами доступа.</p>
<p style="text-align: justify;">Для определения прав доступа к файлу можно воспользоваться той же самой командой <strong>ls -l</strong></p>
<table width="100%" border="0">
<tbody>
<tr>
<td width="18%"><span style="font-family: Courier New;">1</span></td>
<td width="4%"><span style="font-family: Courier New;">2</span></td>
<td width="8%"><span style="font-family: Courier New;">3</span></td>
<td width="8%"><span style="font-family: Courier New;">4</span></td>
<td width="12%"><span style="font-family: Courier New;">5</span></td>
<td width="14%"><span style="font-family: Courier New;">6</span></td>
<td width="15%"><span style="font-family: Courier New;">7</span></td>
<td width="21%"><span style="font-family: Courier New;">8</span></td>
</tr>
<tr>
<td width="18%"><span style="font-family: Courier New;">drwxr-x&#8212;x </span></td>
<td width="4%"><span style="font-family: Courier New;">2</span></td>
<td width="8%"><span style="font-family: Courier New;">root</span></td>
<td width="8%"><span style="font-family: Courier New;">root</span></td>
<td width="12%"><span style="font-family: Courier New;">5456</span></td>
<td width="14%"><span style="font-family: Courier New;">Dec 31 </span></td>
<td width="15%"><span style="font-family: Courier New;">23:59</span></td>
<td width="21%"><span style="font-family: Courier New;">Santa.Claus</span></td>
</tr>
<tr>
<td width="18%"><span style="font-family: Courier New;">-rw-r&#8212;r&#8212; </span></td>
<td width="4%"><span style="font-family: Courier New;">1 </span></td>
<td width="8%"><span style="font-family: Courier New;">andy</span></td>
<td width="8%"><span style="font-family: Courier New;">group</span></td>
<td width="12%"><span style="font-family: Courier New;">23456</span></td>
<td width="14%"><span style="font-family: Courier New;">Nov 12 </span></td>
<td width="15%"><span style="font-family: Courier New;">13:29 </span></td>
<td width="21%"><span style="font-family: Courier New;">readme.txt</span></td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Права доступа листинга отображаются в первой (1) колонке (за исключением первого символа, обозначающего тип файла)  Наличие прав доступа обозначается соответствующим символом, а отсутствие &#8212; символом &#171;-&#187;.</p>
<p style="text-align: justify;">Права доступа могут быть изменены только владельцем файла или суперпользователем(superuser) &#8212; администратором системы. Для этого используется команда chmod.</p>
<p>&nbsp;</p>
<p style="text-align: center;"> <strong>chmod &#8212; изменение атрибутов защиты файла</strong></p>
<p><em>синтаксис </em></p>
<p><strong>chmode mode file&#8230;</strong></p>
<p><em>описание</em></p>
<p style="text-align: justify;">Команда изменяет атрибуты защиты файла file. Атрибуты защиты, обозначимые mode, могут быть заданны в числовом или символическом виде.</p>
<p>В символическом виде атрибуты задаются в формате</p>
<p><center>[who]+ | &#8212; | = [permission]</center></p>
<p style="text-align: justify;">В операционной системе Unix существуют три базовых класса доступа к файлу, в каждом из которых установленны соответствующие права доступа:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="TOP" width="30%"><span>User accsess(u) </span></td>
<td valign="CENTER" width="70%"><span>для владельца &#8212; пользователя файла</span><span> </span></td>
</tr>
<tr>
<td valign="TOP" width="30%"><span>Group accsess(g)</span></td>
<td valign="CENTER" width="70%"><span>для членов группы, являющихся владельцем файла</span><span> </span></td>
</tr>
<tr>
<td valign="TOP" width="30%"><span>Other accsess(o)</span></td>
<td valign="BOTTOM" width="70%"><span>для остальных пользователей (кроме  супер- пользователя)</span></td>
</tr>
</tbody>
</table>
<p>Первое поле, обозначеное как who, может содержать один или несколько следующих символов:</p>
<p><strong>a</strong>      установка атрибутов защиты для всех категорий пользователей;</p>
<p><strong>g</strong>      установка атрибутов защиты для групп пользователей;</p>
<p><strong>o</strong>      установка для прочих процессов (эффективные идентификаторы которых не совпадают с пользовательскими);</p>
<p><strong>u</strong>      установка прав доступа только для владельца.</p>
<p><center><em>Допустимые операции:</em></center><strong>+</strong>     добавление прав доступа;</p>
<p><strong>- </strong>     отмена прав доступа;</p>
<p><strong>=</strong>     определение перечисленных прав и отмена всех прочих для данного who.<br />
Поле, обозначенное как permission, может быть комбинацией следущих символов:</p>
<p><strong>x </strong>     делает файл выполнимым(разрешение выполнения);</p>
<p><strong>r</strong>        разрешение чтения;</p>
<p><strong>w</strong>     разрешение записи;</p>
<p><strong>s </strong>     установка пользовательского или группового идентификатора.</p>
<p style="text-align: justify;">В числовом виде атрибуты защиты файла здаются в форме восьмеричного числа, соответствующие биты которого обозначают режимы доступа:</p>
<p>4000    установка ID пользователя при выполнениии (S_ISUID);</p>
<p>2000     установка ID группы при выполнениии (S_ISGID);</p>
<p>1000     зависит от реализации;</p>
<p>0400     право владельца на чтение (S_IRUSR);</p>
<p>0200     право владельца на   запись (S_IWUSR);</p>
<p>0100     право владельца на выполнение (S_IXUSR);</p>
<p>0040     право группы на чтение (S_IRGRP);</p>
<p>0020     право группы на запись (S_IWGRP);</p>
<p>0010      право группы на выполнение (S_IXGRP);</p>
<p>0004     право прочих процессов на чтение (S_IROTH);</p>
<p>0002      право прочих процессов на запись (S_IWOTH);</p>
<p>0001     право прочих процессов на выполнение (S_IXOTH);</p>
<p>0000     нет доступа.</p>
<p style="text-align: justify;">Для каталогов поле <strong>х</strong> означает не выполнение, а поиск. Для каталога с правом <strong>х&#8212;</strong> пользователи будут иметь доступ к любому известному им файлу в каталоге, но не смогут выполнять команду ls или читать каталог, что бы узнать, какие файлы в нем находятся. Каталог с правом <strong>r&#8212; </strong>можно читать, но нельзя работать с его файлами. Право на запись <strong>w</strong> для каталога дает пользователю возможность записывать и <strong>удалять</strong> файлы из каталога! При этом права доступа для самого файла!</p>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" width="100%"><center><strong>Примеры использования команды chmod</strong></center></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod a+w text</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Предоставить право на запись для всех пользователей для файла text</span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod go=r text</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Установить право на чтение для всех пользователей,за исключением владельца</span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod g+x-w run</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Добавить для группы право на выполнение файла run и снять право на запись</span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod u+w,og+r text1 text2</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на записьвсех пользователей, исключая владельца </span></td>
</tr>
<tr>
<td rowspan="2" align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod 754 *</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Устанавить для владельца права на чтение, запись и выполнение, для группы на чтение и выполнение и для остальных пользователей только на чтение, всех файлов в текущем каталоге</span></td>
</tr>
<tr>
<td align="LEFT" width="70%"><span>число определяется следущим образом: нужно предствить права доступа в двоичном виде(0 &#8212; отсутствие соответствуещего права, 1 &#8212; его наличие) и каждую триаду, соответсчвующую класу доступа, в свою очередь преобразовать в десятичное число.</span><span>7=111(rwx)  5=101(r-x)  4=100(r&#8212;)</span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod rw-rw-rw junk</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">Так нельзя!  надо использовать: </span><span style="font-family: Courier New;"><span>$ chmod a=rw junk или</span></span><span style="font-family: Courier New;"><span>$ chmod 666 junk</span></span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod a-w .</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">закрыть текущий каталог по записи для всех пользователей, включая себя</span></td>
</tr>
<tr>
<td align="CENTER" width="30%"><span style="font-family: Courier New;">$ chmod o-r+x private</span></td>
<td align="LEFT" width="70%"><span style="font-family: Courier New;">сделать для всех пользователей, кроме себя текущий каталог private невидимым.</span></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong>Статья взята с http://linuxland.itam.nsc.ru/book/unix09/chmod/index.html</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/01/24/linux_chmod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Зарядные устройства</title>
		<link>http://kochetov.org.ua/2012/01/23/%d1%81hargers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d1%2581hargers</link>
		<comments>http://kochetov.org.ua/2012/01/23/%d1%81hargers/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 08:34:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hard]]></category>
		<category><![CDATA[Others]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1862</guid>
		<description><![CDATA[Недавно увидел хорошую статью о зарядных устройствах. Статья очень понравилась, и решил ее оставить у себя на сайте. &#160; 1. Как выбрать зарядное устройство? Рекомендации по выбору Зарядного Устройства (ЗУ) смотрите в разделе «Зарядні пристрої» 2. Как рассчитать время, необходимое для зарядки моих аккумуляторов? Продолжительность заряда рассчитывается как отношение емкости аккумулятора (mАh) к зарядному току [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Недавно увидел хорошую статью о зарядных устройствах. Статья очень понравилась, и решил ее оставить у себя на сайте.</p>
<p>&nbsp;</p>
<p style="text-align: justify;"><strong>1. Как выбрать зарядное устройство?</strong><br />
Рекомендации по выбору Зарядного Устройства (ЗУ) смотрите в разделе «Зарядні пристрої»</p>
<p style="text-align: justify;"><strong>2. Как рассчитать время, необходимое для зарядки моих аккумуляторов?</strong><br />
Продолжительность заряда рассчитывается как отношение емкости аккумулятора (mАh) к зарядному току (А) с учетом повышающего коэффициента, значение которого выбирается от 1,2 до 1,6 (чем меньше значение зарядного тока относительно емкости аккумулятора, тем больше повышающий коэффициент). Этот метод расчета применим для продолжительности заряда от 4 до 20 часов. При меньшей продолжительности заряда (менее 4 часов) ЗУ должно автоматически отключать аккумуляторы по достижении ими полного заряда, а при большей (свыше 20 часов) нет смысла в точности отслеживать время окончания заряда, т.к. перезаряд не вредит аккумулятору (его можно оставлять в зарядном устройстве до 6-7 суток). Зарядный ток указывается на корпусе ЗУ и на блистере (упаковке). Допускается прерывание заряда на небольшой период, суммарная продолжительность заряда в этом случае не должна быть меньше расчетной.</p>
<p style="text-align: justify;">ПРИМЕР. Если у Вас аккумуляторы ёмкостью 1000 мА, а ЗУ дает ток 200 мА, то мы получим:<br />
1000 / 200 * 1,2 = 6 (ч)<br />
Это СРЕДНЕЕ время заряда. Также на скорость заряда аккумуляторов влияет<br />
температура окружающей среды, химическая система аккумуляторов, полнота предшествующего разряда и т.п.</p>
<p style="text-align: justify;"><strong>3. Зачем нужна функция разряда?</strong><br />
Эта функция будет полезна, если Вы пользуетесь Ni-Cd аккумуляторами, которые подвержены &#171;эффекту памяти&#187;. Для Ni-MH аккумуляторов наличие функции разряда несущественно.</p>
<p style="text-align: justify;"><strong>4. Что такое «функция поддержки уровня заряда»?</strong><br />
(Также называется &#171;Дозаряд после заряда&#187;.)<br />
Если ЗУ оснащено этой функцией, то после того, как аккумуляторы будут заряжены полностью, ЗУ автоматически изменит ток заряда на минимальный. Он поддерживает аккумуляторы в состоянии 100% заряда до того, как они будут извлечены из ЗУ, и предупреждает таким образом эффект саморазряда.<br />
Эта функция хороша тем, что позволяет не следить за процессом заряда и быть уверенным, что аккумуляторы не будут испорчены.</p>
<p style="text-align: justify;"><strong>5. Что такое «функция обновления памяти»?</strong><br />
(Также называется &#171;функция активации&#187;.)<br />
Если аккумуляторы работают неравномерно, это может быть связано с внутренней памятью («эффект памяти»). Функция обновления памяти предназначена для очищения памяти и для содержания аккумуляторов в отличном состоянии.<br />
Обновление &#8212; для оживления старых аккумуляторов или давно не использовавшихся, которые уже не держат свой заряд так, как должны были. В результате этого процесса аккумуляторы выйдут на свои оптимальные характеристики. Во время обновления зарядное устройство производит циклы разрядки/зарядки аккумуляторов до тех пор, пока фактическая ёмкость аккумуляторов не перестанет увеличиваться.</p>
<p style="text-align: justify;">Обращаем ваше внимание, что иногда процесс обновления аккумуляторов может занять несколько дней. Так что запаситесь терпением.</p>
<p style="text-align: justify;"><strong>6. Что такое медленный и быстрый режимы заряда?</strong><br />
Некоторые ЗУ позволяют выбирать ток заряда аккумуляторов. Медленный режим предпочтителен для аккумуляторов малой ёмкости, а также если Вы хотите максимально продлить их срок службы. Оптимальным током заряда считается ток, в 10 раз меньший ёмкости аккумуляторов. Например, для аккумуляторов 2500 мАh &#8212; это 250 мА.<br />
В случае, если для Вас время &#8212; деньги (и большие, чем стоимость аккумулятора!), то пользуйтесь быстрым режимом заряда (более 500 мА). Это сократит их срок службы с 1000 перезарядок до 500, зато позволит сэкономить до 10 часов с каждой зарядки.</p>
<p style="text-align: justify;"><strong>7. Зачем нужен LCD–монитор на зарядном устройстве?</strong><br />
LCD–монитор позволяет следить за процессом заряда Ваших аккумуляторов. На нём можно увидеть, насколько зарядились аккумуляторы (30-65-100%), и извлечь их из устройства, когда индикатор покажет полный заряд.</p>
<p style="text-align: justify;"><strong>8. Для чего нужна функция «dV контроль заряда»?</strong><br />
(Также называется «контроль напряжения»)<br />
ЗУ контроллирует процесс заряда и предохраняет аккумуляторы от перезаряда, что может привести к выходу их из строя.</p>
<p style="text-align: justify;"><strong>9. Как работает функция «Контроль за температурой»?</strong><br />
«Температурный контроль» работает следующим образом: при перегреве аккумуляторов зарядное устройство отключается. Такое может произойти после полного заряда аккумуляторов, если по каким-то причинам не сработал механизм автоматического отключения. Следовательно, это дополнительный уровень защиты.</p>
<p style="text-align: justify;"><strong>10. Зачем в зарядном устройстве «Таймер безопасности»?</strong><br />
Он отключает ЗУ по истечению определенного времени. Эта функция подстраховывает функцию автоматического отключения.<br />
Будте внимательны! Если пытаться зарядить высокоемкие аккумуляторы в устройстве с невысокими токами, оснащенном таймером безопасности, оно может отключиться раньше, чем зарядятся аккумуляторы. В этом случае рекомендуем использовать скоростные зарядные устройства серии &#171;Энергия Премиум&#187;.</p>
<p style="text-align: justify;"><strong>11. Можно ли заряжать аккумуляторы не от сети 220 V, а от других источников энергии?</strong><br />
Да, если это предусмотрено конструкцией зарядного устройства, то аккумуляторы можно зарядить от прикуривателя автомобиля и/или от USB-порта компьютера.<br />
От прикуривателя заряжают такие наименования ЗУ &#171;Энергия&#187;: ЕН-905, ЕН-908, ЕН-909, ЕН-910, ЕН-915.<br />
От USB-порта заряжают: ЕН-105, ЕН-909.</p>
<p style="text-align: justify;"><strong>12. Как понять, что аккумуляторы полностью зарядились?</strong><br />
Это можно увидеть по LED-индикаторам или LCD-монитору Вашего зарядного устройства.<br />
Красный цвет индикатора показывает процесс заряда, желтый &#8212; процесс разряда, зеленый &#8212; окончание процесса заряда (готовность аккумуляторов).<br />
LCD-монитор показывает графическое изображение аккумуляторов. Когда они перестают мигать и закрашиваются серым цветом, процесс заряда завершен.</p>
<p style="text-align: justify;"><strong>13. Нужно ли сразу извлекать аккумуляторы после зарядки?</strong><br />
Да, мы рекомендуем сразу извлекать аккумуляторы из зарядного устройства после окончания зарядки. Если Ваше зарядное устройство имеет ток заряда 500 mA и выше, и при этом не снабжено функцией &#171;поддержки уровня заряда&#187; (или автоматического отключения), то аккумуляторы могут испортиться. ЗУ с током заряда 150 мА не могут испортить аккумуляторы, даже если Вы продержите их там сутки после полного заряда. Одако, не стоит подвергать свои аккумуляторы перезаряду, и тем более, не стоит их хранить в зарядном устройстве.</p>
<p><strong>14. Общие советы по эксплуатации зарядного устройства.</strong></p>
<p style="text-align: justify;">- Никогда не заряжайте в ЗУ другие типы батарей (перезаряжаемые щелочные/алкалиновые аккумуляторы или обычные алкалиновые батарейки и т.п.), заряд которых может привести к вытеканию щелочи, повреждению зарядного устройства, а также представлять опасность для здоровья пользователя.<br />
- Не допускайте одновременного заряда новых и бывших в употреблении аккумуляторов, а также аккумуляторов разной емкости и разных производителей.<br />
- Отключите зарядное устройство от сети если необходима чистка или когда оно не используется.<br />
- Не разбирайте зарядное устройство и аккумуляторы<br />
- Исключите попадание влаги<br />
- ЗУ предназначено для использования только внутри помещений (или в автомобиле, если есть опция).<br />
- Не допускайте попадания ЗУ и аккумуляторов под дождь или снег, а также в другие неблагоприятные условия.<br />
- Не храните аккумуляторы внутри зарядного устройства.<br />
- Не допускайте детей к ЗУ и аккумуляторам. Заряжать и использовать только под внимательным контролем взрослых.</p>
<p>&nbsp;</p>
<p><strong>Статья взята с www.energy.biz.ua</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/01/23/%d1%81hargers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Диапазоны ip адресов</title>
		<link>http://kochetov.org.ua/2012/01/20/ranges_ip_addresses/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ranges_ip_addresses</link>
		<comments>http://kochetov.org.ua/2012/01/20/ranges_ip_addresses/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 11:30:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1783</guid>
		<description><![CDATA[В данной заметке приведен список диапазонов IP-адресов, которые  стоить закрывать при настройке файрволов: 1. deny ip any 192.168.0.0 0.0.255.255 (192.168.0.1 &#8212; 192.168.255.254) Address:   192.168.0.0          11000000.10101000. 00000000.00000000 Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000 Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111 Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000 HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001 HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110 Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111 Hosts/Net: 65534                 Class [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В данной заметке приведен список диапазонов IP-адресов, которые  стоить закрывать при настройке файрволов:</p>
<p><strong>1.</strong> deny ip any 192.168.0.0 0.0.255.255 (192.168.0.1 &#8212; 192.168.255.254)</p>
<blockquote><p>Address:   192.168.0.0          11000000.10101000. 00000000.00000000<br />
Netmask:   255.255.0.0 = 16     11111111.11111111. 00000000.00000000<br />
Wildcard:  0.0.255.255          00000000.00000000. 11111111.11111111<br />
Network:   192.168.0.0/16       11000000.10101000. 00000000.00000000<br />
HostMin:   192.168.0.1          11000000.10101000. 00000000.00000001<br />
HostMax:   192.168.255.254      11000000.10101000. 11111111.11111110<br />
Broadcast: 192.168.255.255      11000000.10101000. 11111111.11111111<br />
Hosts/Net: 65534                 Class C, Private Internet</p></blockquote>
<p><strong>2.</strong> deny ip any 172.16.0.0 0.15.255.255 (172.16.0.1 &#8212; 172.31.255.254)</p>
<blockquote><p>Address:   172.16.0.0           10101100.0001 0000.00000000.00000000<br />
Netmask:   255.240.0.0 = 12     11111111.1111 0000.00000000.00000000<br />
Wildcard:  0.15.255.255         00000000.0000 1111.11111111.11111111<br />
Network:   172.16.0.0/12        10101100.0001 0000.00000000.00000000<br />
HostMin:   172.16.0.1           10101100.0001 0000.00000000.00000001<br />
HostMax:   172.31.255.254       10101100.0001 1111.11111111.11111110<br />
Broadcast: 172.31.255.255       10101100.0001 1111.11111111.11111111<br />
Hosts/Net: 1048574               Class B, Private Internet</p></blockquote>
<p><strong> 3.</strong> deny ip any 10.0.0.0 0.255.255.255 (10.0.0.1 &#8212; 10.255.255.254)</p>
<blockquote><p>Address:   10.0.0.0             00001010. 00000000.00000000.00000000<br />
Netmask:   255.0.0.0 = 8        11111111. 00000000.00000000.00000000<br />
Wildcard:  0.255.255.255        00000000. 11111111.11111111.11111111<br />
Network:   10.0.0.0/8           00001010. 00000000.00000000.00000000<br />
HostMin:   10.0.0.1             00001010. 00000000.00000000.00000001<br />
HostMax:   10.255.255.254       00001010. 11111111.11111111.11111110<br />
Broadcast: 10.255.255.255       00001010. 11111111.11111111.11111111<br />
Hosts/Net: 16777214              Class A, Private Internet</p></blockquote>
<p><strong> 4.</strong> deny ip any 0.0.0.0 0.255.255.255 (0.0.0.1 &#8212; 0.255.255.254)</p>
<blockquote><p>Address:   0.0.0.0              00000000. 00000000.00000000.00000000<br />
Netmask:   255.0.0.0 = 8        11111111. 00000000.00000000.00000000<br />
Wildcard:  0.255.255.255        00000000. 11111111.11111111.11111111<br />
Network:   0.0.0.0/8            00000000. 00000000.00000000.00000000<br />
HostMin:   0.0.0.1              00000000. 00000000.00000000.00000001<br />
HostMax:   0.255.255.254        00000000. 11111111.11111111.11111110<br />
Broadcast: 0.255.255.255        00000000. 11111111.11111111.11111111<br />
Hosts/Net: 16777214              Class A</p></blockquote>
<p><strong> 5.</strong> deny ip any host 255.255.255.255 (255.255.255.1 &#8212; 255.255.255.254)</p>
<blockquote><p>Address:   255.255.255.255      11111111.11111111.11111111. 11111111<br />
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000<br />
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111<br />
Network:   255.255.255.0/24     11111111.11111111.11111111. 00000000<br />
HostMin:   255.255.255.1        11111111.11111111.11111111. 00000001<br />
HostMax:   255.255.255.254      11111111.11111111.11111111. 11111110<br />
Broadcast: 255.255.255.255      11111111.11111111.11111111. 11111111<br />
Hosts/Net: 254                   Class invalid</p></blockquote>
<p><strong>6.</strong> deny ip any 127.0.0.0 0.255.255.255 (127.0.0.1 &#8212; 127.255.255.254)</p>
<blockquote><p>Address:   127.0.0.0            01111111. 00000000.00000000.00000000<br />
Netmask:   255.0.0.0 = 8        11111111. 00000000.00000000.00000000<br />
Wildcard:  0.255.255.255        00000000. 11111111.11111111.11111111<br />
Network:   127.0.0.0/8          01111111. 00000000.00000000.00000000<br />
HostMin:   127.0.0.1            01111111. 00000000.00000000.00000001<br />
HostMax:   127.255.255.254      01111111. 11111111.11111111.11111110<br />
Broadcast: 127.255.255.255      01111111. 11111111.11111111.11111111<br />
Hosts/Net: 16777214              Class A, Loopback</p></blockquote>
<p><strong>7.</strong> deny ip any 224.0.0.0 15.255.255.255 (224.0.0.1 &#8212; 239.255.255.254)</p>
<blockquote><p>Address:   224.0.0.0            1110 0000.00000000.00000000.00000000<br />
Netmask:   240.0.0.0 = 4        1111 0000.00000000.00000000.00000000<br />
Wildcard:  15.255.255.255       0000 1111.11111111.11111111.11111111<br />
Network:   224.0.0.0/4          1110 0000.00000000.00000000.00000000<br />
HostMin:   224.0.0.1            1110 0000.00000000.00000000.00000001<br />
HostMax:   239.255.255.254      1110 1111.11111111.11111111.11111110<br />
Broadcast: 239.255.255.255      1110 1111.11111111.11111111.11111111<br />
Hosts/Net: 268435454             Class D, Multicast</p></blockquote>
<p><strong>8.</strong> deny ip any 240.0.0.0 7.255.255.255 (240.0.0.1 &#8212; 247.255.255.254)</p>
<blockquote><p>Address:   240.0.0.0            11110 000.00000000.00000000.00000000<br />
Netmask:   248.0.0.0 = 5        11111 000.00000000.00000000.00000000<br />
Wildcard:  7.255.255.255        00000 111.11111111.11111111.11111111<br />
Network:   240.0.0.0/5          11110 000.00000000.00000000.00000000<br />
HostMin:   240.0.0.1            11110 000.00000000.00000000.00000001<br />
HostMax:   247.255.255.254      11110 111.11111111.11111111.11111110<br />
Broadcast: 247.255.255.255      11110 111.11111111.11111111.11111111<br />
Hosts/Net: 134217726             Class E</p></blockquote>
<p><strong>9.</strong> deny ip any 192.0.2.0 0.0.0.255 (192.0.2.1 &#8212; 192.0.2.254)</p>
<blockquote><p>Address:   192.0.2.0            11000000.00000000.00000010. 00000000<br />
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000<br />
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111<br />
Network:   192.0.2.0/24         11000000.00000000.00000010. 00000000<br />
HostMin:   192.0.2.1            11000000.00000000.00000010. 00000001<br />
HostMax:   192.0.2.254          11000000.00000000.00000010. 11111110<br />
Broadcast: 192.0.2.255          11000000.00000000.00000010. 11111111<br />
Hosts/Net: 254                   Class C</p></blockquote>
<p>&nbsp;</p>
<p style="text-align: justify;">То есть, приблизительно правильно на файрволе должно выглядеть где-то так (в данном случае пример с Access-lists Cisco Switch):</p>
<blockquote><p>10 permit ip any host 10.20.0.5 log<br />
20 permit ip any host 10.20.0.8 log<br />
30 permit ip any host 10.20.0.10 log<br />
40 deny ip any 192.168.0.0 0.0.255.255 log<br />
50 deny ip any 192.168.0.0 0.0.255.255<br />
60 deny ip any 172.16.0.0 0.15.255.255<br />
70 deny ip any 10.0.0.0 0.255.255.255<br />
80 deny ip any 0.0.0.0 0.255.255.255<br />
90 deny ip any host 255.255.255.255<br />
100 deny ip any 127.0.0.0 0.255.255.255<br />
110 deny ip any 224.0.0.0 15.255.255.255<br />
120 deny ip any 240.0.0.0 7.255.255.255<br />
130 deny ip any 192.0.2.0 0.0.0.255<br />
140 permit ip any any</p></blockquote>
<p>&nbsp;</p>
<p><strong>Ссылки на другие ресурсы в сети Интернет:</strong></p>
<p><strong>1.</strong> <a href="http://kt11.ru/menu_467.html" target="_blank">Классы IP-адресов</a><br />
<strong>2.</strong> <a href="http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F" target="_blank">Классовая адресация</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/01/20/ranges_ip_addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление IOS на Cisco Catalyst</title>
		<link>http://kochetov.org.ua/2012/01/19/cisco_catalyst_ios_update/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cisco_catalyst_ios_update</link>
		<comments>http://kochetov.org.ua/2012/01/19/cisco_catalyst_ios_update/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 10:51:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1761</guid>
		<description><![CDATA[1. Для начала нам нужен рабочий tftp сервер. 2. Находим на сайте Cisco новый IOS, или IOS который нужен нам. 3. Дальше, на tftp сервер  копируем новый IOS, например это c3560-ipbasek9-mz.122-55.SE4.bin. 4. Заходим на Cisco Catalyst и смотрим что у нас &#171;делается&#187; на flash памяти: switch#show flash: Directory of flash:/ 2  -rwx          27  Jan 11 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1.</strong> Для начала нам нужен рабочий tftp сервер.</p>
<p><strong>2.</strong> Находим на сайте Cisco новый IOS, или IOS который нужен нам.</p>
<p><strong>3.</strong> Дальше, на tftp сервер  копируем новый IOS, например это c3560-ipbasek9-mz.122-55.SE4.bin.</p>
<p><strong>4.</strong> Заходим на Cisco Catalyst и смотрим что у нас &#171;делается&#187; на flash памяти:</p>
<blockquote><p>switch#show flash:<br />
Directory of flash:/<br />
2  -rwx          27  Jan 11 2012 09:28:17 +02:00  private-config.text<br />
5  drwx         192   Mar 1 1993 02:11:49 +02:00  c3560-ipbase-mz.122-25.SEE2<br />
410  -rwx       10162  Jan 11 2012 09:28:16 +02:00  config.text</p>
<p>32514048 bytes total (24345600 bytes free)</p></blockquote>
<p><strong>5.</strong> Копируем новый IOS с tftp сервера на flash память Cisco Catalyst:</p>
<blockquote><p>switch#copy tftp: flash:<br />
Address or name of remote host [ ]? 192.168.1.1<br />
Source filename [ ]? c3560-ipbasek9-mz.122-55.SE4.bin<br />
Destination filename [c3560-ipbasek9-mz.122-55.SE4.bin]?<br />
Accessing tftp://192.168.1.1/c3560-ipbasek9-mz.122-55.SE4.bin&#8230;<br />
Loading c3560-ipbasek9-mz.122-55.SE4.bin from 10.0.15.151 (via Vlan111): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
[OK - 6428863 bytes]</p>
<p>6428863 bytes copied in 99.984 secs (64299 bytes/sec)</p></blockquote>
<p><strong>6.</strong> Далее заходим на Cisco Catalyst, прописываем загрузку с нового IOS и удаляем старый IOS:</p>
<blockquote><p>switch#configure terminal<br />
switch(config)#boot system flash:/c3560-ipbasek9-mz.122-55.SE4.bin<br />
switch(config)#exit<br />
switch#delete flash:c3560-ipbase-mz.122-25.SEE2<br />
Delete filename [c3560-ipbase-mz.122-25.SEE2]?<br />
Delete flash:c3560-ipbase-mz.122-25.SEE2? [confirm]</p></blockquote>
<p><strong>7.</strong> После этого перегружаем устройство.</p>
<p style="text-align: justify;"><strong>8.</strong> Иногда, старый IOS нужно оставить. Но бывает, прописано чтобы устройство заглужалось с нового IOS (boot system flash:/c3560-ipbasek9-mz.122-55.SE4.bin), а реально происходит загрузка со старого образа.</p>
<p style="text-align: justify;">Чтобы устройство загружалось с нового IOS и старый IOS оставался на flash памяти нужно прописать следующее:</p>
<blockquote><p>switch#configure terminal<br />
Enter configuration commands, one per line.  End with CNTL/Z.<br />
switch(config)#config 0&#215;2102<br />
switch(config)#exit<br />
switch#reload</p></blockquote>
<p>&nbsp;</p>
<p><strong>Ссылки на другие ресурсы в сети Интернет:</strong></p>
<p><strong>1.</strong> <a href="http://it-admin.org/cisco-systems/obnovlenie-ios-na-cisco-catalyst-3560.html#more-980" target="_blank">Обновление IOS на Cisco Catalyst 3560</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/01/19/cisco_catalyst_ios_update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WHOIS</title>
		<link>http://kochetov.org.ua/2012/01/06/whois/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whois</link>
		<comments>http://kochetov.org.ua/2012/01/06/whois/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 14:42:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://kochetov.org.ua/?p=1743</guid>
		<description><![CDATA[Регламент публічного Інтернет-сервісу WHOIS 1.1. Сервіс WHOIS &#8212; є джерелом публічної інформації про доменні імена.Така інформація є доступною будь-якій особі через мережу Інтернет за протоколом WHOIS або HTTP. 1.2. Інформація сервісу WHOIS може бути представлена українською, російською та/або англійською мовами. 1.3. Адміністратор будь-якого домену  не несе відповідальності за достовірність та актуальність інформації що надається сервісом [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Регламент публічного Інтернет-сервісу WHOIS</strong></p>
<p><strong>1.1.</strong> Сервіс WHOIS &#8212; є джерелом публічної інформації про доменні імена.Така інформація є доступною будь-якій особі через мережу Інтернет за протоколом WHOIS або HTTP.<br />
<strong>1.2.</strong> Інформація сервісу WHOIS може бути представлена українською, російською та/або англійською мовами.<br />
<strong> 1.3.</strong> Адміністратор будь-якого домену  не несе відповідальності за достовірність та актуальність інформації що надається сервісом WHOIS.<br />
<strong> 1.4.</strong> Запис про доменне ім&#8217;я, що відображається сервісом WHOIS, містить такі поля:<br />
<strong>1.5.1.</strong> Domain: доменне ім&#8217;я. Обов`язкове поле, один рядок.<br />
<strong> 1.5.2.</strong> Admin-c: nic-handle адміністративного контакту доменного імені.<br />
<strong> 1.5.3.</strong> Tech-c: nic-handle контакту, який технічно супроводжуватиме доменне ім’я.<br />
<strong> 1.5.4.</strong> Status: стан доменного імені, який може приймати такі значення:<br />
<strong> 1.5.4.1.</strong> OK-UNTIL YYYYMMDDhhmmss – доменне ім&#8217;я делеговано, строк делегування &#8212; до вказаної дати.<br />
<strong> 1.5.4.2.</strong> HOLD-SINCE YYYYMMDDhhmmss – делегування доменного імені призупинено від вказаної дати на строк 30 діб.<br />
<strong>1.5.4.3.</strong> FROZEN-OK-UNTIL YYYYMMDDhhmmss &#8212; доменне ім&#8217;я делеговане. Внесення будь &#8212; яких змін в запис про доменне ім&#8217;я заблоковано Адміністратором.<br />
<strong>1.5.4.4.</strong> CANCELLED YYYYMMDDhhmmss &#8212; делегування доменного імені скасоване від вказаної дати.<br />
<strong> 1.5.4.5.</strong> BLOCKED YYYYMMDDhhmmss &#8212; делегування доменного імені призупинено. Реєстрація доменного імені зберігається до дати закінчення строку реєстрації. Після вказаної дати доменне ім’я скасовується.<br />
<strong> 1.5.5.</strong> Dom-public: категорія доменного імені. Відмітка &#171;YES&#187; у цьому полі означає, що домен  публічний, відмітка &#171;NO&#187; – що домен приватний.<br />
<strong> 1.5.6.</strong> Nserver: ім’я сервера імен, який забезпечує технічну працездатність доменного імені. Обов&#8217;язкове поле, не менше двох, але не більше десяти рядків. В разі, якщо доменне ім’я цього сервера імен включає назву доменного імені, в якому воно використовується, додатково відображається запис про такий сервер. Запис про сервер імен містить такі поля:<br />
<strong> 1.5.6.1.</strong> Nserver: ім’я сервера імен. Обов’язкове поле, один рядок.<br />
<strong> 1.5.6.2.</strong> IP-addr: IP-адреса сервера імен. Обов&#8217;язкове поле, один рядок.<br />
<strong> 1.5.7.</strong> Mnt-by: nic-handle контакту, який обслуговує доменне ім&#8217;я та має право вносити зміни про таке доменне ім’я,<br />
<strong> 1.5.8.</strong> Created: nic-handle контакту, за заявкою якого було зареєстроване таке доменне ім’я,<br />
<strong> 1.5.9.</strong> Changed: : nic-handle контакту, який останнім вносив зміни до запису, та дата внесення цих змін.<br />
<strong> 1.5.10.</strong> Source: умовна назва, текстовий рядок.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kochetov.org.ua/2012/01/06/whois/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

