我想了解有关 oracle(通过 sql/plus)如何确定用于评估 sql 脚本的字符集的一些详细信息。
我的数据库配置如下:
select VALUE from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
------
WE8ISO8859P15
Run Code Online (Sandbox Code Playgroud)
问题是我在这里读到http://www.orafaq.com/wiki/NLS会话参数可以优先于数据库参数。
这是否意味着数据库编码被执行脚本的用户的 NLS_LANG 环境变量中定义的编码覆盖?
显然,不可能通过 alter session 语句修改脚本中的编码。
我问这个问题是因为我已经遇到了印度分包商执行的生产脚本字符损坏的问题。我实际上不知道这是因为他对我的文件做了什么错误(比如在 sql gui 客户端中复制/粘贴)还是因为他的环境。
总结一下我的实际问题,如果
用户配置了UTF8字符集
我的sql文件是用UTF8编码的
我的数据库位于WE8ISO8859P15
预先感谢您的回答。
我不明白为什么有时一个计划的总成本可能很小,但查看计划内部我们会发现巨大的成本。(确实查询速度很慢)。
有人能给我解释一下吗?
这是一个例子。显然,成本较高的部分来自主选择中的一个字段,该字段在子视图上执行 listagg,并且该子视图的连接条件包含一个复杂的条件(我们可以在一个字段或另一个字段上连接)。
| Id | Operation | Name | Rows | Bytes | Cost |
----------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 875 | 20 |
| 1 | SORT GROUP BY | | 1 | 544 | |
| 2 | VIEW | | 1 | 544 | 3 |
| 3 | SORT UNIQUE | | 1 | 481 | 3 |
| 4 | NESTED LOOPS | | | | |
| …Run Code Online (Sandbox Code Playgroud)