- 浏览: 124526 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangxc:
使用第一种方法解压到指定命令下的命令是什么?
如何解压cpio.gz 文件 -
actan:
谢谢!很有用!
linux下如何使用sftp命令。 -
johnnyhg:
上游决定下游,先了解这个,才能谈。技术啊、需求啊、系统啊、设计 ...
项目型软件公司将死 -
phoenix007:
public static LinkedList list=n ...
JSP高访问量下的计数程序
一、试验环境:
A机:IP:10.1.8.201
OS:WindowsServer 2003 Standard Edition SP1;
DB:Oracle 10g Enterprise Edition Release 10.1.0.2.0;
数据库字符集:NLS_CHARACTERSET ZHS16GBK
B机:IP:10.1.9.49
OS:WindowsServer 2003 Standard Edition SP1;
DB:Oracle 10g Enterprise Edition Release 10.1.0.2.0;
数据库字符集:NLS_CHARACTERSET ZHS16GBK
二、试验步骤:
1. 初始化参数设置
A机:db_domain=mytest1.com
global_names=true
job_queue_processes=10 # 缺省值
open_links=4 # 缺省值
B机:db_domain=mytest2.com
global_names=true
job_queue_processes=10 # 缺省值
open_links=4 # 缺省值
2. 配置数据库连接
数据库名: A、B:orcl
数据库域名: A、B:mytest.com
数据库sid号: A、B:orcl
Listener端口号: A、B:1521
确认两个数据库之间可以互相访问,在tnsnames.ora里设置数据库连接字符串。
A机:
ORCL_49 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.9.49)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl.mytest2.com)
)
)
tnsping orcle_49 测试连通
B机:
ORCL_201 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.201)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl.mytest1.com)
)
)
tnsping orcle_201 测试连通
3. 用 system 用户连接数据库,改数据库全局名称,建公共的数据库链接。
A机:alter database rename global_name to orcl.mytest1.com;
B机:alter database rename global_name to orcl.mytest2.com;
A机:create public database link orcl.mytest2.com using 'orcl_49';
select * from global_name@orcl.mytest2.com; -- 验证数据库连接
B机:create public database link orcl.mytest1.com using 'orcl_201';
select * from global_name@orcl.mytest1.com; -- 验证数据库连接
4. 用 system 用户连接数据库,建立管理数据库复制的用户repadmin,并赋权
A、B机:create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
execute dbms_defer_sys.register_propagator('repadmin');
grant execute any procedure to repadmin;
execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
execute dbms_repcat_admin.grant_admin_any_schema(username => '"REPADMIN"');
grant comment any table to repadmin;
grant lock any table to repadmin;
grant select any dictionary to repadmin;
5. 用 repadmin 用户连接数据库,下创建私有的数据库链接
A机:create database link orcl.mytest2.com connect to repadmin identified by repadmin;
select * from global_name@orcl.mytest2.com; -- 验证数据库连接
B机:create database link orcl.mytest1.com connect to repadmin identified by repadmin;
select * from global_name@orcl.mytest1.com; -- 验证数据库连接
6. 创建实现数据库复制的用户和对象,给用户赋权,表必须有主关键字。
A机:-- 用 sys 连接数据库,创建用户并授权
create user testuser identified by testuser default tablespace users temporary tablespace temp;
grant connect, resource to testuser;
grant execute on sys.dbms_defer to testuser;
-- 用 testuser 连接数据库,创建表测试表 dept
create table dept
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13) );
-- 创建主关键字的序列号,范围避免和 B机 的冲突
create sequence dept_no increment by 1 start with 1 maxvalue 44 cycle nocache;
-- 插入初始化数据
insert into dept values (dept_no.nextval,'accounting','new york');
insert into dept values (dept_no.nextval,'research','dallas');
commit;
B机:-- 用 sys 连接数据库,创建用户并授权
create user testuser identified by testuser default tablespace users temporary tablespace temp;
grant connect, resource to testuser;
grant execute on sys.dbms_defer to testuser;
-- 用 testuser 连接数据库,创建表测试表 dept
create table dept
(deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13) );
-- 创建主关键字的序列号,范围避免和 B机 的冲突
create sequence dept_no increment by 1 start with 45 maxvalue 99 cycle nocache;
-- 插入初始化数据
insert into dept values (dept_no.nextval,'sales','chicago');
insert into dept values (dept_no.nextval,'operations','boston');
commit;
7. 创建要复制的组 testuser_mg,加入数据库对象,产生对象的复制支持
A机:-- 用 repadmin 身份登录 orcl 数据库,创建主复制组 testuser_mg:
execute dbms_repcat.create_master_repgroup('testuser_mg');
-- 在复制组 testuser_mg 里加入数据库对象:
execute dbms_repcat.create_master_repobject(sname=>'testuser',oname=>'dept', type=>'table',use_existing_object=>true,gname=>'testuser_mg');
参数说明:
sname 实现数据库复制的用户名称;
oname 实现数据库复制的数据库对象名称;
type 实现数据库复制的数据库对象类别;
use_existing_object true表示用主复制节点已经存在的数据库对象;
gname 主复制组名;
-- 对数据库对象产生复制支持:
execute dbms_repcat.generate_replication_support('testuser','dept','table');
-- 确认复制的组和对象已经加入数据库的数据字典:
select gname, master, status from dba_repgroup;
select * from dba_repobject;
8. 创建主复制节点
A机:-- 用 repadmin 身份登录 orcl 数据库,创建主复制节点
execute dbms_repcat.add_master_database (gname=>'testuser_mg',master=>'orcl.mytest2.com',use_existing_objects=>true, copy_rows=>false, propagation_mode => 'asynchronous');
参数说明:
gname 主复制组名;
master 加入主复制节点的另一个数据库;
use_existing_object true表示用主复制节点已经存在的数据库对象;
copy_rows false表示第一次开始复制时不用和主复制节点保持一致;
propagation_mode 异步地执行;
-- 确认复制的任务队列已经加入数据库的数据字典
select * from user_jobs;
9. 使同步组的状态由停顿(quiesced )改为正常(normal)
A机:-- 用 repadmin 连接数据库,运行以下命令
execute dbms_repcat.resume_master_activity('testuser_mg',true);
-- 确认同步组的状态为正常(normal)
select gname, master, status from dba_repgroup;
10. 创建复制数据库的时间表,10分钟复制一次
A机:-- 用 repadmin 身份登录数据库,运行以下命令
begin
dbms_defer_sys.schedule_push ( destination => 'orcl.test2.com',
interval => 'sysdate + 10/1440',
next_date => sysdate);
end;
/
begin
dbms_defer_sys.schedule_purge ( next_date => sysdate,
interval => 'sysdate + 10/1440',
delay_seconds => 0,
rollback_segment => '');
end;
/
B机:-- 用 repadmin 身份登录数据库,运行以下命令
begin
dbms_defer_sys.schedule_push ( destination => ' orcl.test1.com ',
interval => 'sysdate + 10 / 1440',
next_date => sysdate);
end;
/
begin
dbms_defer_sys.schedule_purge ( next_date => sysdate,
interval => 'sysdate + 10/1440',
delay_seconds => 0,
rollback_segment => '');
end;
/
11. 添加或修改两边数据库的记录,跟踪复制过程
如果你想立刻看到添加或修改后数据库的记录的变化,可以在两边 repadmin 用户下找到 push 的 job_number,然后运行:
exec dbms_job.run(job_number);
三、异常情况的处理
1. 检查复制工作正常否,可以在 repadmin 用户下查询user_jobs
select job,this_date,next_date,what, broken from user_jobs;
正常的状态有两种:
任务闲 —— this_date为空,next_date为当前时间后的一个时间值
任务忙 —— this_date不为空,next_date为当前时间后的一个时间值
异常状态也有两种:
任务死锁 —— next_date为当前时间前的一个时间值
任务死锁 —— next_date为非常大的一个时间值,例如:4001-01-01
这可能因为网络中断照成的死锁
解除死锁的办法:
$ps –ef|grep orale
找到死锁的刷新快照的进程号ora_snp*,用kill –9 命令删除此进程
然后进入 repadmin 用户运行命令:
exec dbms_job.run(job_number);
说明:job_number 为用 select job,this_date,next_date,what from user_jobs; 命令查出的job编号。
2. 增加或减少复制组的复制对象
①、停止主数据库节点的复制动作,使同步组的状态由正常(normal)改为停顿(quiesced )
用 repadmin 身份登录数据库,运行以下命令
execute dbms_repcat.suspend_master_activity (gname => 'testuser_mg');
②、在复制组testuser_mg里加入数据库对象,保证数据库对象必须有主关键字。
execute dbms_repcat.create_master_repobject(sname=>'testuer',oname=>'emp', type=>'table',use_existing_object=>true,gname=>'testuser_mg');
对加入的数据库对象产生复制支持
execute dbms_repcat.generate_replication_support('testuser','emp','table');
③、在复制组scott_mg里删除数据库对象。
execute dbms_repcat.drop_master_repobject ('testuser','dept','table');
④、重新使同步组的状态由停顿(quiesced )改为正常(normal)。
execute dbms_repcat.resume_master_activity('scott_mg',false);
发表评论
-
exp 使用方法及实例
2008-11-30 17:19 22901.1 exp 使用方法及实例 ... -
oracle 中对LONG列进行查询
2008-01-10 11:50 8626由于LONG列的诸多限制,使得LONG不能放到WHERE语句中 ... -
oracle总结
2007-09-13 12:58 1018一.Oracle数据库中常用的 ... -
oracle学习笔记(五)
2007-09-13 12:57 747Oracle day5 总结 删除表: drop table ... -
oracle学习笔记(四)
2007-09-13 12:54 899primary key约束: 主键约束的定义: 第一种定义形式 ... -
oracle学习笔记(三)
2007-09-13 12:52 1166组函数 avg(..),求平均值 ... -
oracle学习笔记(二)
2007-09-13 12:50 1297... -
SQL*PLUS命令的使用大全
2007-09-13 12:47 810关键字: Database oracle,d ... -
oracle学习笔记(一)
2007-09-13 12:42 947关键字: Database oracle,d ... -
如何正确利用Rownum来限制查询所返回的行数?
2007-09-07 16:13 1149如何正确利用Rownum来限 ... -
海量数据库的查询优化及分页算法方案
2007-09-07 15:27 1086(一)深入浅出理解索 ... -
Oracle 中rownum的用法
2007-08-30 22:41 1286选择表中的某一行记录:(理解:rownum是oracle系统顺 ...
相关推荐
Oracle Advanced Replication Management不仅提供了强大的复制功能,还包含了一系列实用的管理和监控工具,极大地提高了企业级应用的数据可用性和业务连续性。通过对上述核心概念和技术要点的理解与实践,可以更好地...
根据提供的文档信息,本文将对Oracle高级复制(Oracle Advanced Replication)进行深入解析,并探讨其在实际应用中的局限性、不同方法以及监控与故障排除等内容。 ### Oracle 高级复制概述 Oracle 高级复制是一种...
Oracle高级复制是Oracle数据库系统提供的一种复杂的数据同步技术,它允许在不同的数据库之间实时或近实时地复制数据。本教程将详细介绍如何进行Oracle高级复制的配置。 首先,我们需要准备两个运行Oracle数据库的...
我整理的oracle高级复制文档,包括advanced replication初步研究,Oracle 高级数据复制案例,Oracle数据库中高级复制的功能介绍,Oracle高级复制维护中要注意的方面,使用高级复制时清除Deferred Queue的办法
Oracle Database Advanced Replication Management API Reference 11g Release 2 (11.2) 是一本专为数据库管理员和开发人员设计的技术文档,旨在提供有关在Oracle数据库11g版本中管理高级复制功能的API(应用程序...
Oracle 高级复制 (Advanced Replication) 是一种在多个站点间实现数据共享的技术,主要用于提高数据可用性、性能和减少网络负载等目的。本章节主要介绍了 Advanced Replication 的基本概念、应用场景以及一些关键...
### Oracle高级复制操作详解 #### 一、判断数据库是否支持高级复制功能 为了确定Oracle数据库是否支持高级复制功能,可以...通过上述步骤,可以有效地完成Oracle高级复制的配置与测试,确保数据的一致性和高效传输。
Oracle高级复制技术是数据库管理中的一个关键特性,它允许数据在多个数据库之间实时或近实时地同步,以实现高可用性、灾难恢复和数据分发。在这个“Oracle Advanced Replication Operation”主题中,我们将深入探讨...
Oracle Database Advanced Replication 11g Release 2 (11.2)还提供了详细的文档和用户指南,帮助管理员配置、管理和维护这些高级复制功能。这个版本不仅增强了数据复制的灵活性和可靠性,而且简化了管理,降低了...
Oracle提供了三种复制技术:**高级复制(Advanced Replication)**、**流复制(Streams Replication)**和**备库(Dataguard)**。备库主要用于灾难恢复,这里不作详细讨论。高级复制基于触发器实现,适合复制单个表...
Oracle高级复制(Advanced Replication)是Oracle提供的高级数据复制解决方案,它包括主键冲突检测、事务级复制和选择性复制等功能。通过高级复制,用户可以选择复制特定表、部分表或甚至是表的特定列,同时可以...
### Oracle高级复制详解 #### 一、Oracle高级复制概述 ...然而,这一过程需要对Oracle数据库的深入理解和熟练掌握,确保所有复制节点之间数据的无缝同步和一致性,从而最大化Oracle高级复制的效益。
在Oracle数据库环境中,高级复制(Advanced Replication)是一种强大的数据分发和同步技术,它可以实现跨网络、跨地域的数据共享和一致性。本篇文章将详细探讨“Oracle高级复制 - 多主复制”这一主题,包括双节点和...
Oracle Database Advanced Replication
Oracle Streams作为Oracle数据库的一项重要特性,自Oracle9i版本开始引入,取代了之前的Advanced Replication,提供了一种更为强大、灵活的数据复制解决方案。下面将详细阐述Oracle Streams如何实现数据库间的同步,...
Oracle 10G的高级复制(Advanced Replication)是一种强大的数据复制机制,允许用户在多台服务器之间实时同步数据,从而构建分布式数据库系统。它支持多种复制场景,包括异步复制、快照复制和事务复制等,能够满足...
其中,高级复制(Advanced Replication)是一项核心功能,它允许用户在分布式环境中复制数据,确保数据的一致性和可用性。 **1. Oracle 高级复制概述** Oracle 高级复制是一种异步的数据复制解决方案,它支持多种...
描述:Oracle Advanced Replication是Oracle数据库10g Release 1 (10.1)版本中的一个关键组件,旨在提供高级的数据复制功能,支持异步及同步复制模式,确保数据在多个数据库之间的高效、一致性和可靠性复制。...