搜档网
当前位置:搜档网 › Oracle 数据库中的碎片管理和表收缩

Oracle 数据库中的碎片管理和表收缩

Oracle 数据库中的碎片管理和表收缩
Oracle 数据库中的碎片管理和表收缩

Oracle 数据库中的碎片管理和表收缩

【内容】

简介

碎片是我们要尽量避免的常见问题。其表现形式多种多样、遍及多种组件,可能导致各种问题。在本文中,我将讨论导致空间浪费的表空间碎片。导致表空间碎片的原因很多,但我从未想到经常执行“shrink table”命令会这么快地导致这种碎片。

表收缩命令

在Oracle 10gR1 之前,表的高水位线(HWM) 向前移动(由于表中插入新行)之后就无法后退来减小表大小和回收空间,将空间退回给表空间的可用空间。我们从表中删除多行时,HWM 和表大小保持不变,减小表大小的唯一方法是截断表。Oracle 在10gR1 中引入了一项激动人心的特性“shrink table”。

它是如何工作的?执行shrink 命令时,Oracle 使用行移动(必须在表上启用)将行从表的最后数块移至表开头处。移动行之后,会发生表锁定,此时Oracle 将HWM 向后移动。然后,可以释放HWM 之后的块,减小表大小。

从下面可以看出,在正常操作中,表中包括“已用块”(蓝色块)和“空块”(橙色块)。将行插入表中,而“已用块”中没有空间时,Oracle 会将HWM(黑线)移向表末尾,将这些“空块”标记为“已用”。一旦没了可用块,就会再分配一个区。

现在让我们看看shrink table 是如何工作的。在下图中,我们看到HWM 位于表的末尾。假设我们删除了许多行,现在表块中有许多地方可容纳新行。shrink table 命令将这些行从表末尾移到靠近表开头部分的空闲位置(第一幅图)。然后,Oracle 可以将HWM 移到表的最后一行,该行现在不位于表的末尾(第二幅图)。移动了HWM 之后,HWM 以外的块被视为可用块(第三幅图),然后可将这些块从表中释放,退回给表空间(最后一幅图)。

本地管理的表空间

shrink table 命令只适用于本地管理的、支持自动段空间管理的表空间中的段。

使用本地管理的表空间时,可以通过两种方式配置区分配:

?系统分配— Oracle 决定区大小,无论是何种用户配置。组成段的区一开始很小,随着段增大,Oracle 会分配越来越大的区。

?统一大小—表空间中的所有区大小相同,在创建表空间时配置。

我们来了解一下系统分配的工作原理:

上面的查询将显示各区及其大小。在本例中,它返回202 行,总结如下:前16 个区大小为64KB(在我的数据库中是8 个8KB 块)。接下来的63 个区大小为1MB。在接下来的120 区大小为8MB。剩下来的 3 个区为64MB。思路很容易理解。

Shrink Table 释放多少空间?

我们看到了shrink table 的思路,我们明白这是一个非常有用的命令。现在我们将尝试了解有多少空间被退回给表空间。为此,我们将执行以下操作:

现在我们将使用先前用过的查询来获取区分配:

与前面一样,我不在此出贴出完整输出,只贴出摘要:

现在,我们将从这两个表删除数行并收缩表,然后再来看区图。

现在区图显示:

? 1. 创建两个表空间,一个(tbs_uni) 将采用统一的每区分配1MB,另一个(tbs_sys) 将采用系统区分配。

? 2. 在每个表空间内创建一个表(使用相同的结构和数据)。

? 3. 对两个表均启用行移动。

? 4. 检查两个表的区。

? 5. 从两个表删除行。

? 6. 收缩两个表。

?7. 检查两个表的区,看看释放了多少空间。

o对于统一分配表空间中的表TAB_UNI,我们看到113 个区,每个区1MB。

o对于系统分配表空间中的表TAB_SYS,我们看到86 个区。和预料的一样,前16 个区为64KB,接下来的63 个区为1MB,最后7 个区为8MB。

最后需要将2500 行重新添加到这两个表:

现在区图显示:

那么,问题出在哪里?

问题在于某些我们没有检查或考虑到的东西。要找到问题所在,我们需要在区图中添加区的物理位置。文件中区的位置依DBA_EXTENTS 表中的block_id 列而定。block_id 列代表区中第一块的id,其中1 是文件开头。

为简单起见,我将使用相关表空间中的一个文件。我们将使用以下查询查看包含区位置的区全图:

此查询的结果将包括相关文件的file_id、区信息(block_id 和大小)及内容(段名或“free space”)。

我不打算贴出整个结果集。以下是部分TBS_UNI 结果:

注意6MB 区之后的可用空间。记住带我们来到此情形的流程。我们填充了表,然后删除了数行,收缩表,再插入更多行。开始时,表的最后一个区大小为8MB;收缩表后,区缩小到约6MB,将约2MB 退回给表空间。插入新行时,Oracle 需要为其分配新区;但似乎这些区不能起始于文件中的任意块。在本例中,新的8MB 区不能起始于块14224(该块距文件开头111.125MB),而是起始于块14336,该块恰巧距文件开头112MB。

由于此表空间使用系统分配区管理,其他需要小区的表可以分配此可用空间。但大表不能分配此空间,分配下一区时将留下未用区域。

总结一下这个问题,我们在系统分配区管理表空间收缩表时,会将表末尾的一部分退回给表空间的可用空间。通常,这样做留下的区小于表中通常的最后一个区。表的下一个区并不会总是能够准确地起始于下一块,而是取决于所请求区的大小。如果发生这种情况,各区之间剩下的空间可能只够分配小区,因此通常不能用于同一表或其他大表的区。

现在要讨论两个问题,一个是如何整理表空间碎片,另一个是如何避免碎片。

整理表空间碎片

如果表空间出现碎片,为了消除碎片,我们将不得不丢弃“有问题”的区。问题是通常我们不能这么做,因为表中有太多数据,区太靠近表的开头位置,不能取消分配。我能想到的唯一的解决办法是使用“alter table … move”命令或“insert … select”重新创建表。重新创建表时,会分配一个包含数个新区的新段,释放旧段。丢弃旧段之后,碎片不再存在,但这是一项麻烦的操作,需要计划和停机。

避免碎片

最好的办法是完全避免此问题。这取决于您的具体系统以及您如何使用数据库。以下几点可能值得考虑:

总结

“shrink table”命令在许多情况下都非常有用。但在有些用例中,可能会发生严重的碎片。处理这种碎片很困难,因此最好事先考虑好避免出现碎片。

在本文中,我为您提供了一个我遇到的实际例子,帮助您了解和预防这种碎片问题。希望这对您有所帮助。

关于作者

Liron 是一位拥有逾11 年经验的高级DBA。这些年里,Liron 担任过许多各领域公司的高级顾问并管理Oracle 咨询团队。他主要擅长高可用性解决方案、性能、备份和恢复及其他基础架构和应用数据库领域。他还是教授Oracle 课程的知名高级讲师,并在各种活动和论坛发表演讲。Liron 目前是一家领先的以色列Oracle 咨询公司Brillix 的专业服务副总裁。

o对于表TAB_UNI,我们看到111 个区,每个1MB。比以前少两个区。

o对于表TAB_SYS,我们看到85 个区。比以前少一个区。前84 个区和以前完全一样,最后一个区减小至略大于6MB。这是合理的,因为区会随时间增大,我们可以分配任意

大小的区。

?对于表TAB_UNI,我们看到113 个区,每个1MB。与开始时完全一样。

?对于表TAB_SYS,我们又看到了86 个区。但前84 个区与先前完全一样,新的一个区(第86 区)是8MB,但第85 区仍是略大于6MB,并未再次增

大至8MB。

?如果您对大表使用系统分配表空间,对这些表进行删除和插入操作,不应考虑使用“shrink table”特性。这样,新行可以使用被删除的行留下的空间,而不会

出现任何问题或碎片。

?如果您在小表上使用“shrink table”,可能不会有问题。

?如果对大表使用“shrink table”,但不经常使用,同时还为各种小表分配此表空间上的新区,碎片问题可能不大。偶尔的“shrink table”操作造成的少量可用空

间将由小表使用。

?如果系统分配表空间上只有大表且须定期收缩表,可考虑转为统一分配,采用足够的区大小来避免碎片问题。

oracle系统表和视图说明

1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。 3.视图的作用 用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下: 通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制 隐藏数据复杂性 视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 简化用户的SQL 语句 用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。 以不同的角度来显示基表中的数据 视图的列名可以被任意改变,而不会影响此视图的基表 使应用程序不会受基表定义改变的影响 在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。 保存复杂查询 一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

oracle数据字典详解

学习笔记:oracle数据字典详解 --- 本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图。然后列出一些附例。 数据字典系统表,保存在system表空间中。 由表和视图组成,由服务器在安装数据库时自动创建,用户不可以直接修改数据库字典,在执行DDL 语句时,oracle会自动修改。 记录一些表和视图(只读的),新建的表不要和这空间建在一起(9i以前的版本新用户建的表默认表空间为system,注意修改) --查询数据字典: select * from dictionary --数据字典导出方法: conn / as sysdba spool on spool c:\dic.txt select * from dictionary spool off 主要四部分: 1,内部RDBMS表:x$…… 2,数据字典表:……$ 3,动态性能视图:gv$……,v$…… 4,数据字典视图:user_……,all_……,dba_……

数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图) +++ 一,内部RDBMS表x$……,例如:x$kvit,x$bh,x$ksmsp,x$ksppi和x$ksppcv 核心部分,用于跟踪内部数据库信息,维持DB的正常运行。 是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。最好不要修改. x$kvit=Kernel Layer Performance Layer V Information tables Transitory Instance parameter 数据库启动时,动态创建x$…… +++ 二,数据字典表……$,如tab$,obj$,ts$…… --用来存储表、索引、约束以及其他数据库结构的信息。 --创建数据库时通过脚本sql.bsq来创建,脚本:$oracle_home/rdbms/admin/sql.bsq +++ 三,动态性能视图gv$……,v$……,如V$parameter --记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 --数据库创建时建立的。 --只有sysdba可以直接访问。 --查看表v$fixed_view_definition(***),可以查看GV$和V$视图的创建语句。(oracle提供一些特殊视图,用来记录其他视图的创建方式,v$fixed_view_definition就是其中之一) --select view_definition from v$fixed_view_definition where view_name='V$FIXED_TABLE'; --gv$……=Global V$,在X$……基础上创建,是为了满足OPS环境(多个实例)的需要面产生的,可以返回多个实例的信息。

Oracle对象管理及使用实验报告

Oracle对象管理及使用实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046实验目的和要求: 掌握Oracle的常用对象的操作方法。会使用常用对象解决一些实际问题。 实验内容: (1)表结构的建立、修改、查看、删除操作。 (2) 索引的建立、修改、查看、删除操作。 (3) 视图的建立、查询、修改、删除操作。 (4) 同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。 (5) 掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。 实验步骤与调试过程: 1.创建表结构,利用命令行方式将下列各表建立到员工医疗保险系统数据库中。表结构如附录员工医疗保险系统,查看表结构,修改表结构,删除表结构。 索引、视图、同义词及序列操作 2.创建索引(1) 利用企业管理器为医院表的医院名称创建索引,并以降序排列,索引名为“hospital_name_index”。(2) 利用SQL*Plus或iSQL*Plus为员工表的员工姓名、员工性别、出生年月排序,以员工姓名升序、员工性别降序、出生年月降序排列,索引名为“staff_info_index”。3.查看索引(1) 利用企业管理器查看“ygbx_user”方案下有几个隶属于该方案的索引,有几个系统创建的索引,有几个用户创建的索引。(2) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看员工医疗保险系统所有索引的信息。(3) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看“staff_info_index”索引的信息,并查看该索引列的顺序及状态。4.删除索引(1) 利用企业管理器删除“hospital_name_index”索引。(2) 利用SQL*Plus或iSQL*Plus 将“staff_info_index”索引删除。 5.查看视图 6.视图数据的更新。(1) 利用SQL*Plus或iSQL*Plus向“business_view”插入一个记录,企业编号为“B1997010287”,企业名称为“格林制药”,企业类型为“企业”,企业地址为“鸭绿江街98号”,联系电话为“84692315”。(2) 利用SQL*Plus或iSQL*Plus查看“business”表是否有变化。 7.删除视图 8.创建同义词。(1) 利用企业管理器创建企业表同义词,名为“qyb”。(2) 利用SQL*Plus或iSQL*Plus创建医保卡表的同义词,名为“ybk”。 9.查询同义词(1) 利用企业管理器查看同义词“qyb”。(2) 利用SQL*Plus或iSQL*Plus查看同义词“ybk”。 10.删除同义词。(1) 利用企业管理器删除同义词“qyb”。(2) 利用SQL*Plus或iSQL*Plus删除同义词“ybk”。 11.创建序列(1) 利用企业管理器创建序列,该序列最大值为“28000”,最小值为“60”,步长为“1”,可循环,序列名为“ygbx_seq1”。(2) 利用SQL*Plus或iSQL*Plus创建序列,该序列最大值

ORACLE数据库日常维护与管理手册

全球眼?(MEGAEYES)网络图像管理系统2.0 ORACLE日常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08

目录 全球眼?(MEGAEYES)网络图像管理系统2.0 (1) 1引言 (3) 1.1 目的 (3) 1.2 范围 (3) 1.3 参考资料 (3) 2日常维护与管理说明 (3) 2.1 运行环境 (3) 2.1.1硬件环境 (3) 2.1.2软件环境 (3) 2.2 数据库日常维护 (4) 2.2.1数据库初始设置 (4) 2.2.2每日工作内容 (5) 2.2.3每周工作内容 (6) 2.2.4每月工作内容 (7)

1引言 1.1目的 对于重要的商业系统来说,数据库系统的正常运行是保证商业应用平稳运行的关键。但是数据库在运行过程中可能会因为种种原因发生问题。这时,数据库的管理与日常维护工作将变得尤为重要。 为了指导数据库管理员做好日常维护工作,保证数据库系统的正常运行,特制定本文档。当然,数据库的日常维护是复杂和繁琐的,本文仅涉及一些常见的数据库日常维护的内容,在实际工作中,数据库管理员还需要做更多的工作。 1.2范围 本文档使用的人员:数据库维护管理人员和相关人员。 本文档涉及内容:oracle数据库的日常维护与管理解决方案。 1.3参考资料 中国电信网络视频监控技术(暂行)规范 2日常维护与管理说明 2.1运行环境 程序的运行环境包括硬件运行环境和软件运行环境。 2.1.1硬件环境 ◆CPU类型:Intel及其兼容系列CPU ◆内存容量:剩余内存要达2G以上 ◆硬盘容量:剩余硬盘容量要达1G以上 ◆网卡类型:100M网卡 2.1.2软件环境 ◆操作系统:RedHat Linux AS 3.0 ◆数据库:Oracle9i Database Release 2 (9.2.0.4.0) for Linux x86

ORACLE 数据库管理系统介绍

ORACLE 数据库管理系统介绍 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共

享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。 ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。 3.ORACLE的逻辑结构 构成ORACLE的数据库的逻辑结构包括: (1)表空间

Oracle ERP常用系统表结构

PO模块常用表结构 表名: PO.PO_REQUISITION_HEADERS_ALL 说明: 采购请求 REQUISITION_HEADER_ID NUMBER PR头标识码 SEGMENT1VARCHAR2(20)PR号 ENABLE_FLAG VARCHAR2(1)使能标志(Y/N) AUTHORIZATION_STATUS VARCHAR2(25)批准标志(APPROVED/) TYPE_LOOKUP_CODE VARCHAR2(25)类型(PURCHASE) REQUIST_ID NUMBER请求标识码 CANCEL_FLAG VARCHAR2(1)取消标志(Y/N) TRANSFERRED_TO_OE_FLAG VARCHAR2(1)可否转入OE标志(Y/N) PREPARER_ID NUMBER准备人ID(可与HR.PER_PEOPLE_F.PERSON_ID关联) 表名: PO.PO_REQUISITION_LINES_ALL 说明: 采购请求明细 REQUISITION_LINE_ID NUMBER PR行ID REQUISITION_HEADER_ID NUMBER PR头ID LINE_NUM NUMBER栏目 LINE_TYPE_ID NUMBER行类别 CATEGORY_ID NUMBER归类标识码 ITEM_DESCRIPTION VARCHAR2(240)项目描述 UNIT_MEAS_LOOKUP_CODE VARCHAR2(25)单位 UNIT_PRICE NUMBER单价(已折为人民币) QUANTITY NUMBER数量 DELIVER_TO_LOCATION_ID NUMBER交货位置码(与HR.HR_LOCATIONS.LOCATION_ID关联)TO_PERSON_ID NUMBER收货人代码 SOURCE_TYPE_CODE VARCHAR2(25)来源类型 ITEM_ID NUMBER项目内码 ITEM_REVISION VARCHAR2(3)项目版本 QUANTITY_DELIVERED NUMBER已交付数量 SUGGESTED_BUYER_ID NUMBER建议采购员代码 ENCUMBERED_FLAG VARCHAR2(1)分摊标志 RFQ_REQUIRED_FLAG VARCHAR2(1) NEED_BY_DATE DATE需求日期(原始) LINE_LOCATION_ID NUMBER定位行标识码(为空时表示未生成PO) MODIFIED_BY_AGENT_FLAG VARCHAR2(1)被采购员更改标志(被拆分Y/NULL)

ORACLE系统包介绍

Oracle 系统包 DBMS_OUTPUT a)启用 i. dbms_output.enable(buffer_size in integer default 20000); ii. set serveroutput on; b)禁用 i. dbms_output.disable; c)PUT和PUT_LINE i. PUT:所有信息显示在同一行 ii. PUT_LINE信息显示后,自动换行 d)NEW_LINE用于在行的尾部追加行结束符,一般用PUT同时使用 e)GET_LINE和GET_LINES i. DBMS_OUTPUT.GET_LINE(li ne 0UTVARCHAR2,status OUT INTEGER)用于取缓冲区的单行 信息 ii. DBMS_OUTPUT.GET_LINES(lines OUT chararr,numlies IN OUT INTEGER) 用于取得缓冲区的多行信息 DBMS_JOB a)SUBMIT用于建立一个新作业 语法 DBMS_JOB.SUBMIT( job OUT BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE DEFATULT SYSDATE, interval IN VARCHAR2 DEFAULT ' NULL' , no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULT any_instance, force IN DEFAULT FALSE); 例子 VAR jobno NUMBER; BEGIN DBMS_JOB.SUBMI( :jobno, 'pro_hrs101d0_ins_hrs101t0', sysdate, ‘sysdate+1 '); b)REMOVE!于删除作业队列中的特定作业 语法:DBMS_JOB.REMOVE(jov IN BINARY_INTEGER); 例子:DBMS_JOB.REMOVE(10);--删除JOB号为10 的JOB c)CHANGE用于改变与作业相关的所有信息

ORACLE数据库管理系统介绍

ORACLE 数据库管理系统介绍 的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及

共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。 ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO 和对服务进程与用户进程进行匹配的Dnnn进程等。 的逻辑结构 构成ORACLE的数据库的逻辑结构包括: (1)表空间

Oracle常用数据字典表(系统表或系统视图)及查询SQL

Oracle常用数据字典表(系统表或系统视图)及查询SQL 2014年12月15日?数据库?共4187字?暂无评论?阅读861 次 文章目录 ?数据字典分类 ?dba_开头 ?user_开头 ?v$开头 ?all_开头 ?session_开头 ?index_开头 ?伪表 ?数据字典常用SQL查询 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息的视图等。 数据字典系统表,保存在system表空间中。查询所有数据字典可用语句“select * from dictionary;”。 数据字典分类 数据字典主要可分为四部分: 1)内部RDBMS表:x$*,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。

2)数据字典表:*$,如tab$,obj$,ts$等,用来存储表、索引、约束以及其他数据库结构的信息。 3)动态性能视图:gv$*,v$*,记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。 4)数据字典视图:user_*、all_*、dba_*,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。 数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)。 数据字典视图可分为静态数据字典视图和动态数据字典视图。 静态数据字典是指在用户访问数据字典时内容不会发生改变。这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。 静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*(该用户方案对象的信息)、all_*(该用户可以访问的所有对象的信息)、dba_*(全部数据库对象的信息)。 动态数据字典是Oracle包含的一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。 dba_开头 dba_users数据库用户信息

ORACLE数据库管理初始化参数

管理初始化参数 管理初始化参数(调优的一个重要知识点,凭什么可以对数据库进行调优呢?是因为它可以对数据库的一些参数进行修改修正) 初始化参数用于设置实例或是数据库的特征。oracle9i提供了200多个初始化参数,并且每个初始化参数都有默认值。 显示初始化参数(1) show parameter命令 如何修改参数需要说明的如果你希望修改这些初始化的参数,可以到文件D:\oracle\admin\myoral\pfile\init.ora文件中去修改比如要修改实例的名字数据库(表)的逻辑备份与恢复 逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。 物理备份即可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行。 导出导出具体的分为:导出表,导出方案,导出数据库三种方式。 导出使用exp命令来完成的,该命令常用的选项有: userid:用于指定执行导出操作的用户名,口令,连接字符串 tables:用于指定执行导出操作的表 owner:用于指定执行导出操作的方案 full=y:用于指定执行导出操作的数据库 inctype:用于指定执行导出操作的增量类型 rows:用于指定执行导出操作是否要导出表中的数据 file:用于指定导出文件名 导出表 1.导出自己的表exp userid=scott/tiger@myoral tables=(emp,dept) file=d:\e1.dmp 2.导出其它方案的表如果用户要导出其它方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表E:\oracle\ora92\bin>exp userid=system/manager@myoral tables=(scott.emp) file=d:\e2.emp 特别说明:在导入和导出的时候,要到oracle目录的bin目录下。 3. 导出表的结构exp userid=scott/tiger@accp tables=(emp) file=d:\e3.dmp rows=n 4. 使用直接导出方式exp userid=scott/tiger@accp tables=(emp) file=d:\e4.dmp direct=y 这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。 这时需要数据库的字符集要与客户端字符集完全一致,否则会报错... 导出数据库导出数据库是指利用export导出所有数据库中的对象及数据,要求该用户具有dba的权限或者是exp_full_database权限 增量备份(好处是第一次备份后,第二次备份就快很多了) exp userid=system/manager@myorcl full=y inctype=complete file=d:\all.dmp

Oracle数据库维护及管理基本手册

Oracle数据库维护及管理 基本手册

目录 1 目的 (4) 2 适用范围 (4) 3 适用对象 (4) 4 机房值班 (4) 4.1 服务器规划..................................................................................... 错误!未定义书签。 4.2 日常巡检......................................................................................... 错误!未定义书签。 4.3 Oracle (4) 4.3.1 表空间检查; (4) 4.3.2 表碎片整理 (5) 4.3.3 表索引整理 (5) 4.3.4 检查数据库后台进程是否正常 (6) 4.3.5 查看CRS(群集就绪软件)状态是否正常 (6) 4.3.6 检查报警日志文件 (6) 4.3.7 查看数据库监听状态和监听日志大小 (7) 4.3.8 检查数据文件状态是否是ONLINE (8) 4.3.9 检查数据库是否有失效的对象 (9) 4.3.10 检查数据库服务器性能,记录数据库的cpu使用以及io wait等待 (9) 4.3.11 检查数据库服务器磁盘空间使用率 (10) 4.3.12 检查数据库备份是否正常 (10) 4.3.13 数据库性能监控 (11) 4.3.14 历史数据清理 (11) 4.3.15 监控数据库JOB执行情况 (11) 4.3.16 用户及权限安全监控 (12) 4.4 设备重启规范 (13) 4.4.1 数据库重启 (13)

oracle_系统表清单

查看表:user_tables、all_tables、dba_tables 查看表字段:user_tab_columns、all_ tab_columns、dba_tab_columns 查看表注释:user_ tab_comments 、all_tab_comments、dba_tab_comments 查看字段注释:user_col_comments、all_col_comments、dba_col_comments 查看索引信息:user_indexes、all_indexes、dba_indexes 查看索引所在字段:user_ind_columns、all_ind_columns、dba_ind_columns 查看约束信息:user_constraints、all_constraints、dba_constraints 查看约束所在字段:user_cons_columns、all_cons_columns、dba_cons_columns 查看触发器信息:user_triggers、all_triggers、all_triggers 查看序列信息:user_sequences、all_sequences、dba_sequences 查看视图信息:user_views、all_views、dba_views 查看同义词信息:user_synonyms、all_synonyms、dba_synonyms 查看DBLINK信息:user_db_links、all_db_links、dba_db_links 查看JOB信息:user_jobs、all_jobs、dba_jobs 查看所有对象信息(过程PROCEDURE、函数FUNCTION、包和包体、JOB和LOB大字段、表、视图、索引、序列、触发器):user_objects、all_objects、dba_objects 查看过程、函数、触发器、包和包体内容:user_source、all_source、dba_source

数据库技术高级应用-第二章-第三章-Oracle数据库及对象的创建与管理

一、使用dbca创建数据库。 二、创建表空间: CREATE TABLESPACE <表空间名> DATAFILE '<文件路径>/<文件名>' //创建的数据文件 [SIZE <文件大小> [ K∣M ]] //初始大小 [ REUSE ] [ AUTOEXTEND [ OFF∣ON //数据文件自动扩容,next只能跟在这个后面 [ NEXT <磁盘空间大小> [ K∣M ]] [ MAXSIZE [ UNLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ] ] [ MINMUM EXTENT <数字值>[ K | M ] ] [ DEFAULT <存储参数>] [ ONLINE∣OFFLINE ] [ LOGGING∣NOLOGGING ] [ PERMANENT∣TEMPORARY ] [ EXTENT MANAGEMENT [ DICTIONARY∣LOCAL [ AUTOALLOCATE∣UNIFORM [ SIZE <数字值>[ K∣M ] ] ] ] ] 1、文件名包括完整路径和文件名,每个数据文件定义了文件的初始大小,初始大小一般以“M”为单位。一个表空间中可以有多个数据文件。 2、extent management 有两种方式 extent management local(本地管理); extent management dictionary(数据字典管理),默认的是local 本地管理表空间要求Oracle中的数据分区(Extent)大小统一。 3、UNIFORM SIZE:指定每个分区的统一大小。 注:参数比较全的创建表空间的方法为: SQL> create tablespace test

ORACLE数据库管理员的职责

ORACLE数据库管理员的职责 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控:?(1).每天对ORACLE数据库的运行状态,日志文件,备份情况,数据?库的空间使用情况,系统资源的使用情况进行检查,发现并解决?问题。?(2).每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。 (3). 每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库 性能调整的机会,进行数据库性能调整,提出下一步空间管理?计划。对ORACLE数据库状态进行一次全面检查。 ?每天的工作?(1).确认所有的INSTANCE状态正常 登陆到所有数据库或例程,检测ORACLE后台进程: $ps–ef|grepora ?(2).检查文件系统的使用(剩余空间)。如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。 $df–k (3).检查日志文件和trace文件记录alert和trace文件中的错误。 连接到每个需管理的系统??使用’telnet’?? 对每个数据库,cd 到bdump目录,通常是$ORACLE_BASE/<SID>/bdump ? 使用Unix ‘tail’命令来查看alert_.log文件??如果发现任何新的ORA-错误,记录并解决?(4).检查数据库当日备份的有效性。 对RMAN备份方式: ?检查第三方备份工具的备份日志以确定备份是否成功 对EXPORT备份方式:?检查exp日志文件以确定备份是否成功 对其他备份方式: 检查相应的日志文件 (5). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。?Select file_name fromdba_data_files where status=’OFFLINE’ ?(6). 检查表空间的使用情况?SELECT tablespace_name,max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99')||'%'AS pct_free?FROM ( SELECTtablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BYtablespace_name), ( SELECT tablespace_name AS fs_ts_name,max(bytes)/1024/1024AS max_m, count(blocks) AS count_blocks,sum(bytes/1024/1024)AS sum_free_m FROM dba_free_space GROUP BYtablespace_name )?WHEREtablespace_name = fs_ts_name (7). 检查剩余表空间 SELECT tablespace_name, sum(blocks ) as free_blk , trunc ( sum ( bytes)/(1024*1024))as free_m,

oracle系统表格大全整理

oracle系统表查询 https://www.sodocs.net/doc/0d17961501.html, 2005-4-29 网络 数据字典dict总是属于Oracle用户sys的。 ******************************************************************************* ******************************************* 1、用户: select username from dba_users; 创建用户 CREATE USER jzmis PROFILE DEFAULT IDENTIFIED BY jzmis DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK; GRANT DBA TO jzmis WITH ADMIN OPTION; commit; 改口令 alter user spgroup identified by spgtest; 2、表空间: select * from dba_data_files; select * from dba_tablespaces;//表空间 select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//空闲表空间 select * from dba_data_files where tablespace_name='RBS';//表空间对应的数据文件 select * from dba_segments where tablespace_name='INDEXS'; 删除表空间 drop TABLESPACE XNMIS INCLUDING CONTENTS; 创建表空间 CREATE TABLESPACE "XNMIS" LOGGING DATAFILE ‘E:\oracle\product\10.2.0\oradata\jzmis\xnmis.dbf’ SIZE 2048M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED CREATE TABLESPACE "XNMIS"

oracle11g数据库管理与开发技术training

Oracle 11g数据库管理与开发技术

1.模式与模式对象

2.管理表 建表时的考量、列数据类型、创建表的语法、创建表的实例、查看表的信息 、修改表结构、重命名表、监控表的存储空间、修改表空间的存储设置、删除表、外部表的管理 1.索引概念、各种类型索引的比较和选择、索引基本操作 1.视图概念、视图基本操作、同义词、序列 2.表分区与索引分区 1.分区技术概述 2.表分区方法说明及实例 范围分区(Range、散列(Hash分区、列表分区(List )、组合分区、Interval 分区、外键分区、虚拟列分区、表的分区策略、管理表分区 表分区管理操作列表、表分区管理操作实例 用户管理与安全 数据完整和数据约束 什么是事务 数据并行性和一致性、Oracle如何管理数据并行性和一致性 锁 锁的功能、分类及类型、表锁和事务锁、检测和解决锁冲突、实例分析 数据完整性 数据完整性概述、完整性约束、完整性约束类型、约束检验机制、约束状态 备份与恢复 备份与恢复概述 备份分类与恢复分类 备份分类、恢复分类 备份与恢复方法 Oracle 11g的备份和恢复特性

使用RMA工具 RMA简介、RMA资料档案库/恢复目录/控制文件、创建恢复目录 RMAN与数据库的连接 连接到目标数据库、连接到恢复目录 注册数据库 注册目标数据库、实例演示 通道分配通道概述、RUN命令介绍、自动通道配置、手动通道配置、显示通道配置参数、设置通道控制参数 使用BACKU命令生成备份集 备份集与备份片、BACKU命令语法、备份文件的存储格式、BACKU备份实例、BACKUP 的冷备份与热备份Oracle 11g的备份和恢复特性 使用COPY! BACK AS COP命令 COPY命令语法、COP溶份实例、BACKUP AS COP命令 备份 压缩备份、完全备份与递增备份、查看备份信息 使用RMAN恢复数据库 RESTOR命令、RECOVE命令、实例解析 Oracle 闪回技术(Flashback ) 使用OEM向导备份和恢复数据库 逻辑备份/数据导入导出数据泵技术概述 创建目录对象 使用Data Pump导出数据 Data Pump导出说明、基于命令行数据泵导出实例、基于DBMS_DATAPl数据泵导出实 例

实验四--oracle对象管理及使用

实验四oracle对象管理及使用 一、实验目的及要求 掌握Oracle的常用对象的操作方法。会使用常用对象解决一些实际问题。 二、实验主要内容 (1)表结构的建立、修改、查看、删除操作。 (2)索引的建立、修改、查看、删除操作。 (3)视图的建立、查询、修改、删除操作。 (4)同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。 (5)掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。 三、实验仪器设备 在局域网环境下,有一台服务器和若干台客户机。服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。 四、实验步骤 表的操作 1.创建表结构 利用命令行方式将下列各表建立到员工医疗保险系统数据库中。表结构如附录员工医疗保险系统表1-表7所示。 SQL> /* ======创建企业(business)表======*/ SQL> create table business ( 2 bno char(10) primary key, 3 bname char(50) not null, 4 btype char(4) constraint CK_1 check(btype in('企业','事业','私有')), 5 baddress char(20), 6 btel char(13) 7 ); 表已创建。 SQL> /* ======创建医院(hospital)表======*/ SQL> create table hospital( 2 hno char(5) primary key, 3 hname char(40) not null, 4 haddress char(60)

ORACLE数据库管理员职责

ORACLE数据库管理员职责 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。 (2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。 (3). 每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库 性能调整的机会,进行数据库性能调整,提出下一步空间管理 计划。对ORACLE数据库状态进行一次全面检查。 每天的工作 (1).确认所有的INSTANCE状态正常 登陆到所有数据库或例程,检测ORACLE后台进程: $ps –ef|grep ora (2). 检查文件系统的使用(剩余空间)。如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。 $df –k (3). 检查日志文件和trace文件记录alert和trace文件中的错误。 连接到每个需管理的系统 ? 使用’telnet’ ? 对每个数据库,cd 到bdump目录,通常是$ORACLE_BASE//bdump ? 使用Unix ‘tail’命令来查看alert_.log文件 ? 如果发现任何新的ORA- 错误,记录并解决 (4). 检查数据库当日备份的有效性。 对RMAN备份方式: 检查第三方备份工具的备份日志以确定备份是否成功 对EXPORT备份方式: 检查exp日志文件以确定备份是否成功 对其他备份方式: 检查相应的日志文件 (5). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。 Select file_name from dba_data_files where status=’OFFLINE’ (6). 检查表空间的使用情况 SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name), ( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name (7). 检查剩余表空间

相关主题