1. 配置数据库初始化参数
使用 pfile的修改init<SID>.ora 文件,使用spfile的通过alter system命令修改spile文件,主要包括以下几项(源和目标数据库都需要设置):
- COMPATIBLE:数据库的兼容版本不能低于10.2.0.1
- GLOBAL_NAMES:必需设置为true
- JOB_QUEUE_PROCESSES:设置实例最大同时启用的job里程数不能小于2
- STREAMS_POOL_SIZE:为streams分配适当的缓存区。参数值不能为0
sql> alter system set global_names=true scope=both;
sql> alter system set aq_tm_processes=10 scope=both;
sql> alter system set streams_pool_size=200m scope=spfile;
执行完后重启数据库。
2. 将数据库置为归档模式
设置 log_archive_dest_1 到相应的位置;设定log_archive_start为TRUE,即启用自动归档功能;设定log_archive_format指定归档日志的命令格式。举例:
c:> sqlplus ‘/ as sysdba’
sql> alter system set log_archive_dest_1=’location=c:/orcl/arch’ scope=spfile;
sql> alter system set log_archive_start=TRUE scope=spfile;
sql> alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;
sql> shutdown immediate;
sql> startup mount;
sql> alter database archivelog;
sql> alter database open;
数据库置为归档模式后,可以按如下方式检验一下
sql> archive log list;
3. 配置管理员账户
为了便于管理,不建议使用sys/system用户,也不建议使用system表空间,推荐一切都新建。用户需要在source/target端分别创建,并必须具有相关的管理权限,本例中以strmadmin为例。
1). 创建专用的表空间
sql> create tablespace stream_tbs datafile '/data/oradata/jssweb/stream01.dbf' size 200m;
#将logminer 的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
sql> execute dbms_logmnr_d.set_tablespace('stream_tbs');
2). 创建管理员帐户并授权
sql> create user strmadmin identified by strmadmin default tablespace stream_tbs quota unlimited on stream_tbs;
sql> grant connect,resource,dba,aq_administrator_role to strmadmin;
sql> begin
dbms_streams_auth.grant_admin_privilege( grantee => 'strmadmin', grant_privileges =>true);
end;
4. 配置主从tnsname.ora
5. 启用追加日志
可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema粒度进行复制的Oracle Stream 环境中,如果确认Schema 下所有Table 都有合理的主键
(Primary Key),则不再需要启用追加日志。
#启用Database 追加日志
sql> alter database add supplemental log data;
#启用Table追加日志
sql> alter table add supplement log group log_group_name(table_column_name) always;
6. 创建一个或多个数据库链接
根据Oracle 10gR2 Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。如果需要修改global_name,执行“alter database rename global_name to xxx”。
sql> select * from global_name; --查看 global_name
以strmadmin身份,登录并创建
sql> create database link jssstr connect to strmadmin identified by strmadmin using 'jssstr';
--查看db links
sql> select owner,db_link,host from all_db_links;