博客一个
2009-11-26 18:19:08 阅读(1) 评论(0)
疯狂代码 http://www.crazycoder.cn/ :http:/www.crazycoder.cn/DataBase/Article3285.html
从10g开始,oracle开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理 (ASSM),就可以使
用这个特性缩小段,即降低HWM.这里需要强调一点,10g的这个新特性,仅对ASSM表空间有效,否则会报
ORA-10635: Invalid segment or tablespace type.
2009-11-11 0:02:02 阅读(4) 评论(0)
说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我们知道,ORACLE在逻辑存储上分4个粒度:表空间,段,区和块.
(1)块:是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行.
(2)区:由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表PM_USER时,首先ORACLE会分配一区的空间给这个表,随着不断的INSERT数据到PM_USER,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给PM_USER,而不是多少个块.
(3)段:是由一系列的区所组成,一般来说,当创建一个对象时(表,索引),就会分配一个段给这个对
2009-11-10 23:58:08 阅读(18) 评论(0)
http://www.cnblogs.com/rootq/archive/2009/02/01/1381760.html
一般表里有碎片我们都采用alter table table_name move tablespace_name,或者exp,drop table table_name,imp的2种方式10G给我们其他的方法.下面我来试一吧
C:\Documents and Settings\Administrator>sqlplus greatfinish/finish
2009-11-10 23:50:59 阅读(5) 评论(0)
ORACLE数据库是有TABLESPACE、SYSTEMSPACE和TEMPSPACE三部分表空间组成。
在表空间下包含若干的段(SEGMENT),在段下包含若干的范围(EXTENT)和
FREESPACE.在存储数据时,段会首先为自己初始化存储位置的范围,以便存
储和寻找,并将存储位置的这段范围标记为1。
因为存储数据的时候,段总是为自己寻找最大的范围,方便存储和寻找,
在频繁的数据存储过后,范围和范围之间的狭小地带就存在了冗余范围,
当段再为自己寻找最大的范围时,就要从众多的范围中寻找给自
己的最大空隙范围,可想而知这个最大空闲范围的寻找要经过怎样漫长的遍历,
因此在数据频繁的更新之后,空间中的冗余空间碎片将会有很多的。
针对存储的原理和特性可以用以下办法解决:
1、将范围标志都设置为1,因为SMON会周期性的自动将标志相同的位置合并为
2009-11-10 23:42:59 阅读(5) 评论(0)
Oracle里表空间的压缩
| 对于table空间的收缩是一个老生常谈的问题,不过却是一个一直都没有很透彻的讨论清楚过的问题。借ks_reny的机会,谈谈个人看法,有不及之处,希望高手引领更深入研究此话题。 datafile是物理上的一个文件在下层就是基于文件系统的block块了,而我们经常提到的segment,extent,数据库的 block,这里都是oracle存储是的逻辑上的单位,所以首先设想一下如果是你来实现delete或者drop的操作的时候,你会是真正的调用文件系统的API,而重新把datafile重新整理一遍吗,我想你也不会如此的吧。这样的话,每个delete或者是drop的操作将会带来我们更多的痛苦。所以 |
2009-11-10 23:40:34 阅读(1) 评论(0)
2009-11-10 23:37:58 阅读(50) 评论(0)
============ 查询 ===================
1.查询oracle用户的默认表空间和临时表空间
select default_tablespace, temporary_tablespace, d.username
from dba_users d
where d.username like '%YGJ%'
group by default_tablespace, temporary_tablespace, d.username
2009-10-19 17:14:00 阅读(2) 评论(0)
C#连接六类数据库的代码集
本文列出了C#连接Access、SQL Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点。
程序代码:
2009-4-25 11:24:36 阅读(5) 评论(0)
----------------------定义:存储过程---------------------------------------
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
----------------------创建一个存储过程-------------------------------------------
SQL> create or replace procedure abc
2 is
2009-2-9 12:06:05 阅读(20) 评论(0)