oracle如何设置用户其默认表架构?

meirenyongdemingzi 2010-01-17 06:37:20
大伙 我问个oracle的问题
我建了表空间,加了用户,给予了select any table权限了
并且成功导入数据库了
但是为什么我建的用户,就是不能访问这个用户导入的表,
要select * from 用户名.表名才能访问
不加用户名,提示表不存在
请大伙帮忙解决一下,谢谢了
...全文
204 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
meirenyongdemingzi 2010-01-29
  • 打赏
  • 举报
回复
解决了
用alter session set current_session='test'
xiaosheng2008 2010-01-22
  • 打赏
  • 举报
回复
应该是你没有导入到你想要的用户下

可以在imp的时候制定touser='your_user'来实现
SambaGao 2010-01-22
  • 打赏
  • 举报
回复
应该不是同一个用户。查一个select * from user_tables;
vanjayhsu 2010-01-21
  • 打赏
  • 举报
回复
建议你检查下你导入的表是否在你所建的TEST用户下吧。。。
vanjayhsu 2010-01-21
  • 打赏
  • 举报
回复
我以前做过很多类似的导入工作,基本上是跟楼主一样的步骤,但是没有出现楼主碰到的问题。
obuntu 2010-01-21
  • 打赏
  • 举报
回复
hr@QIN> select table_name from user_tables;

TABLE_NAME
------------------------------------------------------------
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOBS
JOB_HISTORY
LOCATIONS
REGIONS

已选择7行。

看是否有表。
meirenyongdemingzi 2010-01-20
  • 打赏
  • 举报
回复
--先建表空间
create tablespace TEST_DATA
logging
datafile 'D:\oracle\product\10.2.0\oradata\orcl\test_data.dbf' size 32m
extent management local
segment space management auto
autoallocate
--扩充大小
alter database
datafile 'D:\oracle\product\10.2.0\oradata\orcl\test_data.dbf'
resize 2048m
--建用户,等会用此用户导入
create user test identified by abc123
default tablespace TEST_DATA

--赋予权限,语句随没有赋予select权限,但后来赋予了select any table权限
grant create session,connect,resource,create user,drop user,alter user,create any view,drop any view,exp_full_database,imp_full_database,
dba,create table,execute any procedure to test

--导入
imp test/abc123 file=d:\test.dmp full=y ignore=y log=d:\test.log

--查询表
select * from base
提示表或视图不存在

select * from test.base
可以查到表了

这是为什么,我上面那步做错了???


meirenyongdemingzi 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fan123123 的回复:]
表不再该用户下
[/Quote]

我看过这个用户拥有的表了,是我要访问的表
我不加用户名,是访问不了的,要加了用户名才能访问,这个问题困扰了我快一个星期了
fan123123 2010-01-20
  • 打赏
  • 举报
回复
表不再该用户下
sorry0481 2010-01-20
  • 打赏
  • 举报
回复
楼主头像真可爱
lwei_998 2010-01-18
  • 打赏
  • 举报
回复
1.用test用户登录,查询当前用户拥有的表,看看有没有你要访问的那张表
select * from user_tables;

2.用test用户登录查看当前用户有什么权限
select PRIVILEGE from session_privs

3.用sys用户查看open状态的用户
SELECT * FROM DBA_USERS WHERE account_status='OPEN';

meirenyongdemingzi 2010-01-18
  • 打赏
  • 举报
回复
而且我用test用户登录后
select * from user_tab_privs
里面的记录没有找到关于test用的信息

select * from dba_sys_privs
结果是
DROP ANY VIEW
ALTER USER
EXECUTE ANY PROCEDURE
UNLIMITED TABLESPACE
CREATE TABLE
CREATE SESSION
SELECT ANY DICTIONARY
CREATE ANY VIEW
DROP USER
CREATE USER
SELECT ANY TABLE
这些权限,是不是不够权限??
meirenyongdemingzi 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lwei_998 的回复:]
1.用test用户登录,查询当前用户拥有的表,看看有没有你要访问的那张表
select * from user_tables;

2.用test用户登录查看当前用户有什么权限
select PRIVILEGE from session_privs

3.用sys用户查看open状态的用户
SELECT * FROM  DBA_USERS WHERE  account_status='OPEN';


[/Quote]

1、用test用户登录,查询当前用户拥有的表,看看有没有你要访问的那张表
select * from user_tables;
能查看到我要访问的表都在了
2、用test用户登录查看当前用户有什么权限
select PRIVILEGE from session_privs
有如下的权限
ADMINISTER ANY SQL TUNING SET
ADMINISTER DATABASE TRIGGER
ADMINISTER RESOURCE MANAGER
ADMINISTER SQL TUNING SET
ADVISOR
ALTER ANY CLUSTER
ALTER ANY DIMENSION
ALTER ANY EVALUATION CONTEXT
ALTER ANY INDEX
ALTER ANY INDEXTYPE
ALTER ANY LIBRARY
ALTER ANY MATERIALIZED VIEW
ALTER ANY OPERATOR
ALTER ANY OUTLINE
ALTER ANY PROCEDURE
ALTER ANY ROLE
ALTER ANY RULE
ALTER ANY RULE SET
ALTER ANY SEQUENCE
ALTER ANY SQL PROFILE
ALTER ANY TABLE
ALTER ANY TRIGGER
ALTER ANY TYPE
ALTER DATABASE
ALTER PROFILE
ALTER RESOURCE COST
ALTER ROLLBACK SEGMENT
ALTER SESSION
ALTER SYSTEM
ALTER TABLESPACE
ALTER USER
ANALYZE ANY
ANALYZE ANY DICTIONARY
AUDIT ANY
AUDIT SYSTEM
BACKUP ANY TABLE
BECOME USER
CHANGE NOTIFICATION
COMMENT ANY TABLE
CREATE ANY CLUSTER
CREATE ANY CONTEXT
CREATE ANY DIMENSION
CREATE ANY DIRECTORY
CREATE ANY EVALUATION CONTEXT
CREATE ANY INDEX
CREATE ANY INDEXTYPE
CREATE ANY JOB
CREATE ANY LIBRARY
CREATE ANY MATERIALIZED VIEW
CREATE ANY OPERATOR
CREATE ANY OUTLINE
CREATE ANY PROCEDURE
CREATE ANY RULE
CREATE ANY RULE SET
CREATE ANY SEQUENCE
CREATE ANY SQL PROFILE
CREATE ANY SYNONYM
CREATE ANY TABLE
CREATE ANY TRIGGER
CREATE ANY TYPE
CREATE ANY VIEW
CREATE CLUSTER
CREATE DATABASE LINK
CREATE DIMENSION
CREATE EVALUATION CONTEXT
CREATE EXTERNAL JOB
CREATE INDEXTYPE
CREATE JOB
CREATE LIBRARY
CREATE MATERIALIZED VIEW
CREATE OPERATOR
CREATE PROCEDURE
CREATE PROFILE
CREATE PUBLIC DATABASE LINK
CREATE PUBLIC SYNONYM
CREATE ROLE
CREATE ROLLBACK SEGMENT
CREATE RULE
CREATE RULE SET
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TABLESPACE
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
DEBUG ANY PROCEDURE
DEBUG CONNECT SESSION
DELETE ANY TABLE
DEQUEUE ANY QUEUE
DROP ANY CLUSTER
DROP ANY CONTEXT
DROP ANY DIMENSION
DROP ANY DIRECTORY
DROP ANY EVALUATION CONTEXT
DROP ANY INDEX
DROP ANY INDEXTYPE
DROP ANY LIBRARY
DROP ANY MATERIALIZED VIEW
DROP ANY OPERATOR
DROP ANY OUTLINE
DROP ANY PROCEDURE
DROP ANY ROLE
DROP ANY RULE
DROP ANY RULE SET
DROP ANY SEQUENCE
DROP ANY SQL PROFILE
DROP ANY SYNONYM
DROP ANY TABLE
DROP ANY TRIGGER
DROP ANY TYPE
DROP ANY VIEW
DROP PROFILE
DROP PUBLIC DATABASE LINK
DROP PUBLIC SYNONYM
DROP ROLLBACK SEGMENT
DROP TABLESPACE
DROP USER
ENQUEUE ANY QUEUE
EXECUTE ANY CLASS
EXECUTE ANY EVALUATION CONTEXT
EXECUTE ANY INDEXTYPE
EXECUTE ANY LIBRARY
EXECUTE ANY OPERATOR
EXECUTE ANY PROCEDURE
EXECUTE ANY PROGRAM
EXECUTE ANY RULE
EXECUTE ANY RULE SET
EXECUTE ANY TYPE
EXEMPT ACCESS POLICY
EXEMPT IDENTITY POLICY
EXPORT FULL DATABASE
FLASHBACK ANY TABLE
FORCE ANY TRANSACTION
FORCE TRANSACTION
GLOBAL QUERY REWRITE
GRANT ANY OBJECT PRIVILEGE
GRANT ANY PRIVILEGE
GRANT ANY ROLE
IMPORT FULL DATABASE
INSERT ANY TABLE
LOCK ANY TABLE
MANAGE ANY FILE GROUP
MANAGE ANY QUEUE
MANAGE FILE GROUP
MANAGE SCHEDULER
MANAGE TABLESPACE
MERGE ANY VIEW
ON COMMIT REFRESH
QUERY REWRITE
READ ANY FILE GROUP
RESTRICTED SESSION
RESUMABLE
SELECT ANY DICTIONARY
SELECT ANY SEQUENCE
SELECT ANY TABLE
SELECT ANY TRANSACTION
SYSDBA
SYSOPER
UNDER ANY TABLE
UNDER ANY TYPE
UNDER ANY VIEW
UNLIMITED TABLESPACE
UPDATE ANY TABLE
3、用sys用户查看open状态的用户
SELECT * FROM  DBA_USERS WHERE  account_status='OPEN';
account_status='open'

这样的信息有哪些是影响到test用户需要加自己的用户名才能访问表????
meirenyongdemingzi 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wh62592855 的回复:]
引用 4 楼 meirenyongdemingzi 的回复:
能解释一下为什么要这样做吗
我建立了用户,也给了他select权限,也是用这个用户登录的
为什么还要这样做?
楼主是在什么环境下进行操作的?

建议先去百度一下SCHEMA和user的区别
[/Quote]

我是在windows下,版本是10.2.0.1.0
我的操作是这样的:
1、先从服务器导出dmp文件
2、在本机oracle上新建dmp文件所需的表空间和用户名(test),并指定为默认表空间,赋予权限
3、用test用户执行导入,开始导入,并成功导入,但有警告,是关于一些视图,需要重新编译的警告,数据表都是导入的了
4、开始用test用户开始查表,但是提示无此表或视图
5、用system登录,加上test用户名去查表,可以查到数据
6、再用test用户登录,加上test用户名的方式查表,可以查到
原以为是没有为test用户赋select any table 权限
但是赋予了select any table 权限后也是如此,需加上用户名才能查表

楼上有人提到建同义词的方法,但我看到我导出dmp文件的服务器上的oracle没有synonym的相关配置,而且用test用户查表是不需要加用户名的
至今还没想明白是什么原因,我觉得应该就是权限的原因
z1984662005 2010-01-18
  • 打赏
  • 举报
回复
这个表是不是此用户创建的啊
wh62592855 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 meirenyongdemingzi 的回复:]
能解释一下为什么要这样做吗
我建立了用户,也给了他select权限,也是用这个用户登录的
为什么还要这样做?
[/Quote]楼主是在什么环境下进行操作的?

建议先去百度一下SCHEMA和user的区别
lolikong20 2010-01-17
  • 打赏
  • 举报
回复
不是很清楚啊
meirenyongdemingzi 2010-01-17
  • 打赏
  • 举报
回复
能解释一下为什么要这样做吗
我建立了用户,也给了他select权限,也是用这个用户登录的
为什么还要这样做?
lwei_998 2010-01-17
  • 打赏
  • 举报
回复
补充一点:这个用户要有创建同义词的权限:

grant create any synonym to &user_name;

然后在用这个用户登录:
create or replace synonym test for scott.test@sid;

查询当前用户下的同义词:
select * from user_synonyms;
lwei_998 2010-01-17
  • 打赏
  • 举报
回复
可以建同义词的方法来解决。

create or replace synonym &table_name for user.table_name@sid;

例如:
create or replace synonym table1 for scott.test@sid;

加载更多回复(1)

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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