<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Консультации по ремонту компьютера, форум, онлайн игры.</title>
		<link>http://nc5.ru/</link>
		<description>Форум решения ваших проблем</description>
		<lastBuildDate>Sat, 14 Aug 2010 13:34:03 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://nc5.my1.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Популярность СУБД</title>
			<link>https://nc5.my1.ru/forum/106-1661-1</link>
			<pubDate>Sat, 14 Aug 2010 13:34:03 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://nc5.my1.ru/forum/106&quot;&gt;СУБД&lt;/a&gt;&lt;br /&gt;Описание темы: Распространенность СУБД&lt;br /&gt;Автор темы: Картуз&lt;br /&gt;Автор последнего сообщения: fidelis&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>Согласно майскому опросу 943 разработчиков, проведенного исследовательской группой BZ Research (www.bzmedia.com/bzresearch/), 96% участников программных проектов, в которых происходит обработка данных, используют или планируют использовать реляционные СУБД. Чаще всего упоминаются продукты IBM DB2, Informix, Microsoft SQL Server, Oracle, Sybase и MySQL. Половина опрошенных (допускались множественные ответы) намерена также хранить и анализировать информацию в обычных, &quot;плоских&quot; файлах с помощью простых СУБД, нередко встраиваемых непосредственно в приложения. &lt;p&gt; 41% респондентов собираются держать данные в формате XML или с помощью объектно-ориентированных СУБД. 25% думают задействовать специализированные решения для конкретных нужд. &lt;p&gt; Для обращения к БД 91% используют SQL, 69% - ODBC, 55% - ADO/ADO. NET, 41%- JDBC, 30% - OLE DB, 15% - J2EE-коннекторы. &lt;p&gt; При дистанционном обмене информацией между приложениями и СУБД в 50% случаев применяется XML, в 35% - веб-службы. &lt;p&gt; 49% опрошенных ведут несколько проектов по объединению различных БД, 13% - один проект. 2% успешно завершили все подобные проекты, а 15% вообще не собираются заниматься такой работой. &lt;p&gt; По популярности первое место занимает Microsoft SQL Server (данную СУБД указали 78% опрошенных), на втором месте - Oracle (55%), на третьем - MySQL (33%). Далее следуют IBM DB2 (22%), Sybase (15%) и PostgreSQL (8%).</content:encoded>
			<category>СУБД</category>
			<dc:creator>Картуз</dc:creator>
			<guid>https://nc5.my1.ru/forum/106-1661-1</guid>
		</item>
		<item>
			<title>Доступ проиложений к СУБД</title>
			<link>https://nc5.my1.ru/forum/106-2063-1</link>
			<pubDate>Fri, 16 Apr 2010 10:08:29 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://nc5.my1.ru/forum/106&quot;&gt;СУБД&lt;/a&gt;&lt;br /&gt;Описание темы: Методы доступа приложений к СУБД&lt;br /&gt;Автор темы: Картуз&lt;br /&gt;Автор последнего сообщения: Картуз&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;b&gt;&lt;i&gt;Друзья, давайте обсуждать различные варианты реализации доступа клиентских приложений к СУБД.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;&lt;b&gt;Универсальная библиотека компонентов UniDAC (Universal Data Access Components)&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color:green&quot;&gt;Core Lab&lt;/span&gt; &lt;p&gt; Компания Core Lab разработала и поддерживает прекрасный продукт - UniDAC (Universal Data Access Components). Эта универсальная библиотека невизуальных компонентов обеспечивает унифицированнось процесса разработки приложений, связанных с базами данных, и позволяет разработчикам организовать доступ к данным в различных источниках из приложений на Delphi, Delphi for .NET, и C++Builder. &lt;br /&gt; Я использую UniDAC 3, который обеспечивает поддержку: &lt;br /&gt; Oracle (OCI/Direct) &lt;br /&gt; MySQL (libmysql.dll/Direct) &lt;br /&gt; PostgreSQL (Direct) &lt;br /&gt; SQLite (sqlite3.dll) &lt;br /&gt; MS SQL Server (Native client/OLE DB) &lt;br /&gt; MS Access (ODBC) &lt;br /&gt; InterBase (gds32.dll) &lt;br /&gt; Firebird (ODBC) &lt;br /&gt; DB2 (ODBC) &lt;br /&gt; SyBase (ODBC) &lt;p&gt; Скачивание пакета установки - платно, использование - бесплатно и не ограничивается &lt;br /&gt; Следует заметить, что UniDAC 3 работает только с Delphi 2009/2010 &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (16.04.2010, 13:53) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Для более ранних версий используйте UniDAC v.2.50.0.6 (Delphi6-9) &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (16.04.2010, 14:08) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;Набор компонентов данных для Delphi и Free Pascal AnyDAC 2.0&lt;/span&gt; &lt;span style=&quot;color:green&quot;&gt;Remote Objects Software&lt;/span&gt; &lt;p&gt; Обеспечивает прямой высокоскоростной доступ к различным стандартным системам баз данных. &lt;p&gt; Особенности программы: &lt;br /&gt; - доступ к SQL Server, Oracle, DB2, Interbase, MySQL и т.д. &lt;br /&gt; - доступ к любой базе данных через поддержку Borland DBX и ODBC источников данных &lt;br /&gt; - первоклассная поддержка для многих определенных особенностей баз данных &lt;br /&gt; - оптимизация для лучшего доступа к производительности данных &lt;br /&gt; - уникальные особенности клиентской стороны &lt;br /&gt; - включает мощный и быстрый In-Memory механизм данных &lt;br /&gt; - кроссплатформенный доступ к данным через поддержку Free Pascal для Win64, Linux и Mac OS X &lt;br /&gt; - онлайн и оффлайн доступ к данным &lt;p&gt; Все супер, однако следует заметить, что за лицензию девелопера надо заплатить &lt;img src=&quot;http://s28.ucoz.net/sm/1/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot;&gt; Насколько я знаю, $399</content:encoded>
			<category>СУБД</category>
			<dc:creator>Картуз</dc:creator>
			<guid>https://nc5.my1.ru/forum/106-2063-1</guid>
		</item>
		<item>
			<title>Автоматизация регламентных работ 1С</title>
			<link>https://nc5.my1.ru/forum/106-1660-1</link>
			<pubDate>Mon, 12 Apr 2010 08:23:12 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://nc5.my1.ru/forum/106&quot;&gt;СУБД&lt;/a&gt;&lt;br /&gt;Описание темы: автоматизация регламентных работ 1С&lt;br /&gt;Автор темы: Картуз&lt;br /&gt;Автор последнего сообщения: Картуз&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Перед админом 1С всегда стоит задача выполнения ряда стандартных регламентных процедур. Можно выполнять их последовательно в ручном режиме, а можно воспользоваться удобным vbs-скриптом &lt;p&gt; Что делает скрипт: &lt;br /&gt; 1. Предупреждает пользователей о необходимости завершить все выполняемые работы, давая 10 минут на завершение &lt;br /&gt; 2. Перезапускает службу агента сервера (10 минут на штатное завершение) &lt;br /&gt; 3. При наличии &quot;зависших&quot; процессов, завершает их аварийно. &lt;br /&gt; 4. Стартует службу агента сервера, делает выгрузку базы, тестирование и исправление. &lt;br /&gt; 5. Сохраняет лог, копирует лог по сети, зачищает старые архивные копии. &lt;p&gt; &lt;b&gt;Большинство параметров опциональны, например можно не перегружать агент сервера, или не делать выгрузку.&lt;/b&gt; &lt;p&gt; В реальной базе этот файл создается самой 1С, параметры хранятся в справочнике, привязанном к узлам плана обмена, выполнение скриптом ициируется самой 1С в регламентном задании: &lt;br /&gt; &lt;b&gt; Ком = Новый COMObject(&quot;WScript.Shell&quot;); &lt;br /&gt; Ком.Run(&quot;c:&amp;#92;confup_hh.vbs&quot; + &quot;&quot;&quot;&quot;);&lt;/b&gt; &lt;br /&gt; Но можно править и применять внешний файл.&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:11)&lt;br /&gt;---------------------------------------------&lt;br /&gt;[i]&apos; Инициализируем необходимые переменные &lt;p&gt; NetFile = &quot;&amp;#92;&amp;#92;SERVER&amp;#92;backupfolder&amp;#92;confupdate_base.txt&quot; &apos;Путь к log-файлу в сети &lt;br /&gt; ServerName = &quot;SERVER&quot; &apos;Имя сервера БД &lt;br /&gt; InfoBaseName = &quot;base&quot; &apos;Имя ИБ &lt;br /&gt; FilePath = &quot;C:&amp;#92;1c_backup&amp;#92;confupdate.vbs&quot; &apos;Путь к текущему файлу &lt;br /&gt; Folder = &quot;C:&amp;#92;1c_backup&amp;#92;&quot; &apos;Каталог для выгрузки &lt;br /&gt; CountDB = 7 &apos;За сколько дней хранить копии &lt;br /&gt; Prefix = &quot;base&quot; &apos;Префикс файла выгрузки &lt;br /&gt; Out = &quot;C:&amp;#92;1c_backup&amp;#92;confupdate.txt&quot; &apos;Путь к log-файлу &lt;br /&gt; NeedRestartAgent = True &apos; Необходимость рестарта агента сервера &lt;br /&gt; NeedDumpIB = True &apos; Необходимость выгрузки базы &lt;br /&gt; NeedCopyFiles = False &apos; Необходимость выгрузки базы &lt;br /&gt; NeedTestIB = True &apos; Необходимость тестирования базы &lt;br /&gt; 	 &lt;br /&gt; KlasterPortNumber = 1541 &apos;Номер пора кластера &lt;br /&gt; LockMessageText = &quot;Please wait for database update&quot; &apos;Текст сообщения о блокировки подключений к ИБ &lt;br /&gt; LockPermissionCode = &quot;BlockParam&quot; &apos;Ключ для запуска заблокированной ИБ &lt;br /&gt; ClasterAdminName = &quot;&quot; &apos;Имя администратора кластера &lt;br /&gt; ClasterAdminPass = &quot;&quot; &apos;Пароль администратора кластера &lt;br /&gt; InfoBasesAdminName = &quot;&quot; &apos;Имя администратора ИБ &lt;br /&gt; InfoBasesAdminPass = &quot;&quot; &apos;Пароль администратора ИБ &lt;br /&gt; UpdateFromStorage = &quot;&quot; &lt;br /&gt; AuthStr = &quot;/WA+&quot; &lt;br /&gt; TimeBeginLock = Now &apos; Время начала блокировки ИБ &lt;br /&gt; TimeEndLock = DateAdd(&quot;h&quot;, 2, TimeBeginLock) &apos; Время окончания блокировки ИБ &lt;br /&gt; TimeSleep = 600000 &lt;br /&gt; TimeSleepShort = 60000 &lt;br /&gt; Cfg = &quot;&quot; &apos;Путь к файлу с измененной конфигурацией &lt;br /&gt; InfoCfgFile = &quot;&quot; &apos;Информация о файле обновления конфигурации &lt;br /&gt; v8exe = &quot;C:&amp;#92;Program Files&amp;#92;1cv81&amp;#92;bin&amp;#92;1cv8.exe&quot; &apos;Путь к исполняемому файлу 1С:Предприятия 8.1 &lt;br /&gt; NewPass = &quot;&quot; &apos;Новый пароль администратора, обновляющего ИБ &lt;br /&gt; FindInfoBase = False &apos;Флаг, что ИБ найдена &lt;p&gt; iDay = Day(Now) &lt;br /&gt; mDay = CStr(Day(Now)) &lt;br /&gt; iMonth = Month(Now) &lt;br /&gt; mMonth = CStr(Month(Now)) &lt;br /&gt; mYear = CStr(Year(Now)) &lt;p&gt; nCDay = &quot;_&quot; + mYear + &quot;_&quot; &lt;br /&gt; If iMonth &lt; 10 Then &lt;br /&gt; nCDay = nCDay + &quot;0&quot; &lt;br /&gt; End If &lt;br /&gt; nCDay = nCDay + mMonth + &quot;_&quot; &lt;br /&gt; If iDay &lt; 10 Then &lt;br /&gt; nCDay = nCDay + &quot;0&quot; &lt;br /&gt; End If &lt;br /&gt; nCDay = nCDay + mDay &lt;p&gt; Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; Set OutFile = fs.OpenTextFile(Out, 8, True) &lt;p&gt; OutFile.WriteLine(CStr(Now) + &quot; НАЧАЛО ОБНОВЛЕНИЯ КОНФИГУРАЦИИ&quot;) &lt;p&gt; OutFile.WriteLine(CStr(Now) + &quot; Создание COM-коннектора&quot;) &lt;br /&gt; Set ComConnector = CreateObject(&quot;v81.COMConnector&quot;) &lt;p&gt; OutFile.WriteLine(CStr(Now) + &quot; Подключение к агенту сервера&quot;) &lt;br /&gt; Set ServerAgent = ComConnector.ConnectAgent(ServerName) &lt;p&gt; &apos; Получим массив кластеров сервера у агента сервера &lt;br /&gt; OutFile.WriteLine(CStr(Now) + &quot; Получение массива кластеров сервера у агента сервера&quot;) &lt;br /&gt; Clasters = ServerAgent.GetClusters() &lt;p&gt; OutFile.WriteLine(CStr(Now) + &quot; Начало завершения работы пользователей&quot;)&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:12)&lt;br /&gt;---------------------------------------------&lt;br /&gt;&apos; Найдем необходимый нам кластер по IP адресу &lt;br /&gt; OutFile.WriteLine(CStr(Now) + &quot; Начало цикла нахождения необходимого кластера по известному IP-адресу&quot;) &lt;br /&gt; For i = LBound(Clasters) To UBound(Clasters) &lt;br /&gt; 	If Clasters(i).MainPort = KlasterPortNumber Then &lt;br /&gt; 		 &lt;br /&gt; 		OutFile.WriteLine(CStr(Now) + &quot; Аутентикация к найденному кластеру: &quot; + Clasters(i).Name) &lt;br /&gt; 		ServerAgent.Authenticate Clasters(i), ClasterAdminName, ClasterAdminPass &lt;p&gt; 		&apos; Получаем список рабочих процессов &lt;br /&gt; 		OutFile.WriteLine(CStr(Now) + &quot; Получение списка работающих рабочих процессов и обход в цикле&quot;) &lt;br /&gt; 		WorkingProcesses = ServerAgent.GetWorkingProcesses(Clasters(i)) &lt;p&gt; 		For j = LBound(WorkingProcesses) To UBound(WorkingProcesses) &lt;p&gt; 			If WorkingProcesses(j).Running = 1 Then &lt;p&gt; 				&apos; Для каждого рабочего процесса создаем соединение с рабочим процессом &lt;br /&gt; 				OutFile.WriteLine(CStr(Now) + &quot; Создание соединения с рабочим процессом &quot; + WorkingProcesses(j).HostName + &quot;:&quot; + CStr(WorkingProcesses(j).MainPort)) &lt;br /&gt; 				Set ConnectToWorkProcess = ComConnector.ConnectWorkingProcess(&quot;tcp://&quot; + WorkingProcesses(j).HostName + &quot;:&quot; + CStr(WorkingProcesses(j).MainPort)) &lt;p&gt; 				ConnectToWorkProcess.AuthenticateAdmin ClasterAdminName, ClasterAdminPass &lt;br /&gt; 				ConnectToWorkProcess.AddAuthentication InfoBasesAdminName, InfoBasesAdminPass &lt;p&gt; 				If Not FindInfoBase Then &lt;p&gt; 					&apos; Получаем список ИБ рабочего процесса &lt;br /&gt; 					OutFile.WriteLine(CStr(Now) + &quot; Получение списка ИБ рабочего процесса&quot;) &lt;br /&gt; 					InfoBases = ConnectToWorkProcess.GetInfoBases() &lt;br /&gt; 					OutFile.WriteLine(CStr(Now) + &quot; Поиск нужной ИБ&quot;) &lt;br /&gt; 					For h = LBound(InfoBases) To UBound(InfoBases) &lt;br /&gt; 						&apos; Ищем нужную базу &lt;br /&gt; 						OutFile.WriteLine(CStr(Now) + &quot; Обрабатывается ИБ: &quot; + InfoBases(h).Name) &lt;br /&gt; 						If InfoBases(h).Name = InfoBaseName Then &lt;br /&gt; 							Set InfoBase = InfoBases(h) &lt;br /&gt; 							FindInfoBase = True &lt;br /&gt; 							OutFile.WriteLine(CStr(Now) + &quot; Нашли нужную ИБ&quot;) &lt;br /&gt; 							Exit For &lt;br /&gt; 						End If &lt;br /&gt; 					Next &lt;p&gt; 					If Not FindInfoBase Then &lt;br /&gt; 						OutFile.WriteLine(CStr(Now) + &quot; Не нашли нужную ИБ&quot;) &lt;br /&gt; 						Exit For &lt;br /&gt; 					End If &lt;p&gt; 					&apos; Устанавливаем запрет на подключение новых соединений &lt;br /&gt; 					OutFile.WriteLine(CStr(Now) + &quot; Установка запрета на подключения к ИБ: &quot; + InfoBase.Name) &lt;br /&gt; 					InfoBase.ConnectDenied = True &lt;br /&gt; 					InfoBase.DeniedFrom = TimeBeginLock &lt;br /&gt; 					InfoBase.DeniedTo = TimeEndLock &lt;br /&gt; 					InfoBase.DeniedMessage = LockMessageText &lt;br /&gt; 					InfoBase.PermissionCode = LockPermissionCode &lt;br /&gt; 					ConnectToWorkProcess.UpdateInfoBase(InfoBase) &lt;p&gt; 					&apos; Устанавливаем задержку выполнения &lt;br /&gt; 					OutFile.WriteLine(CStr(Now) + &quot; Задержка перед началом завершения работы пользователей&quot;) &lt;br /&gt; 					set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;) &lt;br /&gt; 					WScript.Sleep TimeSleep &lt;p&gt; 				End If &lt;p&gt; 				OutFile.WriteLine(CStr(Now) + &quot; Начало завершение работы пользователей с ИБ &quot; + InfoBase.Name) &lt;br /&gt; 				If FindInfoBase Then &lt;br /&gt; 					&apos; Получаем массив соединений с ИБ &lt;br /&gt; 					Connections = ConnectToWorkProcess.GetInfoBaseConnections(InfoBase) &lt;br /&gt; 					OutFile.WriteLine(CStr(Now) + &quot; Обработка списка соединений&quot;) &lt;br /&gt; 					For k = LBound(Connections) To UBound(Connections) &lt;br /&gt; 						&apos; Разрываем Connections с ИБ &lt;br /&gt; 						OutFile.WriteLine(CStr(Now) + &quot; Обрабатывается соединение: Пользователь &quot; + Connections(k).UserName + &quot;, компьютер &quot; + Connections(k).HostName + &quot;, установлено &quot; + CStr(Connections(k).ConnectedAt) + &quot;, режим &quot; + Connections(k).AppID) &lt;br /&gt; 						If Connections(k).AppID = &quot;SrvrConsole&quot; Then &lt;br /&gt; 							&apos; Не трогаем соединения консоли, оно никому не мешает &lt;br /&gt; 						ElseIf Connections(k).AppID = &quot;COMConsole&quot; Then &lt;br /&gt; 							&apos; Не трогаем соединения консоли, оно никому не мешает &lt;br /&gt; 						Else &lt;br /&gt; 							ConnectToWorkProcess.Disconnect(Connections(k)) &lt;br /&gt; 						End If &lt;br /&gt; 					Next &lt;br /&gt; 				End If &lt;br /&gt; 				OutFile.WriteLine(CStr(Now) + &quot; Окончание завершения работы пользователей&quot;) &lt;p&gt; 			End If &lt;p&gt; 		Next &lt;p&gt; 	End If &lt;p&gt; Next&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:13)&lt;br /&gt;---------------------------------------------&lt;br /&gt;ComConnector = Null &lt;br /&gt; ServerAgent = Null &lt;br /&gt; Clasters = Null &lt;br /&gt; WorkingProcesses = Null &lt;br /&gt; ConnectToWorkProcess = Null &lt;br /&gt; InfoBases = Null &lt;br /&gt; InfoBase = Null &lt;br /&gt; Connections = Null &lt;p&gt; If NeedRestartAgent Then &lt;br /&gt; 	 &lt;br /&gt; 	Set objWMIService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!&amp;#92;&amp;#92;.&amp;#92;root&amp;#92;cimv2&quot;) &lt;br /&gt; 	 &lt;br /&gt; 	&apos;Stop Service &lt;br /&gt; 	strServiceName = &quot;1C:Enterprise 8.1 Server Agent&quot; &lt;br /&gt; 	Set colListOfServices = objWMIService.ExecQuery(&quot;Select * from Win32_Service Where Name =&apos;&quot; &amp; strServiceName &amp; &quot;&apos;&quot;) &lt;br /&gt; 	For Each objService in colListOfServices &lt;br /&gt; 		objService.StopService() &lt;br /&gt; 		OutFile.WriteLine(CStr(objService.Name) + &quot; Остановка службы сервера 1С Предприятия&quot;) &lt;br /&gt; 	Next &lt;br /&gt; 		 &lt;br /&gt; 	WScript.Sleep TimeSleep &lt;br /&gt; 		 &lt;br /&gt; 	strProcessName = &quot;ragent.exe&quot; &lt;br /&gt; 	Set colProcess = objWMIService.ExecQuery (&quot;Select * from Win32_Process Where Name = &apos;&quot; &amp; strProcessName &amp; &quot;&apos;&quot;) &lt;br /&gt; 	For Each objProcess in colProcess &lt;br /&gt; 		objProcess.Terminate() &lt;br /&gt; 		OutFile.WriteLine(CStr(objProcess.Name) + &quot; Завершение процесса агента сервера 1С Предприятия&quot;) &lt;br /&gt; 	Next &lt;br /&gt; 			 &lt;br /&gt; 	strProcessName = &quot;rmngr.exe&quot; &lt;br /&gt; 	Set colProcess = objWMIService.ExecQuery (&quot;Select * from Win32_Process Where Name = &apos;&quot; &amp; strProcessName &amp; &quot;&apos;&quot;) &lt;br /&gt; 	For Each objProcess in colProcess &lt;br /&gt; 		objProcess.Terminate() &lt;br /&gt; 		OutFile.WriteLine(CStr(objProcess.Name) + &quot; Завершение процесса менеджера сервера 1С Предприятия&quot;) &lt;br /&gt; 	Next &lt;br /&gt; 				 &lt;br /&gt; 	strProcessName = &quot;rphost.exe&quot; &lt;br /&gt; 	Set colProcess = objWMIService.ExecQuery (&quot;Select * from Win32_Process Where Name = &apos;&quot; &amp; strProcessName &amp; &quot;&apos;&quot;) &lt;br /&gt; 	For Each objProcess in colProcess &lt;br /&gt; 		objProcess.Terminate() &lt;br /&gt; 		OutFile.WriteLine(CStr(objProcess.Name) + &quot; Завершение рабочего процесса сервера 1С Предприятия&quot;) &lt;br /&gt; 	Next &lt;br /&gt; 					 &lt;br /&gt; 	WScript.Sleep TimeSleepShort &lt;br /&gt; 	 &lt;br /&gt; 	&apos;Start Service &lt;br /&gt; 	strServiceName = &quot;1C:Enterprise 8.1 Server Agent&quot; &lt;br /&gt; 	Set colListOfServices = objWMIService.ExecQuery (&quot;Select * from Win32_Service Where Name =&apos;&quot; &amp; strServiceName &amp; &quot;&apos;&quot;) &lt;br /&gt; 	For Each objService in colListOfServices &lt;br /&gt; 		objService.StartService() &lt;br /&gt; 		OutFile.WriteLine(CStr(objService.Name) + &quot; Запуск службы сервера 1С Предприятия&quot;) &lt;br /&gt; 	Next &lt;br /&gt; 		 &lt;br /&gt; 	WScript.Sleep TimeSleepShort &lt;br /&gt; 						 &lt;br /&gt; End If &lt;p&gt; If FindInfoBase Then &lt;p&gt; 	&apos;Покажем свободное место на диске с исполняемым файлом 1С &lt;br /&gt; 	OutFile.WriteLine(CStr(Now) + &quot; &quot; + ShowFreeSpace(v8exe)) &lt;br /&gt; 	&apos;Покажем свободное место на диске с архивами &lt;br /&gt; 	OutFile.WriteLine(CStr(Now) + &quot; &quot; + ShowFreeSpace(Folder)) &lt;br /&gt; 	 &lt;br /&gt; 	OutFile.WriteLine(CStr(Now) + &quot; Обновление конфигурации ИБ&quot;) &lt;br /&gt; 	OutFile.Close() &lt;br /&gt; 	 &lt;br /&gt; 	Set Sh = CreateObject(&quot;WScript.Shell&quot;) &lt;br /&gt; 	&apos; Обновим конфигурацию БД &lt;br /&gt; 	LineExe = &quot;&quot;&quot;&quot; + v8exe + &quot;&quot;&quot; DESIGNER /S&quot;&quot;&quot; + ServerName + &quot;:&quot; + CStr(KlasterPortNumber) + &quot;&amp;#92;&quot; + InfoBaseName + &quot;&quot;&quot; /UC&quot;&quot;&quot; + LockPermissionCode + &quot;&quot;&quot; /DisableStartupMessages &quot; + AuthStr + UpdateFromStorage + &quot; /UpdateDBCfg -Server /Out&quot;&quot;&quot; + Out + &quot;&quot;&quot; -NoTruncate&quot; &lt;br /&gt; 	Sh.Run LineExe, 5, True &lt;br /&gt; 	 &lt;br /&gt; 	Set OutFile = fs.OpenTextFile(Out, 8, True) &lt;br /&gt; 	OutFile.WriteLine(CStr(Now) + &quot; &quot; + LineExe)	 &lt;br /&gt; 	OutFile.Close()	 &lt;br /&gt; 	 &lt;br /&gt; 	Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; 	If FSO.FolderExists(Folder) = False Then &lt;br /&gt; 		FSO.CreateFolder Folder &lt;br /&gt; 	End if &lt;br /&gt; 	 &lt;br /&gt; 	If NeedDumpIB = True Then &lt;br /&gt; 		Set Sh = CreateObject(&quot;WScript.Shell&quot;) &lt;br /&gt; 		&apos; Сделаем выгрузку базы данных &lt;br /&gt; 		LineExe = &quot;&quot;&quot;&quot; + v8exe + &quot;&quot;&quot; DESIGNER /S&quot;&quot;&quot; + ServerName + &quot;:&quot; + CStr(KlasterPortNumber) + &quot;&amp;#92;&quot; + InfoBaseName + &quot;&quot;&quot; /UC&quot;&quot;&quot; + LockPermissionCode + &quot;&quot;&quot; /DisableStartupMessages &quot; + AuthStr + &quot; /DumpIB&quot;&quot;&quot; + Folder + Prefix + nCDay + &quot;.dt&quot;&quot; /Out&quot;&quot;&quot; + Out + &quot;&quot;&quot; -NoTruncate&quot; &lt;br /&gt; 		Sh.Run LineExe, 5, True &lt;br /&gt; 	End if &lt;br /&gt; 	If NeedTestIB = True Then &lt;br /&gt; 		Set Sh = CreateObject(&quot;WScript.Shell&quot;) &lt;br /&gt; 		&apos; Протестируем базу данных и пересчитаем итоги &lt;br /&gt; 		LineExe = &quot;&quot;&quot;&quot; + v8exe + &quot;&quot;&quot; DESIGNER /S&quot;&quot;&quot; + ServerName + &quot;:&quot; + CStr(KlasterPortNumber) + &quot;&amp;#92;&quot; + InfoBaseName + &quot;&quot;&quot; /UC&quot;&quot;&quot; + LockPermissionCode + &quot;&quot;&quot; /DisableStartupMessages &quot; + AuthStr + &quot; /IBCheckAndRepair -LogIntegrity -RecalcTotals /Out&quot;&quot;&quot; + Out + &quot;&quot;&quot; -NoTruncate&quot; &lt;br /&gt; 		Sh.Run LineExe, 5, True &lt;br /&gt; 	End if &lt;br /&gt; 	 &lt;br /&gt; 	Set OutFile = fs.OpenTextFile(Out, 8, True) &lt;br /&gt; 	If NeedDumpIB = True Then &lt;br /&gt; 		OutFile.WriteLine(CStr(Now) + &quot; &quot; + LineExe)	 &lt;br /&gt; 	End if		 &lt;br /&gt; 	OutFile.WriteLine(CStr(Now) + &quot; Установка разрешения подключения к ИБ&quot;) &lt;p&gt; 	FindInfoBase = False &lt;br /&gt; 	 &lt;br /&gt; 	Set ComConnector = CreateObject(&quot;v81.COMConnector&quot;) &lt;br /&gt; 	Set ServerAgent = ComConnector.ConnectAgent(ServerName) &lt;br /&gt; 	Clasters = ServerAgent.GetClusters()&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:14)&lt;br /&gt;---------------------------------------------&lt;br /&gt;&apos;Установим разрешение на доступ к ИБ &lt;br /&gt; 	For i = LBound(Clasters) To UBound(Clasters) &lt;br /&gt; 	 &lt;br /&gt; 		If Clasters(i).MainPort = KlasterPortNumber Then &lt;p&gt; 			ServerAgent.Authenticate Clasters(i), ClasterAdminName, ClasterAdminPass &lt;br /&gt; 			WorkingProcesses = ServerAgent.GetWorkingProcesses(Clasters(i)) &lt;p&gt; 			For j = LBound(WorkingProcesses) To UBound(WorkingProcesses) &lt;p&gt; 				If WorkingProcesses(j).Running = 1 Then &lt;p&gt; 					Set ConnectToWorkProcess = ComConnector.ConnectWorkingProcess(&quot;tcp://&quot; + WorkingProcesses(j).HostName + &quot;:&quot; + CStr(WorkingProcesses(j).MainPort)) &lt;br /&gt; 					ConnectToWorkProcess.AuthenticateAdmin ClasterAdminName, ClasterAdminPass &lt;br /&gt; 					ConnectToWorkProcess.AddAuthentication InfoBasesAdminName, InfoBasesAdminPass &lt;p&gt; 					&apos; Получаем список ИБ рабочего процесса &lt;br /&gt; 					InfoBases = ConnectToWorkProcess.GetInfoBases() &lt;br /&gt; 					For h = LBound(InfoBases) To UBound(InfoBases) &lt;br /&gt; 						&apos; Ищем нужную базу &lt;br /&gt; 						If InfoBases(h).Name = InfoBaseName Then &lt;br /&gt; 							Set InfoBase = InfoBases(h) &lt;br /&gt; 							FindInfoBase = True &lt;br /&gt; 							Exit For &lt;br /&gt; 						End If &lt;br /&gt; 					Next &lt;p&gt; 					If FindInfoBase Then &lt;br /&gt; 						&apos; Устанавливаем разрешение на подключение соединений &lt;br /&gt; 						InfoBase.ConnectDenied = False &lt;br /&gt; 						InfoBase.DeniedMessage = &quot;&quot; &lt;br /&gt; 						InfoBase.PermissionCode = &quot;&quot; &lt;br /&gt; 						ConnectToWorkProcess.UpdateInfoBase(InfoBase) &lt;br /&gt; 						Exit For &lt;br /&gt; 					End If &lt;p&gt; 				End If &lt;p&gt; 			Next &lt;p&gt; 		End If &lt;p&gt; 		If FindInfoBase Then &lt;br /&gt; 			Exit For &lt;br /&gt; 		End If &lt;p&gt; 	Next &lt;p&gt; End If&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:14)&lt;br /&gt;---------------------------------------------&lt;br /&gt;OutFile.WriteLine(CStr(Now) + &quot; Сохранение данных журнала регистрации&quot;) &lt;br /&gt; Set ComConnector = CreateObject(&quot;V81.COMConnector&quot;) &lt;br /&gt; &apos;Set connection = ComConnector.Connect(&quot;Srvr=&quot; + ServerName + &quot;:&quot; + CStr(KlasterPortNumber) + &quot;;Ref=&quot; + InfoBaseName + &quot;;Usr=&quot; + InfoBasesAdminName + &quot;;Pwd=&quot; + InfoBasesAdminPass) &lt;br /&gt; Set connection = ComConnector.Connect(&quot;Srvr=&quot; + ServerName + &quot;:&quot; + CStr(KlasterPortNumber) + &quot;;Ref=&quot; + InfoBaseName) &lt;p&gt; OutFile.WriteLine(CStr(Now) + &quot; ЗАВЕРШЕНИЕ ОБНОВЛЕНИЯ КОНФИГУРАЦИИ&quot;) &lt;p&gt; OutFile.Close() &lt;p&gt; Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; Set f = fs.OpenTextFile(Out, 1, False, -2) &lt;br /&gt; Text = f.ReadAll &lt;p&gt; &apos;Запишем всю информацию из log-файла в журнал регистрации &lt;br /&gt; connection.WriteLogEvent &quot;Регламентное обновление ИБ&quot;, connection.EventLogLevel.Information,,, Text &lt;p&gt; connection = Null &lt;br /&gt; ComConnector = Null &lt;br /&gt; f = Null &lt;p&gt; If NeedCopyFiles = True Then &lt;br /&gt; 	Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; 	If fs.FileExists(NetFile) Then &lt;br /&gt; 	fs.DeleteFile(NetFile) &lt;br /&gt; 	End If &lt;br /&gt; 	fs.MoveFile Out, NetFile &lt;br /&gt; End if &lt;p&gt; If NeedDumpIB = True Then &lt;br /&gt; 	CALL DelOldFiles(Folder, CountDB) &lt;br /&gt; End if &lt;p&gt; &apos; Функция для определения свободного места на диске &lt;br /&gt; Function ShowFreeSpace(drvPath) &lt;br /&gt; Dim fso, d, s &lt;br /&gt; Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; Set d = fso.GetDrive(fso.GetDriveName(drvPath)) &lt;br /&gt; s = &quot;Drive &quot; &amp; UCase(drvPath) &amp; &quot; - &quot; &lt;br /&gt; s = s &amp; d.VolumeName &amp; &quot; &quot; &lt;br /&gt; s = s &amp; &quot;Free Space: &quot; &amp; FormatNumber(d.FreeSpace/1024/1024, 0) &lt;br /&gt; s = s &amp; &quot; Mbytes&quot; &lt;br /&gt; ShowFreeSpace = s &lt;br /&gt; End Function &lt;p&gt; &apos; Скрипт для затирания устаревших файлов: &lt;br /&gt; &apos; Удаляет только файлы у которых сходятся префиксы &lt;br /&gt; Sub DelOldFiles(Folder_Name, Stack_Depth) &lt;br /&gt; 	Set WshShell = CreateObject(&quot;WScript.Shell&quot;) &lt;br /&gt; 	Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; 	Set folder = fso.GetFolder(Folder_Name) &lt;br /&gt; 	Set files = folder.Files &lt;br /&gt; 	For Each f in files &lt;br /&gt; 		fdate = f.DateCreated &lt;br /&gt; 		fPrefix = Left(f.Name,Len(Prefix)) &lt;br /&gt; 		If ((Date - fdate) &gt; Stack_Depth) And fPrefix = Prefix Then &lt;br /&gt; 			f.Delete &lt;br /&gt; 		End If &lt;br /&gt; 	Next &lt;br /&gt; End Sub &lt;br /&gt; [/i]&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 12:23)&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;span style=&quot;color:blue&quot;&gt;&lt;span style=&quot;font-size:14pt;&quot;&gt;&lt;b&gt;Существует скрипт пакетного бэкапа 1С баз&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt; Option Explicit &lt;br /&gt; On Error Resume Next &lt;br /&gt; Dim Base&apos;элемент списка баз &lt;br /&gt; Dim Bases&apos;массив из элементов Base &lt;br /&gt; Dim Folder&apos;элемент списка папок для бэкапа &lt;br /&gt; Dim Folders&apos;массив из элементов Folders &lt;br /&gt; Dim WeekDayNumber&apos;переменная, в которую записывается номер дня недели &lt;br /&gt; Dim ExePath&apos;путь к бинарнику 1С &lt;br /&gt; Dim FSO&apos;файловый объект &lt;br /&gt; Dim WSH &lt;br /&gt; Dim UserName&apos;переменная в которую загоняем имя пользователя 1С (обычно администратора) &lt;br /&gt; Dim UserPass&apos;пароль администратора &lt;br /&gt; Dim IniFile&apos;ini файл для пакетного запуска 1С &lt;br /&gt; Dim TempPath&apos;путь к временной папке, куда будут складоваться временный файл ini и файл лога текущей базы &lt;br /&gt; Dim LogFile&apos;файл лога этого скрипта &lt;br /&gt; Dim LogPath&apos;путь к файлу лога этого скрипта &lt;br /&gt; Dim Log1C&apos;поток лога 1С &lt;br /&gt; Set Bases = CreateObject(&quot;Scripting.Dictionary&quot;) &lt;br /&gt; Set Folders = CreateObject(&quot;Scripting.Dictionary&quot;) &lt;br /&gt; Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;) &lt;br /&gt; Set WSH = CreateObject(&quot;Wscript.Shell&quot;) &lt;br /&gt; WeekDayNumber = WeekDay(Now, vbMonday) &lt;br /&gt; ExePath = &quot;C:&amp;#92;Program Files&amp;#92;1Cv77&amp;#92;BIN&amp;#92;1cv7.exe&quot; &lt;br /&gt; UserName = &quot;Администратор&quot; &lt;br /&gt; UserPass = &quot;пароль&quot; &lt;br /&gt; TempPath = &quot;E:&amp;#92;1C_Backup&amp;#92;Time&amp;#92;&quot; &lt;br /&gt; LogPath = &quot;E:&amp;#92;1C_Backup&amp;#92;log&amp;#92;&quot; &lt;br /&gt; &apos;Прописываем архивируемые базы &lt;br /&gt; Bases.Add &quot;база1&quot;, &quot;С:&amp;#92;Bases&amp;#92;база1&quot; &lt;br /&gt; Bases.Add &quot;база2&quot;, &quot;С:&amp;#92;Bases&amp;#92;база2&quot; &lt;br /&gt; &apos;..... &lt;br /&gt; &apos;********************************************************* &lt;br /&gt; &apos;Прописываем куда архивировать &lt;br /&gt; Folders.Add 1, &quot;C:&amp;#92;1C_Backup&amp;#92;1_Понедельник&amp;#92;&quot; &lt;br /&gt; Folders.Add 2, &quot;C:&amp;#92;1C_Backup&amp;#92;2_Вторник&amp;#92;&quot; &lt;br /&gt; Folders.Add 3, &quot;C:&amp;#92;1C_Backup&amp;#92;3_Среда&amp;#92;&quot; &lt;br /&gt; Folders.Add 4, &quot;C:&amp;#92;1C_Backup&amp;#92;4_Четверг&amp;#92;&quot; &lt;br /&gt; Folders.Add 5, &quot;C:&amp;#92;1C_Backup&amp;#92;5_Пятница&amp;#92;&quot; &lt;br /&gt; Folders.Add 6, &quot;C:&amp;#92;1C_Backup&amp;#92;6_Суббота&amp;#92;&quot; &lt;br /&gt; Folders.Add 7, &quot;C:&amp;#92;1C_Backup&amp;#92;7_Воскресенье&amp;#92;&quot; &lt;br /&gt; &apos;********************************************************* &lt;p&gt; &apos;********************************************** *********** &lt;br /&gt; &apos;Здесь начинается формирование файла-лога данного скрипта &lt;br /&gt; Set LogFile = FSO.CreateTextFile(LogPath &amp; &quot;1C_Backup_&quot; &amp; Date &amp; &quot;.log&quot;) &lt;br /&gt; LogFile.WriteLine &quot;***************************************&quot; &lt;br /&gt; LogFile.WriteLine &quot;Запуск резервного копирования баз 1С...&quot; &lt;br /&gt; LogFile.WriteLine &quot;***************************************&quot; &lt;br /&gt; &apos;WScript.Echo &quot;Задача запущена в&quot; &amp; Time &amp; &quot; &quot; &amp; Date &lt;br /&gt; LogFile.WriteLine &quot;Задача запущена в &quot; &amp; Time &amp; &quot; &quot; &amp; Date &lt;br /&gt; LogFile.WriteLine &quot;***************************************&quot; &lt;p&gt; For Each Base In Bases &apos;Открываем цикл по базам &lt;br /&gt; &apos;Создаем конфигурационный файл для запуска пакетной выгрузки 1С &lt;br /&gt; Set IniFile = FSO.CreateTextFile(TempPath &amp; &quot;UnLoad.ini&quot;) &lt;br /&gt; IniFile.WriteLine &quot;[General]&quot; &lt;br /&gt; IniFile.WriteLine &quot;UnloadData = 1&quot; &lt;br /&gt; IniFile.WriteLine &quot;Output = &quot;&quot;&quot; &amp; TempPath &amp; &quot;UnLoad.log&quot;&quot;&quot; &lt;br /&gt; IniFile.WriteLine &quot;[UnloadData]&quot; &lt;br /&gt; IniFile.WriteLine &quot;UnloadToFile = &quot; &amp; Folders.Item(WeekDayNumber) &amp; Base &amp; &quot;(&quot; &amp; Date &amp; &quot;).zip&quot; &lt;br /&gt; IniFile.Close &lt;p&gt; WSH.Run &quot;&quot;&quot;&quot; &amp; ExePath &amp; &quot;&quot;&quot; CONFIG /D&quot;&quot;&quot; &amp; Bases.Item(Base) &amp; &quot;&quot;&quot; /N&quot; &amp; UserName &amp; &quot; /P&quot; &amp; UserPass &amp; &quot; /@&quot;&quot;&quot; &amp; TempPath &amp; &quot;UnLoad.ini&quot;&quot;&quot;, 1, True &lt;p&gt; &apos;Удаление файла ini от уже обработанной базы &lt;br /&gt; FSO.DeleteFile (TempPath &amp; &quot;UnLoad.ini&quot;) &lt;p&gt; &apos;Чтение лога 1С и его перезапись в лог этого скрипта &lt;br /&gt; LogFile.WriteLine &quot;==================================================&quot; &lt;br /&gt; LogFile.WriteLine &quot;Выгрузка базы данных &quot; &amp; Bases.Item(Base) &lt;br /&gt; &apos;If FSO.FileExists(TempPath &amp; &quot;UnLoad.log&quot;) Then &lt;br /&gt; Set Log1C = FSO.GetFile(TempPath &amp; &quot;UnLoad.log&quot;).OpenAsTextStream(1, -2) &lt;br /&gt; While Not Log1C.AtEndOfStream &lt;br /&gt; LogFile.WriteLine Log1C.ReadLine &lt;br /&gt; Wend &lt;br /&gt; Log1C.Close &lt;p&gt; Next &apos;Конец цикла по базам &lt;br /&gt; LogFile.WriteLine &quot;*************************************************&quot; &lt;br /&gt; LogFile.WriteLine &quot;Выгрузка баз 1С закончена в &quot; &amp; Time &amp; &quot; &quot; &amp; Date &lt;br /&gt; LogFile.WriteLine &quot;*************************************************&quot; &lt;br /&gt; LogFile.Close &lt;br /&gt; FSO.DeleteFile (TempPath &amp; &quot;UnLoad.log&quot;)&apos;удаление файла лога уже обработанной(последней) базы &quot;на всякий случай&quot;</content:encoded>
			<category>СУБД</category>
			<dc:creator>Картуз</dc:creator>
			<guid>https://nc5.my1.ru/forum/106-1660-1</guid>
		</item>
		<item>
			<title>Oracle: Надежное резервирование и отказоустойчивость</title>
			<link>https://nc5.my1.ru/forum/106-1399-1</link>
			<pubDate>Mon, 12 Apr 2010 06:34:05 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://nc5.my1.ru/forum/106&quot;&gt;СУБД&lt;/a&gt;&lt;br /&gt;Описание темы: Практические решения для Oracle&lt;br /&gt;Автор темы: Картуз&lt;br /&gt;Автор последнего сообщения: Картуз&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;span style=&quot;color:purple&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;b&gt;Общая полезная информация&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt; &lt;i&gt;По своему опыту знаю, что ключевыми задачами админа БД на базе Oracle является прежде всего обеспечение резервного копирования и восстановления базы. Для начинающего админа разобраться в этом очень важно, т.к. претендуя на прилично оплачиваемую вакансию, ему необходимо четко представлять возможности Oracle, которые можно и нужно использовать в разработке стратегии обеспечения сохранности данных и отказоустойчивости. &lt;br /&gt; &lt;/i&gt; &lt;p&gt; Данная тема создана с тем, чтобы рассмотреть все возможные варианты, их плюсы и минусы, а также для решения вопросов, возникающих при практической реализации. &lt;p&gt; &lt;span style=&quot;color:blue&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;b&gt;Темы, предлагаемые к рассмотрению&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt; &lt;b&gt;На сегодняшний день Oracle позволяет реализовать 4 варианта резервирования:&lt;/b&gt; &lt;br /&gt; - Backup &lt;br /&gt; - Failover &lt;br /&gt; - StandBy &lt;br /&gt; - Remote Mirroring &lt;p&gt; &lt;b&gt;3 варианта обеспечения отказоустойчивости системы:&lt;/b&gt; &lt;br /&gt; - Real Application Cluster &lt;br /&gt; - Oracle Fail Safe (Cold Failover Cluster) &lt;br /&gt; - Standby Data Guard &lt;p&gt; &lt;span style=&quot;color:red&quot;&gt;Ну что, господа админы? Go Ahead! ? &lt;br /&gt;&lt;/span&gt; &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (08.04.2010, 12:03) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; &lt;span style=&quot;font-size:16pt;&quot;&gt;&lt;b&gt;Backup&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; Бэкап представляет собой периодическое копирование файлов, составляющих физическую структуру БД. Предпочтительно хранить полученные копии на отдельном хранилище, удаленном сервере, в крайнем случае - на отдельном диске сервера БД. Суть данной рекомендации очевидна: при крахе сервера, выходе из строя оборудования и пр., наличие копии на независимом хранилище позволяет избежать потери данных. &lt;br /&gt; Существенный недостаток метода - возможность восстановления данных на момент последней резервной копии. Естественно, чем чаще бэкап создается, тем лучше, однако его создание напрямую связано с изменением регламента работы БД. &lt;br /&gt; Содание бэкапа возможно осуществить: &lt;br /&gt; 1. Средствами ОС &lt;br /&gt; 2. Утилитой Recovery Manager (RMAN) (входит в состав Standart и Enterprise Edition) &lt;br /&gt; 3. Утилитами экспорта/импорта данных - DataPump (Oracle10g, Oracle11g) или exp/imp для более ранних версий (входит в состав Standart и Enterprise Edition) &lt;br /&gt; 4. Oracle Secure Backup. (Приобретается опционно) &lt;p&gt; &lt;span style=&quot;font-size:14pt;&quot;&gt;&lt;b&gt;Бэкап средствами ОС&lt;/b&gt;&lt;/span&gt; &lt;br /&gt; Необходимо скопировать следующие файлы &lt;br /&gt; 1. Файлы табличных пространств. &lt;br /&gt; 2. Управляющие файлы. &lt;br /&gt; 3. Файлы журналов транзакций. &lt;br /&gt; 4. Файлы конфигурации. &lt;p&gt; Давайте теперь их найдем, эти файлы? &lt;img src=&quot;http://s28.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (08.04.2010, 14:26) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; коннектимся с правами sysdba &lt;br /&gt; demo-zone1.oracle: ~&gt; sqlplus sys/*** as sysdba (для примера БД на Solaris10) &lt;p&gt; SQL*Plus: Release 10.2.0.1.0 - Production on Thu Apr 8 12:55:46 2010 &lt;br /&gt; Copyright &amp;copy; 1982, 2005, Oracle. All rights reserved. &lt;p&gt; Connected to: &lt;br /&gt; Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production &lt;br /&gt; With the Partitioning and Data Mining options &lt;p&gt; SQL&gt; &lt;p&gt; Нас интересуют собственно только файлы и пути к ним. Поэтому делаем следующее &lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;Для файлов данных:&lt;/span&gt; &lt;p&gt; SQL&gt; select name from v$datafile; &lt;p&gt; NAME &lt;br /&gt; -------------------------------------------------------------------------------- &lt;br /&gt; /data/mndemo/IDX/idx01.dbf &lt;br /&gt; /data/mndemo/IDX/idx02.dbf &lt;br /&gt; /data/mndemo/IDX/idx03.dbf &lt;br /&gt; /data/mndemo/IDX/idx04.dbf &lt;br /&gt; /data/mndemo/IDX/idx05.dbf &lt;br /&gt; /data/mndemo/users02.dbf &lt;br /&gt; /data/mndemo/users03.dbf &lt;br /&gt; /data/mndemo/users04.dbf &lt;br /&gt; /data/mndemo/users05.dbf &lt;br /&gt; /u/oracle/data1/mndemo/part01.dbf &lt;br /&gt; /u/oracle/data1/mndemo/sysaux.dbf &lt;br /&gt; /u/oracle/data1/mndemo/system01.dbf &lt;br /&gt; /u/oracle/data1/mndemo/undotbs01.dbf &lt;br /&gt; /u/oracle/data1/mndemo/users01.dbf &lt;p&gt; 14 rows selected. &lt;p&gt; &lt;span style=&quot;color:gray&quot;&gt;Для Windows&lt;span style=&quot;font-size:16pt;&quot;&gt;&lt;b&gt;(далее виндовский вариант будет выделяться серым)&lt;/b&gt;&lt;/span&gt;эти пути могут выглядеть так &lt;br /&gt; NAME &lt;br /&gt; -------------------------------------------------------------------------------- &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;DATAFI LE&amp;#92;O1_MF_SYSTEM.DBF &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;DATAFILE&amp;#92;O1_MF_UNDOTBS1.DBF &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;DATAFILE &amp;#92;O1_MF_SYSAUX.DBF &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;DATAFILE&amp;#92;O1_MF_CATTBS.DBF&lt;/span&gt; &lt;p&gt; &lt;span style=&quot;color:blue&quot;&gt;Для управляющих файлов&lt;/span&gt; &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (08.04.2010, 14:32) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; SQL&gt; select name from v$controlfile; &lt;p&gt; NAME &lt;br /&gt; -------------------------------------------------------------------------------- &lt;br /&gt; /u/oracle/data1/mndemo/control01.ctl &lt;br /&gt; /data/mndemo/control02.ctl &lt;br /&gt; /data/mndemo/control03.ctl &lt;p&gt; А можно и так &lt;p&gt; SQL&gt; SELECT value FROM v$parameter &lt;br /&gt; WHERE name = &apos;control_files&apos;; &lt;p&gt; VALUE &lt;br /&gt; -------------------------------------------------------------------------------- &lt;br /&gt; /u/oracle/data1/mndemo/control01.ctl, /data/mndemo/control02.ctl, /data/mndemo/c &lt;br /&gt; ontrol03.ctl &lt;p&gt; &lt;span style=&quot;color:gray&quot;&gt;NAME &lt;br /&gt; ------------------------------------------------------------------------------- &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;CONTROLFILE&amp;#92; O1_MF.CTL &lt;br /&gt;&lt;/span&gt; &lt;br /&gt; Для файлов журналов (журналы повторного выполнения redo log) &lt;p&gt; SQL&gt; select member from v$logfile; &lt;p&gt; MEMBER &lt;br /&gt; -------------------------------------------------------------------------------- &lt;br /&gt; /u/oracle/data1/mndemo/red01a.log &lt;br /&gt; /u/oracle/data1/mndemo/red01b.log &lt;br /&gt; /u/oracle/data1/mndemo/red02a.log &lt;br /&gt; /u/oracle/data1/mndemo/red02b.log &lt;br /&gt; /u/oracle/data1/mndemo/red03a.log &lt;br /&gt; /u/oracle/data1/mndemo/red03b.log &lt;p&gt; 6 rows selected. &lt;p&gt; &lt;span style=&quot;color:gray&quot;&gt;MEMBER &lt;br /&gt; ----------------------------------------------------------------------------- &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;ONLINELOG&amp;#92;O1 _MF_1_5RX2212X_.LOG &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;ONLINELOG&amp;#92;O1_MF_2_5RX222VT_.LOG &lt;br /&gt; D:&amp;#92;ORACLE&amp;#92;PRODUCT&amp;#92;10.2.0&amp;#92;ORADATA&amp;#92;MNADMIN&amp;#92;ONLI NELOG&amp;#92;O1_MF_3_5RX224SW_.LOG&lt;/span&gt; &lt;p&gt; &lt;span style=&quot;color:purple&quot;&gt;&lt;i&gt;Примечание: рассматривается ситуация, когда база работает в режиме NO ARCHIVELOG. Про ARCHIVELOG поговорим чуть позже&lt;/i&gt;&lt;/span&gt; &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (08.04.2010, 14:56) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Конфигурационные файлы &lt;br /&gt; Параметры инициализации. &lt;br /&gt; Файл: Init.ora &lt;br /&gt; .../admin/%SID%/pfile/init.ora &lt;br /&gt; Сетевые настройки. &lt;br /&gt; Файлы: listener.ora, tnsnames.ora, sqlnet.ora. &lt;br /&gt; .../%HOME_DIR%/%SID%/NETWORK/ADMIN/ &lt;br /&gt; • Файлы паролей. &lt;br /&gt; .../%HOME_DIR%/%SID%/dbs/ &lt;p&gt; &lt;b&gt;Добавлено&lt;/b&gt; (08.04.2010, 15:45) &lt;br /&gt; --------------------------------------------- &lt;br /&gt; Вроде все нашли. Теперь можно приступать к копированию. Вот тут мы и сталкиваемся с главным минусом такого бэкапа: Бд необходимо погасить &lt;img src=&quot;http://s28.ucoz.net/sm/1/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot;&gt; &lt;br /&gt; Поэтому подобный бэкап делается строго регламентированно и неприменим для БД, которые должны постоянно находиться on-line &lt;p&gt; И тем не мене. Гасим БД: &lt;br /&gt; SQL&gt; shutdown immediate; &lt;br /&gt; Database closed. &lt;br /&gt; Database dismounted. &lt;br /&gt; ORACLE instance shut down. &lt;br /&gt; SQL&gt; &lt;p&gt; Приступаем собственно к копированию и последующей архивации файлов. &lt;br /&gt; После этого вновь запускаем БД. &lt;p&gt; Прежде чем продолжить, давайте все-таки переведем базу в режим архивации журналов повторного выполнения. А что такое эти журналы? Ну тут следует просто процитировать гуру &lt;img src=&quot;http://s28.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; (кто еще не знает, так это &lt;b&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;span style=&quot;color:blue&quot;&gt;Том Кайт&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;a class=&quot;link&quot; target=&quot;_blank&quot; href=&quot;http://ru.wikipedia.org/wiki/Кайт,_Том&quot;&gt;http://ru.wikipedia.org/wiki/Кайт,_Том&lt;/a&gt; ) &lt;br /&gt; &lt;span style=&quot;color:blue&quot;&gt;&lt;br /&gt; &lt;span style=&quot;font-size:16pt;&quot;&gt;Файлы журнала повторного выполнения&lt;/span&gt;&lt;/span&gt; &lt;p&gt; Файлы журнала повторного выполнения принципиально важны для базы данных Oracle. Это журналы транзакций базы данных. Они используются только для восстановления при сбое экземпляра или носителя или при поддержке резервной базы данных на случай сбоев. Если на сервере, где работает СУБД, отключится питание и вследствие этого произойдет сбой экземпляра, для восстановления системы в состояние, непосредственно предшествующее отключению питания, сервер Oracle при повторном запуске будет использовать оперативные журналы повторного выполнения. Если диск, содержащий файлы данных, полностью выйдет из строя, для восстановления резервной копии этого диска на соответствующий момент времени сервер Oracle, помимо оперативных журналов повторного выполнения, будет использовать также архивные. Кроме того, при случайном удалении таблицы или какой-то принципиально важной информации, если эта операция зафиксирована, с помощью оперативных и архивных журналов повторного выполнения можно восстановить данные из резервной копии на момент времени, непосредственно предшествующий удалению. &lt;p&gt; Практически каждое действие, выполняемое в СУБД Oracle, генерирует определенные данные повторного выполнения, которые надо записать в оперативные файлы журнала повторного выполнения. При вставке строки в таблицу конечный результат этой операции записывается в журналы повторного выполнения. При удалении строки записывается факт удаления. При удалении таблицы в журнал повторного выполнения записываются последствия этого удаления. Данные из удаленной таблицы не записываются, но рекурсивные SQL-операторы, выполняемые сервером Oracle при удалении таблицы, генерируют определенные данные повторного выполнения. Например, при этом сервер Oracle удалит строку из таблицы SYS.OBJ$, и это удаление будет отражено в журнале. &lt;p&gt; Некоторые операции могут выполняться в режиме с минимальной генерацией данных повторного выполнения. Например, можно создать индекс с атрибутом NOLOGGING. Это означает, что первоначальное создание этого индекса не будет записываться в журнал, но любые инициированные при этом рекурсивные SQL-операторы, выполняемые сервером Oracle, — будут. Например, вставка в таблицу SYS.OBJ$ строки, соответствующей индексу, в журнал записываться не будет. Однако последующие изменения индекса при выполнении SQL-операторов INSERT, UPDATE и DELETE, будут записываться в журнал.&lt;p&gt;&lt;b&gt;Добавлено&lt;/b&gt; (12.04.2010, 10:34)&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;span style=&quot;color:green&quot;&gt;&lt;span style=&quot;font-size:16pt;&quot;&gt;&lt;b&gt;Переход в режим ARCHIVELOG&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt; Прежде всего на всякий случай убедимся, что режим ARCHIVELOG не активирован (мало ли &lt;img src=&quot;http://s28.ucoz.net/sm/1/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot;&gt; :D). Как мы помним, база была погашена. Запустим ее в обычном режиме: &lt;br /&gt; SQL&gt; startup &lt;br /&gt; ORACLE instance started. &lt;p&gt; Total System Global Area 876609536 bytes &lt;br /&gt; Fixed Size 2024720 bytes &lt;br /&gt; Variable Size 331352816 bytes &lt;br /&gt; Database Buffers 536870912 bytes &lt;br /&gt; Redo Buffers 6361088 bytes &lt;br /&gt; Database mounted. &lt;br /&gt; Database opened. &lt;p&gt; Проверяем режим работы &lt;br /&gt; SQL&gt; select log_mode from v$database; &lt;p&gt; LOG_MODE &lt;br /&gt; ------------ &lt;br /&gt; NOARCHIVELOG &lt;p&gt; Снова гасим БД. Вносим необходимые правки в init.ora &lt;p&gt; log_archive_dest_1 = &quot;location=/data/mndemo/arch&quot; - путь к файлам архива (можно указать до 10 разных путей) &lt;br /&gt; log_archive_dest_state_1 = enable - состояние направления архивирования (открыто/закрыто) &lt;br /&gt; log_archive_format = arch_mndemo_%t_%s_%r.arc - формат файлов архива &lt;p&gt; Теперь запускаем экземпляр, монтируем базу, но не открываем ее: &lt;p&gt; SQL&gt; startup mount &lt;br /&gt; ORACLE instance started. &lt;br /&gt; Total System Global Area 876609536 bytes &lt;br /&gt; Fixed Size 2024720 bytes &lt;br /&gt; Variable Size 331352816 bytes &lt;br /&gt; Database Buffers 536870912 bytes &lt;br /&gt; Redo Buffers 6361088 bytes &lt;br /&gt; Database mounted. &lt;p&gt; Переводим базу в режим архивирования файлов журналов повторного выполнения &lt;p&gt; SQL&gt; alter database archivelog; &lt;br /&gt; Database altered. &lt;p&gt; Производим проверку состояния &lt;p&gt; SQL&gt; archive log list &lt;br /&gt; Database log mode Archive Mode &lt;br /&gt; Automatic archival Enabled &lt;br /&gt; Archive destination /data/mndemo/arch &lt;br /&gt; Oldest online log sequence 257 &lt;br /&gt; Next log sequence to archive 259 &lt;br /&gt; Current log sequence 259 &lt;p&gt; Открываем базу для дальнейшей работы &lt;p&gt; SQL&gt; alter database open &lt;br /&gt; Database altered. &lt;p&gt;</content:encoded>
			<category>СУБД</category>
			<dc:creator>Картуз</dc:creator>
			<guid>https://nc5.my1.ru/forum/106-1399-1</guid>
		</item>
	</channel>
</rss>