- 浏览: 122812 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 22211.1 exp 使用方法及实例 ... -
oracle 中对LONG列进行查询
2008-01-10 11:50 8583由于LONG列的诸多限制,使得LONG不能放到WHERE语句中 ... -
oracle总结
2007-09-13 12:58 994一.Oracle数据库中常用的 ... -
oracle学习笔记(五)
2007-09-13 12:57 727Oracle day5 总结 删除表: drop table ... -
oracle学习笔记(四)
2007-09-13 12:54 880primary key约束: 主键约束的定义: 第一种定义形式 ... -
oracle学习笔记(三)
2007-09-13 12:52 1144组函数 avg(..),求平均值 ... -
oracle学习笔记(二)
2007-09-13 12:50 1271... -
SQL*PLUS命令的使用大全
2007-09-13 12:47 785关键字: Database oracle,d ... -
oracle学习笔记(一)
2007-09-13 12:42 918关键字: Database oracle,d ... -
如何正确利用Rownum来限制查询所返回的行数?
2007-09-07 16:13 1126如何正确利用Rownum来限 ... -
海量数据库的查询优化及分页算法方案
2007-09-07 15:27 1052(一)深入浅出理解索 ... -
Oracle 中rownum的用法
2007-08-30 22:41 1266选择表中的某一行记录:(理解:rownum是oracle系统顺 ...
相关推荐
一本关于Oracle Advanced Replication的书
我整理的oracle高级复制文档,包括advanced replication初步研究,Oracle 高级数据复制案例,Oracle数据库中高级复制的功能介绍,Oracle高级复制维护中要注意的方面,使用高级复制时清除Deferred Queue的办法
高级复制(Advanced Replication) 流复制(Streams Replication) 备库(Dataguard) 备库的方式,就是数据库对数据库的备份方式,主要是解决容灾的,不讨论此话题。 流复制主要是利用ORACLE的归档日志,...
Oracle Database Advanced Replication Management API Reference 11g Release 2 (11.2)-642
oracle advanced replication operation
Oracle Database Advanced Replication 11g Release 2 (11.2)-220
advanced replication初步研究 oracle高级复制、同步
Oracle Database Advanced Replication
good white paper about oracle replication
Oracle高级复制学习资料, ORACLE高级复制初级研究PDF版,详细请下载后自己阅读,个人觉得作者写得比较详细Advanced.Replication.Research.by.Kamus
Advanced.Replication.Research.by.Kamus.pdf Oracle 高级复制
高级复制研究 for Oracle。学习Oracle 高级复制的好书。
说到复制数据,你可能会想到oracle的其它一些同样实现数据复制功能的特性,比如说高级复制(Advanced Replication),Dataguard等等。 在9iR2之前高级复制应用比较广泛,高级复制也分两种:多主复制和基于物化视图...
Oracle 10g Advanced Replication Management API Reference
oracle Advanced Replication
在9iR2中,oracle推出了一些令人兴奋的新功能,其中的logical standby database与stream replication在数据复制环境有着非常重要的意义,它们与advanced replication共同承担着企业环境中数据同步的重任。
Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件。第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。下面对这些技术逐一进行介绍...
DSI是Data Server Internals的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材.由于某种原因流落江湖, 受到众多Oracle爱好者的追捧, 不过要是功力不到, 阅读反而无益. DSI3是Oracle 8系列的, DSI4是Oracle...
Pro Oracle GoldenGate for the DBA is aimed squarely at Oracle database administrators who find themselves involved in GoldenGate integration projects. The book provides the DBA view into such projects...
oracle dsi系列 DSI401 dump, crash and corruptions DSI401 advance support skill DSI401e Advanced Support Skill DSI404 SQL TUNNING DSI405 Performance Tuning DSI406 VLDB(Very Large) DSI407 Dataguard ...