2.技术准备工作
这一阶段的工作包括:
• 技术评估
• 技术环境准备
这一阶段的成果是:
• 技术评估报告
• 软硬件配置方案
• 系统(软、硬件)总体设计方案
管理数据仓库的技术要求与管理操作型环境中的数据与处理的技术要求区别很大,两者所考虑的方面也不同。我们之所以在一般情况下总是将分析型数据与操作型数据分离开来,将分析型数据单独集中存放,也就是用数据仓库来存放,技术要求上的差异是一个重要原因。
2.1技术评估
进行技术评估,就是确定数据仓库的各项性能指标。一般情况下,需要在这一步里确定的性能指标包括:
• 管理大数据量数据的能力
• 进行灵活数据存取的能力
• 根据数据模型重组数据的能力
• 透明的数据发送和接收能力
• 周期性成批装载数据的能力
• 可设定完成时间的作业管理能力 (more…)
一.数据仓库的特点及实施方法
数据仓库是面向主题的、集成的、不可更新的、随时间的变化而不断变化的,这些特点决定了数据仓库的系统设计不能采用同开发传统的OLTP数据库一样的设计方法。
数据仓库系统的原始需求不明确,且不断变化与增加,开发者最初不能确切了解到用户的明确而详细的需求,用户所能提供的无非是需求的大的方向以及部分需求,更不能较准确地预见到以后的需求。因此,采用原型法来进行数据仓库的开发是比较合适的,因为原型法的思想是从构建系统的简单的基本框架着手,不断丰富与完善整个系统。但是,数据仓库的设计开发又不同于一般意义上的原型法,数据仓库的设计是数据驱动的。这是因为数据仓库是在现存数据库系统基础上进行开发,它着眼于有效地抽取、综合、集成和挖掘已有数据库的数据资源,服务于企业高层领导管理决策分析的需要。但需要说明的是,数据仓库系统开发是一个经过不断循环、反馈而使系统不断增长与完善的过程,这也是原型法区别于系统生命周期法的主要特点。因此,在数据仓库的开发的整个过程中,自始至终要求决策人员和开发者的共同参与和密切协作,要求保持灵活的头脑,不做或尽量少做无效工作或重复工作。
二.数据仓库的设计步骤
数据仓库的设计大体上可以分为以下几个步骤:
• 概念模型设计
• 技术准备工作
• 逻辑模型设计
• 物理模型设计
• 数据仓库生成
• 数据仓库运行与维护 (more…)
摘自:http://www.eygle.com/archives/2005/01/eoeauauecei.html
Data Warehouse
本世纪80年代中期,”数据仓库之父”William H.Inmon先生在其《建立数据仓库》一书中定义了数据仓库的概念,随后又给出了更为精确的定义:数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。与其他数据库应用不同的是,数据仓库更像一种过程,对分布在企业内部各处的业务数据的整合、加工和分析的过程。而不是一种可以购买的产品。
Data mart
数据集市,或者叫做”小数据仓库”。如果说数据仓库是建立在企业级的数据模型之上的话。那么数据集市就是企业级数据仓库的一个子集,他主要面向部门级业务,并且只是面向某个特定的主题。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
ODS(Operational Data Store)
操作数据存储,是用于支持企业日常的全局应用的数据集合,保存在ODS中的数据具有四个基本特点:面向主题的,集成的,可变的,数据是当前或接近当前的。 (more…)
摘自:http://www.eygle.com/archives/2005/01/eoeaaeaeioa.html
目前,数据仓库一词尚没有一个统一的定义,著名的数据仓库专家W.H.Inmon在其著作《Building the Data Warehouse》一书中给予如下描述:数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策。
对于数据仓库的概念我们可以从两个层次予以理解:
首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;
其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
根据数据仓库概念的含义,数据仓库拥有以下四个特点:
1、面向主题
操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。 (more…)
摘自:http://www.eygle.com/archives/2005/01/eiooecaeueaeaei.html
商业业智能是什么?简而言之,它是能够帮助用户对自身业务经营做出正确明智决定的工具。一般现代化的业务操作,通常都会产生大量的数据,如订单、库存、交易帐目、通话记录、及客户资料等。如何利用这些数据增进 对业务情况的了解,帮助我们在业务管理及发展上作出及时、正确的判断,也就是说,怎样从业务数据中提取有用的信息,然后根据这些信息来采用明智的行动–这就是商业智能的课题。
目前,商业智能产品及解决方案大致可分为数据仓库产品、数据抽取产品、OLAP产品、展示产品、和集成以上几种产品的针对某个应用的整体解决方案等。
商业智能领域的技术应用:
商业智能的技术体系主要有数据仓库(DW)、在线分析处理(OLAP)以及数据挖掘(DM)三部分组成。
数据仓库是商业智能的基础,许多基本报表可以由此生成,但它更大的用处是作为进一步分析的数据源。所谓数据仓库(DW)就是面向主题的、集成的、稳定的、不同时间的数据集合,用以支持经营管理中的决策制定过程。多维分析和数据挖掘是最常听到的例子,数据仓库能供给它们所需要的、整齐一致的数据。
在线分析处理(OLAP)技术则帮助分析人员、管理人员从多种角度把从原始数据中转化出来、能够真正为用户所理解的、并真实反映数据维特性的信息,进行快速、一致、交互地访问,从而获得对数据的更深入了解的一类软件技术。
数据挖掘(DM)是一种决策支持过程,它主要基于AI、机器学习、统计学等技术,高度自动化地分析企业原有的数据,做出归纳性的推理,从中挖掘出潜在的模式,预测客户的行为,帮助企业的决策者调整市场策略,减少风险,做出正确的决策。
前几天部门经理在IMP数据时想将数据导入到不同于原系统的表空间去,却发现怎么也不成功,数据还是导入到原来的表空间。
我看了一下,他在新系统上创建的这个用户授予了CONNECT,RESOURCE,DBA等角色,而且这个用户有UNLIMITED TABLESPACE这个系统权限。
总的来说, oracle 并没有提供什么参数让你将数据导入到指定的表空间中,数据默认还是导入到它原来所在的表空间。你可以用IMP 的SHOW参数可以看到其创建脚本中会指定TABLESPACE参数,而这个值是原系统该对象所在的表空间,跟你用户默认的表空间是没有关系的,如下:
“CREATE TABLE “EMPLOYEES” (”EMPLOYEE_ID” NUMBER(6, 0), “FIRST_NAME” VARCHAR2″
“(20), “LAST_NAME” VARCHAR2(25) NOT NULL ENABLE, “EMAIL” VARCHAR2(25) NOT NU”
“LL ENABLE, “PHONE_NUMBER” VARCHAR2(20), “HIRE_DATE” DATE NOT NULL ENABLE, “”
“JOB_ID” VARCHAR2(10) NOT NULL ENABLE, “SALARY” NUMBER(8, 2), “COMMISSION_PC”
“T” NUMBER(2, 2), “MANAGER_ID” NUMBER(6, 0), “DEPARTMENT_ID” NUMBER(4, 0)) ”
“PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELIS”
“TS 1 FREELIST GROUPS 1) TABLESPACE “EXAMPLE” LOGGING NOCOMPRESS”
. . 正在跳过表 “EMPLOYEES” (more…)
今天美国那边发了个dmp文件过来,要求将数据恢复到苏州这边的server,但执行imp时发生如下错误:
IMP-00010: 不是有效的导出文件,标题验证失败
IMP-00000: 未成功终止导入
我的imp版本是9205,目标数据库也是9205,而美国那边的dmp文件未告诉我版本
在google上查找了一下,大概有两种情况:
1.imp/exp的版本不对,也就是说低版本的导出,可以用高版本的导入,但高版本导出不能用低版本的导入,这个版本不只是指imp/exp的版本,也是指数据库的版本
2.可能你在用ftp download时未设置binary的传输方式,导致文件损坏
用UltraEdit-32打开dmp文件可看到版本信息,美国传过来的dmp文件的信息如下:
XPORT:V10.02.01
从中可以看出其版本是10.02.01
所以我执行imp时报错是因为版本问题,后来用10g的imp导入到10g的数据库就成功了
今天在server上安装了10g的数据库,listener都已经配好,客户端也能tnsping,但连接的时候报如下错误:
SQL> connect sys@ocdb as sysdba
请输入口令:
ERROR:
ORA-12535: TNS: 操作超时
Server的OS是windows 2003 enterprise edition
检查了一下windows 2003的防火墙,有开放1521端口,也把 oracle .exe这个程序开放了,怎么还是没办法连接呢?在防火墙中检查了一下 oracle .exe这个选项,发现其指向9i的目录,而我新增加的数据库是10g的!原来是忘记把10g的 oracle .exe文件添加进去了:(
今天因项目需要,在server上安装了9i跟10g两个版本的数据库,接着用9i的listener去监听9i和10g两个版本的数据库,在客户端用OEM或sqlplus去连接10g的数据库时报如下错误:
SQL> connect sys@ocdb as sysdba
请输入口令:
ERROR:
ORA-12500: TNS: 监听程序无法启动专用服务器进程
用tnsping是可以ping通的。
查了相关资料,大概都是讲oracleservice<sid>服务没起来,但我的service却是起来的,后来想了想会不会是用低版本的listener去监听高版本的数据库造成的呢?
做个测试:
当用9i的listener时,可以连接9i的数据库,但不能连接10g的数据库
改成用10g的listener时,两个版本的db都可以连接
所以估计就是由于listener的版本造成的
COLUMNS_UPDATED()
是一个仅可在 Insert or Update trigger 中调用的方法.
该方法返回 一个 varbinary 的值, 存储了当次Insert 或是 Update 触发器所对应的记录在哪些字段上发生了Inserted or updated.
COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含 8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。
可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。
COLUMNS_UPDATED返回值varbinary的算法:
COLUMNS_UPDATED()方法返回的 varbinary,是以每个小节存储8个字段(的修改状态)的方式记录了当前触发器所有列的修改情形.
因此程序以8个字段为一片段来循环处理所有字段.
SET @iVal= SubString(COLUMNS_UPDATED(), @i + 1, 1)
其中@i:
如果前8列,@i =1
9-16列,@i =2
17-24列,@i = 3
以次类推
程序用上面语句将一小节转化为整型.
测试发现:
当@i=1:
当且仅当这一小片只有一个字段有修改时
1,@iVal = 1 = 2^(1-1);
2,@iVal = 2 = 2^(2-1);
3,@iVal = 4 = 2^(3-1);
4,@iVal = 8 = 2^(4-11);
5,@iVal = 16 = 2^(5-1);
6,@iVal = 32 = 2^(6-1);
7,@iVal = 64 = 2^(7-1);
8,@iVal = 128 = 2^(8-1);
而当且仅当1,2个字段有修改时:
@iVal = 2^(1-1) + 2^(2-1) = 3;
而第 2,5,8 三个字段有修改时:
@iVal = 2^(2-1) + 2^(5-1) + 2^(8-1) = 146;
…
当8个字段都有修改时:
@iVal = 2^(1-1) + 2^(2-1) + … + 2^(8-1) = 255;
也就是说 无论怎样修改,@iVal的值,不外乎是2^n - 1(n>0 and n <9, int)这一数组型成的[和组合](组合时每个数组成员最多出现一次).
因此反过来推算: 对 @iVal 按 2^n分解, 就可算得被修改列的列表.
当@i>1时:
算法跟@i=1时一样,如:
第9列=第1列
第10列=第2列
….
以次类推
用法:
IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
其中:
bitwise_operator
是用于比较运算的位运算符。
updated_bitmask
是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。
假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;
若要检查是否只有列 C2 有更新,指定值 2。
comparison_operator
是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。
使用大于号 (>) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。
column_bitmask
是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列。
举例:
下例测试影响 Northwind.dbo.Customers 表中的第 3、第 5 或第 9 列的更新。
USE Northwind
DROP TRIGGER tr1
GO
CREATE TRIGGER tr1 ON Customers
FOR UPDATE AS
IF ( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3-1))
+ power(2,(5-1)))
AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1-1)))
)
PRINT 'Columns 3, 5 and 9 updated'
GO
UPDATE Customers
SET ContactName=ContactName,
Address=Address,
Country=Country
GO
Recent Comments: