数据库中现在有个A用户的表a。
创建一个B用户,拥有的角色是dba,connect.
B用户建立视图b,b中用a表,但是在创建的时候提示权限不足 。
但是直接执行视图的sql时候是可以访问的。创建视图代码如下create or replace view inPatiRegInfo as
--inPatiRegInfo
select .........
from A.a
难道dba的权限,在创建视图的时候不允许使用其他用户的表吗。
创建一个B用户,拥有的角色是dba,connect.
B用户建立视图b,b中用a表,但是在创建的时候提示权限不足 。
但是直接执行视图的sql时候是可以访问的。创建视图代码如下create or replace view inPatiRegInfo as
--inPatiRegInfo
select .........
from A.a
难道dba的权限,在创建视图的时候不允许使用其他用户的表吗。
解决方案 »
- desc的问题
- 我这样写只能查询 T2.SN = '2303' 的一个结果,我想一次同时查询出 SN = 2021,2022,2023,2024......对应的NAME结果集
- 如何把在用PLSQL 实现下面的功能阿?
- 求,http://www.oracle.com.cn 注册邀请码
- 求助 空间数据导入的提速问题?
- ORACLE的一个问题
- 如何更改角色CONNECT的对象权限,急急急
- 高手请看
- 请问应该怎样该一个表的名字?
- 现有数据库中的一个字段,比如:一个name 对应 tel: 010-66666666,我现在想将这个列分为两个列,010 和 66666666,name 有重复,我应该怎
- oracle10g,有没有不足位数补0的函数?
- 非常奇怪的问题。
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> grant sysdba to scott;
Grant succeeded
SQL> conn scott@orcl200 as sysdba
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> create or replace view my_view as select * from tds.info_app;
View created
SQL>
已连接。
/****************************************/
/*****Welcome To The Local Database ********/
/****************************************/
SYS@oamis>>grant dba to scott;授权成功。已用时间: 00: 00: 00.13
SYS@oamis>>conn scott/tiger
已连接。
/****************************************/
/*****Welcome To The Local Database ********/
/****************************************/
SCOTT@oamis>>create or replace view test_view as
2 select * from duqiang.TEST_DATA;
select * from duqiang.TEST_DATA
*
第 2 行出现错误:
ORA-01031: 权限不足
已用时间: 00: 00: 00.03
SCOTT@oamis>>CONN DUQIANG/DUQIANG
已连接。
/****************************************/
/*****Welcome To The Local Database ********/
/****************************************/
DUQIANG@oamis>>GRANT SELECT ANY TABLE TO SCOTT;
GRANT SELECT ANY TABLE TO SCOTT
*
第 1 行出现错误:
ORA-01031: 权限不足
已用时间: 00: 00: 00.06
DUQIANG@oamis>>GRANT SELECT ON TEST_DATA TO SCOTT;授权成功。已用时间: 00: 00: 00.10
DUQIANG@oamis>>CONN SCOTT/TIGER
已连接。
/****************************************/
/*****Welcome To The Local Database ********/
/****************************************/
SCOTT@oamis>>CREATE OR REPLACE TEST_VIEW AS
2 SELECT * FROM DUQIANG.TEST_DATA;
CREATE OR REPLACE TEST_VIEW AS
*
第 1 行出现错误:
ORA-00922: 选项缺失或无效
已用时间: 00: 00: 00.01
SCOTT@oamis>>SHOW ERRORS;
没有错误。
SCOTT@oamis>>/
CREATE OR REPLACE TEST_VIEW AS
*
第 1 行出现错误:
ORA-00922: 选项缺失或无效
已用时间: 00: 00: 00.00
SCOTT@oamis>>L
1 CREATE OR REPLACE TEST_VIEW AS
2* SELECT * FROM DUQIANG.TEST_DATA
SCOTT@oamis>>ED
已写入 file afiedt.buf
'C:\Program' 不是内部或外部命令,也不是可运行的程序
或批处理文件。 1 CREATE OR REPLACE TEST_VIEW AS
2* SELECT * FROM DUQIANG.TEST_DATA
SCOTT@oamis>>CREATE OR REPLACE VIEW TEST_VIEW AS
2 SELECT * FROM DUQIANG.TEST_DATA;视图已创建。已用时间: 00: 00: 00.03
只有通过a用户给b授权后,b才能够在a的表示创建视图。
DUQIANG@oamis>>GRANT SELECT ON TEST_DATA TO SCOTT;授权成功。
不知道我的理解是否正确!但从测试的效果看,应该就是这样的。
grant create view to A
单独执行视图中的SQL语句是可以的,而不能创建视图,
是不是没有创建视图的权限!
SQL> show user
USER 为 "CHF"
SQL> grant dba to b;授权成功。SQL> select tname from tab;未选定行SQL> create table a(id int);表已创建。SQL> insert into a values(1);已创建 1 行。SQL> commit;提交完成。SQL> conn b/b@vm;
已连接。
SQL> select chf.a;
select chf.a
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
SQL> select * from chf.a;
select * from chf.a
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> conn chf/xifenfei@vm;
已连接。
SQL> grant select on a to b;授权成功。SQL> conn b/b@vm;
已连接。
SQL> select * from chf.a; ID
----------
1
也许因为dba是system级别的,而我们访问表是object级别的,所以不行哦