Disclaimer

Данный блог является моей личной точкой зрения и не обязательно отражает точку зрения Oracle.

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle

Поиск

Подписка

Использование Oracle Streams для репликации (часть 2)

27.03.2009 от aryndin99

Продолжение. Начало смотрите в предыдущих поста: часть 1.

Итак, если концептуально все понятно, то давайте посмотрим, что нужно сделать для того, чтобы настроить репликацию.

Ниже приводятся основные шаги:

  1. Установить последние патчи.
  2. Настроить базы данных (ARCHIVELOG, STREAMS_POOL, GLOBAL_NAMES и т.д.)
  3. Настроить Oracle Net так, чтобы базы могли связываться между собой.
  4. Создать табличное пространство и администратора Streams.
  5. Создать database links

1. Установить последние патчи.

Тут все просто. Идем по ссылке. и скачиваем нужные патчи. От себя скажу, что лучше всего брать R2 (это не относится к 11-ой версии).

2. Настройка базы данных

2.1 COMPATIBLE (минимум 9.2.0): для использование Streams, Compatible должен быть минимум 9.2.0.
2.2 GLOBAL_NAMES (TRUE): параметр должен быть установлен в TRUE на всех базах. После включения Streams этот параметр изменяться нельзя. GLOBAL_NAME используется для идентификации базы, в которой произошли изменения. Все сообщения в репликации будут содержать эти имена.
2.3 JOB_QUEUE_PROCESSES (минимум 2): этот параметр указывает количество процессов, которые может задействовать DBMS_JOB.
2.4 AQ_TM_PROCESSES (лучше не прописывать в файле параметров вообще): количество процессов для мониторинга очередей.
Сбросить в значение по-умолчанию можно командой alter system reset AQ_TM_PROCESSES scope=spfile;
2.5 LOGMNR_MAX_PERSISTENT_SESSIONS(минимум 1, должен быть равен или больше количества процессов сбора; для 11g не требуется): количество постоянных сессий, используемых LOGMINER.
2.6 LOG_PARALLELISM(должен быть 1 на всех базах, осуществляющих сбор изменений): устарел, начиная с версии 10.1.
2.7 PARALLEL_MAX_SERVERS(минимум 2): каждый процесс сбора и применений изменений может использовать несколько параллельных серверных процессов. Процесс применения по-умолчанию требует 2 параллельных серверных процесса.
2.8 SHARED_POOL_SIZE (минимум 100 Мб): каждый процесс сбора требует 10 Мб в shared pool, но Streams ограниченые использования 10% shared pool.
2.8.1 JAVA_POOL_SIZE (минимум 50 Мб, лучше 100): по опыту необходимо также выделить минимум 50 мб под JAVA VM.
2.9 OPEN_LINKS (минимум 4): задает максимальное количество одновременно открытых в одной сессии соединений с удаленной базой. 
2.10 Базы данных должны быть в (ARCHIVELOG).

В моем случае понадобилось установить параметр GLOBAL_NAMES и перевести базу в ARCHIVELOG:

alter system set GLOBAL_NAMES=true scope=both;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

3. Настроить Oracle Net так, чтобы базы могли связываться между собой.

В моем случае это базы src.local и dest.local. Для них у меня в tnsnames.ora (на стороне базы данных) прописаны следующие строки:

src.local =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = src_server)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = src.local)
    )
  )

dest.local =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dest_server)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dest.local)
    )
  )

Для проверки можно попробовать подключиться к разным базам:

sqlplus system/oracle@src.local
sqlplus system/oracle@dest.local

4. Создать табличное пространство и администратора Streams.

Для управления Oracle Streams необходимо либо создать нового пользователя с соответствующими привилегиями, либо выдать привилегии существующему пользователя. В качестве администратора Streams не следует использовать SYS или SYSTEM, а в качестве табличного пространства у этого пользователя не должно быть установлено табличное пространство SYSTEM.

Следующие шаги нужно выполнить на всех базах, на которых будет использоваться Oracle Streams.

а. Подключитесь к базе данных как административный пользователь.

База данных SRC: connect sys/oracle@src.local as sysdba
База данных DEST: connect sys/oracle@dest.local as sysdba

б. Создайте или используйте существующее табличное пространство: 

База данных SRC:
CREATE TABLESPACE streams_tbs DATAFILE '/u01/app/oracle/oradata/src/streams_tbs.dbf'
  SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

База данных DEST:
CREATE TABLESPACE streams_tbs DATAFILE '/u01/app/oracle/oradata/dest/streams_tbs.dbf'
  SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

в. Создайте администратора Oracle Streams:

На базах данных SRC и DEST:
CREATE USER strmadmin IDENTIFIED BY oracle
   DEFAULT TABLESPACE streams_tbs
   QUOTA UNLIMITED ON streams_tbs;

г. Выдайте этому пользователю привилегию DBA:

На базах данных SRC и DEST:
GRANT DBA TO strmadmin;

Note:
Роль DBA необходима, когда пользователь создает или изменяет процессы сбора и применений. Когда пользователь не делает этого – можно забрать роль DBA.

д. Выдайте привилегии администратор STREAMS с помощью DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE:

На базах данных SRC и DEST:
BEGIN
  DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
    grantee          => 'strmadmin',   
    grant_privileges => TRUE);
END;

5. Создайте database links.

Подключиться как strmadmin и создать database links:

База данных SRC:
CREATE DATABASE LINK dest.local CONNECT TO strmadmin
   IDENTIFIED BY oracle
   USING 'dest.local';

База данных DEST:
CREATE DATABASE LINK src.local CONNECT TO strmadmin
   IDENTIFIED BY oracle
   USING 'src.local';

Проверить работу можно выполним следующие команды:

База данных SRC:
SQL> select * from tab@dest.local;
no rows selected

База данных DEST:
SQL> select * from tab@src.local;
no rows selected

Рубрики: Data Warehouse, Data Warehousing, Database, Streams | Комментарии (6) »

Комментарии (6)

  1. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 3) пишет:

    [...] Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle [...]

  2. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 4) пишет:

    [...] (часть 4)Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle [...]

  3. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Использование Oracle Streams для репликации (часть 5) пишет:

    [...] (часть 4)Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle [...]

  4. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: troubleshooting (часть 6) пишет:

    [...] (часть 4)Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle [...]

  5. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: расширенная настройка (часть 7) пишет:

    [...] (часть 4)Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на LinuxЗапуск Oracle [...]

  6. Oracle Spatial, Mapviewer, Semantics и ГИС системы » Архив блога » Oracle Streams для репликации: расширенная настройка (часть 8) пишет:

    [...] (часть 4)Использование Oracle Streams для репликации (часть 3)Использование Oracle Streams для репликации (часть 2)HTTP Internal Error 500 в Oracle BI после инсталляции на [...]

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.