Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql DBA只读帐户_Sql_Oracle_Database Administration - Fatal编程技术网

Sql DBA只读帐户

Sql DBA只读帐户,sql,oracle,database-administration,Sql,Oracle,Database Administration,我在一个oracle数据库中有一个模式作为ui_prod。我要求我的DBA团队成员创建与ui_prod完全相同的模式,但作为只读模式,并将其命名为ui_prod_readonly。通常,我会使用OracleSQLDeveloper连接数据库,并直接使用表名进行查询,如下所示 --Connect to ui_prod select * from table 但为什么我要求在查询他们为我创建的只读模式时将所有者名称放在前面,因为如果不放在前面,我得到的错误表就不存在了 --Connect to u

我在一个oracle数据库中有一个模式作为ui_prod。我要求我的DBA团队成员创建与ui_prod完全相同的模式,但作为只读模式,并将其命名为ui_prod_readonly。通常,我会使用OracleSQLDeveloper连接数据库,并直接使用表名进行查询,如下所示

--Connect to ui_prod
select * from table
但为什么我要求在查询他们为我创建的只读模式时将所有者名称放在前面,因为如果不放在前面,我得到的错误表就不存在了

--Connect to ui_prod_readonly
select * from ui_prod.table

我有一些项目文件,它们只使用表名对sql查询进行硬编码,并且在前面添加所有者名称将导致许多更改和工作。有人能解释一下吗?或提供任何文件/链接供我阅读。谢谢

您应该查看同义词,显然您连接到数据库的用户不是对象的所有者。因此,要查看对象,必须在名称前面加上模式名(对象本身的所有者)


在我看来,DBA没有创建另一组表,只是将现有表授予用户ui_prod_readonly。

您应该查看同义词,显然您连接到数据库的用户不是对象的所有者。因此,要查看对象,必须在名称前面加上模式名(对象本身的所有者)


在我看来,您的DBA没有创建另一组表,只是将现有表授予用户ui_prod_readonly。

当您登录到Oracle时,当前模式是您用来登录的用户的名称。因此,如果您使用
ui\u prod\u readonly
Oracle登录,如果您没有使用所有者(=schema)对该模式进行限定,则会检查该模式

如果要更改当前模式,以便不需要完全限定表,可以使用
ALTER SESSION

alter session set current_schema = ui_prod;

完成此操作后,不需要使用所有者(=架构)完全限定表。

登录到Oracle时,当前架构是用于登录的用户的名称。因此,如果您使用
ui\u prod\u readonly
Oracle登录,如果您没有使用所有者(=schema)对该模式进行限定,则会检查该模式

如果要更改当前模式,以便不需要完全限定表,可以使用
ALTER SESSION

alter session set current_schema = ui_prod;

完成此操作后,如果需要用户仅读取数据,则不需要使用所有者(=架构)完全限定表。

创建新用户并只授予其选择权限非常简单

您可以使用创建用户并授予选择权限

CREATE USER [user] IDENTIFIED BY [your_password];
grant select on table to [user]

如果您只需要用户读取数据 创建新用户并只授予其选择权限非常简单

您可以使用创建用户并授予选择权限

CREATE USER [user] IDENTIFIED BY [your_password];
grant select on table to [user]