如何解决ORA-14450 GTT 更改表问题
我在更改 GTT 表时遇到问题。
我需要找到那个表上的活跃用户,有人可以帮忙查询如何在oracle数据库中的特定对象上找到活跃用户
解决方法
据我所知,您没有说明您要解决什么问题,而是说明了您认为可能会帮助您解决什么问题。所以,让我猜猜看。
这是一个全局临时表 (GTT):
SQL> create global temporary table gtt (id number) on commit preserve rows;
Table created.
SQL> insert into gtt values (1);
1 row created.
SQL> commit;
Commit complete.
您正在尝试更改它,但是 - 它失败了:
SQL> alter table gtt add name varchar2(10);
alter table gtt add name varchar2(10)
*
ERROR at line 1:
ORA-14450: attempt to access a transactional temp table already in use
好的,所以 - 删除行并提交,然后再试一次:
SQL> delete from gtt;
1 row deleted.
SQL> commit;
Commit complete.
SQL> alter table gtt add name varchar2(10);
alter table gtt add name varchar2(10)
*
ERROR at line 1:
ORA-14450: attempt to access a transactional temp table already in use
仍然没有运气。但是,如果你截断表格,那么它有效:
SQL> truncate table gtt;
Table truncated.
SQL> alter table gtt add name varchar2(10);
Table altered.
SQL>
如果这不是您所追求的,那么看看这是否能回答您的问题:以特权用户身份连接(例如 SYS,如果您没有其他用户)并运行这样的查询:它显示谁拥有GTT、它的名称、谁锁定了它(哪个 Oracle 用户)以及它是哪个操作系统用户(这可能有助于您联系这些人):
SQL> select b.owner,2 b.object_name,3 a.oracle_username,4 a.os_user_name
5 from v$locked_object a,dba_objects b
6 where a.object_id = b.object_id;
OWNER OBJECT_NAM ORACLE_USERNAME OS_USER_NAME
--------------- ---------- --------------- ------------------------------
SCOTT GTT SCOTT littlefoot
SQL>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。