Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。Oracle的多版本一致性读,使得Oracle查询具有读一致
1.Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。
2.Oracle的多版本一致性读,使得Oracle查询具有读一致性查询和非阻塞读两个特性。
3.语句级的一致性指查询返回的结果与发起查询的时间点保持一致并且当时已提交的数据。例如:当SQL语句在SCN=1000发起,则在提交读的隔离级别下,返回的结果和SCN=1000保持一致;在序列化或者只读的事务中,事务中所有的查询都与事务开始时间点保持一致;在闪回查询中,查询结果和语句中指定的时间点保持一致。
4.事务界别的一致性:
即Oracle可以保证事务中的所有语句查询的结果和事务开始时间点保持一致。
串行化事务中的查询可以看到事务自身引起的修改。
事务级别的一致性可以保证可重复读,但是不保证幻影读。
5.读一致性和undo段
Oracle的读一致性和非阻塞读主要通过undo来实现,在undo段中存放事务所做的修改的旧值,这样某事务进行过程中,可以对事务外查询提供旧值的查询,即读一致性。
6.读一致性和事务表
每个数据块的块头都有一个ITL(interested transaction list),当Oracle需要对数据块进行修改时,会利用ITL来判断事务是否提交。(Oracle默认的隔离级别为提交读,不会读取未提交事务的数据)
ITL里的内容描述了哪些事务在数据块中有行锁和哪些行被已提交或未提交事务做了改变。
ITL指向UNDO段里的事务表,事务表里记录了数据库发生的所有改变的时序。
从某种意义上来说,ITL里记录了最近数据块里所有的被改变行记录的历史信息,INITRANS参数决定了数据块里保留的事务历史。
7.锁机制
一般来说,多用户的数据库使用数据锁来解决与数据并发性、一致性和完整性相关的问题。锁主要是阻止访问相同资源的事务之间发生破坏性的影响。
8.ANSI/ISO的事务隔离级别
其中,,脏读是指读取到其他事务未提交的数据;不可重复读是指第二次读时,比第一次读数据被删除,第一次查询结果有改变;幻影读是指第二次查询时,查询结果比第一次更多,但是第一次查询的结果集没有发生改变。
9.read commited隔离级别
oracle为每一条查询语句提供一致性的查询结果,不需要人工干预。
例如update语句中的where字句查询,也是可以提供一致性查询结果的,只是该隐式查询并不能看到自己的修改,只能看到隐式查询之前发生的修改。
如果在select列表中含有函数(如count(),sum(),自定义函数),则 函数中的每一条SQL都将在语句级实现一致性,而不是在父select语句级保持一致性,函数内的每一条SQL语句在执行时,”一致性读快照“都已经建立。也就是说,select列表里的函数的执行过程中,会读取其他事务提交的改变。例如,某select列表含有10个函数,均对一张表进行操作,事务总共执行时间为1小时,在这一小时中若有其他用户对该表进行了修改并提交,则后面的函数(例如最后一个函数)则将读到其他用户修改后的数据。
10.提交读事务中的写冲突
当一个事务A尝试去修改某未提交事务B所修改的数据块,则发生了写冲突,A事务会等待B事务结束(回滚或提交)释放相应锁后,再继续执行。这里有两种情况:第一,当B事务回滚了,则A事务继续处理之前被锁定的行数据,就像B事务从来没有发生过一样;第二,当B事务提交了,则A事务继续执行其之前想要处理的行记录。
11.串行化隔离级别
串行化隔离级别下,事务只能看到事务开始时间的已提交改变和事务自己看到的改变。串行化事务仿佛没有其他事务在对数据库进行修改。
串行化事务使用的场景:第一,事务较短且处理的记录数较少;第二,俩事务同时处理相同记录的几率较低;第三,运行时间相对较长的事务主要都是只读事务。
串行化事务只会处理事务开始时,已经提交的数据,当串行化事务处理其他未提交事务修改的数据时,会报错。“ORA-08177: Cannot serialize access for this transaction“
12.只读隔离级别
只读隔离级别类似于串行化隔离级别,只是只读隔离级别不会修改数据(SYS用户除外);
只读事务主要用于要求报表内容数据必须和开始报表时间保持一致的场景。
本文永久更新链接地址:

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器