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

Сообщения

Показаны сообщения с ярлыком "dba"

Полное восстановление БД Oracle на новую машину.

Предварительное замечание: если (вдруг) используется windows предварительно нужно создать новый экземпляр с помощью oradim. Итак: export ORACLE_SID=mysid Создаём pfile с необходимыми параметрами cat > initmysid.ora <<EOF db_name=yourdbname db_unique_name=instance EOF В большинстве случаев этого достаточно startup nomount Восстанавливаем controlfile из имеющейся резервной копии. RMAN> restore controlfile from '/home/oracle/stage/o1_mf_s_819826669_8x7w7g70_.bkp'; shutdown immediate startup mount; Сообщаем базе, где лежат резервные копии: RMAN> catalog start with '/home/oracle/stage'; Перед тем как восстанавливать БД неплохо было бы узнать последний хороший scn, дабы уберечься от ошибки на последней стадии (alter database open resetlogs ). Самый простой способ сделать это такой - после восстановления контрольного файла подключаемся as sysdba к mount базе и выполняем следующий запрос: SQL> column scn format 999999999999999 se...

Oracle PL/SQL native compilation в боевых условиях.

Задача: тестирование возможного выигрыша в производительности при использовании NATIVE COMPILATION по сравнению с  INTERPRETED COMPILATION. Методика тестирования. Процедура  TEST_PCG  реально боевая (название изменено) - делает много чего и долго. Код по понятным причинам приводить не буду. Для замера времени перед выполнение будет запускаться PROFILER. Процедура из пакета буде выполнена по 20 раз для обоих видов компиляции. -- test_block.sql DECLARE   L_COMPILED VARCHAR2(100);   L_TEST_PARAMS  VARCHAR2(100)  := 'TEST VALUES' BEGIN    FOR I IN 1..20   LOOP    SELECT DISTINCT PLSQL_CODE_TYPE INTO L_COMPILED FROM USER_PLSQL_OBJECT_SETTINGS WHERE NAME = 'TEST_PCG';   DBMS_PROFILER.START_PROFILER('TRY_TEST_PCG_COMPILED_'||v_compiled,1);      DBAX. TEST_PCG . TEST_PRC(TEST_PARAMS) ;   COMMIT;      DBMS_PROFILER.STOP_PROFILER;   END LO...

Интерфейс ожиданий в PostgreSQL

Черновик: взять source: https://github.com/postgrespro/postgres скомпилировать: http://orabase.org/index.php/2015/07/21/postgrespro-pg_stat_wait-patch/ У меня получилось не сразу. Позже сделаю свою хау-ту. Обратить внимание на параметры configure: ./configure --with-ldap --with-perl --with-python --with-openssl --with-libxml --prefix=/usr/pgsql-pro --exec-prefix=/usr/pgsql-pro vim postgresql.conf shared_preload_libraries='pg_stat_wait' waits_monitoring = on pg_stat_wait.history = on pg_stat_wait.history_size = 1000000 pg_stat_wait.history_period = 1000 psql  -c  CREATE EXTENSION pg_stat_wait см. таблицы: pg_stat_wait_current  pg_stat_wait_history  pg_stat_wait_profile еще инфа по теме: https://simply.name/ru/pg-stat-wait.html http://www.highload.ru/2015/abstracts/1902.html

Установка PL/Java для PostgreSQL 9.4

Предварительные требования:  1. Компилятор C. Как правило имеется в виду gcc и g++ gcc  --version на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc) 2. JAVA. Убедиться, что  javac  -version работает  3. PostgreSQL установлен и  работает pg_config Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были. 4. компилятор Maven mvn --version Установка git clone https://github.com/tada/pljava.git или git clone ssh://git@github.com/tada/pljava.git Заходим в директорию pljava и выполняем mvn clean install В результате должны получить: [INFO] PostgreSQL PL/Java ................................ SUCCESS [INFO] PL/Java API ....................................... SUCCESS [INFO] PL/Java backend Java code...

Влияние параметра DB_ULTRASAFE на производительность базы.

Рекомендации по результатам расследования инцидента с повреждёнными блоками на промышленном кластере. Рекомендации orachk (раздел Maximum Availability Architecture (MAA) Scorecard): Провести настройку параметров: DB_BLOCK_CHECKSUM=FULL DB_LOST_WRITE_PROTECT=TYICAL/FULL DB_BLOCK_CHECKING=MEDIUM/FULL To achieve the most comprehensive data corruption prevention and detection , use Oracle Active Data Guard and configure DB_BLOCK_CHECKSUM,DB_LOST_WRITE_PROTECT and DB_BLOCK_CHECKING database initialization parameters on the primary database and all standby databases in a Data Guard environment. Установку этих параметров по отдельности можно заменить на установку единого параметра DB_ULTRA_SAFE: DATA_ONLY - эквивалент: DB_BLOCK_CHECKING = MEDIUM. DB_LOST_WRITE_PROTECT = TYPICAL. DB_BLOCK_CHECKSUM = FULL. DATA_AND_INDEX - эквивалент: DB_BLOCK_CHECKING = FULL. DB_LOST_WRITE_PROTECT = TYPICAL. DB_BLOCK_CHECKSUM = FULL. Для установки степени влияния указанных ...

Перемещение ORACLE_HOME с диска на диск (Windows)

Перемещать будем с "C:\\oracle\\product\\12.1.0" в "D:\\oracle\\product\\12.1.0". Экземпляр БД называется DBAX. Заходим на сервера под локальным администратором (по совместительству в группе ora_dba). Экземпляр пока может работать. xcopy  C:\\oracle\\product\\12.1.0 D:\\oracle\\product\\12.1.0 Дожидаемся окончания процесса Открываем первое окно с cmd и выполняем: C:\>set ORACLE_HOME=C:\\oracle\\product\\12.1.0 C:\>set PATH=C:\\oracle\\product\\12.1.0\\OPatch;C:\\oracle\\product\\12.1.0\\bin;%PATH% C:\>opatch version C:\>opatch lsinventory Открываем второе окно с командной строкой: D:\>set PERL5LIB=D:\\oracle\\product\\12.1.0\\perl\\lib D:\>set PATH=D:\\oracle\\product\\12.1.0\\perl\\5.8.3\\bin\\MSWin32-x86-multi-thread;%PATH% D:\>perl %ORACLE_HOME\clone\bin\clone.pl ORACLE_HOME="D:\\oracle\\product\\12.1.0" ORACLE_HOME_NAME="OraDB11gR1_home" ORACLE_BASE="D:\\oracle" Убеждаемся, что: The cloning...

Перемещение SYSTEM TABLESPACE ONLINE (12с)

В Oracle 12c появилась новая возможность: перемещение файлов данных он-лайн. Это относится даже к файлам пространства SYSTEM. select file_name from dba_data_files where tablespace_name = 'SYSTEM'; FILE_NAME                                                            ------------------------------------------------------------------- /app/oracle/oradata/dbax/system01.dbf                                         1 row selected. ALTER DATABASE MOVE DATAFILE '/app/oracle/oradata/dbax/system01.dbf' TO '/u01/oradata/dbax/system01.dbf'; Database altered. select file_name from dba_data_files where tablespace_name = 'SYSTEM'; FILE_NAME                             ...

Диагностика работы дисковой подсистемы БД Oracle

Заказчик подозревает проблемы в работе дисковой подсистемы своих центральных серверов БД. Задача: подтвердить или опровергнуть подозрение. Определение проблем в работе подсистеме ввода/вывода. События ожидания Oracle, свидетельствующие о наличии возможных проблем в дисковой подсистеме: • db file sequential read • db file scattered read • read by other session • db file async i/o submit • direct path read • direct path write / direct path write temp • db file parallel read • async disk IO | ksfd: async disk IO • control file sequential read Также о проблемах подсистемы ввода вывода могут свидетельствовать следующие события, связанные с обработкой REDO логов: • log file sync • log file switch completion • log file switch (checkpoint incomplete) • {ARCH | LGWR | LNS} wait on ATTACH • {ARCH | LGWR | LNS} wait on SENDREQ • {ARCH | LGWR | LNS} wait on DETACH • LGWR-LNS wait on channel Основным средством диагностики работы дисковой подсистемы и связа...

Автоматическое обновление 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,      ...