ODI如何通过logminer技术从oracle 数据库中抽取增量数据

ODI如何通过logminer技术从oracle 数据库中抽取增量数据
ODI如何通过logminer技术从oracle 数据库中抽取增量数据

ODI 从oracle 数据库中抽取增量数据

海量Oracle资料下载,请收藏

https://www.360docs.net/doc/7115101032.html,

Oracle Data Integrator简介

ODI(Oracle Data Integrator)是Oracle在2006年10月收购Sunopsis公司后,整合Sunopsis Active Integration Platform而推出的一款数据集成工具,现在是Oracle Fusion Middleware的组件。和Oracle自己的OWB(Oracle Warehouse Build)相比,ODI支持更多的异构数据源,支持SOA,支持Jython,和OWB正好互补。ODI和OWB都是所谓的ELT工具,和通常所见的ETL工具不同,它们不是采用独立的引擎而是采用RDBMS进行数据转换。做为领先的RDBMS供应商,Oracle选择ELT而不是ETL不是没有道理的。

ODI的主要组件包括模块知识库,图形模块和执行引擎,都是基于java编写,所以运行ODI需要有JDK的支持。另外还有一个基于J2EE的元数据导航器(Metadata Navigator)。

知识库

ODI所有模块的信息都保存在一个叫做Master Repository的中心知识库中。Master Repository通过Master Repository Creation Wizard创建,这也是安装完ODI后应该做的第一个任务。

除了Master Repository,还需要为不同的任务创建Work Repository。Work Repository中的信息包括模块信息,项目信息和运行期信息。

图形模块

Designer 用于定义数据转换逻辑,这是最常用的开发工具,大部分的开发任务,包括data store的定义,interface(数据映射关系)和package(相当于workflow)的创建等,都是在Designer中完成。

Operator用于管理和监控数据转换任务的执行情况,在设计阶段,也可用于调

试(debugging)

Topology Manager用于定义物理和逻辑基础架构,如work repository的创建

和管理等。

Security Manager用于管理用户权限

运行期组件

Schedule Agent计划代理,用于调度执行数据转换任务。计划代理同时也带有

一个数据转换引擎,但是ODI采用E-LT架构,所以基本上计划代理只是将任务传递给目标库,其数据转换引擎很少用到。

附:安装完ODI后默认用户名为SUPERVISOR,密码为SUNOPSIS,大小写敏感。

ODI 从oracle 数据库中抽取增量数据

最近做的几个项目,都碰到了ODI从oracle9i或者10g数据库中抽取增量数据的情况,那么ODI如何从数据库中抽取增量数据呢,ODI针对Oracle数据库的抽取,提供了3类知识模块:

Oracle Simple

Oracle Consistent

Oracle 9i/10g/11gConsistent (LOGMINER)

Simple方式一般是针对数据库中需要增量复制的表之间没有主外键约束的情况,在这种方式下,表之间的先后复制关系没有影响。但如果表之间有主外键对照关系,采用simple方式就会出现问题,举个简单的例子,我们需要从源数据库抽取两张表订单和订单明细表的增量数据,其中订单明细表的外键要参照订单表的主键。

1.我们将订单表中主键从11000-25000的增量数据复制到目标端。

2.在复制的过程中,源端订单表又插入了两条新数据,主键为25001和25002。

3.当进行订单明细表的增量数据复制时,与订单表中主键25001和25002对应的明细数据就会在目标端出错,因为刚才复制时,这两条数据没有复制到目标端。

Consistent方式就是专门来解决这个问题的,它在处理父表前首先锁定(注意不是锁住)主表和子表需要复制的记录,在增量数据复制时,插入主表和子表的新增量数据都会被本次抽取过程忽略,放在下次抽取时处理。因此采用Consistent方式进行增量数据捕获一般需要5个步骤:

1.扩展窗口(extend_window):计算主表和子表本次抽取的结果集,并赋予其一个序列号。

2.锁定订阅者(lock subscriber):针对变化数据的某个订阅者,确定其需要抽取的序列号范围(一个系统的变化数据可能会被多个系统使用,比如主数据管理系统)。

3.执行抽取过程,我们通过ODI中的接口程序进行实现。

4.抽取完成后,解锁订阅者(unlock subscriber):记录下本次抽取的最后的序列号,以便于下次使用。

5.清除增量数据(Purge the journal):将已经复制完成的增量数据清楚(这里是指所有的订阅者)。

在具体的实现方式上,Oracle Simple、Oracle Consistent是采用同步方式进行增量数据抽取的,说白了就是在源系统相关表上添加触发器,如下图所示:

当源数据库中的交易需要修改相关表时,会调用触发器,将变化数据插入到增量表中,触发器的调用是包含在交易中的,这就决定了变化数据的实时性高,在需要实时变化的场景,非常适用,而且这种方式在数据库非归档状态下也照常运行,其缺点是由于触发器包含在对数据修改的事务中,当系统并发量比较大时,会对原有系统的效率产生一定影响。很多同事一听说触发器就觉得对源系统影响非常大,其实并不是这样。这里需要澄清的一点概念是触发器往变化数据表中写的并不是所有变化的数据,而可能只是一个主键或者再加一点额外的信息,其对系统的影响比我们想象的要小得多。

Oracle 9i/10g/11gConsistent (LOGMINER)方式可以配置成异步方式,基于Oracle数据库的online redo log进行变化数据的捕捉(这里要特别提醒的是目前ODI只支持Hotlog方式),说的更白一点就是oracle stream技术,变化的数据通过logminer技术从在线日志中获取。如下图所示:

这种方式基于异步的策略,一般变化数据的获取会有1秒到几分钟的数据延迟,当然对数据仓库系统来讲,这点时间也不算啥。但是由于其从日志中抽取变化数据,对原有的生产系统影响很小,而且该方式在用户原来的schema上除了一个读权限外,不需要额外的权限要求,因此大多数用户都愿意采用这种方式。但该方式需要对用户有一定的权限要求,而且数据库必须运行在归档模式下。具体的配置我们下次再说。

在ODI中通过logminer方式进行变化数据捕捉,需要首先做一些基本工作:

1.修改数据库启动参数:

alter system set global_names=TRUE scope=BOTH;(如果您的系统里有dblink也可以不修改,到时候修改ODI的也可以)。

alter system set job_queue_processes=6 scope=BOTH;

alter system set open_links=4 scope=SPFILE;

alter system set streams_pool_size=200Mscope=BOTH;

alter system set undo_retention=3600 scope=BOTH;

JOB_QUEUE_PROCESSES (current value) + 2

PARALLEL_MAX_SERVERS (current value) + (5 * (the number of change sets planned))

PROCESSES (current value) + (7 * (the number of change sets planned))

SESSIONS (current value) + (2 * (the number of change sets planned))

Open_cursors一定要大一点(建议1000以上),尤其是10.2.0.4之前的版本。

2.数据库必须在归档模式下,在sqlplus下执行:

SQL> select log_mode from v$database;

LOG_MODE

------------

ARCHIVELOG

如果返回如上,恭喜您,不用做这一步了,否则要执行:

SQL>conn /as sysdba

Connected.

SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL>startup mount

ORACLE instance started.

Total System Global Area 301989888 bytes

Fixed Size 1267140 bytes

Variable Size 163580476 bytes

Database Buffers 130023424 bytes

Redo Buffers 7118848 bytes

Database mounted.

SQL>alter database archivelog;

Database altered.

SQL> alter database force logging;

Database altered.

SQL> alter database add supplemental log data;

SQL> alter database open;

Database altered.

且记,如果是生产系统,一定不要在工作时间做这样的事情,而且做前一定和管理员和其它用户沟通好,如果您不小心将生产系统弄瘫了,临被干掉前别说俺没提醒过您。

3.在数据库系统里面为ODI的变化数据准备存储空间,为了避免对现有生产系统产生影响,建议单独为其建立一个表空间。

表空间的大小和您的业务量以及您存储多长时间的变化数据有关,具体场景最好在您的测试环境里面先试试,当然了,如果空间不是很紧张,尽量大一点。

4.为变化数据捕捉建立一个用户,该用户将被ODI用来连接数据库,并获取变化数据。

CREATE USER cdcadmin

IDENTIFIED BY cdcadmin

DEFAULT TABLESPACE TS_ODI

TEMPORARY TABLESPACE temp

为了配置和获取变化数据,该用户需要以下权限:

-- system privs

GRANT create session TO cdcadmin;

GRANT create table TO cdcadmin;

GRANT create sequence TO cdcadmin;

GRANT create procedure TO cdcadmin;

GRANT create any job TO cdcadmin;

-- role privs

GRANT execute_catalog_role TO cdcadmin;

GRANT select_catalog_role TO cdcadmin;

-- object privileges

GRANT execute ON dbms_cdc_publish TO cdcadmin;

GRANT execute ON dbms_cdc_subscribe TO cdcadmin;

-- streams specific priv

execute dbms_streams_auth.grant_admin_privilege('CDCADMIN');

grant select on any table to cdcadmin(这里其实只要对生产系统需要捕获数据的schema相关表授权即可,这样设有点大,这里只是为了简单)。

Grant dba to cdcadmin(其实这一步可以不要,但为了操作简单,建议您还是加上,在ODI中启动日志完成后,再把其DBA revoke回去即可,说白了只是在ODI启动日志时需要,一旦启动完成,抓取数据不需要)。

如果管理员坚决不能给您DBA权限,那也可以到knowledge module中修改其step即可,将需要DBA权限的步骤在knowledge module中去掉,让管理员

帮忙做一下(其实只有一个步骤需要DBA,也就是这一句话alter database add supplemental log data)。如果管理员连这也不同意,那就没招了,等死吧。

至此,数据库的相关准备工作完成,下面就是ODI的配置工作了,关于ODI repository的配置请参照其随机文档,我们这里假设您的ODI已经做好基本配置了:

1.打开topology manager,在物理体系架构上建立一个物理服务器(这里我们假设oracle数据库中生产数据存储在sh schema上)。在定义上起个名,输入连接数据库的用户名口令:cdcadmin/cdcadmin.

2.点击JDBC TAB页:

3.输入完成后,点击一下右下角的测试,如果通了就ok了。

4.如下图,打开物理服务器下的物理架构,这里我们物理服务器叫sh,逻辑架构也叫sh。

这是非常关键的一步,如上图中我用红色标出的两个椭圆,上面那个是源系统中实际生产数据所在的schema,下面那个是存储临时对象的那个,也就是我们在数据库里定义的存储临时数据的schema,如果这里您用生产数据所在的schema来做工作架构存储临时数据,对您来讲没啥问题,但估计管理员要追着您打了。

5.到topology的逻辑体系架构下,建立一个oracle逻辑服务器,我们这里叫ODI.

启动designer,创建一个项目,我们这里就叫CDC,如下图所示:

右键点击项目名称,选择import->import knowledge module

进入$ODI_INSTALL/oracledi/impexp/目录,然后选择JKM

Oracle10gconsistent(logminer),如果您的数据库是9i或者11g,请选择对应的选项,这里假设源数据库为10g。

导入完成后,您可以打开窗口左手的CDC项目,到knowledge module下查看导入的knowlegemodule是否存在以及其选项。

我们点击左手下面的model标签,创建一个新的model,名字叫odi_cdc,如下图所示:

在reverse标签页中,选择standard(如果选择customized,则需要在项目中导入新的知识模块),context选择dev,然后点击selective reverse标签,如下图:

在该标签页下选择您需要导出元数据的表,最后点击reverse,新的model 就生成了。

最后选择journalizing标签页,journalizing mode选择consistent set,knowledge module选择刚才我们导入的JKM,这里有几个选项,一个是

asynchronous_mode,该选项如果选no,则变换数据捕捉采用基于trigger的方式(隐形trigger,用户见不到trigger的存在),如果选择yes,则采用stream方式,这里我们选择yes。另外一个参数是auto_configuration,该参数如果选择yes,ODI 会自动修改系统参数,以保证stream正常运行,其前提是我们定义的用于连接源数据库的用户具有DBA权限。在生产系统中,不建议打开该参数,具体的配置请参见选项下面的说明。

至此所有的准备工作全部完成,我们下面要做的才是如何配置变化数据捕捉。变化数据步骤可以在model级别上进行,即对一个model中的所有表都进行变化数据捕捉,也可以对model中的一个或者几个表单独配置,这里方便起见,我们在model级上进行配置。

右键点击model窗口的ODI_CDC,选择change data capture->add to CDC,如下图所示:

然后双击model窗口中ODI_CDC,选择journalized tables标签,对变化数据步骤的表排序,对于有主外键关联的表,主表一定放在子表前面。

最后选择start journal,这一步实际上是在源系统中建立变化数据捕捉的过程。

启动后,我们到operator窗口中去监控执行的结果,如果没有什么意外,

一般首次执行会成功,如果出现意外,可以双击出错的步骤,查找出错的原因,然后修改即可,大部分错误都落在以下三类里面:

1.数据库状态不对,如noarchivelog。

2.用户权限不足

3.以前安装过变化数据捕捉,环境没有清理干净。

大家如果感兴趣,可以一步一步分析一下start journal到底在数据库里干了哪些事情。

如果以前start journal没有成功,最好先执行drop journal,然后再start journal,这样可以保证源系统是干净的环境。

最后,要订阅该变化数据捕捉,如下图:

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

ORACLE数据库基础测试题oracle数据库复习题

ORACLE数据库基础测试题 提示:本题为ORACLE数据库基础测试题,适合初学者对基础知识进行测试,以便查漏补缺。 1、 DDL指得就是:()。 A、数据定义语言 B、数据操作语言 C、数据查询语言 D、数据控制语言 正确答案:A解析: 2、 下列创建表语句正确得就是:(). A、create table emp(id number(4),); B、createtable emp(id number(4)); C、alter table emp(id number(4)) ; D、alter tableemp(id number(4),) ;

正确答案:B解析: 3、 下列Oracle函数中能够返回两个字符串连接后得结果得就是:()。 A、initcap B、instr C、trim D、concat 正确答案:D解析: 4、 下列SQL语句得查询结果就是:()。selectround(45、925,0),trunc(45、925)fromdual; A、4545 B、4645 C、4546 D、46 46 正确答案:B解析:

5、 关于函数nvl(d1,d2)得用法说法正确得就是:()。 A、表示如果d1为null则d2必须为null B、表示如果d1为null则忽略d2 C、表示如果d1不为null则用d2替代 D、表示如果d1为null则用d2替代 正确答案:D解析: 6、 显示emp表得所有行,所有列,下列SQL语句正确得就是:()。 A、select*fromemp; B、select all、*from emp; C、selectallfromemp; D、select/* from emp; 正确答案:A解析: 7、 查询职员得姓名及其直接领导,如果没有直接领导得职员,则显示为“NoManager",下列SQL语句正确得就是:()。

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

ORACLE数据库基础知识1

第一部分 Oracle数据库概念与原理 一、Oracle数据库概念 1. 数据库 数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。 2. Oracle数据库 Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。 二、Oracle数据库原理 1. Oracle数据库的基本任务 (1)录入数据; (2)存储数据; (3)查询、处理数据

2. Oracle数据库的组成结构 Oracle按照应用情况可以分为核心数据(DATA)、操作系统(Operation System)、数据库服务器部分(Oracle Server)、Oracle SQL Server程序、Oracle工具(包括SQL*PLUS和很多像Developer 2000、designer 2000等工具)以及Oracle的各种应用。 按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成: ⑴实例(Instance):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。 ⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。 ⑶程序:也是Oracle数据库的过程,主要包括客户过程(client processes),根据用户的要求向服务器过程提出需求信息的请求;服务器过程server processes),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。 ⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。 日志文件(Log File),也称重演日志文件(Redo Logs File)或事务记录文件(Trasaction Log File),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。 控制文件(Control File),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。 每个数据库至少应该有两个以上的控制文件和日志文件备份。 ⑸内存结构 Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理, 达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块: ① Data Buffer Cache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。 ② Dictionary Cache(Row Cache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。 ③ Redo Log Cache(Transaction Log Cache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。 ④ Share SQL Pool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。 3. Oracle数据库的数据处理流程

Oracle数据库开发知识点

Oracle数据库开发指南 前言 参考 第一部分基础 一、数据库对象 表空间Tablespace:存储数据库对象的容器 模式Schema 表Table 表名最长为30个字符,不能以数字开头。一个表最多254个列。 CREATE TABLE tablename AS select_statement,通过子查询建立新表 DESC tablename,查看表或其它数据库对象的定义 ALTER TABLE tablename RENAME new_tablename,修改表名 RENAME tablename TO new_tablename,修改表名,注意修改表名后,视图必须重建。 索引Index 保证表中数据的唯一性;减少定位和检索数据所需要的I/O操作 Oracle允许对列值创建索引,也可对表达式创建索引。所以既可是UNIQUE,也可是UNIQUE Oracle对DESC(降序)索引认为是基于函数的索引。 序列Sequence 使用序列为表的码值生成唯一的序列值 聚簇Cluster 视图View 由一个预定义的查询构成,可看作为数据库的逻辑表。 SELECT text_length FROM user_views WHERE view_name = …viewname? Set long 5000 SELECT text FROM user_views WHERE view_name = …viewname? 快照Snapshot 快照与视图都是基于查询结果的。但快照使用物理的存储空间,快照中的数据一般都是静态的,只有刷新时才改变。 快照的目的是提供某个时间点的数据。 二、数据类型 CHAR(n),255字符 V ARCHAR2(n):2000字符 LONG,2G字符,只能用在列SELECT列表,UPDATE语句的SET子句或INSERT语句的V ALUES子句中,一个表中只能有一个LONG列,LONG列不能建索引,也不能有完整性约束,不能用于表达式。DATE

Oracle数据库基础知识(华为内部培训资料)

课程IL001100 ORACLE数据库基础知识 ISSUE1.0 开心Java整理

目录 课程说明 (1) 课程介绍 (1) 课程目标 (1) 相关资料 (1) 第1章ORACLE数据库概述 (2) 1.1 产品概述 (2) 1.1.1 产品简介 (2) 1.1.2 基本概念 (3) 1.2 ORACLE系统结构 (4) 1.2.2 ORACLE物理结构 (4) 1.2.3 系统全局区 (6) 1.2.4 进程 (8) 1.3 存储管理 (9) 1.3.2 逻辑结构 (10) 1.3.3 表(Table) (14) 1.3.4 视图(View) (18) 1.3.5 索引(Index) (18) 1.3.6 同义词(Synonym) (19) 1.3.7 序列(Sequence) (19) 1.3.8 数据库链(Database Link) (19) 第2章管理ORACLE数据库 (21) 2.1 基本概念 (21) 2.1.1 数据字典 (21) 2.1.2 事务管理 (23) 2.1.3 数据库管理员(DBA) (24) 2.1.4 ORACLE的四种状态 (25) 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 (26) 2.2.1 启动数据库 (26) 2.2.2 关闭数据库 (26) 2.3 svrmgrl方式的ORACLE数据库启动和关闭 (28) 2.3.1 启动数据库 (28) 2.3.2 关闭数据库 (30) 2.4 应用开发工具(SQL * Plus) (31) 2.4.1 SQL (32) 2.4.2 PL/SQL (33)

ORACLE数据库基础知识

一、选择行 1. 简单的SELECT 语句 SELECT 字段名1 [AS] '字段名1 解释' FROM table; 2. 处理NULL NVL函数可把NULL转换成其它类型的符号 编程技巧: NVL函数在多条件模糊查询的时候比较有用 NVL函数可返回多种数据类型: 返回日期 NVL(start_date,'2002-02-01') 返回字符串 NVL(title,'no title') 返回数字 NVL(salary,1000) 3. 使用SQL*PLUS(1) SQL> desc table; 显示表结构 SQL> select * from tab; 查看用户下所有的表 SQL> set pause on; 可以使大量结果集在用户按“Enter”(回车)后翻页SQL> set pagesize 100; 设定SQL语句返回结果集一页的行数100, 默认值是14 SQL> set linesize 100; 设定SQL语句返回结果集一行的宽度100, 默认值是80 4. SQL*PLUS里规定字段的显示格式 规定数字的显示格式 SQL>column 字段名 format 99999999999; SQL>column 字段名 format 999,999,999,999; SQL>column 字段名 format a数字 [word_wrapped]; 规定long字符的显示宽度 SQL>set long 200; 规定字段名的显示内容 SQL> column 字段名 heading '字段名显示内容'; SQL> set heading off; 查询时不显示字段名称 规定字段的对齐方向 SQL> column 字段名 justify [left | right | center]; 清除字段的格式 SQL> column 字段名 clear; 5. SQL*PLUS里规定字段的显示格式例子 SQL> column last_name heading 'Employee|Name' format a15; SQL> column salary justify right format $99,999.99; SQL> column start_date format a10 null 'Not Hired'; 说明:如果start_date为null, 显示字符串'Not Hired' 6. 判断题(T/F) (1). SQL command are always held in sql buffer. [T] (2). SQL*PLUS command assit with query data. [T] 5 J2EE @ zxw SQL*PLUS命令只控制SELECT结果集的显示格式及控制文件.只有SQL命令能访

Oracle数据库基础知识(华为内部培训资料)

Oracle数据库基础知识(华为内部培训资料)

课程IL001100 ORACLE数据库基础知识 ISSUE1.0 开心Java整理

IL001100 ORACLE数据库基础知识 ISSUE1.0 目录 目录 课程说明 (1) 课程介绍 (1) 课程目标 (1) 相关资料 (1) 第1章ORACLE数据库概述 (2) 1.1 产品概述 (2) 1.1.1 产品简介 (2) 1.1.2 基本概念 (4) 1.2 ORACLE系统结构 (6) 1.2.2 ORACLE物理结构 (7) 1.2.3 系统全局区 (11) 1.2.4 进程 (15) 1.3 存储管理 (18) 1.3.2 逻辑结构 (19) 1.3.3 表(Table) (29) 1.3.4 视图(View) (36) 1.3.5 索引(Index) (37) 1.3.6 同义词(Synonym) (38) 1.3.7 序列(Sequence) (39) 1.3.8 数据库链(Database Link) (40) 第2章管理ORACLE数据库 (42) 2.1 基本概念 (42) 2.1.1 数据字典 (42) 2.1.2 事务管理 (47) 2.1.3 数据库管理员(DBA) (49) 2.1.4 ORACLE的四种状态 (52) 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 (53) 2.2.1 启动数据库 (53) 2.2.2 关闭数据库 (54) 2.3 svrmgrl方式的ORACLE数据库启动和关闭 (57) 2.3.1 启动数据库 (57) 2.3.2 关闭数据库 (62)

Oracle数据库常用的知识点汇总

Oracle数据库常用的知识点汇总SQL语言的分类 数据查询语言(DQL) 数据操纵语言(DML) 事物控制语言(TCL) 数据定义语言(DDL) 数据控制语言(DCL) 存储过程、函数、包相关操作 创建存储过程 不带参数 create or replace procedure 存储过程名is begin PL/SQL语句 end 存储过程名; 带参数 create or replace procedure 存储过程名( 参数1 in|out|in out 数据类型, 参数2 in|out|in out 数据类型, ..... 参数3 in|out|in out 数据类型 ) is

begin PL/SQL语句 end 存储过程名; 创建函数 create function 函数名[(参数1 数据类型,参数2 数据类型...参数n 数据类型)] return 返回值类型is 变量名1 数据类型; 变量名2 数据类型; ..... 变量名n 数据类型; begin PL/SQL语句 end; 删除函数 drop function 函数名; 程序包的规范 create or replace package 包名is 函数前部分 存储过程前部分 end 包名; 程序包的主体 create or replace package body 包名is

函数前部分和实现 存储过程前部分和实现 end 包名; 创建表空间 create tablespace 表空间名datafile '路径' size 大小reuse 设置默认表空间 alter database default tablespace 表空间名 重命名表空间 alter tablespace 原表空间名rename to 新表空间名 删除表空间 drop tablespace 表空间名cascade constraints 从表空间中删除数据文件 alter tablespace 表空间名drop datafile'路径' 控制文件的多路复用 更改control_file文件 alter system set control_files= 'C:\app\ZGY\oradata\orcl\CONTROL01.CTL', 'C:\app\ZGY\flash_recovery_area\orcl\CONTROL02.CTL', 'C:\zgy\CONTROL03.CTL' scope=spfile;

相关文档
最新文档