Показаны сообщения с ярлыком DBA. Показать все сообщения
Показаны сообщения с ярлыком DBA. Показать все сообщения

среда, 16 октября 2013 г.

Backup MS SQL на сетевой диск

Имеем базу MS SQL, размер 150 Гбайт и растет дальше. Обязательно нужен бэкап. Пока делали на этой же машине. Но диски маленькие(300Гб) и некуда писать бэкап. Появилась идея писать его на сетевой расшаренный диск. Вот тут-то и началось. Шара находится в одной сетке, а сервер в другой, да еще и демозоне. Решение такое:
  1. В шаре(это Linux Samba) заводится учетка с паролем.
  2. Между шарой и сервером в файрволе пробивается канал по сети.
  3. На сервере создается такая же учетка с тем же паролем.  
  4. На сервере в службах открываем службы MSSQL и Client. В свойствах этих служб в папке Log On вводим запуск служб от имени нашей учетки и ее пароль.
  5. Запускаем службы.
  6. На сервере в SQL открываем учетку из windows. Ей даем права на создание бэкапа.
  7. Входим на сервер под созданной учеткой.
  8. Мэпируемся к шаре, если все срослось, то пароль не спросят, они совпали.  
  9. На сервере запускаем программу osql с именем учетки и паролем
  10. В ней выполняем две команды
    USE master
    EXEC sp_addumpdevice 'disk', 'Nw1', '\\London\Backup\Nw1.bak'

    Где:
    Nw1 - название удалённого устройства. М.б. названо любым именем
    London - имя компьютера
    Backup - имя расшаренной папки
  11. Создаем командами T-SQL новый device см. выше
  12. Входим в Studio и создаем бэкап на дисковое устройство Nw1 шару.
  13. При создании JOB для бэкапа входить в сервер нада под той самой учеткой!  
  14. Это не обязательно! Главное, что бы учетки на шаре и сервере имели одно и то же имя и пароль!

И все.

вторник, 26 февраля 2013 г.

Oracle 11g XE - подключение в Windows

Фирма Oracle выпускает вариант своей СУБД 11g в ограниченной версии: Express Edition(XE).
Для ее использования не нужна Лицензия. Конечно начинать изучение Oracle лучше с этой версии.

Для работы с Oracle фирма делает и выкладывает для использования два продукта: SQLDeveloper и DataModeler. Эти программы имеют большие возможности и очень полезны.
Но: они реализованы на языке Java и используют для доступа к базам как клиента так и jdbc с прямым доступом. При загрузке этих программ стартует java машина, которая читает с вашего компьютера локаль и передает программе. Та в свою очередь определяет сеансовые настройки NLS и пытаются установить их на сервере XE. А там их нет! Во всяком случае для России.
Коннект не проходит хоть плачь.

Выход прост: в файле sqldeveloper\sqldeveloper\bin\sqldeveloper.conf вставляем принудительную локаль для java машины:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

Для datamodeler берем соответственно файл  C:\datamodeler\datamodeler\bin\datamodeler.conf.
Вставляем те же строчки.

 Если вы используете Python  с Oracle, то возможно и используете модуль cx_Oracle. Будьте готовы, что при попытки подключения выскочит ошибка по поводу того, что клиент просит установить такой  NLS_LANG, которого в XE нет! os.environ["NLS_LANG"]="AMERICAN_AMERICA.AL32UTF8"Ошибка ORA-12705.

Проблема решается аналогично.
в модуль Python вставляете строки:

import os
os.environ["NLS_LANG"]="AMERICAN_AMERICA.AL32UTF8"

и далее база XE ваша!






понедельник, 24 декабря 2012 г.

Как переименовать или удалить файлы с данными и файлы журналов

Как переименовать или удалить файлы с данными и файлы журналов
Для памяти я сделал перевод из этого материала: How to Rename or Move Datafiles and Logfiles [ID 115424.1]
ПРИМЕЧАНИЕ:  Чтобы переименовать или удалить файлы в табличном пространстве SYSTEM вы должны базу остановить, потому что вы не можете перевести табличное пространство SYSTEM в оффлайн.

I. ПЕРЕИМЕНОВАНИЕ ИЛИ УДАЛЕНИЕ ФАЙЛОВ ДАННЫХ ПРИ ОТКРЫТОЙ БАЗЕ ДАННЫХ

1. Определить как много файлов с данными связаны с табличном пространством.
     > SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES
               WHERE TABLESPACE_NAME = 'Имя';
2. Убедитесь в том, что все файлы с данными возвращают статус AVAILABLE.
3. Сделайте табличное пространство только для чтения.
     > ALTER TABLESPACE  имя READ ONLY;
4. Убедитесь в том, что табличное пространство определено со статусом только для чтения в словаре данных.
     > SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES
               WHERE TABLESPACE_NAME = 'имя';

     TABLESPACE_NAME                STATUS
    -
             ИМЯ                                   READ ONLY

5. Скопируйте файл(ы) на новое место, используя команду операционной системы copy.  После копирования сравните файлы по размеру. Убедитесь, что файлы одинакового размера.
6. После копирования файлов измените статус табличного постранства на оффлайн.
    > ALTER TABLESPACE имя OFFLINE;
 * С этого момента табличное пространство не доступно пользователям.
7. Так как табличное пространство в оффлайне, вы можете переименовать файлы. Это внесет изменения в controlfile.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
 * Вы должны будете сделать это для всех файлов данных, связанных с этим табличным пространством. Вы можете использовать такую же конструкцию ALTER TABLESPACE ... RENAME DATAFILE.
8. Если предложение alter database обработано для файлов, вы можете перевести табличное пространство в онлайн.
     > ALTER TABLESPACE имя ONLINE;
9. После этого переведите табличное пространство в статус чтение/запись.
     > ALTER TABLESPACE имя READ WRITE;
10. Проверьте статус табличного пространства. Вы можете так же проверить как обновился controlfile:
      > ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
  Эта команда выведет содержание controlfile в текстовый файл в директорию с именем  user_dump_dest.
  Конечно, можно посмотреть V$DATAFILE.
11. Удалите старые файлы командами O/S.

II. Переименование и/или удаление файлов с данными при остановленной базе

1. Если база работает, остановите ее.
2. Скопируйте файлы с данными на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу.
      > STARTUP MOUNT                                                         
 Эта команда прочтет файл control, но не монтирует файлы с данными.   
4. Переименуйте файл внутри Oracle.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
 Выполните эту команду для всех тех файлов, которые вы меняли на уровне операционной системы.
5. Откройте базу данных.
      > ALTER DATABASE OPEN;
6. Запросите v$dbfile что бы удостовериться в правильности изменений.
      > SELECT * FROM V$DBFILE;
7. Удалите старые файлы на уровне операционной системы.

III. Переименование и/или удаление журнальных файлов(LOGFILE)

1. Остановите базу данных.
2. Скопируйте logfile на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу данных.
      > STARTUP MOUNT
4. Переименовываем файл.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_REDO_LOG_NAME.LOG'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_REDO_LOG_NAME.LOG';
5. Открываем базу данных.
      > ALTER DATABASE OPEN;
6. Удаляем старые журнальные файлы на системном уровне.

вторник, 30 октября 2012 г.

Где ты tnsnames.ora?

У администратора на машине как правило устанавливается несколько клиентов Oracle. В каждом из них надо прописать tnsnames.ora. Если происходят какие-то изменения, например поменяли порт базы), то надо менять tnsnames.ora во всех клиентах Но если вы запишете в переменной среды переменную TNS_ADMIN и дадите ей путь (например, С:\oracle), и там разместите ваш tnsnames.ora, то все продукты будут брать только его.

суббота, 13 октября 2012 г.

Копируем файл с одной машины на другую-2

Имеем два сервера: 2003 и 2008 R2.
На 2003 работает MS SQL 2005. Ежедневно выполняется BACK UP MS SQL. Файл бэкапа вырос до 100 гигабайт.
Два раза в неделю файл с бэкапом копировался на другой сервер по сети. Этот сервер работает под Windows 2008 R2. Так вот файл размером в 100 гиг не копируется: в сообщении говорится, что не хватает памяти на сервере. Что интересно, с сервера под управлением Windows 2008 R2 копирование проходит, а с Windows 2003 нет.
Просто кошмар! А в Интернете стон по поводу копирования больших файлов на Windows. Интересно, а зачем сервера, если у вас маленькие файлы?    

История битвы:
1.
Поставил в реестре сервера, на который копирую вот это значение:

Поставил на Windows 2008 R2 сервис пак SP1 - не помогло.

HKEY_LOCAL_MACHINE
 \SYSTEM
  \CurrentControlSet
   \Services
    \LanmanServer
     \Parameters
IRPStackSize DWORD 0x000000014 (20)

УВЫ.
2. На уме выполнять копию MSSQL на два файла. Тогда будет два файла по 50 гиг, ну а 50 гиг Windows копирует. 

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога