加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 在程序包/存储过程中更改会话NLS_LENGTH_SEMANTICS =

发布时间:2021-01-26 19:16:23 所属栏目:站长百科 来源:网络整理
导读:我们的应用程序适用于oracle 10g数据库,我们计划现在将其迁移到exadata. 为此,我们必须遵循exadata接受的一些合规性. 其中之一是在定义的开头将语句添加到每个现有的包/过程/函数中 alter session set NLS_LENGTH_SEMANTICS='CHAR' 我只是想检查,可能会改变

我们的应用程序适用于oracle 10g数据库,我们计划现在将其迁移到exadata.
为此,我们必须遵循exadata接受的一些合规性.
其中之一是在定义的开头将语句添加到每个现有的包/过程/函数中

alter session set NLS_LENGTH_SEMANTICS='CHAR'

我只是想检查,可能会改变会话来改变这个会话变量影响代码功能吗?
将此语句添加到所有对象时,我们必须记住哪些事项?

任何线索都将受到高度赞赏

解决方法

修订:

我正在修改我的答案,因为来自另一位受人尊敬的Oracle员工专家(Sergiusz Wolicki)的建议,以及文档在此参数上进行了修订以警告不要将其设置为CHAR作为初始化参数,以及警告仍然存在的事实有12.1

http://docs.oracle.com/database/121/NLSPG/ch3globenv.htm#NLSPG234

Caution: Oracle strongly recommends that you do NOT set the
NLS_LENGTH_SEMANTICS parameter to CHAR in the instance or server
parameter file. This may cause many existing installation scripts to
unexpectedly create columns with character length semantics,resulting
in run-time errors,including buffer overflows.

警告:
如果在没有显式语义的情况下编写DDL脚本,那么设置参数不会影响它,但是,它显然不是在Oracle产品脚本中全面安全更新的东西.

使用编写良好的代码,它肯定不会影响“代码功能”,它只是一个简单影响新字段宽度的设置.这里的关键似乎是你可以保证这是多么舒服.

但是,如果甲骨文警告它,他们就有这方面的经验和证据.不知道长度语义的遗留应用程序或工具可能会受到影响.

由于向后兼容性,Oracle缺省传统上是BYTE,但是对于没有遗留内容的新数据库,没有更改它的风险,并且它不会影响内部数据字典,因为它们被锁定到BYTE语义而不管数据库是什么设置为NLS_LENGTH_SEMANTICS.

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读