一直被我误解的create view,ORA-01031: 权限不足
2015-03-10 16:24
323 查看
以前一直以为create view权限会随着授予connect和resource角色(本人一般创建新用户时就给这两个角色)而授予,一直以为create view权限就是resource角色的一部分。但是今天实验exp/imp时却发现大错特错。。。
1、用system进入SQL*Plus,创建用户并授权
SQL> create user test03 identified by a;
SQL> create user test04 identified by a;
SQL> grant connect,resource to test03,test04;
2、用test03进入查看
SQL> conn test03/a
SQL> select * from session_privs; //查看当前用户拥有什么权限
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
已选择10行。
3、通过上述select * from session_privs;语句可以看到test03并没有create view的权限的(test04当然也一样了啦)
4、以上只是从原理或者命令上看到test03并没有create view的权限,但我还是要动手exp/imp测试一下,虽然心里已经百分百确定了。。。
5、在test03上建两张表emp和dept
SQL> conn system/***
已连接。
SQL> create table test03.emp as select * from scott.emp;
SQL> create table test03.emp as select * from scott.dept;
create table test03.emp as select * from scott.dept
*
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用
SQL> create table test03.dept as select * from scott.dept;
6、创建视图v_loc连接两表查询哪个人住在哪里。
SQL> create or replace view test03.v_loc as
2 select ename,emp.deptno,loc from emp,dept
3 where emp.deptno=dept.deptno;
7、连上test03确定创建成功。
SQL> conn test03/a
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
V_LOC VIEW
SQL> select * from v_loc;
ENAME DEPTNO LOC
---------- ---------- -------------
SMITH 20 DALLAS
ALLEN 30 CHICAGO
。。。 。。。
8、exp test03/a file=test03.dmp成功
imp test04/a file=test03.dmp fromuser=test03 touser=test04报错:
IMP-00017: 由于 ORACLE 错误 1031, 以下语句失败:
"CREATE FORCE VIEW "TEST04"."V_LOC" ("ENAME","DEPTN"
"O","LOC") AS "
"select ename,emp.deptno,loc from emp,dept"
"where emp.deptno=dept.deptno"
IMP-00003: 遇到 ORACLE 错误 1031
ORA-01031: 权限不足
成功终止导入, 但出现警告。
即使加上ignore=y命令也不行
9、授予create view权限后导入成功
SQL> grant create view to test04;
SQL> conn test04/a
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
V_LOC VIEW
最后,我还是没明白create view为什么不是resource角色的一部分,为什么啊。。。谁能告诉我。。。
最后,想到直接在test03上创建视图也会报同样的错误
SQL> conn test03/a
已连接。
SQL> create view v_loc2 as
2 select ename,emp.deptno,loc from emp,dept
3 where emp.deptno=dept.deptno;
create view v_loc2 as
*
第 1 行出现错误:
ORA-01031: 权限不足
最后,往上第2步中UNLIMITED TABLESPACE好像不属于connect或resource角色的,那test03怎么会有这个权限的呢?。。。。。。
1、用system进入SQL*Plus,创建用户并授权
SQL> create user test03 identified by a;
SQL> create user test04 identified by a;
SQL> grant connect,resource to test03,test04;
2、用test03进入查看
SQL> conn test03/a
SQL> select * from session_privs; //查看当前用户拥有什么权限
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
已选择10行。
3、通过上述select * from session_privs;语句可以看到test03并没有create view的权限的(test04当然也一样了啦)
4、以上只是从原理或者命令上看到test03并没有create view的权限,但我还是要动手exp/imp测试一下,虽然心里已经百分百确定了。。。
5、在test03上建两张表emp和dept
SQL> conn system/***
已连接。
SQL> create table test03.emp as select * from scott.emp;
SQL> create table test03.emp as select * from scott.dept;
create table test03.emp as select * from scott.dept
*
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用
SQL> create table test03.dept as select * from scott.dept;
6、创建视图v_loc连接两表查询哪个人住在哪里。
SQL> create or replace view test03.v_loc as
2 select ename,emp.deptno,loc from emp,dept
3 where emp.deptno=dept.deptno;
7、连上test03确定创建成功。
SQL> conn test03/a
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
V_LOC VIEW
SQL> select * from v_loc;
ENAME DEPTNO LOC
---------- ---------- -------------
SMITH 20 DALLAS
ALLEN 30 CHICAGO
。。。 。。。
8、exp test03/a file=test03.dmp成功
imp test04/a file=test03.dmp fromuser=test03 touser=test04报错:
IMP-00017: 由于 ORACLE 错误 1031, 以下语句失败:
"CREATE FORCE VIEW "TEST04"."V_LOC" ("ENAME","DEPTN"
"O","LOC") AS "
"select ename,emp.deptno,loc from emp,dept"
"where emp.deptno=dept.deptno"
IMP-00003: 遇到 ORACLE 错误 1031
ORA-01031: 权限不足
成功终止导入, 但出现警告。
即使加上ignore=y命令也不行
9、授予create view权限后导入成功
SQL> grant create view to test04;
SQL> conn test04/a
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
V_LOC VIEW
最后,我还是没明白create view为什么不是resource角色的一部分,为什么啊。。。谁能告诉我。。。
最后,想到直接在test03上创建视图也会报同样的错误
SQL> conn test03/a
已连接。
SQL> create view v_loc2 as
2 select ename,emp.deptno,loc from emp,dept
3 where emp.deptno=dept.deptno;
create view v_loc2 as
*
第 1 行出现错误:
ORA-01031: 权限不足
最后,往上第2步中UNLIMITED TABLESPACE好像不属于connect或resource角色的,那test03怎么会有这个权限的呢?。。。。。。
相关文章推荐
- ora-01031:权限不足
- ORA-01031:权限不足的问题
- 存储过程中动态的创建表 报ORA-01031: insufficient privileges权限不足
- 【ORA】 ORA-01031:权限不足的问题
- 创建视图 ORA-01031: 权限不足
- Ora-01031权限不足
- ORA-01031: 权限不足
- java.sql.BatchUpdateException: ORA-01031: 权限不足
- ORA-01031:权限不足的问题
- 密码文件丢失导致不能登录pl/sql 错误 ora-01031 权限不足
- scott 创建视图权限不足 ora-01031
- Oracle ORA-01031:权限不足
- ORA-01031:权限不足的问题
- ORA-01031: 权限不足
- ORACLE存储过程运行报“ora-00942表或视图不存在”、“ORA-01031:权限不足”的解决方式
- oracle删除数据库,提示ora-01031:权限不足
- ORA-01031: 权限不足
- ORA-01031: 权限不足
- sys用户权限不足,本地登录失败 |ORA-01031 insufficient privileges|
- sys用户权限不足,本地登录失败 |ORA-01031 insufficient privileges|