SQLPlus
连接数据库,我们通常使用sqlplus,Oracle 提供的一个基于文本的连接工具,方便客户端连接正在运行的数据库。因为sqlplus需要知道它应该去哪里,所以你应该另外提供一个正确的连接字符串。
连接字符串
我们应该提供给sqlplus的连接字符串的格式通常由 3 个部分组成。
<用户名>/<密码>@<tnsname>
第一和第二部分是用户名和密码,它们构成了一对用于数据库验证连接的凭据。第三个是目的地,我们通常使用本地命名别名。
域名
本地命名是一个连接别名系统,它由一个名为tnsnames.ora的本地配置文件管理,将我们复杂的连接信息组织成一个简短易记的别名。
习惯上,我们称本地命名连接,别名管理系统简称为TNSNAME。这意味着,TNSNAME 代表您要连接到的目的地。
没有 TNSNAMES?
但是,你可以选择不使用TNSNAMES连接数据库的sqlplus,快速检查数据库是否可以连接也很实用,你可以看看。
接下来看看我们是如何通过SQLPlus进行连接和断开的。
- SQLPlus连接
- SQLPlus 断开连接
SQLPlus连接
有几种方法可以连接到sqlplus中的数据库。
在 sqlplus 上连接
我们可以将连接字符串附加到命令sqlplus以连接到数据库。
C:\Users\edchen>sqlplus hr/password@orclpdb
...
SQL> show user
USER is "HR"或者不指定密码。
C:\Users\edchen>sqlplus hr@orclpdb
...
Enter password:
如您所见,sqlplus提示您输入密码。
在 sqlplus 中连接
进入sqlplus的交互模式后,我们就可以连接到数据库了。您可以使用CONNECT或CONN来启动连接,它们是同义词。
C:\Users\edchen>sqlplus /nolog
...
SQL> conn hr/password@orclpdb
Connected.或者不指定密码。
SQL> conn hr@orclpdb
Enter password:
如您所见,sqlplus提示您输入密码。
连接后连接
如果您已连接到一个数据库,则可以连接到另一个数据库。
SQL> conn hr/password@orclpdb
Connected.
SQL> conn sh/password@orclpdb
Connected.在这种方式下,sqlplus隐式断开了之前的连接,然后按顺序处理新的连接请求。
SQLPlus 断开连接
在sqlplus中有多种方法可以断开与数据库的连接。
在不离开 SQLPlus 的情况下断开连接
要在不离开sqlplus交互模式的情况下显式断开会话,您可以发出DISCONNECT或DISC,它们是同义词。
SQL> disconnect
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL>如您所见,我们仍处于sqlplus的交互模式。我们可能随时发起另一个新连接。
断开连接并离开 SQLPlus
如果您不再使用sqlplus,则可以发出EXIT或QUIT以断开会话并离开程序。
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
C:\Users\edchen>如您所见,我们退出了程序。
隐式断开连接
正如我们之前谈到的,如果你已经连接到一个数据库,你可以什么都不说就连接到另一个数据库。
SQL> conn hr/password@orclpdb
Connected.
SQL> conn sh/password@orclpdb
Connected.在sqlplus中启动另一个连接将隐式断开当前会话与数据库的连接,并在同一程序中启动另一个新会话。
中断 SQLPlus
如果你一直卡在某个操作中,你可以按一个或多个Ctrl+c来强行中断程序,它会单方面终止连接,因为sqlplus没有机会通知数据库。
SQL> exec remote_update();
^C
C:\Users\edchen>由于连接因中断而终止,数据库不知道会话发生了什么。一段时间后,PMON 将回收服务器进程并回滚任何未提交的事务。
对于会话来说,事务是否会在与数据库断开连接时隐式提交是一个大问题。这取决于您如何断开会话。我们已经在如何设置自动提交开和关中讨论过它。
原文标题:SQLPlus Connect and Disconnect
原文作者:Ed Chen
原文链接:https://logic.edchen.org/sqlplus-connect-and-disconnect/




