`
colorlife
  • 浏览: 132300 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle基础2

阅读更多

优化器

3种:基于规则的RBO,基于开销的CBO,和 CHOOSE:根据是否能找到统计数据决定采用RBO或CBO

oracle提供4种: rule, choose, first rows, all rows

frist rows: 属于CBO, 最快的响应时间,但会降低总体效率,主要用于实时响应

all rows: 属于CBO. 最小的吞吐量,采用并行全表扫描

会话级修改: alter session set optimizer_mode=first_rows

 

hints: 可以在语句级别指定优化器

 

select /*+ First_Rows */ name

 from user;

 

函数索引:对某些字段的函数结果创建索引,这样在查询时使用函数也能有较好的性能。

create index idx1 on user(SUBSTR(username,1,7));

基于函数的索引,只有在CBO下才能被用到。

 

索引的使用

(1)如果对多个字段建立索引,则where语句必须使用前面的字段,才能使用此索引。

如: create index idx1 on user(a, b, c, d).  则必须条件是 a 或 a, b 或 a, b, c 才能使用到此索引,其它情况如 b, c 不能用到此索引。

(2)索引字段不能进行类型转换(如 where a='10', a是number类型),不能是表达式(如 where a + 10 > 50),不能使用不等号(如 a <> 10),否则用不上索引

 

软解析、硬解析

为了避免硬解析,pl/sql中应使用绑定变量,这主要是在动态执行sql中要注意:

不要直接拼凑sql语句:'insert into table(x, y) values(' || i || ' , ' ' abc ' ');'  //其中i是变量,abc用两个单引号,因为insert 语句本身用单引号了,要表示 abc 是字符串,则用两个单引号

而是: 'insert into table(x, y) values(:i, ' ' abc ' ')' using i;

 

在存储过程中,一般写的并不是动态 sql,所以使用变量的方式就是绑定变量。

 

 

data block, extend, segment

data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.

data block的大小由参数 db_block_size 控制,一般是操作系统块大小的整数倍。包括块头、表目录、行目录、空闲空间(主要用于varchar)、数据等部分。

建表时会分配segment,它又会包含多个 extend

segment有三种: data segment, index segment, temporary segment

temporary segment 分配在临时表空间之上。

进行排序、分组汇总、索引等到操作时,会产生许多临时数据,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内,PGA中有排序区,可以通过 sort_area_size调节大小。这个区一般都不够用,所以需要用到临时表空间。

 

pl/sql

动态语句使用绑定变量

cursor不能直接用,须: type cur is ref cursor; v_cur cur;

v_sql := 'select cout(*) from table1 where a=:p1 and b=:p2';

open cur for v_sql

loop

  fetch cur into v_count using v_a, v_b;

  exit when v_cur%notfound;

end loop;

不是游标的话:

execute immediate v_sql into v_count using v_a,v_b;

输出可以使用 dbms_output, 但需设置 set serveroutput on;

像表名是不能用绑定变量的,因为字符串的绑定变量相当于带了单引号。直接拼凑即可

 

数据导入导出

imp:

小心有大表,会导致大事务,然后undo表空间不够用,如果undo表空间不能自动扩展,会报错。由于是大事务,redo日志组也可能全部撑满,无法写入,alert日志将报 Checkpoint not complete,这时应增加日志组,尽量多给空间,以完成未完成的redo日志写入,当只有一个日志组状态为 active,其他为inactive,表示正常了。

undo表空间不够,而又有大事务,需要设置 commit=y buffer=500000000(单位字节)。

为了加快导入,可以对大表先删除索引,设置 INDEXES=n. 导入之后再增加索引:

imp system/manager@abc file=abc.dmp fromuser=aa touser=bb  ignore=y indexes=n  commit=y buffer=300000000

 

 

分享到:
评论

相关推荐

    oracle基础资料学习oracle的来下

    oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料oracle ORACLE 基础资料 基础知识 培训资料

    oracle基础教程

    oracle基础教程 课程说明 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 ...

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...

    oracle 基础oracle 基础oracle 基础oracle

    以下将基于这些信息,详细阐述Oracle数据库的基础知识。 ### Oracle Database 11g 概述 #### 一、Oracle Database 简介 Oracle Database 是一款由美国Oracle公司开发的关系型数据库管理系统(RDBMS)。它提供了...

    Oracle基础教程

    2. 选择安装位置和 Oracle_HOME 目录。 3. 配置 Oracle 网络监听器和数据库实例。 4. 创建数据库和 sys、system 用户。 5. 配置数据库参数和安全设置。 Oracle 数据库概念 Oracle 数据库是一种关系型数据库管理...

    oracle基础知识入门

    对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...

    Oracle基础教程.pdf

    Oracle基础教程.pdf

    oracle基础教程ppt

    通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...

    Oracle数据库基础ppt

    "第2章 Oracle的体系结构"讲解了Oracle数据库的内部工作原理,包括数据库实例、内存结构、后台进程、数据文件、控制文件和日志文件等。理解这些组件及其相互作用对于日常的数据库管理和问题排查至关重要。 "第5章 ...

    ORACLE基础学习文档

    数据库的能力 sqlserver -&gt; ORACLE 数据结构 训练编程思维方式 实际问题到计算机问题的转化 linux 熟悉一种新的操作系统 软件工厂 学到的知识 去做一个项目 课程安排 linux操作系统 4天 数据结构 5天 ...

    Oracle DBA基础.doc

    Oracle DBA基础.doc Oracle DBA基础.doc Oracle DBA基础.doc Oracle DBA基础.doc

    ORACLE基础知识及故障定位.pdf

    ORACLE基础知识及故障定位 学校oracle基础知识,包含所有orcale的数据库知识,以及常见问题解决思路,解决方案,问题怎么定位。

    oracle基础知识回顾与练习.zip

    本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...

    oracle基础知识考试题_答案.zip

    这个"oracle基础知识考试题_答案.zip"压缩包文件包含了关于Oracle数据库的基础知识学习材料,特别是针对初学者或者准备Oracle相关资格考试的人员。 首先,Oracle数据库的核心概念包括SQL(结构化查询语言)的使用,...

    oracle基础

    oracle基础创建表,删除表,修改表,查看表的结构和数据,添加数据语法:删除数据语法,更新数据语法:基础查询语法:

    ORACLE基础培训文档

    这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...

    oracle基础教程.pdf

    "Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...

    Oracle 基础知识 -大全- 原创整理.pdf

    以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...

Global site tag (gtag.js) - Google Analytics