欢迎来到天天文库
浏览记录
ID:42563750
大小:766.51 KB
页数:29页
时间:2019-09-17
《oracle事物和常用数据库对象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.1.事物的控制控制事务银行转账李四给张三汇款ACIDA:原子性:整个事务中所有的步骤是不可分割的,原子性原则规定一个事务的各个步骤都必须完成,否则整个事务都不会完成。即保证一个事务中所有的操作都能完成或者都不能完成,如果事务在完成之前出现任何错误,那么数据库自身必须保证自动回滚所做过的任何事务部分(并且必须自动进行)C:一致性:无论是事务前,事务中,事务后,数据始终处于一致的状态。例如李四给张三汇款10000,那么就需要从李四账户减去10000,给张三的账户增加10000。Oracle使用撤销段来保证数据的一致性。I:隔离性:隔离性的原则规定,未完成
2、的事务必须不可视。在某个事务进行期间,只有执行该事务的会话能看见所做的变化,而其他所有的会话看见的都是没有变化的数据(而不是更改后的新值)。这个规定的逻辑含义是:首先,由于整个事务可能没有全部完成,因此不允许其他用户看到可能回滚的变化;其次,在某个事务进行期间,数据是不连贯的,李四的账户减掉10000,但张三的账户还没有增加10000。事务的隔离性要求数据库必须对其他用户隐藏正在进行的事务,这些用户只能看到没有被更新的数据,只有在事务完成时,他们才能看到所有变化。Oracle使用撤销段来保证事务的隔离性。创建练习环境:创建一个aa表,插入3条记录,并提交
3、事物。查看aa表的记录,插入一条记录,当我们执行一条DML语句时候,就自动开始了一个事物此时insert记录的事务并没有提交,没有提交事务就没有真正的完成,此时还有rollback的机会。Scott用户在当前会话中查看aa表时可以看到被插入的记录打开一个新的sqlplus会话,查看aa表时会发现并没有新插入的记录:这是事物的隔离性在第一个sqlplus会话中提交事物提交之后才能在第二个会话中看到被插入的第四条记录D:持久性:一旦使用commit命令来结束某个事务,那么就必须保证数据库不丢失这个事务。在事务进行期间,隔离性的原则要求除了指定会话涉及的用户之
4、外的任何用户都不能查看当前所做的变化。不过事务一旦完成,所有用户都必须能够立即看到所做的变化,同时数据库必须保证这些变化绝不会丢失。Oracle通过使用日志文件来满足这个需求。日志文件具有两种形式:联机重做日志文件,归档重做日志文件。一个正确配置的oracle数据库是不可能丢失数据的。当然用户的错误(包括不恰当的DML或删除对象)也会造成数据的丢失DDL语句有自动提交功能(create、drop、truncate、alter)创建表AA,插入一条记录回退事物在表中插入一条记录在sqlplus中正常退出在另外一个sqlplus中查看aa表中的记录,会发现新
5、插入的tom1的记录了。如果使用sqlplus工具更改了数据之后,正常退出sqlplus时,oracle会自动提交事物。目前aa表中只有tom1的记录,模拟实例重启使用scott用户连接,查看aa表中的内容,发现inserttom2的记录由于实例重启自动被回滚了。使用autocommit实现事物的自动提交即使执行回滚,查询结果仍然包含新插入的数据,关闭自动提交时可以使用setautocommitoff关于事物的总结:1.需要注意的是,Commit:只是用来确认这个数据已经正式的修改了,不一定非得写入硬盘,DBWn什么都不做。执行commit命令时发生的所
6、有物理操作时LGWR进程将日志缓冲区的内容写入磁盘。DBWN进程完全没有执行任何操作。DBWN进程与提交事物处理没有关系,不过最终DBWN进程会将变化的数据块写入磁盘。2.commit和rollback语句只应于DML语句,我们无法回滚DDL语句。DDL语句一旦被执行就会立即具有持久状态。3.自动提交和隐式提交:oracle在某些情况下可以进行自动提交:执行DDL语句是一种情况,退出某个用户进程也是一种自动提交。1.1.索引索引是oracle提供的一个对象,提供了一种快速访问数据的途径,提高了数据库的检索性能。索引使数据库程序无需对整个表进行全表扫描,就
7、可以在其中找到所需要的数据,就想书的目录,可以通过他快速查找所需信息,无需阅读整本书。oracle的数据库管理系统在访问数据时使用以下3种访问方法;1.全表扫描2.通过ROWID3.使用索引索引的分类:1,B树索引结构索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块,最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向连接,有助于按关键字值得升序和降序扫描索引。1.1.1.创建普通索引创建普通索引的语法create[unique]index索引名称on表名(列名)[tablespace表空间名称][u
8、nique]用于指定唯一索引,默认情况下为非唯一索引[tablespace]为索
此文档下载收益归作者所有