К основному контенту

Сообщения

Автоматическое обновление snaphot standby

Задача: раз в сутки обновлять snapshot standby базу до актуального состояния. Делается это путем перевода в physycal standby и наката накопленных за день архивов.  После завершения обновления база снова переключается в snapshot standby. Для Windows: @echo off set ORACLE_SID=axtest set ORACLE_HOME=G:\oracle\ora11204 set prim_db=prd set std_db=std set cred=sys/p@S$w0Rd echo #################################################################### echo Refresh started at %time%  echo . echo #################################################################### set role = PHYSICAL %ORACLE_HOME%\bin\dgmgrl %cred%@%prim_db% "convert database %std_db% to %role% standby" echo  Now we are waiting for apply to finish. It'll take some time. echo ... :wait  ping 127.0.0.1 -n 30 >null %ORACLE_HOME%\bin\dgmgrl %cred%@%prd% "show database %std%" > log\lag.tmp for /f "tokens=3 delims= " %%i in ('find "Transport Lag" log\lag.tmp...

Работа с архивлогами

Включение режима архивлог. CONNECT sys AS SYSDBA STARTUP MOUNT EXCLUSIVE -- really exclusive ? ALTER DATABASE ARCHIVELOG; -- NOARCHIVELOG to disable ARCHIVE LOG START; ALTER DATABASE OPEN; Список архивлогов, которые не были забекаплены list archivelog all backed up 0 times to disk/sbt_tape; Есть баг, когда Golden Gate держит архзивлоги, которые реально ему уже не нужны: RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process В таком случае, при острой необходимости можно их удалить с ключом force. Для пущей безопасности удалить можно только уже забекапленные логи и те, которые старше одного дня. delete force archivelog all backed up 1 times to device type sbt_tape completed before 'sysdate-1'; Как вытащить арихвлог из имеющегося бекапа. RMAN> run {  allocate channel t1 type 'sbt_tape';  set archivelog destination to 'C:\REPL';  restore archivelog sequence between 46435 and  46438 ;  release channel...

Использование flashback database

Настройка 1. Настроен ли Flashback select flashback_on from v$database; FLASHBACK_ON ------------------ NO 2. Настройка FRA show parameter db_recovery_file_dest show parameter db_recovery_file_dest_size Если не настроена alter system set db_recovery_file_dest='+<FRA Diskgroup>' SCOPE=spfile; alter system set db_recovery_file_dest_size=100G SCOPE=spfile; 3. Настройка Flashback shutdown immediate; startup mount; alter database flashback on; alter database open; select flashback_on from v$database; FLASHBACK_ON ------------------ YES alter system set db_flashback_retention_target=2880; 4. Создание точки восстановления. CREATE RESTORE POINT before_upgrade; CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE; Откат изменений с использованием технологии flashback. CONN / AS SYSDBA SHUTDOWN IMMEDIATE STARTUP MOUNT EXCLUSIVE --не уверен, что обязательно exclusive ? FLASHBACK DATABASE TO RE...

Улучьшения планировщика заданий в Oracle 12c

Планировщик двенадцатого оракла позволяет запускать задания основанные на скриптах (bash/rman). Это особенно удобно в среде RAC, так как расписание будет храниться в едином хранилище, а не в crontab каждого узла. В старых версиях тоже была возможность вызывать внешние скрипты, но для этого требовались определенные танцы с бубном. Сейчас же всё легко и просто. Для создания этих заданий требуются привилегии CREATE JOB, CREATE EXTERNAL JOB и  CREATE CREDENTIAL . 1.  Для начала нужно создать ссылку на учетную запись ОС. С этими правами и будет работать скрипт. BEGIN  DBMS_CREDENTIAL.create_credential(                          credential_name   => 'oracle_os',                          username          => 'oracle',               ...

Решение ошибки ORA-31634 при работе с датапампом.

При частом использовании датапампа возможно возникновение ошибок следующего вида: ORA-31634: job already exists ORA-31664: unable to construct unique job name when defaulted Причина в следующем: Системные таблицы относящиеся к старым заданиям датапампа не были удалены. "This error normally occurs when you do not specify a unique JOB_NAME for the DataPump job  and for some reason that JOB_NAME already exists in the database, or else if you are running many jobs at the same time (more than 99 jobs) and DataPump cannot create a new job." (MOS) Для решения проблемы: 1. Найти неработающие задания ДП. SELECT owner_name, job_name, operation, job_mode,     state, attached_sessions     FROM dba_datapump_jobs     where owner_name='SCHEMA' and state='NOT RUNNING' ORDER BY 1,2;  2. Найти соответствующие этим заданиям системные таблицы. SELECT o.status, o.object_id, o.object_type,      ...

Использование Oracle Total Recall

1. Создание табличного пространства под архив:   CREATE TABLESPACE FLASH_ARCH_TS datafile         SIZE 10M AUTOEXTEND ON NEXT 100M; 2. Создание архива с периодом хранения год: CREATE FLASHBACK ARCHIVE FLASH_ARCH TABLESPACE FLASH_ARCH_TS RETENTION 1 YEAR; 3. Выдача прав для использования архива:    GRANT FLASHBACK ARCHIVE ON FLASH_ARCH TO DBAX;    ALTER FLASHBACK ARCHIVE FLASH_ARCH SET DEFAULT; 4. Включение архива для новой таблицы: CREATE TABLE  FB_TEST  (   id          NUMBER,   text  VARCHAR2(50)    ) FLASHBACK ARCHIVE [FLASH ARCH];   или    ALTER TABLE FB_TEST FLASHBACK ARCHIVE [ FLASH_ARCH] ;  для уже существующей таблицы. 5. Тест. Пробуем вставить данные в таблицу, затем убеждается, что 5 секунда назад их не было. insert into  FB_TEST    values(1,'test'); commit; select * from  FB_TEST   AS O...

Импорт схемы БД с удаленного сервера.

Задача: Провести реимпорт данных с удаленного сервера. Задача осложняется слабым каналом, а также версией Oracle - Standart Edition One, которая не поддерживает datapump опции compression = all. Имя схемы передается в качестве параметра (%1) для пакетного файла. rem Считаем, что имя хоста совпадает с именем базы в TNS set rem_hst=REMOTE rem rem_dir - это data_pump_dir на удаленной машине. set rem_dir=oracle\ora11\RDBMS\log rem Login и пароль для net use'a set rem_usr=localhost\dbax set rem_psw=p@S$w0Rd rem Экспорт дампа и архивирование его через wmic. expdp  dbax/ p@S$w0Rd @%rem_hst% dumpfile=%1.dmp schemas=%1 logfile=%1.log reuse_dumpfiles=yes wmic /node:"%rem_hst%" /user:%rem_usr% /password:"%rem_psw%" process call create "zip E:\%rem_dir%\%1.zip E:\%rem_dir%\%1.dmp" rem Копирование с возобновлением в случае падения сети. net use \\%rem_hst%\e$ /user:%rem_usr% %rem_psw% :copy copy \\%rem_hst%\e$\%rem_dir%\%1.zip c:\app\oracle\da...