Chinaunix首页 | 论坛 | 博客
  • 博客访问: 838234
  • 博文数量: 199
  • 博客积分: 6363
  • 博客等级: 准将
  • 技术积分: 2225
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-28 10:01
个人简介

来自农村的老实娃

文章分类

全部博文(199)

文章存档

2017年(1)

2014年(2)

2013年(3)

2012年(6)

2011年(26)

2010年(34)

2009年(50)

2008年(44)

2007年(33)

我的朋友

分类: Oracle

2009-04-09 12:36:59

二、初始化环境

  在准备创建streams复制环境之前,还有一些准备工作需要我们进行,如下:

1、配置管理员帐户

  为了便于管理,不建议使用sys/system用户,也不建议使用system表空间,推荐一切都新建。用户需要在source/target端分别创建,并必须具有相关的管理权限,本例中以strmadmin为例。

  a>. 首先创建新的表空间

    JSSWEB> create tablespace stream_tbs datafile ¨ /data/oradata/jssweb/ stream01.dbf¨ size 200m;

    表空间已创建。
  b>. 创建streams管理员帐号并授予权限,这里创建strmadmin做为streams管理员

    JSSWEB> create user strmadmin identified by strmadmin default tablespace stream_tbs quota unlimited on stream_tbs;

    用户已创建。

    -- 授予dba权限

    JSSWEB> grant dba to strmadmin;

    授权成功。

  当然,某些情况下不能通过直接授予dba权限来解决问题,如果说你听说过显式授权与隐式授权,并且strmadmin用户需要在过程中执行某些操作的话,你就会明白我的意思。那么问题出现了,如何精确赋予用户权限呢?oracle提供了一个包:dbms_streams_auth,具体用户可参考官方文档,这里就不引申了,一般情况下,dba角色权限足够。

  c>. 循环在所有复制环境涉及的数据库,执行上述操作即可。

2、创建一个或多个数据库链

  注意,为什么要说一个或多个呢?因为情况不同,处理方式也不同的嘛!不过,无论如何,source端到target端必须创建一个数据库链,这个是毋庸置疑的,其中,如果存在下列情况,则target端到source端也需要创建数据库链:

  • 双向复制环境
  • Data Pump 通过网络方式导入
  • Target 端做为downstream捕获数据库
  • RMAN duplicate 或convert database

  上述4种情况下需要创建数据库链是因为POST_INSTANTIATION_SETUP过程的instantiation_scn参数不能为空,该值由dbms_apply_adm.set_global_instantiation_scn过程获得,而SET_GLOBAL_INSTANTIATION_SCN过程执行需要数据库链。该数据库链必须创建于RMAN实例化之后,运行POST_INSTANTIATION_SETUP过程之前。

  如果捕获数据库是第三方数据库,则还需要下列两个数据库链:第三方数据库到source数据库和第三方数据库到target数据库。

  上述提到的数据库链均是创建于strmadmin下。

3、创建Directory对象(如果需要的话)

  本步非必须,一般下列情况的话,需要创建相应的Directory对象:

  • 执行过程时没有直接创建,而是选择生成创建脚本,需要在源端创建一个Directory以存储生成的脚本。
  • 决定通过Data Pump初始化数据的话,需要在源端和目标端分别创建一个Directory以存储和读取生成的dmp文件。

  啥?你不知道什么是Directory?简单来讲,也是oracle10g新特性之一,操作系统目录在oracle中一个别名,借此可以通过oracle读写操作系统目录中文件。Directory对象有READ/WRITE两种权限,可以通过grant命令授予需要访问的用户。

4、将源端数据库置于归档模式

  确认source数据库处于archivelog 模式,可用如下命令:

    JSSWEB> archive log list;

    Database log mode              No Archive Mode

    Automatic archival             Disabled

    Archive destination            /opt/ora10g/product/10.2.0/db_1/dbs/arch

    Oldest online log sequence     9

    Current log sequence           11

  如果不是,可按下列方式操作修改数据库为归档模式。

    JSSWEB> startup mount

    ORACLE instance started.

    Total System Global Area  524288000 bytes

    Fixed Size                  2073984 bytes

    Variable Size             163580544 bytes

    Database Buffers          352321536 bytes

    Redo Buffers                6311936 bytes

    Database mounted.

    JSSWEB> alter database archivelog ;

    Database altered.

    JSSWEB> alter system set log_archive_dest_1=¨location=/data/oradata/jssweb/archive/¨;

    System altered.

    JSSWEB> archive log list;

    Database log mode              Archive Mode

    Automatic archival             Enabled

    Archive destination            /data/oradata/jssweb/archive/

    Oldest online log sequence     9

    Next log sequence to archive   11

    Current log sequence           11

    JSSWEB> alter database open;

    Database altered.

  另外注意,如果复制是双向,那么目标数据库必须也是处于归档模式的哟。

5、配置日志文件传输(下游捕获专用)

  本地捕获可以直接读取日志文件,因此不需要这一步骤,如果是下游捕获的话,你就需要一些方式将redologs发送至捕获数据库。

  事实上,发送方式还是老一套,如果你看过三思的“ ” 系列,那么对于配置日志传输必然已经相当熟练了。这里只当是重温吧~~

  a>. 设置log_archive_dest_n参数

  除了本地归档的log_archive_dest_n外,另外设置一个远程的归档路径。log_archive_dest_n也有几个参数,通常情况下,你最少需要指定service(即tnsnames中配置的远端服务连接名),其它诸如ARCH/LGWR ASYNC/LGWR SYNC、VALID_FOR、DB_UNIQUE_NAME之类

  b>. 设置log_archive_dest_state_n参数

  该参数与log_archive_dest_n参数一一对应,共有4个可选值:

  • ENABLE :默认值,表示允许传输服务。
  • DEFER :该属性指定对应的log_archive_dest_n参数有效,但暂不使用。
  • ALTERNATE :禁止传输,但是如果其它相关的目的地的连接通通失败,则它将变成enable。
  • RESET :功能与DEFER属性类似,不过如果传输目的地之前有过错误,它会清除其所有错误信息。

  将log_archive_dest_n对应的log_archive_dest_state_n参数设置为enable.

  c>. 设置log_archive_config参数

  设置接收和发送redologs的数据库。如果计划启用downstream捕获的话,需要设置该参数。

6、配置数据库初始化参数

  主要包括以下几项(源和目标端都需要设置的哟):

  • COMPATIBLE :数据库的兼容版本,不能低于10.2.0.1
  • GLOBAL_NAMES :必须设置为true
  • JOB_QUEUE_PROCESSES :设置实例最大同时启用的job进程数,不能小于2
  • STREAMS_POOL_SIZE :为streams分配适当的缓存区。注意参数值不能为0(或者sga_target参数值不为0)。至于说设置多大才合适,可以参考V$STREAMS_POOL_ADVICE视图。

  除此之外,LOG_ARCHIVE_CONFIG/LOG_ARCHIVE_DEST_N/LOG_ARCHIVE_DEST_STATE_N这三个参数前面已经介绍过,这里就不多说了。

  下列各项为非强制参数,可根据实际情况进行设置:

  • SGA_TARGET :做为10g新特性之一,Oracle建议设置sga_target参数以达到自动分配sga中各内存区大小的目的。streams_pool_size当然也在其中,详细可参考:第一部分-传播进程。
  • UNDO_RETENTION :设置undo信息在undo表空间的保存时间,默认值是900秒。关于undo相关资料可以参考三思系列笔记:全面学习Oracle flashback特性
阅读(875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~