ORA--00942表或试图不存在

ga3ga3 2012-01-04 03:06:49
我在windows下安装了ORACLE DB
增加了一个用户ABC,默认表空间为DEF
DEF表空间下有表 users

我用ABC连到sqlplus
但是用
select * from users;
报“ORA--00942表或试图不存在”错误!

除非使用
select * from DEF.users;

这个问题不知道如何解决,我以前没有碰到过。oracle也是略懂。
...全文
191 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
888888888888 2012-01-17
  • 打赏
  • 举报
回复
这还用看吗? 语句的基本问题。访问别的表空间数据,而自身权限又不足。
晨与飞扬 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 herowhpa 的回复:]
楼主,你确定DEF是表空间,我觉得你ABC和DEF都是用户,然后你用ABC用户登陆查询DEF用户下的肯定就会出现楼主所说的问题!
[/Quote]

我认为2楼说的对.
kai27ks 2012-01-09
  • 打赏
  • 举报
回复
应该是权限问题。你用配额quota查一下
Yakecanz 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 ga3ga3 的回复:]
我在windows下安装了ORACLE DB
增加了一个用户ABC,默认表空间为DEF
DEF表空间下有表 users

我用ABC连到sqlplus
但是用
select * from users;
报“ORA--00942表或试图不存在”错误!

除非使用
select * from DEF.users;

这个问题不知道如何解决,我以前没有碰到过。oracle也是略……
[/Quote]
ABC用户默认的表空间DEF,在用户select时是透明的,可以完全不知道用户默认的表空间都行。你也可再添加多一个用户,指定他的默认表空间为DBF也是行的。
users是在DBF这个表空间,从你发出的错误码提示信息,应该是users表并不在ABC这个SCHEMA里。你的用户ABC要select users这个表,拥有users这个表的select权限或你的ABC用户拥有SELECT ANY TABLE的系统权限。然后
SELECT * FROM schema.users;
秋雨飘落 2012-01-04
  • 打赏
  • 举报
回复
最基础的多看看了~~~
ga3ga3 2012-01-04
  • 打赏
  • 举报
回复
看来我得习惯用ABC去创建表,而不是sys,否则就会有上述的问题。

sys能否授权ABC去访问users呢
我试了下grant 好像不行
EastHoo 2012-01-04
  • 打赏
  • 举报
回复
楼主可以运行:
select * all_tables where table_name='USERS';
查看OWNER是不是DEF,而不是ABC。
ga3ga3 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 herowhpa 的回复:]
楼主,你确定DEF是表空间,我觉得你ABC和DEF都是用户,然后你用ABC用户登陆查询DEF用户下的肯定就会出现楼主所说的问题!
[/Quote]

是表空间,我举例的时候随便起了个名,可能说的不太清楚。呵呵
ga3ga3 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 ga3ga3 的回复:]
我在windows下安装了ORACLE DB
增加了一个用户ABC,默认表空间为DEF
DEF表空间下有表 users

我用ABC连到sqlplus
但是用
select * from users;
报“ORA--00942表或试图不存在”错误!

除非使用
select * from DEF.users;

这个问题不知道如何解决,我以前没有碰到过。oracle也是略……
[/Quote]


如你所说,我的表是用sys创建的,因此abc可能查询时必须加表空间,虽然sys用户设置了ABC的默认表空间为DEF,查的时候仍然需要加表空间前缀。

我用ABC登陆,并创建表,可以直接查询的,这应该是个表的访问权限问题。
herowhpa 2012-01-04
  • 打赏
  • 举报
回复
楼主,你确定DEF是表空间,我觉得你ABC和DEF都是用户,然后你用ABC用户登陆查询DEF用户下的肯定就会出现楼主所说的问题!
我心飞翔 2012-01-04
  • 打赏
  • 举报
回复
你的概念有问题吧。
建议用ABC登录,然后建立一个表,语句可参考下面的代码:

CREATE TABLE T89
(
ID NUMBER(4),
NAME VARCHAR2(20),
Age NUMBER(4)
);

INSERT INTO T89 VALUES(1, 'A', 20);
INSERT INTO T89 VALUES(1, 'A', 20);
INSERT INTO T89 VALUES(2, 'B', 30);
INSERT INTO T89 VALUES(2, 'B', 30);
INSERT INTO T89 VALUES(3, 'C', 40);
INSERT INTO T89 VALUES(3, 'C', 40);

然后,直接执行select * from T89;

可以查询到相应的记录。因为T89是ABC这个用记创建的,所以ABC可以直接访问。
你描述的情况,应该是DEF用户创建的users这个表,然后用ABC去登录做查询,当然要加限定名了。
Oracle 主要配置文件介绍:profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件1.2 Oracle 主要配置文件介绍1.2.1 /etc/profile 文件 系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/8.1.7 export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export ORACLE_SID=cams export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data export NLS_LANG=AMERICAN.ZHS16CGB231280 & 说明 1 配置上述环境变量要注意定义的先后顺序 如 定义 ORACLE_HOME 时 用 到 了 ORACLE_BASE 那 么 ORACLE_HOME 的 定 义 应 该 在 ORACLE_BASE之后 2 在使用中文版 CAMS 时 环境变量 NLS_LANG 的值应该设置为 AMERICAN.ZHS16CGB231280 如上所示 在使用英文版 CAMS时 可 以不设置 NLS_LANG 即去掉 export NLS_LANG=... ... 那一行 也可以 设置 NLS_LANG 的值为 AMERICAN_AMERICA.US7ASCII1.2.2 /etc/oratab 文件 /etc/oratab 文件描述目前系统中创建的数据库实例 以及是否通过 dbstart 和 dbshut 来控制该实例的启动与关闭 如下所示 忽略以#开头的注释部分 : cams:/u01/app/oracle/product/8.1.7:Y 其中 cams 为实例 ID /u01/app/oracle/product/8.1.7为 ORACLE_HOME目 录 Y示允许使用 dbstart和 dbshut 启动和关闭该实例数据库 如果设置为 N 示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动 和关闭 1.2.3 数据库实例初始化文件 initSID.ora 每个数据库实例都有一个初始化 参数文件 其缺省 存放的路径为 $ORACLE_BASE/admin//pfile 其名称为 init.ora 如 cams 实 例 对 应 的 参 数 文 件 为 initcams.ora 缺 省 存 放 路 径 为 $ORACLE_BASE/admin/cams/pfile 即/u01/app/oracle/admin/cams/pfile

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧