--顺序事务
--设置顺序事务既可以确保用户取得特定时间点的数据,又可以执行DML语句
--会话A
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
select employee_id,first_name,last_name,email from employees where first_name='zou';
--会话B
update employees set last_name='2' where employee_id=2;
--会话A
select employee_id,first_name,last_name,email from employees where first_name='zou';
update employees set email='zou2@foxmail.com' where employee_id=2;
这个时候抛出异常:
ORA-08177 无法连续访问此事务处理
ORACLE: ORA-08177: can't serialize access for this transaction
Q:When I configure SERIALIZABLE isolation level for the channels, I frequently get errors like ORA-08177:Can't serializa access for this transaction. How do I resolve this?
A: Answer for this is best answered by Oracle DB experts. The following is written in Oracle documentation.Oracle database uses control information stored in the data block that indicates which rows in the block contain committed and uncommitted changes. In a sense, the block contains a recent history of transactions that affected each row in the block. The amount of history that is retained is controlled by the INITRANS parameter of CREATE TABLE and ALTER TABLE. Under some circumstances, Oracle can have insufficient history information to determine whether a row has been updated by a "too recent" transaction. This can occur when many transactions concurrently modify the same data block, or do so in a very short period. You can avoid this situation by setting higher values of INITRANS for tables that will experience many transactions updating the same blocks. Doing so enables Oracle to allocate sufficient storage in each block to record the history of recent transactions that accessed the block. One of the solutions for this problem is set higher value(say 5) in INITRANS to table that throws the ORA-08177 errors. If table name is 'TEST', then you may use the following command: ALTER TABLE TEST INITRANS 5;
分享到:
相关推荐
Quartz 是一个开源的作业调度...这个整合 demo 提供了一个基础的模板,开发者可以基于此快速搭建自己的定时任务系统。通过配套的博文(链接已给出),可以深入了解具体配置和实现细节,从而更好地理解和运用这一整合。
然后尝试启动数据库,如示例所示,会收到类似"ORA-00313"和"ORA-00312"的错误,表明数据库无法找到必要的日志文件来完成其操作。 在这种情况下,我们不能直接打开数据库,因为数据库状态不完整。我们需要先关闭...
在数据库管理中,有时我们需要对已经存在的数据表进行结构调整,比如改变字段的类型或精度,但这...同时,考虑到并发访问和事务一致性,可能需要在低峰时段进行这样的操作,并配合适当的锁定机制来确保数据的完整性。
对于DataGuard配置,需要确保主备数据库的监听器正确配置,使得客户端可以通过网络访问数据库。这涉及到修改`listener.ora`和`tnsnames.ora`文件,具体包括监听地址、端口和服务名等信息。 综上所述,Oracle 10g ...
在事务处理方面,Oracle 9i引入了高级队列(Advanced Queuing, AQ),允许在数据库内实现消息队列,增强了异步处理和系统间通信的能力。此外,Oracle 9i的并发控制机制,如多版本并发控制(MVCC),确保了高并发环境...
并发控制则处理多个用户同时访问数据时可能出现的问题;备份与恢复策略则是防止数据丢失的重要手段;性能优化则涉及索引策略、查询优化器和数据库调优等技术。 再者,Oracle数据库还提供了高级特性,如分区、物质化...
简单恢复依赖于自动重做日志,用于处理事务故障。完整恢复结合了归档重做日志,可以应对系统故障。而介质恢复则用于解决硬件故障,通常涉及使用备份文件恢复数据。在恢复过程中,RMAN扮演着关键角色,它能执行各种...
说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | ...
这表明SCOTT的查询无法获取到一致的读视图,即读取的数据块在查询开始时的状态,因为这些状态已被后续的事务所覆盖。 ### 2. 自动负载信息库(AWR)深入理解 自动负载信息库(AWR)是Oracle数据库性能监控和诊断的...
1. **“快照太旧”错误(ORA-01555)**:此错误通常发生在事务处理高峰期,当查询需要读取的数据块在查询期间被其他写入操作覆盖时。由于Oracle数据库保证读一致性,查询需要能够访问到开始事务时的数据状态。如果回滚...
Oracle 在处理临时数据时,如果无法分配连续空间,会出现此问题。解决方法是增加临时表空间的数据文件。首先,使用 `SELECT file_id, block_id, blocks, bytes FROM sys.dba_free_space WHERE tablespace_name='...
在升级过程中,老白遇到了ORA-01110错误,表示无法找到数据文件。这通常是因为文件路径不正确、文件被移动或删除,或者文件在集群环境中没有正确配置。解决这个问题需要检查文件是否存在、路径是否正确,并确保所有...
ORA-01555 错误处理 - `ORA-01555`错误通常是由于快照过旧导致的,解决方法包括增加回滚段的大小、优化SQL语句等。 ### 18. ORACLE_HOME 和 ORACLE_BASE - `ORACLE_BASE`是指Oracle产品的根目录,通常包含多个...
- **错误处理**:在使用SQL*Plus时,如果遇到错误,可以通过查看错误消息和错误编号来定位问题。 - **附加信息**:如果不确定错误的原因,可以进一步查阅Oracle文档或其他在线资源获取更详细的帮助信息。 ### 结论 ...
6. 并发控制:Oracle的多用户并发访问机制,包括事务、锁和并发控制策略,是保证数据一致性和完整性的关键。了解MVCC(多版本并发控制)和行级锁定对解决并发问题至关重要。 7. 高可用性与复制:Oracle的RAC(Real ...
- **事务处理** - 了解事务的概念及如何使用事务来保证数据完整性。 #### 十、PL/SQL编程 - **存储过程和函数** - 开发复用性强的PL/SQL代码块。 - **触发器** - 自动执行响应特定事件的代码。 #### 十一、...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,具有复杂的体系结构,包括物理结构、内存结构、实例、会话、事务、后台进程以及逻辑结构等多个方面。下面将详细解释这些概念。 1. **Oracle 体系结构** - ...
- 它们通常用于处理大量数据集或执行复杂的数据处理任务。 25. **审计追踪(Audit Trail)** - 审计追踪记录了用户活动的历史信息,对于安全审计非常有用。 - 在 Unix 系统中,审计文件位于 `$ORACLE_HOME/rdbms/...
- **锁**:数据库锁是一种机制,用于控制并发事务对同一数据资源的访问。它确保了数据的一致性和完整性。锁可以分为多种类型,如共享锁、排他锁等。 #### 2. 如何备份控制文件? - 可以通过命令 `ALTER DATABASE ...
19. **处理ORA-01555错误** - 错误提示快照太旧,可能需要增大回滚段,同时检查导致错误的SQL语句。 20. **$ORACLE_HOME与$ORACLE_BASE的区别** - $ORACLE_BASE是Oracle软件安装的基础目录,而$ORACLE_HOME是具体...