《Oracle数据库管理与维护实战》——2.8 数据库访问

简介:

本节书摘来自异步社区出版社《Oracle数据库管理与维护实战》一书中的第2章,第2.8节,作者: 何伟娜 , 常建功,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.8 数据库访问

Oracle数据库管理与维护实战
Oracle是大型的多用户并发数据库系统,本节介绍使用Oracle实现多用户并发的基本概念和相关机制。

2.8.1 竞争性、并发性与一致性概念

竞争性、并发性与一致性是所有多计算机系统都会遇到的问题。如计算机网络中文件服务器阻止多个文件同时修改同一个文件,在Windows平台下经常提示另一个用户正在使用此文件、不能修改等。当两个用户要同时获取同一资源时,例如要同时获取打印机,就会产生竞争性。当多个用户获取同一资源,好像每个用户在独自使用该资源时,产生并发性。

Oracle是一个多用户数据库系统,在它内部必须解决资源进程并发性与一致性,使用户对数据库并发、安全的访问。Oracle的并发性与一致性机制并不会使数据库的访问复杂化或降低系统性能。例如,如果几个用户同时想更新表中的同一记录行,Oracle会使用自动锁机制,使事务串行发生,好像是独立发生一样。如事务要查询另一个事务正在更新的表时,Oracle的多版本机制自动允许查询立即执行,并让查询读取更新前的数据。

一致性内最重要的是读一致性,Oracle采取以下措施保证读一致性。

Oracle保证SQL语句在操作某些数据时,其他事务不能更改这些数据。

当一个事务读数据库数据时,这些数据也可以让其他事务读。

当一个事务在写数据时,其他事务仍可正常读这些数据。

但一个事务A在修改一行记录时,其他要更改同一行记录的事务必须要等到事务A完成更新后才能开始对这一行的更改。

2.8.2 事务之间的冲突

多用户数据库系统中,事务具有几种不同形式相互的影响,包括更新丢失、脏读、非重复读等。

1.更新丢失
系统允许多个事务同时更新同一数据时,会发生更新冲突。例如,两个用户都要更新同一表的同一行数据,一个更新就会覆盖掉另一个更新。为防止这种冲突发生,Oracle采取锁机制,防止同时发生更新操作。

2.脏读
当一个事务读取另一个打开事务还未提交的数据时,就会产生脏读。例如,用户A想修改某表中的一行记录,如果该用户还没提交修改,而另一个用户B想查询这行记录,如果返回的是A用户修改后的数据,就是脏读。

Oracle数据库会尽量避免脏读的产生,脏读容易产生问题。如果读取没有提交的数据,而该数据提交失败,那么读出的数据就是无效的,甚至是错误的。Oracle中有一些机制能保证不出现脏读。

3.可重复读与非重复读
在同一事务中,查询返回的是同一数据集,忽略其他已提交或未提交的事务所做的修改,这时发生可重复读。只有当前事务结束、又开始一个新的事务时,查询才能看到最新的结果,这就是可重复读。而如果查询在相同的事务中多次进行,每次都返回最新的数据集,这时发生非重复读。

相关文章
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
162 64
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
22天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
29 7
|
22天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
25 6
|
22天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
20 5
|
21天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
35 3
|
23天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
44 2
|
29天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
1月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
30 1
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例

推荐镜像

更多
下一篇
无影云桌面