七月 25, 2023
Oracle 可以使用ALTER SESSION
命令在会话级别修改某些数据库参数和配置选项。但是,并非所有 Oracle 配置选项和参数都可以按会话进行修改。
Oracle 用法
若要查看可为特定会话范围设置的所有可配置参数的列表,请查询视图v$parameter
,如以下示例所示。
SELECT NAME, VALUE FROM V$PARAMETER WHERE ISSES_MODIFIABLE='TRUE';
例子
更改当前会话的代码页参数NLS_LANAUGE
。
alter session set nls_language='SPANISH'
Sesi≤n modificada.
alter session set nls_language='ENGLISH';
Session altered.
alter session set nls_language='FRENCH';
Session modifiΘe.
alter session set nls_language='GERMAN';
Session wurde geΣndert.
使用会话参数NLS_DATE_FORMAT
指定从数据库返回的日期值的格式。
select sysdate from dual;
SYSDATE
SEP-09-17
alter session set nls_date_format='DD-MON-RR';
Session altered.
select sysdate from dual;
SYSDATE
09-SEP-17
alter session set nls_date_format='MM-DD-YYYY';
Session altered.
select sysdate from dual;
SYSDATE
09-09-2017
alter session set nls_date_format='DAY-MON-RR';
Session altered.
有关详细信息,请参阅 Oracle 文档中的更改参数文件中的参数值。
PostgreSQL 用法
PostgreSQL 提供了使用SET SESSION
命令配置的会话级可修改的参数。使用SET SESSION
配置参数仅适用于当前会话。要查看可以使用SET SESSION
设置的参数列表,可以查询pg_settings
。
SELECT * FROM pg_settings where context = 'user';
查找以下常用会话参数:
client_encoding
配置连接的客户端字符集。force_parallel_mode
强制对会话使用并行查询。lock_timeout
设置等待数据库锁定释放的最长允许持续时间。search_path
设置非架构限定的对象名称的架构搜索顺序。transaction_isolation
设置会话的当前事务隔离级别。
例子
更改已连接会话的时区。
set session DateStyle to POSTGRES, DMY;
SET
select now();
now
Sat 09 Sep 11:03:43.597202 2017 UTC
(1 row)
set session DateStyle to ISO, MDY;
SET
select now();
now
2017-09-09 11:04:01.3859+00
(1 row)
总结
下表包括部分参数列表,旨在突出显示 Oracle 和 PostgreSQL 中的各种会话级配置参数。并非所有参数都可直接比较。
参数用途 | Oracle | PostgreSQL |
---|---|---|
配置时间和日期格式 | ALTER SESSION SET nls_date_format = 'dd/mm/yyyy hh24:mi:ss'; |
SET SESSION datestyle to 'SQL, DMY'; |
配置当前默认模式或数据库 | ALTER SESSION SET current schema='schema_name' |
SET SESSION SEARCH_PATH TO schemaname; |
为特定错误生成跟踪 | ALTER SESSION SET events '10053 trace name context forever'; |
不适用 |
为 SQL 语句运行跟踪 | ALTER SESSION SET sql_trace=TRUE; ALTER SYSTEM SET EVENTS 'sql_trace [sql:&&sql_id] bindd=true, wait=true'; |
不适用 |
修改索引访问的查询优化器开销 | ALTER SESSION SET optimizer_index_cost_adj = 50 |
SET SESSION random_page_cost TO 6; |
修改查询优化器行访问策略 | ALTER SESSION SET optimizer_mode=all_rows; |
不适用 |
分配给排序操作的内存 | ALTER SESSION SET sort_area_size=6321; |
SET SESSION work_mem TO '6MB'; |
分配给哈希连接的内存 | ALTER SESSION SET hash_area_size=1048576000; |
SET SESSION work_mem TO '6MB' |
有关详细信息,请参阅 PostgreSQL 文档中的 SET。