我想永久更新NLS_SESSION_PARAMETERS
表的所有字段。我已经尝试更新操作,但得到下面的错误:
Error report -
SQL Error: ORA-02030: can only select from fixed tables/views
02030. 00000 - "can only select from fixed tables/views"
*Cause: An attempt is being made to perform an operation other than
a retrieval from a fixed table/view.
*Action: You may only select rows from fixed tables/views.
谁能帮助我了解如何更改/更新NLS_SESSION_PARAMETERS
表的参数值。
2条答案
按热度按时间okxuctiv1#
NLS_SESSION_PARAMETERS
是一个字典视图。所有字典视图和表都将通过DDL(CREATE, ALTER, DROP
等)进行管理。.)永远不要通过您自己的手动插入/更新/删除。1.可以用
ALTER SESSION
更改的任何参数也可以用ALTER SYSTEM
更改,这使得数据库的所有用户都可以更改,因此将在连接中保留,但这只有DBA才能做到。但是,要使其在数据库示例重新启动时保持永久性,您必须将其放入初始化文件($ORACLE_HOME/dbs/init$SID.ora
)中,或者如果正在使用SPFILE,则将“scope=BOTH
”或“scope=SPFILE
”添加到ALTER SYSTEM
命令中。同样,这仅适用于DBA。1.如果你不能用
ALTER SYSTEM
在示例级别更改它,那么你有几个选择:3.1每次连接时执行
ALTER SESSION
3.2创建一个 * 私有登录触发器 *,为您执行
ALTER SESSION
3.3在登录时调用一个 * 过程 *,该过程为您执行
ALTER SESSION
3.4最后,如果你想做的只是改变你的语言区域和/或字符集,你可以在你的操作系统上设置 host环境变量 *
NLS_LANG
。您的客户端将继承这些值并为您设置NLS_LANGUAGE
。其他几个NLS参数也可以这样设置。请参阅有关“ 设置NLS环境 *”的文档laawzig22#
您只能更改会话集参数=值。而且这不是永久性的,而是仅针对该数据库会话,不会影响其他数据库会话。也许您应该在连接到数据库后立即使用脚本或存储过程根据需要设置参数。参见https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/ALTER-SESSION.html