提问人:Formerz 提问时间:10/29/2023 最后编辑:Formerz 更新时间:11/5/2023 访问量:58
通过 CONNECT 脚本命令创建的连接在未连接的情况下断开连接 - ORACLE
Connection created by CONNECT script command disconnected without connecting - ORACLE
问:
我正在尝试在我的 MAC M1 中使用 oracle 数据库,我使用 oracle xe 11g 映像为 oracle 配置了带有 docker 的 oracle,并使用了 Colima, 如此处的步骤所示链接
我正在使用 sql 开发人员来执行我的命令。
我想:
- 创建新用户
- 授予他特权
- 连接到该用户
- 并执行命令(创建表..)
问题在于:
我的连接命令没有连接,即使我没有逐行运行我的脚本,我仍然将 SYS 作为当前用户。
请帮我解决这个问题,如果我没有很好地表达我的担忧,我很抱歉。
编辑
如果我尝试创建代理用户,就会发生这种情况,但仍然无法连接。
答:
0赞
paganini
11/2/2023
#1
因此,当您以用户代理身份连接并键入时,您将以 DBAIOT 身份进行连接,但您需要在 Developer 中选择两个语句并执行它们,因为您将自动注销为用户。show user
SYS
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:
我选择首先登录,然后打印当前用户,并在执行语句后再次连接到 SYS。现在,无论我接下来做什么,我都需要选择连接查询并执行其他所有内容,例如 CREATE TABLE。
如您所见,表已创建,我们断开连接并连接到我在开始时连接的 SYS 用户。
现在我们可以检查作为表所有者的 SYS 用户。
正如我们所看到的,所有者是 DBAIOT,我们可以看到 Customers 表。
或者,您可以以 DBAIOT 用户身份再次连接,然后您将始终以 DBAIOT 用户身份执行语句。
评论
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
查看我编辑的答案
评论