一、设置标识

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六9月 1 09:36:23 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> set sqlprompt 'JSSWEB> ';

JSSWEB>

二、创建辅助实例

1. 创建辅助实例

C:\WINDOWS\system32>oradim –new –sid jssstr

实例创建。

2. 创建辅助实例的密码文件

C:\WINDOWS\system32>orapwd file=c:\oracle\database\PWDjssstr.ora password=oracle entries=30

3. 创建助实例的初始化参数文件

1). 创建相应的目录

2). 创建并修改本地初始化参数

从源库创建初始华文件:

JSSWEB> create pfile='c:\admin\jssstr\pfile\20120901.ora' from spfile;

用记事打开并更改相应的参数。并添加以下两参数:

db_file_name_convert='oradata\jssweb','oradata\jssstr'
log_file_name_convert='oradata\jssweb','oradata\jssstr'

接着:

JSSSTR> create spfile from pfile='c:\admin\jssstr\pfile\20120901.ora';

文件已创建。

JSSSTR> startup force nomount;

例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             339741572 bytes

Database Buffers          264241152 bytes

Redo Buffers                7135232 bytes

JSSSTR>

三、查看初始化参数

使用 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;

执行完成后重启数据库

四、检查归档模式

c:> sqlplus ‘/ as sysdba’

sql> alter system set log_archive_dest_1=’location=c:/jssweb/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;

五、创建表空间及管理员帐户(源库操作)

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');

创建管理员

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;

六、 创建数据库链接(源库操作)

以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;

七、源库执行初始化过程

JSSWEB> declare

2   empty_tbs dbms_streams_tablespace_adm.tablespace_set;

3  begin

4    dbms_streams_adm.pre_instantiation_setup(

5  maintain_mode => 'global',

6  tablespace_names => empty_tbs,

7  source_database => 'jssweb.jss.cn',

8  destination_database => 'jssstr.jss.cn',

9  perform_actions => true,

10  bi_directional => false,

11  include_ddl => true,

12  start_processes => true,

13  exclude_schemas => 'strmadmin',

14  exclude_flags => dbms_streams_adm.exclude_flags_full +

15      dbms_streams_adm.exclude_flags_dml +

16      dbms_streams_adm.exclude_flags_ddl);

17  end;

18  /

PL/SQL 过程已成功完成。

maintain_mode 只有两个值:GLOBAL,表示数据库级的复制;TRANSPORTABLE TABLESPACES,表示表空间级的复制,需要同时指定 tablespace_names参数,表空间可以是多个PRE_INSTANTIATION_SETUP/POST_INSTANTIATION_SETUP创建表空间级的复制环境。

tablespace_names :要复制的表空间,此处为数据库级的复制,因此此参数为空,不过该参数不能直接指定为null,因为该参数类型为 DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET,因此我们在执行过程前先declare了一个 empty_tbs的变量。

source_datebase :连接到源端数据库的数据库链 。

destination_database :连接到目标端数据库的数据库链 。

perform_actions :如果为true,则过程直接执行。如果为false,则过程并不直接生成复制环境,而是创建复制环境的配置脚本,由dba手动执行(或修改编辑后执 行),因此必须同时设置script_name和script_directory_object两参数,指定脚本输出路径和脚本文件名,不然过程执行将 直接报错。

bi_directional :true时表示启用双向复制。false表示源库向目录库单向复制。

include_ddl :是否同步ddl语句 。

start_processes :是否启用捕获和应用进程 。

exclude_schemas :指定不包含在复制环境中的schemas。*表示全不包括,null表示全部包括(一个bu字,意义千差万别,汉字太奇妙啦),注意,由于源端的捕获进 程不会捕获SYS/SYSTEM/CTXSYS这三个schema,因此即使此处指定null,这三个schema也不会被同步。另外,此参数仅在 MAINTAIN_MODE=>¨GLOBAL¨时有效。

exclude_flags : 这个要好好说说,这个选项是与exclude_schemas组合使用,同时由于该参数值具有多个组合属性,因此设置时也特别需要注意。

有如下可选值:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL :排除指定schemas中所有对象操作。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED :排除指定schemas中不支持的对象操作。

上述两值仅能同时选一个,如果两个同时选择在配置时会抛出异常。同时还有下列两个附加选项:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML :排除对不支持对象的DML操作。

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL :排除对不支持对象的DDL操作。

上述四个属性值可以通过"+"号连接来达到同时支持的目的。

比如,对于exclude_schemas参数中指定的schemas对象,复制其DML操作但不复制DDL操作,则设置exclude_flags参数值如下可满足要求:

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL +

DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL

八、源库创建RMAN备份

RMAN> run{

2> allocate channel c1 device type disk;

3> backup database plus archivelog delete input;

4> }

然后马上查看一下当前系统的scn,并且归档当前的redo

JSSWEB> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

687812

JSSWEB> alter system archive log current;

System altered.

九、 执行RMAN Duplicate复制数据库

C:\WINDOWS\system32>rman target sys/oracle@jssweb auxiliary/

RMAN> run{

2>  set until scn 687812;

3> duplicate target database to jssstr  open restricted;

9> }

十、连接目标数据库检查global_name

十一、创建目标数据库到源数据库的链接

JSSSTR> conn strmadmin/strmadmin

已连接。

JSSSTR> create database link jssweb connect to strmadmin identified by strmadmin using ‘jssweb’;

不过由于jssstr数据库是由jssweb复制过来的,因此strmadmin用户下也存在一个jssstr.jss.cn的dblink, 如果看其不爽可以将它删除,不过直接删除是不行的,肯定会报ORA-02082错误,因为不能删除与global_name同名的dblink。如果确实 想删除该dblink,方法有二:

A>. 先修改global_name,再删除dblink

JSSSTR> alter database rename global_name to test.jss.cn;

数据库已更改。

JSSSTR> drop database link jssstr.jss.cn;

数据库链接已删除。

JSSSTR> alter database rename global_name to jssstr.jss.cn;

数据库已更改。

B>. 直接删除字典表

JSSSTR> conn / as sysdba

已连接。

JSSSTR> delete link$ where name=¨JSSSTR.JSS.CN¨;

已删除 1 行。

JSSSTR> commit;

提交完成。

十二、在源数据库执行Post_INSTANTIATION_SETUP过程

JSSWEB> declare

2   empty_tbs dbms_streams_tablespace_adm.tablespace_set;

3    begin

4     dbms_streams_adm.post_instantiation_setup(

5     maintain_mode =>'GLOBAL',

6     tablespace_names=>empty_tbs,

7     source_database => 'jssweb.jss.cn',

8     destination_database =>'jssstr.jss.cn',

9     perform_actions => true,

10     bi_directional => false,

11     include_ddl => true,

12     start_processes => true,

13     instantiation_scn => 687811,

14      exclude_schemas => 'strmadmin',

15   exclude_flags=>dbms_streams_adm.exclude_flags_full +

16     dbms_streams_adm.exclude_flags_dml +

17     dbms_streams_adm.exclude_flags_ddl);

18  end;

19  /

PL/SQL 过程已成功完成。

十三、 在目标端执行,取消受限连接:

JSSSTR> conn / as sysdba

已连接。

JSSSTR> ALTER SYSTEM DISABLE RESTRICTED SESSION;

系统已更改。

至此,单向同步的streams整库复制环境就算完成了

十四、文件路径转换

JSSSTR> conn strmadmin/strmadmin

已连接。

JSSSTR> create or replace procedure file_convert (in_any IN ANYDATA) authid current_user is

2    ddl_lcr  SYS.LCR$_DDL_RECORD;

3    ddl_text CLOB;

4    rc PLS_INTEGER;

5  begin

6    rc := in_any.GETOBJECT(ddl_lcr);

7    DBMS_LOB.CREATETEMPORARY(ddl_text, true);

8    ddl_lcr.GET_DDL_TEXT(ddl_text);

9    ddl_text := replace(ddl_text,’oradata\jssweb’,’oradata\jssstr’);

10    execute immediate to_char(ddl_text);

11    DBMS_LOB.FREETEMPORARY(ddl_text);

12  end;

13  /

过程已创建。

设置ddl handler:

JSSSTR> select apply_name from dba_apply;

APPLY_NAME

------------------------------

APPLY$_JSSWEB_44

JSSSTR> exec DBMS_APPLY_ADM.ALTER_APPLY(apply_name=>‘APPLY$_JSSWEB_44,,ddl_handler=>’strmadmin.file_convert’);

PL/SQL  过程已成功完成。

转载于:https://www.cnblogs.com/landexia/archive/2012/09/01/2667021.html

Streams全库复制相关推荐

  1. 单库单表到多库多表的全量复制方案

    单库单表到多库多表的全量复制方案 背景 方案 背景 公司最近业务发展比较快速,数据库里面表的数据量猛增,当前单库单表的模型已经无法满足后续业务的发展,需要从单库单表切换到多库多表的模型 方案

  2. mysql dump gtid_mysqldump命令详解 Part 3- 备份全库

    前面说了MySQL Linux平台和Windows平台的安装 下面开始是MySQL的一些学习笔记 前面我们说了如果构造数据 这节开始说MySQL 的备份 环境为MySQL 5.7.25 在解释命令之前 ...

  3. 再谈MySQL全库备份

    简介 Part1:写在最前 在很早之前,我写过一个MySQL生产库全库备份脚本,今天有同事问我是不是要再加一个-R参数来备份存储过程,理由的话是由于mysqldump --help中 关于存储过程的默 ...

  4. MySQL备库复制延迟的原因及解决办法

    背景 今天有同事问我主从复制延迟会影响高可用切换的 RTO 怎么办,这个不需要做实验,我可以直接回答,所以有了以下赶鸭子的文章,都是一线运维经验之谈,建议四连:点赞.收藏.转发.在看. 复制延迟的原因 ...

  5. mysql 同步复制 半同步复制_一文看懂MySQL的异步复制、全同步复制与半同步复制...

    今天主要聊一下MySQL的异步复制.全同步复制与半同步复制,目前我们生产库实际上用的就是异步复制了,后面再转成半同步复制. 一.MYSQL复制架构衍生史 在2000年,MySQL 3.23.15版本引 ...

  6. MySQL 采用Xtrabackupex进行全库备份过程汇总

    1,xtrabackup简介 关于数据库备份以及备份工具,参考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经如 ...

  7. 企业级高性能MYSQL的用法---------(二)----------半同步复制 和 全同步复制(组复制)

    企业级高性能MYSQL的用法---------(二)----------半同步复制 和 全同步复制(组复制) 1.基于GDIT的半同步复制 为什么要实现mysqI的复制 1.实现服务器负载均衡 2.通 ...

  8. python 密度聚类 使用_使用wgd进行全基因组复制分析

    因为全基因组复制(Whole genome duplications, WGD)是生物进化的重要因素之一, 所以WGD分析也是基因组分析经常用到的一种分析方法.举个例子,我们之所以能在多条染色体之间发 ...

  9. 【原创】rman 全库备份脚本

    rman 全库备份脚本 run { allocate channel d1 type disk; allocate channel d2 type disk; backup full database ...

最新文章

  1. linux 信号软中断的方式
  2. (Oracle学习笔记) Oracle体系结构
  3. Poj_3984走迷宫(广搜)
  4. [2020.10.25NOIP模拟赛]序列【Splay】
  5. 数据库支持的数据类型
  6. 使用绑定进行WPF DataGrid格式化的指南
  7. php学语法,PHP入门学习——PHP语法
  8. tab控件的使用心得
  9. Bailian4108 羚羊数量-Number Of Antelope【递推+打表】
  10. 你会用LaTeX写毕业论文么?
  11. 教你制作一个自动发摩斯电码的PYTHON小程序
  12. matlab 求导的一个简单程序
  13. 10的n次方换算关系 10^N 计算机存储单位的换算关系
  14. 微信公众平台测试号推送思路
  15. lol那个服务器有无限火力,全新游戏模式-无限火力上线
  16. SQL基础语法_刘世民
  17. java.jpi在线_JPI中常使用的类介绍:
  18. Android性能优化(一):APP启动优化
  19. 同城聚合平台v59.4.0 本地同城 同城信息 同城商家
  20. 天才小毒妃 第912章 坑了一大笔

热门文章

  1. sqlserver-事务处理
  2. Ubuntu常用安装源
  3. 7个鲜为人知却超实用的PHP函数
  4. java中保留两位小数(四舍五入后)
  5. TensorFlow 调用预训练好的模型—— Python 实现
  6. SpringData 简单的条件查询
  7. 微信小程序:一个json帮你完成分享朋友圈图片
  8. python学习之--习题集
  9. Android--通知之Toast
  10. 关于cast类型转换后无法使用索引的优化