SQL*Plus 是 Oracle 数据库中一个强大的命令行工具,它允许用户连接到 Oracle 数据库并执行 SQL 命令。它是一个交互式的 SQL 解释器,提供了丰富的功能,包括脚本执行、格式化输出、数据导出和导入等。

在本文中,我们将详细介绍 SQLPlus 的连接方式和常用命令,以及如何使用环境变量来优化 SQL*Plus 的使用体验。

连接方式

SQL*Plus 提供了多种连接到 Oracle 数据库的方法,以下是一些常见的连接方式:

系统认证方式

使用系统认证方式连接时,不需要提供用户名和密码。这种连接方式通常用于执行需要系统权限的操作。连接命令如下:

sqlplus / as sysdba

这个命令会以系统管理员身份连接到数据库。

简易连接方式

简易连接方式允许用户通过提供用户名、密码、IP 地址、监听端口号和实例名来连接到数据库。命令格式如下:

sqlplus 用户名/密码@IP地址:监听端口号/实例名 as sysdba

例如,如果你想以用户 sys 的身份连接到 IP 地址为 10.211.55.222,实例名为 orcl 的数据库,并以系统管理员权限运行,你可以使用以下命令:

sqlplus sys/oracle@10.211.55.222:1521/orcl as sysdba

TNS 连接方式

在使用 TNS 连接方式之前,需要确保 TNS 名称已经在 $ORACLE_HOME/network/admin/tnsnames.ora 文件中配置好了。

你可以通过 tnsping 命令来测试数据库的连通性。连接命令如下:

tnsping orcl sqlplus sys/oracle@orcl as sysdba

sqlplus 用户名/密码@TNS名称

例如:

sqlplus sys/oracle@orcl as sysdba

NOLOG 连接方式

NOLOG 连接方式允许用户不登录到数据库,而是执行一些特定的命令。

这种连接方式对于执行不需要数据库会话的操作非常有用。

连接命令如下:

sqlplus /nolog

在 NOLOG 模式下,用户可以使用 conn 命令来建立数据库连接。

conn / as sysdba

常用命令

SQL*Plus 提供了许多有用的命令,以下是一些常用的命令:

show all:显示所有会话的信息。
show user:显示当前连接的用户。
show con_id:显示当前会话的会话 ID。
show con_name:显示当前会话的会话名称。
show pdbs:显示所有的 PDB(Pluggable Database)。
SHOW INSTANCE:显示当前数据库实例的信息。
show parameter count:显示数据库参数的数量。

此外,SQL*Plus 还允许用户查看归档日志:

archive log list

如果你想在 SQL*Plus 中执行 Linux 命令,可以使用 ! 符号:

!df -Th

环境变量

SQL*Plus 的行为可以通过设置环境变量来改变。以下是一些重要的环境变量:

ORA_EDITION

ORA_EDITION 环境变量用于指定要使用的数据库版本。如果你在 CONNECT 或 SQLPLUS 命令选项中指定了版本,如 edition=value,那么将使用该版本而不是 ORA_EDITION。如果没有在 CONNECT、SQLPLUS 命令选项或 ORA_EDITION 中指定版本,SQL*Plus 将连接到默认版本。如果设置了 ORA_EDITION,那么在会话中的后续 STARTUP 命令将导致 ORA-38802 错误。要解决这个问题,必须取消设置 ORA_EDITION,重新连接并关闭数据库,然后再次启动数据库。

ORACLE_SID

ORACLE_SID 是一个可选的环境变量,用于指定数据库实例。

TWO_TASK

TWO_TASK 是一个 UNIX 环境变量,用于指定连接字符串。如果没有指定数据库,连接将连接到 TWO_TASK 中指定的数据库。例如:

TWO_TASK=MYDB export TWO_TASK sqlplus hr

这与以下命令等效:

sqlplus hr@MYDB

SET SQLPROMPT

SET SQLPROMPT 用于设置 SQL*Plus 的提示符。例如,以下命令将提示符设置为显示当前用户、连接标识符和日期:

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE> "

-- First set the database date format to show the time. ALTER SESSION SET nls_date_format = 'HH:MI:SS';

SYS@FREE 17-APR-24> ALTER SESSION SET nls_date_format = 'HH:MI:SS';

Session altered.

SYS@FREE 08:52:52>

脚本执行

SQL*Plus 还支持在命令行中执行脚本。你可以使用 <<EOF 来定义一个输入脚本,并在脚本结束后使用 EOF 来结束输入。例如:

sqlplus /nolog <<EOF connect $MYUSERNAME/$MYPASSWORD select ... EOF

这个脚本首先以不登录的方式连接到数据库,然后使用 connect 命令登录,并执行一个 select 语句。

通过以上介绍,我们可以看到 SQLPlus 是一个功能强大的工具,它为 Oracle 数据库的管理和维护提供了极大的便利。无论是数据库管理员还是开发人员,都应该熟练掌握 SQLPlus 的使用,以便更高效地完成数据库相关的任务。

-- / END / --

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)