导语:在我平时的工作中,需要对观察sql的开始时间。所以我希望在sql>标识上显示时间。这样方便很多。而且在写步骤的时候也会有帮助。但是在网上搜索却不容易搜到方法。
set sqlprompt
首先,我知道怎么设置,让提示符上显示连接用户和数据库名:set sqlprompt
- 在$ORACLE_HOME/sqlplus/admin/glogin.sql这个文件中添加语句。
set sqlprompt "_user '@' _connect_identifier > "
- 保存退出,启动sqlplus验证,效果类似:
USER@SID >
所以大致我想要的效果也应该用这个语句实现了。
官方文档:19c > Administration > SQLPlus User's Guide and Reference > 12 SQLPlus Command Reference > 12.41.57 SET SQLPROMPT
在官方文档中(Example)就有我需要的内容:
- 要更改 SQL*Plus 提示符以显示连接标识符,请输入:
SET SQLPROMPT "_CONNECT_IDENTIFIER > " - 要将 SQL*Plus 命令提示符设置为显示当前用户,请输入:
SET SQLPROMPT "_USER > " - 要更改 SQL*Plus 提示以显示您的当前日期、当前用户和用户权限级别,请输入:
SET SQLPROMPT "_DATE _USER _PRIVILEGE> " - 要将 SQL*Plus 提示更改为显示已定义的变量,请输入:
DEFINE mycon = Prod1
SET SQLPROMPT "mycon> "
Prod1> - 嵌套引号中的文本不会被解析以进行替换。要使用 SQL*Plus 提示符显示您的用户名,后跟 “@”,然后输入您的连接标识符,请输入:
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
预定义变量
官方文档:19c > Administration > SQLPlus User's Guide and Reference > 12 SQLPlus Command Reference > 12.17.1 Predefined Variables
文档上说,在 SQL*Plus 安装过程中定义了 9 个变量。这些变量与用户定义的变量的唯一区别在于具有预定义的值。
其中比较常见的有:
- _CONNECT_IDENTIFIER 用于建立连接的连接标识符(如果可用)。
- _DATE 当前日期或用户定义的固定字符串。
- _EDITOR 指定 EDIT 命令使用的编辑器。
- _PRIVILEGE 当前连接的权限级别。
- _USER 用于建立连接的用户名。
- _SQL_ID 执行的 SQL 语句的 sql_id。
因为我们本次需要使用_DATE这个预定义变量,所以看一下。
_DATE
包含当前日期作为动态变量或固定字符串。当前日期是默认值,并使用 NLS_DATE_FORMAT 的值进行格式设置。
对于NLS_DATE_FORMAT参数的设置,请看[博客]
总结:
总的来说,想要完成我的设想需要set sqlprompt
语句,用预定义变量
来实现sqlplus提示符设置
在sqlplus提示符中显示时间效果:
14:55:22 SYS AS SYSDBA@PROD
在glogin文件中设置:
set sqlprompt "_date _user _privilege'@'_connect_identifier> "
alter session set nls_date_format='HH24:MI:SS';