ALTER SESSION
功能描述
修改会话参数。
注意事项
执行该语句的用户无需授予系统权限。
语法格式
ALTER SESSION { SET { COMMIT_WAIT = { WAIT | NOWAIT } | COMMIT_LOGGING = { IMMEDIATE | BATCH } | TIME_ZONE ='[ + | - ]hh:mm' | nls_param ='nls_param_value' | current_schema = schema_value} }| { { ENABLE | DISABLE } { TRIGGERS | INTERACTIVE TIMEOUT | NOLOGGING | OPTINFO_LOG } }
参数说明
- COMMIT_WAIT = (WAIT | NOWAIT)
指定发出commit的服务器进程是否等待日志写进程(Log Writer)将Redo信息写入Redo日志文件。
默认值为:WAIT。
- WAIT:等待。
服务器进程等待。在大多数情况下,此为最佳选项。
- NOWAIT:不等待。
不关注Redo信息是否写到Redo日志中,直接提交事务。此选项可能会导致数据丢失,但是提升了事务速度。
- COMMIT_LOGGING = {IMMEDIATE | BATCH}
指定日志写进程(Log Writer)是否批量写入Redo信息。
默认值为:IMMEDIATE。
- IMMEDIATE:立即提交。
为每个提交执行日志写入操作。 设置为IMMEDIATE,由于强制磁盘I/O,可能会降低事务吞吐量。
- BATCH:批量提交。
先缓存事务的Redo信息,待达到一定的量后再批量写入到日志文件中。设为BATCH,在实例故障时,有可能丢失日志缓冲区的批处理日志信息。
- TIME_ZONE = '[+|-]{hh}:{mm}'
设置当前会话时区。通过指定形如'[+|-]{hh}:{mm}'的字符串来设置会话的时区相对于UTC时间(通称: 格林尼治时间)的偏差值('+'表示时区早于格林尼治时间; '-'表示时区晚于格林尼治时间。比如北京时间即为"东八区",偏差值可使用'+08:00'来表示)。
要查看当前会话的时区信息,可通过查询SESSIONTIMEZONE来获取相关信息。
默认值为:发起会话的客户端所在的系统时区。
合法的时区范围为 -12:00~[+]14:00。
- nls_param = 'nls_param_value'
设置本地语言环境。
nls_param取值范围如下:
- NLS_DATE_FORMAT,默认值"YYYY-MM-DD HH24:MI:SS"。
- NLS_TIMESTAMP_FORMAT,默认值"YYYY-MM-DD HH24:MI:SS.FF"。
- NLS_TIMESTAMP_TZ_FORMAT,默认值"YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"。
- NLS_TIME_FORMAT,默认值"HH:MI:SS.FF AM"。
- NLS_TIME_TZ_FORMAT,默认值"HH:MI:SS.FF AM TZR"。
- current_schema = schema_value
切换当前会话schema。默认值为登入会话用户。
- { ENABLE | DISABLE } { TRIGGERS | INTERACTIVE TIMEOUT | INTERACTIVE TIMEOUT }
- ENABLE TRIGGERS:当前会话下,执行的SQL语句,会触发trigger。
- DISABLE TRIGGERS:当前会话下,执行的SQL语句,不会触发trigger。
- ENABLE INTERACTIVE TIMEOUT:开启空闲检测,默认会话30分钟无sql请求,服务端关闭该会话。
- DISABLE INTERACTIVE TIMEOUT:关闭空闲检测。
- ENABLE NOLOGGING:当前会话下,插入数据不记录redo日志和undo日志。
- DISABLE NOLOGGING:当前会话下,插入数据记录redo日志和undo日志。
- ENABLE OPTINFO_LOG:当前会话下,打开优化器日志,执行计划生成的详细日志写入log/opt/zengine.opt日志。系统默认2分钟后关闭。如果需要使用,可再次执行该命令打开。
- DISABLE OPTINFO_LOG:当前会话下,关闭优化器日志。
示例
- 等待Redo信息写入Redo日志文件后,再提交事务。
ALTER SESSION SET COMMIT_WAIT=WAIT;
- 不等待Redo信息写入Redo日志文件,直接提交事务。
ALTER SESSION SET COMMIT_WAIT=NOWAIT;
- 设置日志写进程(Log Writer)立即写入Redo信息。
ALTER SESSION SET COMMIT_LOGGING=IMMEDIATE;
- 设置日志写进程(Log Writer)批量写入Redo信息。
ALTER SESSION SET COMMIT_LOGGING =BATCH;
- 设置当前会话时区为东八区。
ALTER SESSION SET TIME_ZONE ='+8:00';
- 设置本地语言环境为NLS_DATE_FORMAT形式。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
- 如果存在用户user1,切换当前登入用户为user1。
ALTER SESSION SET current_schema=user1;
- 设置当前会话执行的SQL语句会触发TRIGGER。
ALTER SESSION ENABLE TRIGGERS;
- 设置当前会话执行的SQL语句不会触发TRIGGER。
ALTER SESSION DISABLE TRIGGERS;
- 开启空闲检测。
ALTER SESSION ENABLE INTERACTIVE TIMEOUT;
- 关闭空闲检测。
ALTER SESSION DISABLE INTERACTIVE TIMEOUT;
- 设置当前会话插入数据不记录redo日志和undo日志。
ALTER SESSION ENABLE NOLOGGING;
- 设置当前会话插入数据记录redo日志和undo日志。
ALTER SESSION DISABLE NOLOGGING;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论