ORA-14450 attempt to access a transactional temp table already in use

Cause: An attempt was made to access a transactional temporary table that has been already populated by a concurrent transaction of the same session.

Action: Do not attempt to access the temporary table until the concurrent transaction has committed or aborted.

一般情况下,ORA-14450在自治事务中出现的多一些,大家在使用自治事务时一定要小心

SQL> create global temporary table temp_toms
2 (
3 str varchar2(64)
4 ) on commit delete rows;

表已创建.

SQL>

SQL> select * from temp_toms;

未选定行

SQL> insert into temp_toms values('1234');

已创建 1 行。

SQL> select * from temp_toms;

STR
--------------------------------
1234

SQL> 
SQL> declare
2 pragma autonomous_transaction;
3 begin
4 insert into temp_toms values('other transaction use temp_toms test');
5 commit;
6 end;
7 /
declare
*
第 1 行出现错误:
ORA-14450: 试图访问已经在使用的事务处理临时表
ORA-06512: 在 line 4

SQL> select * from temp_toms;

STR
--------------------------------
1234

SQL>

另外一种情况下,也能出现ORA-14450的错误,测试如下

SQL> select sid from v$mystat where rownum=1;

SID
----------
104
SQL>

SQL> desc temp_toms
名称 是否为空? 类型
----------------------------------------- -------- -----------------
STR VARCHAR2(32)

SQL> insert into temp_toms values('modify structur test');

已创建 1 行。

SQL> 
SQL> select * from temp_toms;

STR
--------------------------------
modify structur test

SQL>

此时,在SID=104的session中不做commit/rollback,打开另外一个session,尝试修改临时表结构,
看看会出现什么现象:

C:Documents and Settingsunix>sqlplus study/study

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 6 12:26:54 2006

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select sid from v$mystat where rownum=1;

SID
----------
90

SQL>
SQL> alter table temp_toms add name varchar2(32);
alter table temp_toms add name varchar2(32)
*
第 1 行出现错误:
ORA-14450: 试图访问已经在使用的事务处理临时表

ORA-14450的更多相关文章

  1. ORA-14450: attempt to access a transactional temp table already in use

    在ORACLE数据中修改会话级临时表时,有可能会遇到ORA-14550错误,那么为什么会话级全局临时表会报ORA-14450错误呢,如下所示,我们先从一个小小案例入手: 案例1: SQL> CR ...

  2. ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置

    需求:客户端(192.168.25.1)需要访问服务端(192.168.7.215)的Oracle库ORCL. 步骤一:配置客户端tnsnames.ora 步骤二:配置服务端listener.ora ...

  3. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  4. Oracle RAC客户端tnsnames.ora相关配置及测试

    1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...

  5. oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件

    总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ...

  6. oracle客户端安装配置 tnsnames.ora文件

    Oracle客户端tnsnames.ora连接配置 Oracle90的在C:\Oracle\ora90\network\ADMIN下面 Oracel10g的在D:\oracle\product\10. ...

  7. 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法

    1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...

  8. 安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?

    如果我们由于需要安装了多个Oracle的client,哪个客户端的tnsnames.ora会起作用呢? 答案是: 在安装好clinent端后,安装程序会把client的bin目录放到path里面,pa ...

  9. PLSQL登录数据库 报ORA -12154的诡异问题

    https://q.cnblogs.com/q/89420/ 现象: 1.机器上先后安装了oracle两个版本的client.在装第一个client后,plsql可以顺利连接数据库a并登录. 2.安装 ...

  10. tnsnames.ora配置注意(连接新的数据库)

    文件地址D:\app\think\product\11.2.0\instantclient_11_2\network\admin\tnsnames.ora# tnsnames.ora Network ...

随机推荐

  1. C#图像处理(3):在图像上加条形码

    引入Aspose.BarCode用来生成条形码,方法如下: /// <summary> /// 生成条码 /// </summary> /// <param name=& ...

  2. silverlight 生成图表 WCF 解析XML代码.svc.cs 文件

    silverlight 调用wcf 文件代码 private ListItem AnalyzeXML(string XMLCode, string Reportdate, string ChartNa ...

  3. iOS横竖屏

    现在开发的APP大部分界面是竖屏的,只有视频播放的界面和webview阅读文字的界面是可以横屏操作的. 那么就进行如下处理: 1.首先确保APP支持横屏旋转 2.我的App里面都是走UINavigat ...

  4. UVA442 栈

    C - Matrix Chain Multiplication Crawling in process... Crawling failed Time Limit:3000MS     Memory ...

  5. java基础知识3

    58.线程的基本概念.线程的基本状态以及状态之间的关系线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行.就绪.挂 ...

  6. Opensuse13.2开启ssh

    要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...

  7. ffmpeg编译时freetype2 not found错误

    自己安装的libfreetype2在/usr/local/lib目录下export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

  8. Codeforces 486D D. Valid Sets

    http://codeforces.com/contest/486/problem/D 题意:给定一棵树,点上有权值,以及d,要求有多少种联通块满足最大值减最小值小于等于d. 思路:枚举i作为最大的点 ...

  9. 浅谈 qmake 之 shadow build(将源码路径和构建路径分开,一套源码要分别用msvc2008、msvc2008、mingw分别编译又不互相干扰)

    shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake ...

  10. 深入浅出CChart 每日一课——第十八课 女神的套娃,玩转对话框

    前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用C ...