Oracle 甲骨文:如何;不变的;会话参数?

Oracle 甲骨文:如何;不变的;会话参数?,oracle,Oracle,我正在对进行不区分大小写的查询 alter session set NLS_COMP=LINGUISTIC; alter session set NLS_SORT=BINARY_CI; 是否有一种方法可以在更改会话状态之前轻松捕获会话状态,以便将会话恢复到其原始状态?您可以使用以下方法获取当前值: select * from nls_session_parameters; 在更改会话之前。要恢复它,只需使用保存的值 我不知道有任何语句将会话参数重置为默认值。您可以使用以下方法获得当前值:

我正在对进行不区分大小写的查询

alter session set NLS_COMP=LINGUISTIC;
alter session set NLS_SORT=BINARY_CI;

是否有一种方法可以在更改会话状态之前轻松捕获会话状态,以便将会话恢复到其原始状态?

您可以使用以下方法获取当前值:

select * 
from nls_session_parameters;
在更改会话之前。要恢复它,只需使用保存的值


我不知道有任何语句将会话参数重置为默认值。

您可以使用以下方法获得当前值:

select * 
from nls_session_parameters;
在更改会话之前。要恢复它,只需使用保存的值


我不知道有任何语句将会话参数重置为默认值。

NLS参数通过一系列视图公开,从NLS开始。在你的情况下,你需要。实例和数据库有等价的视图


这比使用更简洁,尽管该视图确实允许我们判断paarmeter是否已从默认值更改。

NLS参数通过一系列视图公开,从NLS开始。在你的情况下,你需要。实例和数据库有等价的视图


这比使用更简洁,尽管该视图允许我们判断paarmeter是否已从默认值更改。

您可以通过以下方式获得给定会话参数的值:

SELECT value
FROM   nls_session_parameters
WHERE  parameter = 'NLS_SORT'; -- replace NLS_SORT with parameter of your choice
演示执行不区分大小写搜索的其他方法

  • UPPER()
    /
    LOWER()
    函数与
  • 正则表达式:

  • 您可以通过以下方式获取给定会话参数的值:

    SELECT value
    FROM   nls_session_parameters
    WHERE  parameter = 'NLS_SORT'; -- replace NLS_SORT with parameter of your choice
    
    演示执行不区分大小写搜索的其他方法

  • UPPER()
    /
    LOWER()
    函数与
  • 正则表达式:

  • 您最初可以看到参数值

    SQL> SHOW PARAMETER NLS_SORT;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_sort                             string      BINARY
    
    SQL> SHOW PARAMETER NLS_COMP;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_comp                             string      BINARY
    
    然后相应地设置会话参数:

    SQL> alter session set nls_comp='LINGUISTIC';
    
    Session altered
    
    SQL> alter session set nls_sort='BINARY_CI';
    
    Session altered
    
    PL/SQL中,可以执行以下操作来获取参数值并将其存储在会话变量中

    SQL> DECLARE
      2    VAR_NLS_SORT VARCHAR2(10);
      3    var_nls_comp VARCHAR2(10);
      4  BEGIN
      5    SELECT VALUE
      6       INTO VAR_NLS_SORT
      7      FROM NLS_SESSION_PARAMETERS
      8     WHERE PARAMETER = 'NLS_SORT';
      9    SELECT VALUE
     10       INTO VAR_NLS_COMP
     11      FROM NLS_SESSION_PARAMETERS
     12     WHERE PARAMETER = 'NLS_COMP';
     13    DBMS_OUTPUT.PUT_LINE('NLS_SORT = '||VAR_NLS_SORT);
     14    DBMS_OUTPUT.PUT_LINE('NLS_COMP = '||VAR_NLS_COMP);
     15  END;
     16  /
    NLS_SORT = BINARY
    NLS_COMP = BINARY
    
    PL/SQL procedure successfully completed.
    

    有关更多信息,您可以查看您可以看到参数值最初:

    SQL> SHOW PARAMETER NLS_SORT;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_sort                             string      BINARY
    
    SQL> SHOW PARAMETER NLS_COMP;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    nls_comp                             string      BINARY
    
    然后相应地设置会话参数:

    SQL> alter session set nls_comp='LINGUISTIC';
    
    Session altered
    
    SQL> alter session set nls_sort='BINARY_CI';
    
    Session altered
    
    PL/SQL中,可以执行以下操作来获取参数值并将其存储在会话变量中

    SQL> DECLARE
      2    VAR_NLS_SORT VARCHAR2(10);
      3    var_nls_comp VARCHAR2(10);
      4  BEGIN
      5    SELECT VALUE
      6       INTO VAR_NLS_SORT
      7      FROM NLS_SESSION_PARAMETERS
      8     WHERE PARAMETER = 'NLS_SORT';
      9    SELECT VALUE
     10       INTO VAR_NLS_COMP
     11      FROM NLS_SESSION_PARAMETERS
     12     WHERE PARAMETER = 'NLS_COMP';
     13    DBMS_OUTPUT.PUT_LINE('NLS_SORT = '||VAR_NLS_SORT);
     14    DBMS_OUTPUT.PUT_LINE('NLS_COMP = '||VAR_NLS_COMP);
     15  END;
     16  /
    NLS_SORT = BINARY
    NLS_COMP = BINARY
    
    PL/SQL procedure successfully completed.
    

    有关更多信息,您可以查看

    您是否尝试查询
    v$parameter2
    (请参阅)?您是否尝试查询
    v$parameter2
    (请参阅)?据我所知,这是最好的方法。但似乎应该有更好的办法。例如,
    reset
    语法对于
    session
    来说是未记录的,但看起来确实有效。例如,
    alter session reset nls\u sort将重置它。但它会将其重置为Oracle默认值,而不是以前的系统默认值。据我所知,这是最好的方法。但似乎应该有更好的办法。例如,
    reset
    语法对于
    session
    来说是未记录的,但看起来确实有效。例如,
    alter session reset nls\u sort将重置它。但它会将其重置为Oracle默认值,而不是以前的系统默认值。