Oracle alter table权限不足
我刚刚安装了oracle 12c,然后我试图授予用户各种权利。Oracle alter table权限不足
我以系统身份登录,并且我已为create user
授予了工作权。然而,尽管alter table
授予权限它给了我错误
ORA-00990: missing or invalid privilege
研究对这个问题把我带到了另一个post上SO。这篇文章的评论表明,这是因为我没有登录为GLOBAL
用户。但是我不知道如何以GLOBAL
用户身份登录。
我必须创建一个吗?
有没有其他解决方案?
没有ALTER TABLE
特权。有效的权限是listed in the documentation。
如果您有CREATE TABLE
那么您可以创建并更改自己的表格。要改变另一个模式中表的定义,您需要ALTER ANY TABLE
权限。
奇怪this page确实提到ALTER TABLE
:
例如,为了在表上创建一个触发器,用户既需要该表的
ALTER TABLE
对象特权和CREATE TRIGGER
系统特权。
的ALTER TABLE
command prerequisites也说:
该表必须在您自己的方案,否则必须对表
ALTER
对象权限,或者您必须ALTER ANY TABLE
系统权限。
在这种情况下,它更清晰一点; “ALTER
对象权限”意味着你已经直接放在桌子上的所有者授予ALTER
,而不是通过ALTER ANY TABLE
系统权限,如:
create table t42(id number);
grant alter on t42 to user2;
然后user2
将能够alter table t42 ...
,或创建触发它(例如),但不是任何其他表。
正确。有用!我反而试图执行'grant alter table to username'.i没有指定哪个表可以改变。我也不知道你自动在你创建的桌面上获得'ALTER'权限。 – pdevel
试图菲格尔出什么问题,我猜你喜欢
SQL> conn system/***@***
Connected.
SQL> grant alter table to scott;
grant alter table to scott
*
error in line 1:
ORA-00990: missing or invalid privilege
执行的东西按照Oracle文档:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9013.htm#BABEFFEE
您可以授予ALTER ANY TABLE(这是一个强大的权利)或授予另一架构中特定表的ALTER特权:
SQL> grant alter any table to scott;
Granted.
SQL> grant alter on hr.event to scott;
Granted.
架构所有者始终具有ALTER特权了它拥有的对象:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_3001.htm#CJAHHIBI
“先决条件
表必须在你自己的模式,或者您必须对表的ALTER对象权限,或者您必须具有ALTER ANY TABLE系统特权。“
SQL> conn scott/[email protected]***
Connected.
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
SQL> create table t(x int);
Table created.
SQL> alter table t add (y int);
Table altered.
你登录了什么账号,你试图执行什么命令? –
您链接的帖子并不真正相关;在这种情况下,'GLOBAL'是他们尝试创建对象的特定模式,错误来自'create table'命令,而不是'grant'。 –
我登录到系统帐户,我试图执行'授予更改表到foo;' – pdevel