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

相关文章
|
19天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
7天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。
|
7天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
18 2
|
26天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
1月前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
38 10
|
11天前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
32 0
|
20天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
22天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
162 11
|
2月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
17天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
59 13
MySQL的安装&数据库的简单操作

热门文章

最新文章

推荐镜像

更多
下一篇
无影云桌面