oracle执行计划

Oracle备份的几种方式

不问归期 提交于 2019-12-03 03:54:50
这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是结合了网上的一些文章以及自己的实践来总结并拿出来大家学习,谢谢 目录 一、关于备份与恢复 二、逻辑备份(expdp和impdp) 三、物理备份 四、数据库日常备份计划及脚本参考 一、关于备份与恢复 1、备份定义 备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本 2、备份分类 从物理与逻辑的角度来分类: 从物理与逻辑的,备份可以分为物理备份和逻辑备份。 物理备份 :对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。 逻辑备份 :对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。 从数据库的备份角度分类: 从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份 完全备份 :每次对数据库进行完整备份

SQL优化 | Oracle 绑定变量

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 03:41:07
 之前整理过一篇有关绑定变量的文章,不太详细,重新补充一下。 Oracle 绑定变量 http://www.cndba.cn/Dave/article/1275 一.绑定变量 bind variable : A variable in a SQL statement that must be replaced with a valid value, or the address of a value, in order for the statement to successfully execute. 变量绑定是 OLTP 系统中一个非常值得关注的技术。良好的变量绑定会使 OLTP 系统数据库中的 SQL 执行速度飞快,内存效率极高;不使用绑定变量可能会使 OLTP 数据库不堪重负,资源被 SQL 解析严重耗尽,系统运行缓慢。 当一个用户与数据库建立连接后,会向数据库发出操作请求,即向数据库送过去 SQL 语句。 Oracle 在接收到这些 SQL 后,会先对这个 SQL 做一个 hash 函数运算,得到一个 Hash 值,然后到共享池中寻找是否有和这个 hash 值匹配的 SQL 存在。 如果找到了, Oracle 将直接使用已经存在的 SQL 的执行计划去执行当前的 SQL ,然后将结果返回给用户。 如果在共享池中没有找到相同 Hash 值的 SQL , oracle

oracle学习篇:五、Buffer Cache与Shared Pool原理

梦想与她 提交于 2019-12-03 02:17:55
Buffer Cache与Shared Pool是SGA中的最重要和最复杂的两个部分。 5.1 Buffer Cache原理 当一个进程需要访问数据时,首先需要确定数据在内存中是否存在: 如果数据在buffer中存在,则需要根据数据的状态来判断是否可以直接访问还是需要构造一致性读取; 如果数据在buffer中不存在,则需要在buffer cache中寻找足够的空间以装载需要的数据,如果在buffer cache中找不到足够的空间,则需要触发dbwn去写脏数据,释放buffer空间。 5.1.1 LRU与Dirty List 在buffer cache中,oracle通过几个链表进行内存管理,其中最为人熟知的是LRU List和Dirty List。 数据库初始化时,所有的Buffer都被hash 到LRU List上管理,当需要从数据文件上读取数据时,首先要在LRU LIst上寻找Free的Buffer,然后读取数据到Buffer cache中;当数据被修改后,状态变为dirty,就可以被移动至dirty list(checkpoint queue),dirty list上的都是候选的可以被DBWR写出到数据文件的buffer,一个buffer要么在LRU List上,要么在Dirty List上存在,不能同时存在于多个List。 Buffer Cache的原理: (1

oracle 11.2.0.1 for windows server2012R2应用p12429529_112010_MSWIN-x86-64补丁

♀尐吖头ヾ 提交于 2019-12-03 00:41:10
oracle 11.2.0.1 for windows server2012R2应用p12429529_112010_MSWIN-x86-64补丁集,也是oracle数据库安全加固的范畴。因为每次oracle数据库加固过程中 总会有些许意外发生,这里记录一次oracle 11.2.0.1 for windows server2012R2应用p12429529_112010_MSWIN-x86-64补丁集。 本次oracle安全加固使用的参考文档: 一、目的 针对windwos server 2012/2012R2平台上运行的oracle数据库 11.2.0.1应用目前可用最新的CPU补丁集p12429529,修复该版本数据库在日常应用中的风险漏洞, 减少应用系统架构非计划停机时间、屏蔽数据库风险漏洞被利用的可能。 二、安全加固基础信息 操作系统类型 数据库版本 预用补丁版本 备注 windows server 2012R2 oracle 11.2.0.1 p12429529_112010_MSWIN-x86-64  最新CPU windows server 2012 oracle 11.2.0.1 p12429529_112010_MSWIN-x86-64  最新CPU 三、安全加固操作步骤 1、 对预用补丁集数据库的应用进行关停; 2、 对预用补丁集数据库进行基础健康检查; 3、

Oracle 提高查询性能(基础)

帅比萌擦擦* 提交于 2019-12-02 21:19:31
#1,选择最有效的表名顺序 Oracle解析器总是按照从右至左的顺序处理FROM后面的表,因此FROM最右边的表将会被当做驱动表优先处理,当存在多个表关联时,应当使用记录少的表当做驱动表。如果关联的表多的话,则用交叉表作为驱动表。 #2,select中避免使用'*'. #3, 减少数据库访问的次数 每当执行一条SQL语句,Oracle 需要完成大量的内部操作,象解析SQL语句,估算索引的利用率,绑定变量, 读数据块等等.由此可 见,减少访问数据库的次数,实际上是降低了数据库系统开销 #4, 用Where子句替换HAVING -->尽可能的避免having子句,因为HAVING 子句是对检索出所有记录之后再对结果集进行过滤。这个处理需要排序,总计等操作 -->通过WHERE子句则在分组之前即可过滤不必要的记录数目,从而减少聚合的开销 。 #5,使用 UNION ALL 替换 UNION(如果有可能的话) 当SQL语句需要UNION两个查询结果集时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序。 如果用UNION ALL替代UNION, 这样排序就不是必要了。 效率就会因此得到提高。 UNION ALL会输出所有的结果集,而UNION则过滤掉重复记录并对其进行排序.因此在使用时应考虑业务逻辑是否允许当前的结果集存在重复现象 #6, 有两个简单例子

[转帖]深入理解latch: cache buffers chains

怎甘沉沦 提交于 2019-12-02 21:03:32
深入理解latch: cache buffers chains http://blog.itpub.net/12679300/viewspace-1244578/ 原创 Oracle 作者: wzq609 时间:2014-08-03 17:04:03 8854 0 事件背景: 一个客户的数据库发生了宕机事件,查看了数据库的awr报告,原来是由于出现大量的latch: cache buffers chains等待事件导致系统消耗量大量的CPU,最终导致系统hang住; 说明: 要理解latch: cache buffers chains并解决这个问题,就需要深入的了解Buffer Cache及其原理。 1、Buffer Cache概述: Buffer Cache是SGA的一部分,Oracle利用Buffer Cache来管理data block,Buffer Cache的最终目的就是尽可能的减少磁盘I/O。Buffer Cache中主要有3大结构用来管理Buffer Cache:Hash Bucket、Hash Chain List、LRU List; Hash Bucket & Hash Chain List :Hash Bucket与Hash Chain List用来实现data block的快速定位。 LRU List :挂载有指向具体的free buffer, pinned

PostgreSQL与MySQL比较

試著忘記壹切 提交于 2019-12-02 05:23:39
本帖最后由 osdba 于 2011-04-21 16:33 编辑 特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。 通过执行 Postmaster 进程(pg_ctl)启动实例。一个实例可以管理一个或多个数据库,这些数据库组成一个集群。集群是磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中。使用 initdb 创建第一个数据库。一台机器上可以启动多个实例。 数据库 数据库是命名的对象集合,是与实例中的其他数据库分离的实体。一个 MySQL 实例中的所有数据库共享同一个系统编目。 数据库是命名的对象集合,每个数据库是与其他数据库分离的实体。每个数据库有自己的系统编目,但是所有数据库共享 pg_databases。 数据缓冲区 通过 innodb_buffer_pool_size 配置参数设置数据缓冲区。这个参数是内存缓冲区的字节数,InnoDB 使用这个缓冲区来缓存表的数据和索引。在专用的数据库服务器上,这个参数最高可以设置为机器物理内存量的 80%。 Shared_buffers 缓存。在默认情况下分配 64 个缓冲区。默认的块大小是 8K。可以通过设置

Oracle数据库学习笔记

青春壹個敷衍的年華 提交于 2019-12-02 02:03:34
一、DDL数据库定义语言 1、表空间 创建表空间: create tablespace bkjname --表空间名称 datafile 'E:\bkjname.dbf' --文件存放的路径 size 100m --大小 autoextend on --自动扩展 next 10m --每次扩展的大小 表空间是一个逻辑单位。 删除表空间: drop tablespace bkjname;    --只删除逻辑关系,本地的表空间文件需要手动删除 2、用户 创建用户: create user yh --用户名 identified by yh --密码 default tablespace bjkname; --表空间 给用户授权: --grant 角色 | 权限 to yh grant connect to yh; --赋予连接登录的权限 grant dba to yh; --最高权限dba grant resource to yh; --通常给开发人员授权resource 3、表 创建表 create table 表名( 列名 列的类型(列的约束), 列名 列的类型(列的约束) ); 列的类型 varchar:在Oracle中目前支持,但不保证以后还支持 varchar2(长度):可变字符长度 char(长度):固定字符长度 number(总长度,小数长度):数字类型

Oracle体系结构和用户管理

南笙酒味 提交于 2019-12-01 02:14:51
通过博文 部署Oracle 12c企业版数据库 已经可以部署Oracle数据库了,本篇博文主要介绍Oracle的体系结构,包括存储结构、内存结构和进程结构进行初步了解。对进一步学习Oracle数据库有很大的帮助。 博文大纲: 一、Oracle体系结构 1.Oracle体系结构概述 2.Oracle服务器 3.Oracle存储结构 4.Oracle内存结构 5.Oracle进程结构 二、CDB与PDB的基本操作 三、用户管理 四、数据库权限管理 五、导入测试数据 一、Oracle体系结构 数据库的体系结构是指数据库的组成、工作过程、以及数据库中数据的组织与管理机制,要了解Oracle数据库的体系结构,必须理解Oracle系统的主要组件和重要概念。 1.Oracle体系结构概述 Oracle体系结构包含一系列组件,如图: 图中显示了Oracle体系结构中的主要组件,包括实例、用户进程、服务器进程、数据文件及其他文件,如参数文件、口令文件和归档日志文件等。 从图中可以看出,实例和数据库是Oracle数据库体系结构的核心组成部分,也是最重要的两个概念。 作为一个DBA管理者,维护实例和数据库本身的正常运行是最基本的技能。 (1)实例 Oracle实例是后台进程和内存结构的集合,必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA

怎么看懂oracle的执行计划

别说谁变了你拦得住时间么 提交于 2019-12-01 01:53:22
项目需要,要获取oracle的sql的对应的执行计划,之前mysql的版本已经实现过了。mysql的执行计划可以参考这个博客: http://my.oschina.net/zimingforever/blog/60233 首先toad,PLsql这类工具本身就带有查看执行计划的功能,如何通过sql命令来实现呢 A设置autotrace,autotrace有以下几种取值 SET AUTOTRACE OFF 此为默认值,即关闭Autotrace SET AUTOTRACE ON EXPLAIN 只显示执行计划 SET AUTOTRACE ON STATISTICS 只显示执行的统计信息 SET AUTOTRACE ON 包含2,3两项内容 SET AUTOTRACE TRACEONLY 与ON相似,但不显示语句的执行结果 由于本机没有试验环境,所以直接从网上摘了个demo,执行效果如下: SQL> set autotrace on SQL> select * from dave; ID NAME ---------- ---------- 8 安庆 1 dave 2 bl 1 bl 2 dave 3 dba 4 sf-express 5 dmm 已选择8行。 执行计划 ----------------------------------------------------------