1.创建表:
a. 创建xs表中计算机专业学生的备份
Create table xs_jsj as select * from xs where zym=’计算机’;
b.完整的例子:
Create table test (xm char(20) not null,zy varchar(30) default (‘计算机’));
-- Create table
create table DEPT
(
DEPTNO NUM ......
1.创建表:
a. 创建xs表中计算机专业学生的备份
Create table xs_jsj as select * from xs where zym=’计算机’;
b.完整的例子:
Create table test (xm char(20) not null,zy varchar(30) default (‘计算机’));
-- Create table
create table DEPT
(
DEPTNO NUM ......
写的次序:
redo--> undo-->datafile
insert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信息会放进硬盘上. 故障时, redo 便可恢复那些已经commit 了的数据.
redo->每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件
undo->记录更改前的一份copy,但你系统rollback时,把这份copy重新覆盖到原来的数据
redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)
undo->记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)
redo->已递交的事务,实例恢复时要写到数据文件去的
undo->未递交的事务.
redo的原因是:每次commit时,将数据的修改立即写到online redo中,但是并不一定同时将该数据的修改写到数据文件中。因为该数据已经提交,但是只存在联机日志文件中,所以在恢复时需要将数据从联机日志文件中找出来,重新应用一下,使已经更改数据在数据文件中也改过来!
undo的原因是:在oracle正常运行时,为了提高效率,加入用户还没有commi ......
author:skate
time:2010-05-31
索引页块碎片(Index Leaf Block Fragmentation)
这篇文章将会回答如下问题:
什么是索引页块碎片?什么时候被重用?
什么是半空索引碎片?什么时候被重用?
oracle的标准索引结构是B×tree结构,一个B×tree结构由三种block组成
根块(root block):在B×tree里有且只有一个block,所有访问索引都从这开始,root block下有很多child blocks。
分支块(Branch blocks):这是中间层,branch block是没有什么限制的,它是随着leaf block的增加而增加的,branch block一般是4层,如果多于4层,就影响性能了。在我们删除行时,branch block是不被删除的。
叶块(leaf block):叶块是最底层,上面存储着索引条目和rowid
索引和表数据是级联关系的,当删除表数据的时候,索引条目也会被自动删除,这样在index leaf
block就会产生碎片,这也就是在OLTP系统上有大量更新的表上不建议创建大量的索引,很影响性能
有的人说删除过的索引条目空间不会被再用,因为在应用中不会再有insert相同的数据。其实这个
说法不完全对的,除了半空叶块外,其他的删除的索引空间是可被再利用的。
eg:
本文的所有实验都是在如下平台测试 ......
Oracle异常处理总结
有语法着色的,大家可以浏览这儿:http://www.ouora.com/post/145.html
为了处理PL/SQL应用程序的各种错误,开发人员可以使用各种类型的异常。
Oracle提供了
1:预定义异常
用于处理常见的Oracle错误
2:非预定义异常
用于处理预定义异常所不能处理的Oracle错误
3:自定义异常
用于处理于Oracle错误无关的其他情况
异常处理部分是以关键字EXCEPTION开始的,语法如下:
EXCEPTION
WHEN exception_Name THEN --exception_Name为异常的名字
statement1;
WHEN OTHERS THEN
statement1;
异常处理部分从关键字EXCEPTION开始,在异常处理部分使用WHEN字句捕捉各种异常,如果有其他未预定义到的异常,使用WHEN OTHERS THEN字句进行捕捉和处理。
1、 处理预定义异常,这是系统预定的21种类型
错误代码是负整数,如-51
Access_info_null(ora-06530)
当访问没有初始化的对象时触发。
&nbs ......
author:skate
time:2010-05-31
我们在使用windows的时候,都知道要定期整理磁盘碎片,因为磁盘碎片会影响性能,给管理上带来额外的
负担。那oracle更是如此,当随着数据增加,oracle处理海量数据本身就已经很费力了啊,如果再有大量
的碎片,那就是雪上加霜啊。所以碎片要引起dba的高度重视,尽早发现尽早处理。
碎片是怎么产生的呢?
简单理解就是由于更新和删除产生一些碎小的不能被再次使用的空间,根据每种不同的碎片他们的产生也是有区别的
block-level的碎片,而block又分为data block和index block,在data block中存放的是row数据,在index block
中存放的是索引键值数据,所以按上面所说,block-level碎片有细分为row-level碎片和Index Leaf Block-level碎片。
oracle的每一个对象都是存储在segment中,而oracle的最小分配单位是extents(区),在数据更新删除中也会产生碎片
这一级别的碎片就是segment碎片。segment又存在datafile中,而tablespace又是包含datafile的逻辑概念。所以这一层
是tablespace-level碎片;tablespace是在disk上存储,所以这一层就是disk-level碎片。
简单图示如下
disk-level fragmention
tablespace-level fragme ......