четверг, 25 июня 2015 г.

Oracle loopback dblink

Можно использовать глобальное имя базы данных как loopback dblink.
Глобально имя можно узнать из таблицы GLOBAL_NAME

select * from GLOBAL_NAME
Предположим глобальное имя базы данных - ORCL,
тогда можем обратится по loopback dblink-у в ту же базу:
select * from user_tables@ORCL

вторник, 23 июня 2015 г.

RMAN Block Compression for Backup Sets

RMAN использует два типа компрессии блоков  при создании наборов резервых копий (Backupset).
  • Unused Block Compression (Поддерживает резевное копирование на диск и  Oracle Secure Backup)
  • Null Block Compression (Все виды)
Хотя технология и называется "Block Compession" на самом деле RMAN ни чего не зжимает, а просто не включает не используемые блоки в backupset. Данная технология может применяться только для локально-управляемых табличных пространств (Locally Managed Tablespaces).

Unused Block Compression


При компрессии неиспользуемых блоков, RMAN не проверяет каждый блок. Вместо этого RMAN читает битовые карты, которые показывают какие блоки используются в данных момент, а затем читает только выделенные блоки.
Компрессия неиспользуемых блоков включается автоматически при выполнении следующих 5 условий:
  1. Инициализационный параметр COMPATIBILE 10.2 или выше
  2. Нет гаранитированных точек восстановления в данных момент (guaranteed restore points)
  3. Файл данных локально управляемый
  4. Файл данных входит в полное резервное копирование или инкрементальное 0-ого уровня
  5. Набор резервных копий создается на диске или в Oracle Secure Backup

Null Block Compression


Во время данного вида компрессии проверяется каждый блок на предмет наличия в нем данных сейчас или когда-либо. Блок который никогда не содержал в себе данных не включается в резервную копию. Блок который содержал или содержит данные - включается в резервную копию.

Данная статья является вольным перевод официальной документации:

четверг, 11 июня 2015 г.

RMAN-20020: database incarnation not set

PROBLEM


rman target / catalog rman@RMAN_CATALOG
RMAN> register database;

starting full resync of recovery catalog
full resync complete
database registered in recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03008: error while performing automatic resync of recovery catalog
RMAN-20020: database incarnation not set

SOLUTION   


$rman target / catalog rman@RMAN_CATALOG
RMAN> unregister database;
RMAN> register database;

 

понедельник, 8 июня 2015 г.

ORA-14758: Last partition in the range section cannot be dropped

Error


При попытке удалить партицию  возникает ошибка

Команда:
alter table HISTORY drop partition P134;
Ошибка:
ORA-14758: Невозможно удалить последнюю секцию в таблице, секционированной диапазонным методом

Информация из трэйс файла:
*** 2015-06-08 01:00:03.951
*** SESSION ID:(197.64584) 2015-06-08 01:00:03.951
*** CLIENT ID:() 2015-06-08 01:00:03.951
*** SERVICE NAME:(SYS$USERS) 2015-06-08 01:00:03.951
*** MODULE NAME:(DBMS_SCHEDULER) 2015-06-08 01:00:03.951
*** CLIENT DRIVER:() 2015-06-08 01:00:03.951
*** ACTION NAME:(CUSTOM_HOUSEKEEPER_JOB) 2015-06-08 01:00:03.951

ORA-12012: ошибка при автоисполнении задания "ZABBIX"."CUSTOM_HOUSEKEEPER_JOB"
ORA-14758: Невозможно удалить последнюю секцию в таблице, секционированной диапазонным методом
ORA-06512: на "ZABBIX.ZBX_HOUSEKEEPER", line 11
ORA-06512: на "ZABBIX.ZBX_HOUSEKEEPER", line 61
ORA-06512: на "ZABBIX.ZBX_HOUSEKEEPER", line 67

Solution

Сбросить интервал, удалить партицию, установить интервал
alter table HISTORY set interval();
alter table HISTORY drop partition P134;
alter table HISTORY set interval(5000);

Links

Doc ID: 1526571.1