Oracle Sharding

一直以来在关系型数据库当中,MySQL的分库分表被所有企业认可,并广泛的应用于互联网行业及各大电商平台,数据库的中间件产品也是满目狼藉,如代表,官方的MySQL Proxy、商用的有阿里DRDS、开源的有MyCAT、Altas等等。
自从Oracle 12.2发布之后,Oracle数据库也可以实现分库分表,袋鼠云RDS基于Oracle12.2分库分表的功能,在产品上实现一键部署、智能运维、监控告警、备份恢复、性能管控等,下面我们来看看如何部署Oracle Sharding,本次部署不涉及到DG。

1、部署环境,配置好安装Oracle软件所需条件,关闭防火墙

2、在三台主机上安装Oracle Database 12.2.0.1数据库软件,不创建数据库实例(过程略)

3、在master主机上安装Oracle GSM软件,并创建数据库实例scat(过程略)

4、在master节点上准备数据库环境,并创建路由
alter system set db_create_file_dest='/u01/app/oracle/oradata' scope=both;
alter system set open_links=16 scope=spfile;
alter system set open_links_per_instance=16 scope=spfile;
alter user gsmcatuser identified by gsmcatuser account unlock;
create user mygds identified by mygds;
grant connect, create session, gsmadmin_role to mygds;
grant inherit privileges on user SYS to GSMADMIN_INTERNAL;
alter system set events 'immediate trace name GWM_TRACE level 7';
alter system set event='10798 trace name context forever, level 7' scope=spfile;
startup force

set echo on
set termout on
spool config_remote_scheduler.lst
@?/rdbms/admin/prvtrsch.plb

exec DBMS_XDB.sethttpport(8080);
commit;
exec DBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS('welcome');
alter system register;

5、在所有shard节点上启动shardcat agent,并且连接master
schagent -start
schagent -status
echo welcome | schagent -registerdatabase master 8080

6、使用mygds用户创建GSM
gdsctl connect mygds/mygds@master:1521:scat

create shardcatalog -database master:1521:scat -user mygds/mygds -chunks 12 -user mygds/mygds -region dc1, dc2 -sdb scat
add gsm -gsm gsmha -listener 12106 -pwd gsmcatuser -catalog master:1521:scat -region dc1 -trace_level 16

7、继续创建shard
add shardgroup -shardgroup primary_shardgroup -deploy_as primary -region dc1
create shard -shardgroup primary_shardgroup -destination slave1 -osaccount oracle -ospassword oracle
create shard -shardgroup primary_shardgroup -destination slave2 -osaccount oracle -ospassword oracle

8、开始部署sharding数据库实例,并添加服务
deploy
add service -service pri_srv -role primary
start service -service pri_srv

GDSCTL>databases
Database: "sh1" Registered: Y State: Ok ONS: N. Role: PRIMARY Instances: 1 Region: dc1
Service: "pri_srv" Globally started: Y Started: Y
Scan: N Enabled: Y Preferred: Y
Registered instances:
scat%1
Database: "sh2" Registered: Y State: Ok ONS: N. Role: PRIMARY Instances: 1 Region: dc1
Service: "pri_srv" Globally started: Y Started: Y
Scan: N Enabled: Y Preferred: Y
Registered instances:
scat%11

9、创建应用用户、表空间、表
alter session enable shard ddl;
create user app identified by oracle;
grant all privileges to app;
grant connect,resource,dba,select_catalog_role,gsmadmin_role to app;
grant execute on dbms_crypto to app;

CREATE TABLESPACE SET TSP_SET_2 using template (datafile size 100m extent management local segment space management auto );
CREATE TABLESPACE products_tsp_1 datafile size 100m extent management local uniform size 1m;

conn app/oracle
CREATE SHARDED TABLE cust
(
CustId VARCHAR2(60) NOT NULL,
FirstName VARCHAR2(60),
LastName VARCHAR2(60),
CONSTRAINT pk_cust PRIMARY KEY (CustId)
) TABLESPACE SET TSP_SET_2 PARTITION BY CONSISTENT HASH (CustId) PARTITIONS AUTO;

CREATE SHARDED TABLE Orders
(
OrderId INTEGER NOT NULL,
CustId VARCHAR2(60) NOT NULL,
constraint pk_orders primary key (CustId, OrderId),
constraint fk_orders_parent foreign key (CustId)
references cust on delete cascade
) partition by reference (fk_orders_parent);

CREATE SHARDED TABLE LineItems
(
OrderId INTEGER NOT NULL,
CustId VARCHAR2(60) NOT NULL,
ProductId INTEGER NOT NULL,
constraint pk_items primary key (CustId, OrderId, ProductId),
constraint fk_items_parent foreign key (CustId, OrderId) references Orders on delete cascade
) partition by reference (fk_items_parent);

CREATE DUPLICATED TABLE Products
(
ProductId INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Name VARCHAR2(128),
DescrUri VARCHAR2(128),
LastPrice NUMBER(19,4)
) TABLESPACE products_tsp_1;

10、验证sharding表和表空间
select TABLESPACE_NAME, BYTES/1024/1024 MB from sys.dba_data_files order by tablespace_name;

set linesize 140
column table_name format a20
column tablespace_name format a20
column partition_name format a20
show parameter db_unique_name
select table_name, partition_name, tablespace_name from dba_tab_partitions where tablespace_name like 'C%TSP_SET_2' order by tablespace_name;

时间: 2025-01-21 07:41:43

Oracle Sharding的相关文章

创建Oracle sharding database的例子

一.Oracle sharding database的一些概念 (1)Table family: 有相关关联关系的一组表,如客户表(customers),订单表(order),订单明细表(LineItems).这些表之间往往有外键约束关系,可以通过如下2中方式建立table family: (1.1)通过CONSTRAINT [FK_name] FOREIGN KEY (FK_column) REFERENCES [R_table_name]([R_table_column]) --这种关系可以

关于Oracle Sharding,你想知道的都在这里

编辑手记:随着Oracle12.2的发布,Sharding技术也逐渐变得越来越强大,关于Sharding,你所关心的问题的答案,可能都在这里. 注:本文来自Oracle FAQ文档翻译 相关阅读: 1.Oracle 12.2 Sharding技术揭秘 2.Oracle 12.2新特性-Sharding 的增强 3.针对Sharding单点故障的HA架构 4.Oracle 12.2的Sharding基础概念解读 什么是Oracle Sharding Oracle Sharding是为OLTP应用程

【12.2新特性】Oracle Sharding分片级别的高可用实现

编辑手记:Oracle Sharding是从12c推出的通过分区技术实现的一种数据库架构,在12.2中这项技术也越来越成熟.release 2中新特性包含:分片的自动部署,智能路由和全生命周期管理等,同时,通过与DG技术的集成,将实现分片级别的高可用. 推荐阅读: 关于Oracle Sharding,你想知道的都在这里 Oracle 12.2新特性掌上手册 - 第四卷 Sharding 的增强 Oracle Sharding与Oracle数据库复制技术(Data Guard)集成,可在碎片级别实

从原理到实践:Oracle 12.2 Sharding技术揭秘

何剑敏 Oracle ACS华南区售后团队,首席技术工程师 曾供职于中国联通信息计费部.卓望数码,系统支撑部首席DBA,负责中国移动全网梦网业务和移动应用商城数据库维护.后供职于IBM,负责米其林项目和澳洲电信(Telstra)项目数据库管理.现供职于Oracle ACS华南区售后团队,首席技术工程师.多年从事第一线的数据库运维工作,有丰富项目经验.维护经验和调优经验,专注于数据库的整体运维. 编辑说明:感谢何剑敏撰写了关于Sharding的相关文章,并授权我们分享给大家.根据我们的理解对他的文

Oracle 12.2新特性掌上手册 - 第三卷 Sharding 的增强

编辑手记:Sharding技术我们谈了好久,想必大家并不陌生,该功能12.2最新版本中,也将变得越来越完善,今天我们一起来学习. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.about Sharding 简单来说,Oracle的Sharding技术就是通过分区(Partioning)技术的扩展来实现的.以前一个表的分区可以存在于不同的表空间,现在可以存在于不同的数据库.不同分区存在于不同数据库,这就将数据隔离了开来,Sharding就此实现. Sharding是一种数据层

循序渐进:Oracle 12.2的Sharding基础概念解读

张大朋(Lunar)Oracle 工程师 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等. 编辑说明:感谢Lunar授权我们转载其原创文章,文章插入了一些我们以前分享的图片,作为配合解读. 2015年8月份内部release了Oracle 12.2 Beta版本(目前内部最新release的版本是2

Oracle 12.2的Sharding-1-基础概念学习笔记

2015年8月份内部release了Oracle 12.2beta版本(目前内部最新release的版本是2016年2月份发布的,windows和Linux都有了),目前根据12.2beta文档的介绍,Oracle推出了sharding的功能,跟其他NOSQL型的sharding结构相比,Oracle Sharding提供的是企业级的RDBMS的分片技术. . Oracle Sharding的优点: • Relational schemas • Database partitioning • A

Oracle Database 12.2新特性详解

在2015年旧金山的Oracle OpenWorld大会上,Oracle发布了Database 12.2的Beta版本,虽然Beta版本只对部分用户开放,但是大会上已经公布了12.2的很多重要的新特性,云和恩墨是Oracle的Beta用户,已经开始测试这一产品.在刚刚结束的"Oracle技术嘉年华"大会上,更详细的主题分享披露了更多内容.在这篇文章中,我将和大家一一来细数Oracle Database 12.2的新特性. Oracle Sharding的实现 简单来说,Oracle的S

惊喜与局限并存,12c Sharding内测报告抢先看!

2017年3月,我们终于迎来了Oracle 12cR2,作为国内首批Beta测试用户,我们在2016年1月应邀进行Oracle 12c Sharding 技术测试,并于去年10月完成了12cR2 Sharding 预研报告.由于受Oracle新技术发布限制,直至今日才发布与各位分享.      一.Oracle 12c Sharding简介     在Oracle 12cR2之前的版本中, Oracle分区表的所有分区都是在一套数据库中,而Sharding技术,则是使用新的分片技术可以将不同的分