创建的用户,那么现在谁拥有创建的表?
Created user, so now who owns the tables created?
我的大部分背景知识来自 sql server
,所以我在 Oracle 术语方面遇到了困难。
在 sql server
中,我创建了数据库 Sales
并使用 create table dbo.MyTable {...}
在 Sales
下创建了对象。现在我可以用 select * from Sales.dbo.MyTable
查询这个 table。在 Management Studio
中,我会在 Sales
和 Tables
下看到我的 table dbo.Sales
。很明显,这些对象与销售相关。
我正在尝试对 Oracle 做同样的事情。显然,everything can reside under the same database 架构发生了变化。
因此,在安装 Oracle XE 11.2 之后,我能够使用用户 sys
.
登录到 SID XE
使用 sys
登录后,我创建了一个用户 SALESMANAGER
并授予了权限:
CREATE USER salesmanager IDENTIFIED BY mypassword;
GRANT CONNECT, RESOURCE, DBA TO salesmanager;
现在我有一个用户和一个名为 SALESMANAGER
的空模式。我以 SALESMANAGER
身份登录,然后创建了 table Totals
。现在 table falls 在架构 SALESMANAGER
.
下
我不想要他们在那个模式下;我希望它们属于 SALES
。如果我创建另一个用户 SALES
,那么我将创建另一个架构。
我知道我的逻辑是错误的,所以感谢您的帮助。
你说的都是对的。
如果您希望用户 SALES
包含您的 table,您为什么不创建它(而是创建了 SALESMANAGER
)?
因此:再次以 SYS
身份连接,然后
drop user salesmanager cascade;
CREATE USER sales IDENTIFIED BY mypassword;
grant create session, create table to sales;
不要授予您不需要的权限。特别是,不要授予 DBA(这是一个强大的角色)。如果事实证明您需要额外的权限(当然您会 - 例如 create view
、create sequence
、...),请授予它们。
现在,以 sales
身份连接并创建 totals
table。
如果你想保留 salesmanager
用户,请不要放弃它。然后,用户 sales
可以将其 table 的某些权限授予其他用户 - salesmanager
包括在内。连接为 sales
:
create table totals (id number, total number);
insert into totals (id, total) values (1, 100);
grant select on totals to salesmanager;
连接为 salesmanager
:
select * From sales.totals; --> precede table name with its owner
我的大部分背景知识来自 sql server
,所以我在 Oracle 术语方面遇到了困难。
在 sql server
中,我创建了数据库 Sales
并使用 create table dbo.MyTable {...}
在 Sales
下创建了对象。现在我可以用 select * from Sales.dbo.MyTable
查询这个 table。在 Management Studio
中,我会在 Sales
和 Tables
下看到我的 table dbo.Sales
。很明显,这些对象与销售相关。
我正在尝试对 Oracle 做同样的事情。显然,everything can reside under the same database 架构发生了变化。
因此,在安装 Oracle XE 11.2 之后,我能够使用用户 sys
.
XE
使用 sys
登录后,我创建了一个用户 SALESMANAGER
并授予了权限:
CREATE USER salesmanager IDENTIFIED BY mypassword;
GRANT CONNECT, RESOURCE, DBA TO salesmanager;
现在我有一个用户和一个名为 SALESMANAGER
的空模式。我以 SALESMANAGER
身份登录,然后创建了 table Totals
。现在 table falls 在架构 SALESMANAGER
.
我不想要他们在那个模式下;我希望它们属于 SALES
。如果我创建另一个用户 SALES
,那么我将创建另一个架构。
我知道我的逻辑是错误的,所以感谢您的帮助。
你说的都是对的。
如果您希望用户 SALES
包含您的 table,您为什么不创建它(而是创建了 SALESMANAGER
)?
因此:再次以 SYS
身份连接,然后
drop user salesmanager cascade;
CREATE USER sales IDENTIFIED BY mypassword;
grant create session, create table to sales;
不要授予您不需要的权限。特别是,不要授予 DBA(这是一个强大的角色)。如果事实证明您需要额外的权限(当然您会 - 例如 create view
、create sequence
、...),请授予它们。
现在,以 sales
身份连接并创建 totals
table。
如果你想保留 salesmanager
用户,请不要放弃它。然后,用户 sales
可以将其 table 的某些权限授予其他用户 - salesmanager
包括在内。连接为 sales
:
create table totals (id number, total number);
insert into totals (id, total) values (1, 100);
grant select on totals to salesmanager;
连接为 salesmanager
:
select * From sales.totals; --> precede table name with its owner