set autotrace on(SP2-0618,SP2-0611,ORA-01919)

本文介绍如何在SQL Plus环境中正确设置自动跟踪功能,并详细解释了解决无法启用自动跟踪问题的具体步骤,包括创建PLUSTRACE角色及所需权限的授予。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

1、首先set autotrace只能在sql plus下执行

2、需要创建plustrace角色并授权

 

问题描述:

    在CMD窗体中

C:\Users\Administrator>sqlplus

请输入用户名:  scott

输入口令:

 

连接到:

Oracle Database 11gEnterpriseEdition Release 11.2.0.1.0 - Production

With thePartitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> set autotrace on

SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色

SP2-0611: 启用 STATISTICS 报告时出错

SQL> conn /assysdba

已连接。

SQL> grantplustrace to scott;

grant plustraceto scott

      *

第 1 行出现错误:

ORA-01919: 角色 'PLUSTRACE' 不存在

 

解决方法:

    运行脚本@ROACLE_HOME\sqlplus\admin\plustrce.sql即可创建'PLUSTRACE'角色。

在windows下ORACLE_HOME环境变量是通过注册表设置的,其值指向oracle客户端所在

的目录。 win7下,oracle在注册表中的位置为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE

可见

"ORACLE_HOME"="D:\app\Administrator\product\11.2.0\dbhome_1" 

在CMD窗体中运行脚本

SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\plustrce.sql

SQL>

SQL> droprole plustrace;

drop roleplustrace

          *

第 1 行出现错误:

ORA-01919: 角色 'PLUSTRACE' 不存在

SQL> createrole plustrace;

角色已创建。

SQL>

SQL> grantselect on v_$sesstat to plustrace;

授权成功。

SQL> grantselect on v_$statname to plustrace;

授权成功。

SQL> grantselect on v_$mystat to plustrace;

授权成功。

SQL> grantplustrace to dba with admin option;

授权成功。

SQL>

SQL> set echo off

 

脚本执行完毕后,给scott用户赋权限

SQL> grantplustrace to scott;

 

授权成功。

 

另:SQL Plus中AUTOTRACE的选项

AUTOTRACE选项

是否显示执行计划

是否显示统计信息

是否执行查询

AUTOT[RACE] OFF

AUTOT[RACE] ON

AUTOT[RACE] ON EXP[LAIN]

AUTOT[RACE] ON STAT[ISTICS]

AUTOT[RACE] TRACE[ONLY]

是,但查询输出被取消

AUTOT[RACE] TRACE[ONLY] EXP[LAIN]

 

<think>我们正在处理用户的问题:如何确认SP2-0734是否为错误,以及如何在SQL*Plus中正确运行SQL脚本。根据引用内容,我们注意到用户提供的引用[1]和[3]提到了PLUSTRACE角色和AUTOTRACE功能,但用户当前的问题是关于SP2-0734错误和运行SQL脚本的。首先,SP2-0734错误是什么?根据Oracle官方文档,SP2-0734错误通常表示SQL*Plus无法识别以某个关键字开头的命令。具体来说,当用户尝试运行一个以"@"开头的命令(例如@script.sql)时,如果SQL*Plus无法找到该文件,或者路径不正确,就会报SP2-0734错误。错误信息格式通常为:SP2-0734:无法识别的命令开头"..."(忽略剩余部分)。因此,SP2-0734是一个错误,表明SQL*Plus无法识别你输入的命令。用户还询问如何在SQL*Plus中运行SQL脚本。通常有以下几种方式:1.在SQL*Plus命令行中直接使用@或@@命令。- @script.sql:运行当前目录下的script.sql脚本(或指定全路径)。-@@script.sql:在嵌套调用脚本时使用,表示从与当前运行脚本相同的目录中寻找script.sql。2.在启动SQL*Plus时通过命令行参数指定要运行的脚本。sqlplususername/password@sid @script.sql3.在SQL*Plus提示符下使用START命令(等同于@):SQL>START script.sql但是,用户可能在运行脚本时遇到了SP2-0734错误,这通常是因为:-脚本文件路径不正确,或者文件名拼写错误。 -在运行脚本时没有提供正确的路径。因此,我们需要指导用户如何正确运行脚本以避免此错误。另外,用户提供的引用中提到了PLUSTRACE角色和AUTOTRACE,虽然与当前问题没有直接关系,但我们可以简要说明:这些引用是关于如何设置AUTOTRACE功能的,而AUTOTRACE用于自动跟踪SQL语句的执行计划,与运行脚本无关。现在,我们给出具体步骤:步骤1:确认脚本文件的存在在运行脚本之前,确保脚本文件存在于指定的路径中。例如,如果脚本名为3.txt,那么要确认它是否在指定的路径下。步骤2:在SQL*Plus中运行脚本的正确方式假设脚本文件位于/path/to/3.txt,则可以使用以下任意一种方式:方式A:在SQL*Plus启动时运行sqlplus username/password@sid@/path/to/3.txt方式B:在SQL*Plus中运行SQL>@/path/to/3.txt注意:如果脚本文件就在当前工作目录下,可以直接写文件名,否则需要写绝对路径或相对路径。步骤3:处理路径包含空格的情况如果路径中包含空格,需要用双引号将整个路径括起来。例如:SQL> @"c:/my scripts/3.txt"步骤4:检查文件权限如果是在Linux/Unix系统下,确保当前运行SQL*Plus的用户有权限读取该文件。步骤5:避免常见错误-不要将SQL*Plus命令(如SET,COL等)与SQL语句混淆。这些命令只能在SQL*Plus环境中运行,不能在纯SQL环境中运行。-确保脚本文件是纯文本文件,且编码正确(如UTF-8,或者与数据库字符集兼容)。如果用户按照上述步骤操作,应该可以避免SP2-0734错误。另外,关于用户之前提到的后台运行SQL*Plus脚本的问题,我们已经给出过使用nohup的方法,这里不再重复。最后,我们生成相关问题:相关问题:1.如何解决SQL*Plus中运行脚本时出现的文件未找到错误(SP2-0310)?2.如何在SQL*Plus中设置输出格式以美化报表?3.SQL*Plus中的AUTOTRACE功能如何启用和使用?4.如何在SQL*Plus中执行操作系统命令?</think>### SP2-0734错误解析与SQL脚本执行指南 #### SP2-0734错误分析 **错误性质**:SP2-0734是SQL*Plus的合法错误码,表示**命令识别失败**。当SQL*Plus无法解析用户输入的命令开头部分时触发此错误[^1]。 **常见场景**: 1. **路径错误**:`@/path/to/script.sql` 中的路径包含空格或特殊字符 2. **命令拼写错误**:如将`START`误写为`STRAT` 3. **文件权限问题**:SQL*Plus无权访问脚本文件 4. **文件编码问题**:脚本使用非ASCII字符且未设置NLS_LANG #### 正确执行SQL脚本的方法 ```mermaid graph TD A[准备SQL脚本] --> B[设置环境变量] B --> C[选择执行方式] C --> D[命令行直接执行] C --> E[SQL*Plus内部执行] D --> F[验证结果] E --> F ``` ##### 1. 命令行直接执行 ```bash sqlplus username/password@dbname @/path/to/script.sql ``` **关键参数**: - `-S`:静默模式(隐藏SQL*Plus横幅) - `-L`:尝试登录失败后自动重试 - `-M`:启用HTML标记输出 ##### 2. SQL*Plus内部执行 ```sql SQL> SET ECHO ON -- 显示执行的命令 SQL> SET FEEDBACK ON -- 显示执行结果计数 SQL> SET TERMOUT OFF -- 禁止屏幕输出(仅后台) SQL> SPOOL /path/to/output.log -- 记录输出到文件 SQL> @/path/to/script.sql SQL> SPOOL OFF ``` ##### 3. 带错误处理的执行 ```sql WHENEVER SQLERROR EXIT SQL.SQLCODE WHENEVER OSERROR EXIT FAILURE @/path/to/script.sql EXIT ``` #### 解决SP2-0734错误的步骤 1. **路径验证** ```bash ls -l /path/to/script.sql # Linux dir "C:\path with spaces\script.sql" # Windows ``` 2. **路径转义处理** ```sql -- Linux/Unix SQL> @'/path/with spaces/script.sql' -- Windows SQL> @"C:\path with spaces\script.sql" ``` 3. **设置NLS_LANG环境变量** ```bash # Linux/Unix export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # Windows set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252 ``` 4. **文件权限修复** ```bash chmod +r /path/to/script.sql # Linux icacls "C:\script.sql" /grant:r %USERDOMAIN%\%USERNAME%:R # Windows ``` #### 执行结果验证方法 1. **检查退出状态** ```bash echo $? # Linux返回0表示成功 echo %ERRORLEVEL% # Windows ``` 2. **日志分析** ```bash grep ORA- /path/to/output.log # 查找Oracle错误 grep SP2- /path/to/output.log # 查找SQL*Plus错误 ``` 3. **使用AUTOTRACE跟踪执行** ```sql SQL> SET AUTOTRACE TRACEONLY -- 不输出查询结果 SQL> @/path/to/script.sql ``` > **注意**:启用AUTOTRACE需先执行`plustrce.sql`脚本(如引用[1]所述)[^1][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值