Oracle登录触发器未被触发

时间:2008-11-19 15:21:32

标签: .net oracle

我在Oracle 10.2数据库上使用以下登录触发器:

CREATE OR REPLACE TRIGGER AlterSession_trg
AFTER LOGON ON DATABASE
BEGIN
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP=LINGUISTIC';
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT=BINARY_AI';
END AlterSession_trg;

这是为了使区分大小写的查询成为过去,当我从PL / SQL Developer连接时,确实如此。但是,当我从SQL Developer或ASP.NET应用程序连接时,我正在处理查询再次区分大小写。无论如何,SQL Developer / .NET可以跳过这个触发器吗?我是否错误地设置了触发器?

4 个答案:

答案 0 :(得分:2)

Oracle SQL Developer正在根据首选项更改NLS参数。 (工具 - >首选项... - >数据库 - > NLS参数)

可能您的.NET应用程序也在更改NLS参数,覆盖您的触发设置。

您是否尝试将NLS_COMPNLS_SORT设为environment variables

答案 1 :(得分:1)

我认为你应该让你的DBA做出这些改变而不是依赖于触发器。 如果由于某种原因它变得无效,你可能会遇到问题。

答案 2 :(得分:1)

这是SQL Developer的排序。我在深入研究环境变量解决方案时找到了.NET应用程序的解决方案;我更新了SPFILE,现在有大量问题正在运行的查询。

我跑的命令是:

ALTER SYSTEM SET NLS_COMP=LINGUISTIC SCOPE SPFILE;
ALTER SYSTEM SET NLS_SORT=BINARY_AI SCOPE SPFILE;

答案 3 :(得分:0)

正如一个FYI,你需要小心操纵会话变量以处理不区分大小写的搜索。

如果通过db-link向具有这些会话变量的Oracle 9.2或更早版本的数据库实例发出查询,则会出现ORA-00600错误,因为您在Oracle 10.2中操作的会话变量不存在在Oracle 9.2或更早版本中。