通过 CONNECT 脚本命令创建的连接在未连接的情况下断开连接 - ORACLE

Connection created by CONNECT script command disconnected without connecting - ORACLE

提问人:Formerz 提问时间:10/29/2023 最后编辑:Formerz 更新时间:11/5/2023 访问量:58

问:

我正在尝试在我的 MAC M1 中使用 oracle 数据库,我使用 oracle xe 11g 映像为 oracle 配置了带有 docker 的 oracle,并使用了 Colima, 如此处的步骤所示链接

我正在使用 sql 开发人员来执行我的命令。

我想:

  • 创建新用户
  • 授予他特权
  • 连接到该用户
  • 并执行命令(创建表..)

问题在于:

我的连接命令没有连接,即使我没有逐行运行我的脚本,我仍然将 SYS 作为当前用户。

如下图所示

请帮我解决这个问题,如果我没有很好地表达我的担忧,我很抱歉。

编辑

如果我尝试创建代理用户,就会发生这种情况,但仍然无法连接。

请点击这里查看

SQL 数据库 docker oracle11g apple-m1

评论


答:

0赞 paganini 11/2/2023 #1

因此,当您以用户代理身份连接并键入时,您将以 DBAIOT 身份进行连接,但您需要在 Developer 中选择两个语句并执行它们,因为您将自动注销为用户。show userSYS

create user DBAIOT identified by psw;
grant all privileges to DBAIOT;
show user 

create user proxy_user identified by proxy
grant create session to proxy_user; 
alter user DBAIOT grant connect through proxy_user; 

conn proxy_user[DBAIOT]/proxy
show user

编辑2:

这就是它的工作方式,看看我的截图。enter image description here

我选择首先登录,然后打印当前用户,并在执行语句后再次连接到 SYS。现在,无论我接下来做什么,我都需要选择连接查询并执行其他所有内容,例如 CREATE TABLE。

enter image description here

如您所见,表已创建,我们断开连接并连接到我在开始时连接的 SYS 用户。

现在我们可以检查作为表所有者的 SYS 用户。

enter image description here

正如我们所看到的,所有者是 DBAIOT,我们可以看到 Customers 表。

或者,您可以以 DBAIOT 用户身份再次连接,然后您将始终以 DBAIOT 用户身份执行语句。

enter image description here

评论

0赞 Formerz 11/3/2023
我试过了,我知道 connect 会执行之后的内容并自动断开连接,因为我曾经在我的旧 mac 中使用它,但现在的问题是它甚至没有写入:connected,它直接显示消息:由 CONNECT 脚本命令创建的连接已断开连接。谢谢你的帮助
0赞 paganini 11/4/2023
@Formerz 您需要创建代理用户,并通过代理用户登录 DBAIOT。检查我编辑的答案。
0赞 paganini 11/5/2023
@Formerz 但这没关系,我现在明白了这个问题,你需要用鼠标选择连接字符串和你想执行的所有内容。这意味着从“连接 DBAIOT/psw;”到“,鼠标意味着选择要执行的行,并且它们必须标记为蓝色,就像选择要复制的文件时一样。然后一切都将作为 DBIOT 执行,完成后您将断开连接并连接到用户,我猜之前是 SYS。
0赞 Formerz 11/5/2023
当我尝试执行您的建议时,请检查我的编辑,问题是否可能出在我的 oracle 版本或配置上?
0赞 paganini 11/5/2023
查看我编辑的答案