我有一个包含以下脚本的文件:
BEGIN
...
a bunch of inserts
...
COMMIT;
EXCEPTION
WHEN OTHERS THEN ROLLBACK;
END;
Run Code Online (Sandbox Code Playgroud)
当我在sqlplus中执行此操作时,我得到以下内容:
SQL> @file.sql
382
Run Code Online (Sandbox Code Playgroud)
好像他没有结束这个街区.我是新手使用pl/sql和sqlplus,所以我不知道我做错了什么.
有任何想法吗?
这两个变量声明有什么区别?
1:num number:='&&num';
2:variable num1 number;
因为在这两种情况下我都可以num通过使用&num或&&num在其他文件中引用,并且在绑定变量的情况下:num1.
此外,我还有一个困惑:以下任何一种陈述是否有所不同,它们是否都有效,它们是否意味着同样的事情?
1:variable num1 number;
2:var num1 number;
根据system_privilege_map中的select name,系统已被授予:
SELECT ANY TABLE
Run Code Online (Sandbox Code Playgroud)
......以及许多其他*任何表格.
平稳地跑步
select * from the_table;
select * from the_table;
Run Code Online (Sandbox Code Playgroud)
...获得给定的回复:
第1行的错误:ORA-00942:表或视图不存在
我可以以该用户身份登录并运行相同的命令.
我正在运行假设我应该能够运行查询(在这种情况下选择)agaisnt一般用户的数据库表.我的假设是否正确,如果是,我该怎么做?
这个让我很困惑.我编写了一个从我的开发客户端运行良好的查询但在生产客户端上失败并出现错误"ORA-01652:无法扩展临时段......".在这两种情况下,数据库和用户都是相同的.在我的开发机器(MS Windows)上,我有SQL*PLUS(版本9.0.1.4.0)和Toad 9.0(都使用了oci.dll的9.0.4.0.1版本).两者都运行代码没有错误.
但是,当我在同一个数据库上运行相同的文件时,使用来自不同机器的相同用户名/密码,这次版本10.2.0.4.0(来自10.2.0.4-1 Oracle即时客户端)我收到错误.
它确实可重复发生.
不幸的是,我只能访问数据库上的字典视图,这些视图设置为只读(甚至无法获得解释计划!).
我试过通过调整查询来解决这个问题(我怀疑有一个大的中间结果集随后被修剪掉了)但是没有设法改变任何一个客户端的行为.
有可能在计算机上部署不同版本的客户端导致问题 - 但目前看起来像是降级到以前的版本.
有任何想法吗?
TIA
根据Gary的回答,我看了一下glogin.sql脚本 - 唯一的区别是'SET SQLPLUSCOMPATIBILITY 8.1.7'在工作客户端上存在但在失败的客户端上没有 - 但添加它并没有解决问题.
我也试过了
alter session set workarea_size_policy=manual;
alter session set hash_area_size=1048576000;
Run Code Online (Sandbox Code Playgroud)
和
alter session set sort_area_size=1048576000;
Run Code Online (Sandbox Code Playgroud)
无济于事:(
我设法找到了相同的行为,这次是与Oracle 8i后端交谈.在这种情况下,数据库是RW.这让我可以确认,正如我所怀疑的那样,不同的客户会产生不同的计划.但为什么????
看看'SHOW PARAMETERS'的输出,两个客户都报告了完全相同的设置!
我试图dbms_output在存储过程中将大小设置为无限制.
但它给了我编译错误.所以我尝试了以下方式的SQL*Plus提示.但我仍然得到缓冲区溢出错误.我怎么能克服这个?
set serveroutput on size unlimited;
exec service_update;
ORA-20000: ORU-10027: buffer overflow, limit of 30000 bytes
ORA-06512: at "SYS.DBMS_OUTPUT", line 32
ORA-06512: at "SYS.DBMS_OUTPUT", line 97
ORA-06512: at "SYS.DBMS_OUTPUT", line 112
ORA-06512: at "ARBOR.SERVICE_UPDATE", line 27
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud) 我以普通用户身份启动sqlplus时遇到以下错误,请说“ scott”。
$ sqlplus
SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly
Run Code Online (Sandbox Code Playgroud)
环境是:
其他细节:
这是最奇怪的,因为我可以以oracle用户身份(例如“ oraadmin”)愉快地运行sqlplus,并且用户scott已在oracle admin组中注册。另外,我以前的Oracle安装(10.2.0.7)没有此类问题。我〜scott的$ ORACLE_HOME引用了11.2.0.2安装。
比较我的11.2.0.2和10.2.0.7环境,我注意到几个库(包括$ ORACLE_HOME / lib / libsqlplus.so)都具有组只读权限(744),因此对它们进行了chmod'ded。
除此之外,我的$ ORACLE_HOME / lib,$ ORACLE_HOME / bin,$ ORACLE_HOME / oracore和$ ORACLE_HOME / rdbms似乎都合理且允许。
NB:在线上有很多东西,但是,通常情况下,有很多案例特定的问题,主要涉及不同版本的Windows。主要集中在比较我的环境。此外,据我所知,此问题尚不存在,因此对于按环境整理答案很有用。我将汇报任何明智的发现。
我需要使用PLSQL Developer来访问oracle数据库.当我尝试连接到我的数据库时出现以下错误.ORA-12154: TNS:could not resolve the connect identifier specified.我可以使用SQLPLUS命令行来连接到数据库,并TNSPING成功返回,但我想不出为什么PLSQL开发者将无法正常工作-这是使用正确的tnsnames.ora文件,并在那里连接字符串是正确的,因为它与tnsping使用的相同.
任何人都知道我可以做些什么来解决这个问题?我已经查看了关于这个特定错误的其他线程而没有运气.
tnsnames.ora中
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MININT-AIVKVBM)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Run Code Online (Sandbox Code Playgroud)
SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Run Code Online (Sandbox Code Playgroud)
sqlpus命令行 图像在这里
PLSQL Developer连接首选项:此处为图像
我知道show user命令返回:USER是"SCOTT"
但是在sql查询或plsql脚本中是否有可能只获取当前用户的用户名并将其存储在变量中?
我试图在unix环境中运行一个.sql文件sqlplus作为后台进程.
我使用tectia或putty连接到unix,我希望sqlplus继续在后台运行,即使我的终端关闭.
请让我知道命令/脚本
作品
$ sqlplus USERNAME/password@SCHEMA
SQL>@test.sql
SQL> quit
Run Code Online (Sandbox Code Playgroud)
当试图在后台启动失败
$ sqlplus USERNAME/password@SCHEMA&
SQL>@test.sql
SQL> quit
Run Code Online (Sandbox Code Playgroud) 我用的是oracle 12G
\n\n当我@F:\\update.sql从 sql plus 运行时,它显示重音字符\xc3\xa9运行时,当我从 sqlplus 或 sql Developer 检索时,它会将重音字符显示为垃圾字符
当从 sql plus 运行单个语句时。现在,如果我从 sqlplus 检索它,它会显示正确的字符,但是当我从 sqldeveloper 检索它时,它再次显示垃圾字符。
\n\nupdate.sql内容是这样的
\n\nupdate employee set name =\'\xc3\xa9\' where id= 1;\nRun Code Online (Sandbox Code Playgroud)\n\n我想要的是当我运行 @F:\\update.sql 时,它应该以正确的格式插入/更新/检索它,无论它是来自 sqlplus 还是任何其他工具?
\n\n信息:- 当我跑步时
\n\n SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE \'%CHARACTERSET%\' \nRun Code Online (Sandbox Code Playgroud)\n\n我得到以下信息
\n\nPARAMETER VALUE\n------------------------------ ----------------------------------------\nNLS_CHARACTERSET WE8MSWIN1252\nNLS_NCHAR_CHARACTERSET AL16UTF16\nRun Code Online (Sandbox Code Playgroud)\n\n当我@.[%NLS_LANG%]从命令提示符运行时我看到
SP2-0310: unable to open file ".[AMERICAN_AMERICA.WE8MSWIN1252]"\nRun Code Online (Sandbox Code Playgroud)\n