请求访问附近的 Oracle 数据库,需要更新语句 (ora-01031)

Request access to nearby Oracle database, need update statement (ora-01031)

我有

url:  jdbc:oracle:thin:@195.123.456.789:1521:someSID
User: artem
Password: unchangeableForAllUsers

我还有第二个数据库,都一样,只是改了名字

url:  jdbc:oracle:thin:@195.123.456.789:1521:someSID
User: denis
Password: unchangeableForAllUsers

如何从一个数据库向另一个数据库进行更新查询?使用 pl/sql 当我尝试将 artem.table 更改为 denis.table:

时,我从 Web 浏览器收到了下一条消息

ORA-01031: insufficient privileges

SQL Statement ignored

当我尝试在 artem pl/sql 包中保存更改时(查询 denis db,就像那样

update denis.table dt
set dt.someColumn=1
where dt.ID=3305;

),请参阅我的下一个 IDE:

PL/SQL ORA-00942: User table or view does not exist

当我在 IDE 时,像 artem 一样登录,我可以从 IDE SQL 控制台免费更改和提交其他用户数据库。也许是因为他们有url 和密码相同?如何保存查询

update denis.table dt
set dt.someColumn=1
where dt.ID=3305;

在 artem 包中,当我像 artem 一样登录时,可以从网站访问(更新单元格)到附近的数据库。 谢谢

如上所述,这不是 jdbc 或 plsql 问题,而是权限问题。

您正在连接到同一个数据库,但作为两个不同的用户。在 Oracle 中,用户有自己的模式(与用户同名)。如果您希望从架构 B 访问架构 A 中的数据,架构 A 必须授予架构 B 的权限。

例如,如果您希望用户 "artem" 有权在架构 "denis" 中更新 table "mytable",请登录帐户 "denis"并向 "artem":

授予更新权限
-- While logged in as "denis"
GRANT UPDATE ON mytable TO artem;

现在您可以 "artem" 登录并查询 "denis.mytable"。您可能想提供的资助:SELECTINSERTUPDATEDELETE。这当然是双向的(如果您希望用户 "denis" 可以访问 "artem" 对象,那么 "artem" 必须授予 "denis" 权限。