вторник, 12 ноября 2013 г.

Восстановление из бэкапа с заменой путей

Восстанавливаем spfile из автобэкапа

  • стартуем фейковый инстанс, например ORCL, в NOMOUNT
    • sqlplus / as sysdba
    • startup nomount;
  • восстанавливаем spfile
    • rman target /
    • SET DBID = <DBID>
    • RUN {
allocate channel c2 device type disk;
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle-backup/<dbname>/%F';
restore spfile to '/tmp/spfile.ora' from '/oracle-backup/<dbname>/c-<DBID>-20131102-00';
}
  • копируем  spfile в pfile
    • cp /tmp/spfile.ora $ORACLE_HOME/dbs/init<dbname>.ora
  • редактируем пфайл, меняем пути, удаляем бинарные строки
  • стартуем инстанс
    • export ORACLE_SID=<dbname>
    • sqlplus / as sysdba
    • startup nomount

Восстанавливаем контролфайлы из автобэкапа


  • rman target /
    • SET DBID=<DBID>;
    • RUN {
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle-backup/<dbname>/%F';
RESTORE CONTROLFILE FROM '/oracle-backup/<dbname>/c-<DBID>-20131102-00';
}
  • монтируем базу
    • rman> alter database mount;

Подготавливаем список файлов для переименования


  • получаем список логов
    • select 'alter database rename file '''||member||''' to '''||replace(member,'+ASM_DATA','/opt/oracle/oradata')||''';' from v$logfile;
    • запускаем полученный скрипт
  • получаем список датафайлов
    • select 'set newname for datafile '||file#||' to '''||replace(name,'+ASM_DATA','/opt/oracle/oradata')||''';' from v$datafile 
  • получаем список темпфайлов
    • select 'ALTER DATABASE RENAME FILE '''||name||''' to '''||replace(name,'+ASM_DATA','/opt/oracle/oradata')||''';' from v$tempfile
    • отрабатываем замену имени темпфайла
  • подготавливаем скрипт для rman
RUN
{
allocate channel c2 device type disk;
set newname for datafile 1 to '<new_path>/system.272.770395821';
set newname for datafile 2 to '<new_path>/undotbs1.273.770395821';
set newname for datafile 3 to '<new_path>/sysaux.274.770395823';
set newname for datafile 4 to '<new_path>/users.271.770395821';
# restore the database and switch the datafile names
RESTORE DATABASE;
SWITCH DATAFILE ALL;
# recover the database
RECOVER DATABASE;
}
  • запускаем скрипт в rman 
  • alter database open resetlogs


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

Esxi VSphere и iDrac за натом

Esxi VSphere
надо замаппить порты
 902
и 443
желательно 1 в 1



iDrac
маппим порты
443
5900 (мышка, клавиатура)
5901 (видео)


пятница, 23 августа 2013 г.

понедельник, 12 августа 2013 г.

Мониторинг рман

REM RMAN Progress
alter session set nls_date_format='dd/mm/yy hh24:mi:ss'
/


select SID, START_TIME,TOTALWORK, sofar
, (sofar/totalwork) * 100 done
sysdate + TIME_REMAINING/3600/24 end_at 
from v$session_longops
where totalwork > sofar
AND opname NOT LIKE '%aggregate%'
AND opname like 'RMAN%' 
/
взято здесь

Полезные команды rman

восстановление контролфайлов с автобэкапа
RUN {
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle-backup/%F';
RESTORE CONTROLFILE FROM AUTOBACKUP;
}

catalog start with '/oracle-backup/'; - скармливаем рману директорию с бэкапами
list device type disk backup of database; - список полных бэкапов на диске
LIST BACKUP OF ARCHIVELOG SEQUENCE 281837; - определение конкретного архивлога
LIST BACKUP OF ARCHIVELOG  FROM SEQUENCE 281837 UNTIL SEQUENCE 281847 ; - определение конкретного архивлога

Замечательная штука вышла с нетбэкапом, оказывается если в него пишут 2 ноды пусть даже в одну политику, бэкапы сделанные друг другом они НЕ видят. Надо настраивать права. О видимости в нетбакапе я уже писал


среда, 31 июля 2013 г.

ERROR OGG-01192 Trying to use RMTTASK on data types which may be written as LOB chunks

Замечательная ошибка, проявляющаяся при прямом методе загрузки начальных данных.
Прямой метод не подходит для таблиц, в которых есть LOB и LONG поля.
Есть 2 метода решения:
1) выкинуть эти таблицы из репликации
2) Использовать другой метод начальной загрузки, например "Loading data from file to Replicat"

Настраиваем extractor для первичной загрузки
создаем только файл параметров с указанием параметров прямой загрузки
EDIT PARAMS initlob
            SOURCEISTABLE
USERID DDLGG, PASSWORD DDLGGPWD

RMTHOST TargetHost, MGRPORT 7809
RMTFILE /home/oracle/GoldenGate/dirdat/initld,   PURGE
TABLE srcschm.*;
Запускаем 
            ./extract paramfile dirprm/initlob.prm reportfile ./initlob.rep
Настраиваем replicat для первичной загрузки
создаем только файл параметров с указанием параметров прямой загрузки

EDIT PARAMS loadlob
SPECIALRUN
END RUNTIME
USERID DDLGG, PASSWORD DDLGGPWD
DBOPTIONS SUPPRESSTRIGGERS, DEFERREFCONST //подавляем триггеры и ограничения
ASSUMETARGETDEFS
EXTFILE /home/oracle/GoldenGate/dirdat/initld
MAP srcschm.*, TARGET targetschm.*;

Запускаем
./replicat paramfile dirprm/loadlob.prm reportfile ./loadlob.rep



Начальная настройка GoldenGate


GoldenGate — настройка процесса

SourceDB (Oracle 10.2) , хост - SourceHost
TargetDB (Oracle 11.2) , хост — TargetHost

В целом процесс настройки заключается в следующем:
  1. установка GoldenGate (GG)
  2. создание пользователя в каждой базе и раздача прав
  3. создание и старт менеджера на каждом GG
  4. создание extract процессов на SourceHost (в данном сценарии используется классический режим)
  • extract для захвата транзакций в локальный трэйл
  • extract (data pump) для передачи захваченных транзакций на удаленный GG
  • extract для первичной инициализации данных
  1. создание replicat процессов на TargetHost
  • replicat для приема транзакций
  • replicat для первичной инициализации данных
  1. запуск системы

вторник, 30 июля 2013 г.

Клонирование базы данных на одном хосте


для версии 10г
Исходная база использует ASM и OMF

ORACLE 11G RAC installation


 Устанавливаем OS - SLES 11
необходим базовый пакет xorg-x11 для запуска установщика


echo server 172.16.21.9 iburst maxpoll 9 prefer >/etc/ntp.conf
echo server 172.16.21.164 iburst maxpoll 9 >>/etc/ntp.conf
echo server 10.1.1.9 iburst maxpoll 9 >>/etc/ntp.conf
echo server 10.1.1.163 iburst maxpoll 9 >>/etc/ntp.conf
service ntp restart
ntpq -p
Требование по свопу: на 64 битной системе если ОЗУ>32Гб то свап=32Гб, если меньше то свап=ОЗУ

Нюансы установки Oracle 10g RAC на SUSE 11

Стояла задача — установить Oracle 10g RAC на SLES 11. По ходу установки столкнулся с рядом нюансов, которые были слабо описаны на просторах интернета. Детально процесс установки описывать не буду. Для этого можно посмотреть следующие описания. которыми и я пользовался при установке:
на русском
на английском

Из ASM в файловую систему, регистрация архивлогов в rman

вытаскиваем архивлоги из ASM  в файловую систему

RMAN> copy archivelog  '+ASM_DATA/SRCDB/archivelog/2013_07_28/thread_1_seq_134564.14854.821935225' to '/tmp/thread_1_seq_134564.14854.821935225';
А если надо зарегистрировать архивлог, для дальнейшего восстановления

RMAN> catalog archivelog '/opt/oracle/thread_1_seq_134565.14853.821937023';



четверг, 27 июня 2013 г.

пятница, 24 мая 2013 г.

RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process


Не хочет rman удалять archivelogs, хотя казалось бы


select applied_scn from dba_capture;

select  thread#, sequence#
from v$archived_log
where :l_apply_scn between first_change# and next_change#;

rman> DELETE  ARCHIVELOG UNTIL SEQUENCE =:seq1 thread 1;
rman> DELETE  ARCHIVELOG UNTIL SEQUENCE = :seq2 thread 2;

должно работать. 

Оказывается RMAN  проверяет 
SELECT MIN_REQUIRED_CAPTURE_CHANGE# FROM V$DATABASE;
а обновляется он раз в 6 часов.

Как принудительно обновить, пока не знаю. Если кто в курсе - подскажите.

среда, 15 мая 2013 г.

Unable to perform the backup because the database is closed.

начал мне выдавать Grid Control  такой ответ.
С чего вдруг - не понятно.
После долгих копаний обнаружилось., что бэкап грид контрол делает скриптом rman_o.pl, в котором на конечном сервере БД он сначала пускает sqlplus /nolog
а потом только делает коннект.
А я тут как раз скрипт glogin подправил - sqlprompt настроил, чтоб global_name  мне рисовал.
Вот на этом месте бэкапный гридовый скрипт весело и спотыкался. Коннект у него не проходил. состояние базы он снять не мог и дальнейший бэкап не пускал.

Настройка репликации с помощью Streams


задача:
 реплицировать схему из одной базы в другую, за исключением таблиц


что имеем:


  • пользователь streamadmin создан на обоих базах с помощью oracle cloud control.
  • DB линки также созданы.
  • Настроить репликацию мастером не получилось - разъехались SCN.
  • база SOURCE_DB.DOMAIN.COM
  • база TARGET_DB.DOMAIN.COM
  • схема TEST_STREAM

Реализация

среда, 8 мая 2013 г.

REDO Logs в RAC

 в RAC каждый instance ведет свои redo логи.

добавить лог группу для конкретного инстанса можно командой:


ALTER DATABASE
  ADD LOGFILE
     THREAD 1
         GROUP 1  ('+ASM_REDO')
      SIZE 50M;

соответственно архивлоги тоже у каждого свои. Восстановить в рмане их можно командой вида:

select name, thread#, sequence#, status, first_time, next_time, first_change#, next_change#
from v$archived_log
where :SCN between first_change# and next_change#;

rman> restore archivelog from logseq=45164 thread 1