我想永久更新
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
表的参数值。
您只能更改会话设置参数=值。这不是永久性的,但仅适用于该数据库会话,不会影响其他数据库会话。也许您应该在连接到数据库后立即使用脚本或存储过程根据需要设置参数。 请参阅https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/ALTER-SESSION.html
NLS_SESSION_PARAMETERS
是字典视图。所有字典视图和表格都将通过 DDL(CREATE, ALTER, DROP
等)进行管理,而不是通过您自己的手动插入/更新/删除。
您可以使用
ALTER SESSION
更改的任何参数,您也可以使用 ALTER SYSTEM
进行更改,这使得它适用于数据库的所有用户,因此将保留在您的连接中,但这是只有 DBA 才能做的事情。但是,要使其在数据库实例重新启动时永久存在,您必须将其放入初始化文件 ($ORACLE_HOME/rdbms/init$SID.ora
),或者如果正在使用 SPFILE,请将“scope=BOTH
”或“scope=SPFILE
”添加到ALTER SYSTEM
命令。同样,这仅适用于 DBA。
如果您不能使用
ALTER SYSTEM
在实例级别更改它,那么您有几个选择:
3.1 在
你建立的每一个连接上做
ALTER SESSION
3.2 创建一个 private logon trigger 为你做
ALTER SESSION
s
3.3 在登录时调用 procedure 为您执行
ALTER SESSION
s
3.4 最后,如果您只想更改您的语言区域和/或字符集,您可以在您的操作系统上设置 host 环境变量
NLS_LANG
。您的客户将继承这些值并为您设置NLS_LANGUAGE
。可以通过这种方式设置其他几个 NLS 参数。请参阅有关“设置 NLS 环境” 的文档