五 操纵数据库数据

网友投稿 269 2023-11-27

1、数据库事务

五 操纵数据库数据

原子性(atomicity):一个事务的各个部分都必须完成,否则整个事务都不会完成。

未完成事务的回滚可以是人工进行的,不过在错误的情况下,回滚必须是自动的和不可停止的。Oracle通过撤销段来保证原子性。

一致性(consistency): 查询的结果必须与数据库在查询开始时的状态一致。

Oracle通过撤销段来保证一致性。如果撤销段没有正确配置,则有可能出现”ora-1555 snapshot too old”故障。

隔离性(isolation): 对于其他部分来说,未完成的事务必须不可视。

Oracle通过撤销段来保证隔离性。

持久性(durability):一旦使用commit命令结束某个事务,那么就必须保证数据库不丢失这个事务。

Oracle通过使用日志文件来保证持久性。

2、执行SQL语句

2.1 select语句

过程:如下图

图一执行select语句过程

注:服务器进程把数据文件的数据块读取到db cache里;dbwn进程将数据块从db cache 写入到数据文件里。

2.2 update语句

过程:如下图

图二执行update语句过程

2.3 insert delete 语句

过程:同update语句。

insert delete 语句二者的差异在于所生成的撤销数据量不同。Insert生成的撤销只涉及为撤销块写下新的rowidDelete生存的撤销是被删除的整条记录。

2.4 rollback语句

Oracle执行rollback命令时会使用撤销数据来反转需要被反转的语句。

执行rollback会生成更多 redo log

2.5 commit 语句

执行commit命令时发生的所有物理操作是lgwr进程将日志缓冲区的内容写入磁盘(online redo log file)。 Dbwn进程完全没有执行任何操作。在正常运行阶段,dbwn进程只将某些脏数据写入到磁盘,在需要某个检查点时,ckpt进程会指示dbwn进程将所有的脏数据写入到磁盘。

通过lgwr进程被写入重做日志文件的重做流包含了被提交的事务以及未被提交的事务。

2.6 ddl与事务控制

Ddl语句无法回滚。Ddl语句一旦执行就会立即具有持久状态。

2.7 自动提交

自动提交也叫隐式提交。ddl语句、退出某个用户进程、用户进程无序退出。

3、dml与完整性约束

如果多语句事务的一条语句违反了某个约束,那么只有这个语句被回滚,该事务的其余语句则保持完整和未提交状态。

4、data pump

data pump用于使用更快的速度来完成批量数据的操作。

4.1 exportimport实用程序异同

相同点:可以从某个数据库中抽出大量的数据,并且可以将这些数据转移到另一个数据库。

不同点:实现方式不同:data pump是服务器端实用程,而exportimport 是普通的用户进程;转储文件的格式不同。

4.2 data pump的体系结构

Expdpimpdp用户进程:与服务器进程建立会话,会话启动data pump作业

Data pump 作业:dmnn进程(主进程)、dwnn进程(工作进程)

队列:每个Data pump 作业都有两个队列,控制队列和状态队列。

3种文件:sql文件、日志文件和转储文件

控制表:启动作业时,dmnn进程会生成控制表。控制表用于记录作业的进度和描述该作业,并且包含在转储文件(转储文件的最后一项)中。

4.3 目录

Dp 在一个oracle目录中读写文件。Dba在数据库内创建一个目录,这个目录指向操作系统内的一个物理路径。

使用dba_directories视图查看目录的相关信息。

Oracle目录始终属于sys,但是为了创建目录,必须被授予”create directory”权限。

4.4 直接路径和外部表路径

直接路径避开了db cache。外部表路径使用了db cache。外部表路径插入操作使用了一个正规的提交。直接路径操作并不使用提交,而是简单地将高水位线(high water mark)向上移动,从而能够包含最新写入的数据。

高水位线(hwm):是表中的一个水印,在这个水印之上未进行过写操作。

直接路径极为快速。

只有简单的结构才能够使用直接路径进行处理;对于复杂的对象来说,由于为了分解复杂性而要求与sga进行交互,因此必须使用外部表路径。

4.5 在网络模式中使用data pump

Impdp userid=scott/tiger tables=dept, emp network_link=li directory = dp_dir

5、sql*loader

用于批量上载某些第三方系统所生成的数据集。

dp区别在于:sqlldr能够读取任何文件;sqlldr是一个用户进程

Sqlldr 文件:输入数据文件、控制文件、日志文件、错误文件、废弃文件

5.1控制文件

控制文件是指示sqlldr如何处理输入文件的文本文件。

定长记录控制文件

Load data

Infile ‘fixed.dat’ “fix 15”

Into table names

Fields terminated by ‘,’

(first,last)

可变长记录控制文件

Load data

Infile ‘fixed.dat’ “var 3”

Into table names

Fields terminated by ‘,’

(first,last)

流格式记录控制文件

Load data

Infile ‘fixed.dat’ “str‘\n’”

Into table names

Fields terminated by ‘,’

(first,last)

5.2 数据加载方法

直接路径

常规路径

直接路径加载快,但是存在一些局限性。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub-/9537053/viewspace-721433/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql如何将值转换数字类型
下一篇:mysql与db2的区别有哪些
相关文章

 发表评论

暂时没有评论,来抢沙发吧~