ORA-1450 GTT更改表问题



I在更改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、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>

相关内容

  • 没有找到相关文章