You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c创建私有临时表报ORA-00903无效表名如何解决

根因说明

触发ORA-00903: invalid table name错误和权限、表空间配额无关,核心原因是私有临时表命名不符合数据库强制前缀规则:
你数据库的private_temp_table_prefix参数为默认值ORA$PTT_,该前缀匹配规则为大小写完全敏感的精确匹配,你建表时使用的表名ora$ppt_temp1前缀为小写ora$ppt_,和参数要求的大写前缀不匹配,Oracle直接判定表名非法。
额外说明:Oracle私有临时表存储在会话临时内存中,不会占用永久表空间空间,你之前给用户配置的USERS表空间配额对私有临时表不生效。

解决方法

将建表语句的表名调整为符合前缀要求的命名即可,修正后的SQL如下:

CREATE PRIVATE TEMPORARY TABLE ORA$PTT_temp1 (
    name varchar2(7),
    age int,
    employed int
) ON COMMIT PRESERVE DEFINITION;
注意事项
  • 私有临时表命名必须和private_temp_table_prefix参数值完全字符匹配,大小写、符号不一致都会触发非法表名错误
  • 现有CREATE SESSION、CREATE TABLE权限已经完全满足创建私有临时表的要求,不需要额外授权
  • 私有临时表仅对创建它的当前会话可见,会话断开后会自动清理删除,无需手动DROP
  • 如需调整私有临时表强制前缀,可执行ALTER SYSTEM SET private_temp_table_prefix='自定义前缀值' SCOPE=BOTH;修改参数,修改后所有新建私有临时表必须匹配新前缀规则

内容的提问来源于stack exchange,提问作者Paul D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:18:19