自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wzy0623的专栏

数据库、数据仓库、大数据

  • 博客(583)
  • 资源 (1)
  • 收藏
  • 关注

翻译 Oracle流复制配置最佳实践

一、通用配置1. 使用Oracle 10.2.0.4版本,并且安装所有关键补订包 2. 下游捕获需要源和目标库运行在相同平台上 3. 准备源和目标数据库的redo logs(1) 配置源和目标库的archivelog模式(2) 配置本地归档目标路径,log_archive_dest_1参数,不要使用flash recovery area。 4. 建立流转用表空间:对于下游捕获,只在下游捕获数据库建

2016-12-29 09:19:59 3250

原创 Oracle 10.2 流复制问题(四)—— ORA-01341: LOGMINER OUT-OF-MEMORY in Oracle Streams

系统配置:Linux CentOS 5、Oracle Enterprise Edition Release 10.2.0.1.0、表级单向流复制问题现象:流复制失效,源表更新,目标表没有更新排错过程: 1) 查看捕获进程状态select capture_name,status from dba_capture;Capture status 为ABORTED 2) 查看alert_.logkrvxe

2016-12-29 09:18:30 894

原创 Oracle 10.2 流复制问题(三)—— 大事务处理

以下是实践中大事务处理过程:1) 停止流-- 源数据库停止Capture进程connect strmadminBEGINDBMS_CAPTURE_ADM.STOP_CAPTURE(capture_name => 'capture1');END;/-- 目标数据库停止Apply进程connect strmadminbegindbms_apply_adm.stop_apply(apply_name =

2016-12-29 09:16:53 1027

原创 Oracle 10.2 流复制问题(二)—— C001: large txn detected

系统配置:HP-UX B.11.31 U ia64、Oracle Enterprise Edition Release 10.2.0.4.0、表级单向流复制问题现象:流复制失效,源表更新,目标表没有更新,没有apply error信息排错过程: 1) 检查源库的alert_.log,发现大量C001: large txn detectedC001: large txn detected (2457

2016-12-29 09:14:53 724

原创 Oracle 10.2 流复制问题(一)—— ORA-01403: no data found

在使用Oracle 10g 流复制时出现过一些问题,现在把解决过程总结一下。 系统配置:HP-UX B.11.31 U ia64、Oracle Enterprise Edition Release 10.2.0.4.0、表级单向流复制问题现象:流复制失效,源表更新,目标表没有更新排错过程: 1) 查看应用错误信息SQL> select apply_name,LOCAL_TRANSACTION_ID

2016-12-29 09:13:36 827

转载 Oracle数据库中的本地索引和全局索引的区别

表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,Oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。 局部索引local index1. 局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,一句话,局部索引的分区机制和表的分区机制一样。2. 如果局部索引的索引列以分区键开头,则称为前

2016-12-29 09:10:34 5835

转载 完全停止Oracle中正在运行的JOB

Killing the Oracle DBMS_JOBJames F. Koopmann, www.dbdoctor.net源地址:http://www.quest-pipelines.com/newsletter-v4/0403_C.htmTake control of Oracle's queue with a step by step approach to getting rid of t

2016-12-29 09:04:19 3635

转载 星型和雪花型模式

什么是星型模式?可以将星型模式描述为一个简单的星型:中央表包含事实数据,多个表以中央表为中心呈放射状分布,它们通过数据库的主键和外键相互连接。 什么是雪花型模式?雪花型模式表示一种维度模型,该模型也是由一个中央事实表和一组成员维度表组成,这些维度表可进一步规范化为子维度表。 何时使用雪花型模式实施?数据仓库专家 Ralph Kimball 建议了三种情况,在这三种情况下,不仅可以使用雪花型实施,而

2016-12-29 08:58:21 1578

原创 Oracle 触发器中修改字段值

有个需求看着很简单,但也查了许多资料,还是记录下来。需求是这样的:根据一个表中的某些被修改的字段修改其它字段,用触发器实现。示例代码如下:CREATE TABLE t( ID INT, update_time DATE, other_col VARCHAR2(20));CREATE OR REPLACE TRIGGER trigger_on_t1_change

2016-12-28 16:32:03 7373

原创 利用Oracle dbms_pipe实现存储过程之间的通信

应用程序开发人员的需求是这样的:1. 根据条件给每一个国家的商品生成唯一7位随机代码,不同国家之间的商品代码可以相同2. 如果输入标准分隔符的字符串,则解析该字符串作为需要生成的商品ID,为其生成代码,否则为商品表中所有商品ID生成代码3. 代码的每一位要符合相应的规则,例如第一位的规则是[0123],则这位只能是0、1、2、3中的一个数4. 由于可能一次生成大量的代码,这个过程需要较长时间,所以

2016-12-28 16:29:10 2218

翻译 Oracle聚簇表使用方针

使用下面的方针决定是否使用聚簇表:经常被应用的连接语句访问的表可以使用聚簇表如果应用只是偶尔地使用表连接,或者频繁修改连接列的值,则不要使用聚簇表。修改一行的聚簇键值比修改非聚簇表的值花费更长的时间,因为Oracle可能为了维护聚簇而把被修改的行从一个块迁移到另一个块。如果应用经常对聚簇中的一个表进行全表扫描,则不要使用聚簇表。对聚簇表的全面扫描会比对非聚簇表的全表扫描花费更长的时间。因为表被存储

2016-12-28 16:23:21 777

原创 qcache_inserts com_select 与缓存命中率

高性能MySQL这本书中关于查询缓存有一段这样的描述: Cache invalidations can happen because of fragmentation, insufficient memory, ordata modifications. If you have allocated enough memory to the cache and tuned thequery_cach

2016-12-28 16:21:04 2226

转载 ora-22992 通过DBLINK 访问远程CLOB表问题

在本地用select语句访问远程,如果远程表有CLOB字段的话则会有错:ora-22992;如果真的想看到clob字段的内容的话就得在本地建立一个表,用下面两条语句:我刚才试验insert into table select * from remote table成功remote table含有CLOB总结:在我的环境中成功(1)create table aaa select * from rem

2016-12-28 16:19:03 1491

转载 云计算背后的秘密:NoSQL数据模型与CAP理论

数据模型  传统的数据库在数据模型方面,主要是关系型,它的特色是对Join类操作和ACID事务的支持。在NoSQL领域,主要有三种主流的数据模型:  Column-oriented(列式)  列式也主要使用Table这样的模型,但是它并不支持类似Join这样多表的操作,它的主要特点是在存储数据时,主要围绕着“列(Column)”,而不是像传统的关系型数据库那样根据“行(Row)”进行存储,也就是说

2016-12-28 16:15:48 740

原创 MySQL内存相关的主要变量

一、查询缓存1. 查询缓存命中率计算公式:Qcache_hits/(Qcache_hits + Com_select)2. 状态变量Qcache_hits查询缓存命中数,即可以从查询缓存中直接返回结果的次数Qcache_not_cached不可缓存查询数,current_date等不确定函数或者查询结果大于query_cache_limit使得查询不可缓存Qcahce_inserts被加入缓存的查

2016-12-28 15:46:43 676

原创 Oracle里二进制与十进制的相互转换

Oracle里有内建函数bin_to_num可以将二进制数转换为十进制数,但这个函数的入参是个数不定的0或1:[sql] view plain copySELECT BIN_TO_NUM (1, 1, 1, 1, 0, 1, 1) FROM DUAL;   有时候入参使用一个二进制字符串会更加方便,另外Oracle本身没有提供num_to_bin这样将十进制转换成二进制的函数,于是写了两个自定义函

2016-12-28 15:44:35 8805

原创 MySQL 分析和调整查询缓存的流程(书摘备查)

总的SELECT查询数 = Com_select + Qcache_hits + queries with errors found by parserCom_select = Qcache_inserts + Qcache_not_cached+ queries with errors found during the column-privileges check

2016-12-28 15:41:07 619

转载 多维数据库概述之一---多维数据库的选择

1. 多维数据库简介多维数据库(Multi Dimesional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。MDD的信息是以数组形式存放的,所以它可以在不影响索引的情

2016-12-28 15:34:22 7686

转载 多维数据库

多维数据库(Multi Dimensional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。  目前有两种MDD 的OLAP产品:基于多维数据库的MOLAP和基于关系数

2016-12-28 15:31:19 995

转载 联机分析处理简介

联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的。当时,Codd认为联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,E.F.codd提出了多维数据库和多维分析的概念,即OLAP。一、OLAP的概念  根据OLAP产品的实际应用情况和

2016-12-28 15:29:47 2752

原创 Oracle中文转拼音函数

最近两个项目都提出从中文转拼音的需求。我以前的做法是:从微软拼音输入法导出字库,建立中文拼音对照表,然后写一个函数从对照表查拼音。这种方法虽然思路简单,但是返回拼音的错误率太高,而且对每个字都要去查一遍3万记录的对照表,效率也不高。 这两天重新写了一个函数来完成此功能,该函数利用了Oracle提供的NLSSORT,具有以下特点:不需要中文字库 与数据库字符集无关 支持O...

2016-12-28 15:16:45 22113 18

原创 日期差的天时分秒表示SQL

MySQL:[sql] view plain copySET @a:=UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(CURRENT_DATE());    SELECT CONCAT(IF(TRUNCATE(@a/24/3600,0)=0,'',CONCAT(TRUNCATE(@a/24/3600,0),'天')),                IF(MOD(TR

2016-12-28 15:11:20 1271

原创 存储过程实现递归算法

以经典的阶乘算法为例。Oracle:[sql] view plain copycreate or replace procedure factorial(n in number, b out number)  is      c_in number;      c_out number;  begin      if n!=1 then          c_in := n-1;         

2016-12-28 15:08:59 6295

原创 生成全局ID

对数据库表进行水平分割的时候,经常会遇到在不同的机器上生成全局唯一ID的问题。下面以MySQL为例介绍对于在不同机器上生成全局唯一ID的几个解决途径,其思想也适用于其他数据库系统。1. 使用auto_increment_increment和auto_increment_offset        假定有n个数据库,它们使用了auto_increment字段来取得唯一ID,为了保证n个数据库同时具备

2016-12-28 15:00:49 652

原创 MySQL里用一个表的数据更新另一个表

MySQL的update语句里可以使用join,这在用一个表的数据更新另一个表时很方便,看下面一个统计点击数的例子:[sql] view plain copy-- 建立每天点击统计表  create table daily_hit_counter  (    day  date not null,    slot tinyint unsigned not null,    cnt  int uns

2016-12-28 14:57:29 1404

原创 MySQl里类似Oracle rownum的实现

[sql] view plain copy-- dense rank,写法1  set @curr_cut:=0, @prev_cnt:=0, @rank:=0;  select actor_id,          @curr_cnt:=cnt as cnt,         @rank:=if(@prev_cntas rank         @prev_cnt:=@curr_cnt as d

2016-12-28 14:26:38 4195 1

原创 加速MySQL的alter table操作(书摘备查)

MySQL的alter table性能在表很大的时候会出现问题。MySQL执行大部分更改操作都是新建一个需要的结构的空表,然后把所有老的数据插入到新表,最后删除旧表。这会耗费很多时间,尤其是在内存紧张,而表很大并有很多索引的时候。  不是所有的alter table操作都会导致重建表。例如,可以通过两种方式创建或去掉列的默认值(一种快、一种慢)。下面是较慢的方式:alter table film

2016-12-28 14:17:16 1485

原创 InnoDB缓冲池命中率(书摘备查)

通常InnoDB存储引擎的缓冲池的命中率不应该小于99%。缓冲池命中率 = (Innodb_buffer_pool_read_requests)/(Innodb_buffer_pool_read_requests + Innodb_buffer_pool_read_ahead + Innodb_buffer_pool_reads)平均每次读取的字节数 = Innodb_data_read/Inno

2016-12-28 13:23:39 5379

原创 Oracle生成某一用户下所有表数据的insert语句

功能:生成某一用户下所有数据表数据的insert语句,放入d:\insert.sql文件。限制:只支持number、char、varchar2、date、long、clob数据类型。提示:数据量小还可以,大了就别用这种方式了,会很慢。[sql] view plain copy/* Formatted on 2012-12-27 20:56:24 (QP5 v5.185.11230.41888) *

2016-12-28 13:22:03 2255

原创 MySQL优化特定类型的查询(书摘备查)

1. 优化countcount有两种不同的工作方式:统计值的数量和统计行的数量。值是一个非空的表达式(null意味着没有值)。如果在count()的括号中定义了列名或其它表达式,count就会统计这个表达式值的次数。count的另外一种形式就是统计结果中行的数量。当MySQL知道括号中的表达式永远不会为null的时候,它就会按这种方式工作。最明显的例子就是count(*),它是count的一种特例

2016-12-28 13:19:55 757

原创 在MySQL中建立自己的哈希索引(书摘备查)

在MySQL中,只有Memory存储引擎支持显式的哈希索引,但是可以按照InnoDB使用的方式模拟自己的哈希索引。这会让你得到某些哈希索引的特性,例如很大的键也只有很小的索引。  想法非常简单:在标准B-Tree索引上创建一个伪哈希索引。它和真正的哈希索引不是一回事,因为它还是使用B-Tree索引进行查找。然而,它将会使用键的哈希值进行查找,而不是键自身。你所要做的事情就是在where子句中手动地

2016-12-28 13:16:48 1783

原创 关系模型与多维模型差异示例(书摘备查)

左边是一个销售订单的典型的规范化表示。订单(Order)实体描述有关订单文档的信息,订单明细(Order Line)实体描述有关订单明细的信息,两个实体都包含描述订单和它的状态的信息。右边是一个订单状态维(Order Status Dimension),该维描述与订单和订单明细中对应的状态编码值的唯一组合。它包括在实体模型的订单和订单明细实体中都出现的属性。当销售订单事实行被装载时,参照在订单状态

2016-12-28 11:37:42 1212

原创 数据仓库模型开发方法学(书摘备查)

在业务数据模型的基础上,通过采用八个步骤的转换过程,形成数据仓库系统的数据模型:步骤动作目标说明1选择感兴趣的数据决定包含范围,减少载入时间,减少存储需求决定在模型中要包含的数据元素和考虑存档其他将来可能使用的数据2在键中增加时间提供历史数据在键中增加时间成分,并解决因模型从“时间点”变换到“时间段”引起的关系中的结果变化3增加派生数据保证业务一致性和改善数据交付性能计算和存储经常使用的或要求一致

2016-12-28 11:34:22 1143

原创 使用shell并行执行多个脚本

有没有一种比较通用的并行执行多个SQL脚本的方法呢?每种数据库都提供命令行接口执行SQL语句,因此最容易想到的就是通过初始化多个并发的会话并行执行,每个会话运行一个单独的查询,用来抽取不同的数据部分。以Oracle例如,假设要从订单表抽取数据,订单表已经是按月做了范围分区,分区名称是orders_jan2008、orders_feb2008等。要从订单表抽取一年的数据,可以初始化12个并发的SQL

2016-12-28 11:31:26 30045

原创 利用job并行执行Oracle存储过程

-- 建立测试表  CREATE TABLE t (a NUMBER);    -- 建立存储过程  CREATE OR REPLACE PROCEDURE p_parallel (p_min IN NUMBER, p_max IN NUMBER)  IS  BEGIN     INSERT INTO t        SELECT TRUNC (DBMS_RANDOM.VALUE (p_min,

2016-12-28 11:13:26 4245 2

原创 在MV上建立触发器实验

-- 建立MV测试表  CREATE TABLE tbl1  (     a   NUMBER,     b   VARCHAR2 (20)  );    CREATE UNIQUE INDEX tbl1_pk ON tbl1 (a);    ALTER TABLE tbl1 ADD (CONSTRAINT tbl1_pl PRIMARY KEY(a));    -- 建立MV日志,单一表聚合视图

2016-12-28 11:11:16 569

原创 递归树的平面化实验

/***  已有维度表:  dim_org    -- 组织机构,组织为带有历史信息的递归树,其主键为SEQ_DIM_ORG_PK序列生成的代理键  dim_person -- 人员表,带历史信息,org_pk关联到dim_org的代理键  目的:  数据以平面化完整树的形式交付给OLAP工具  功能:  依照dim_org定义固定的三级组织机构,每个人员关联第三级组织机构,dim_person.

2016-12-28 11:09:16 618

原创 与时间有关的树的展开实验

-- 建立递归树历史表,并生成数据  CREATE TABLE TREE_HIS  (    ID        NUMBER,    C_CHILD   VARCHAR2(32 BYTE),    C_NAME    VARCHAR2(100 BYTE),    P_ID      NUMBER,    EFF_DATE  DATE,    EXP_DATE  DATE  );    CREAT

2016-12-28 11:07:48 760

原创 在ETL过程中对递归树的历史维护实验

-- 当前递归树  CREATE TABLE TREE_CUR  (    C_CHILD   VARCHAR2(32 BYTE),    C_NAME    VARCHAR2(100 BYTE),    C_PARENT  VARCHAR2(32 BYTE)  );    CREATE INDEX IDX1 ON TREE_CUR (C_PARENT);  CREATE UNIQUE INDEX

2016-12-28 11:06:23 718

原创 层次树展开问题

在数据仓库的层次建模时,常用递归的方式表示一颗层次树,但有些BI工具的前端不支持递归,所以为了实现数据下钻,可以把一棵递归树进行扩展。[sql] view plain copy-- 建立原始树表,并生成数据  CREATE TABLE TREE  (    C_PARENT  INTEGER,    C_CHILD   INTEGER  );  Insert into TREE (C_PARENT

2016-12-28 10:55:32 1018

PD_导出模板.rtp

Powerdesigner 物理模型report模板,可用于生成数据字典Word文档。

2021-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除