#ALTER SESSION
# 通用描述
ALTER SESSION用于动态地改变所在会话的属性,或一些会话级的系统配置。这些改变只在当前连接的会话中有效,会话断开后将恢复为初始值。
# 语句定义
alter session::=
set_clause::=
# set_clause
该语句用于指定会话属性或系统配置参数的值。
其中,parameter_name可以为配置参数里的会话级参数,也可以为会话的属性参数。
示例
--会话级参数date_format
SHOW PARAMETER date_format;
NAME VALUE
--------------------- -------
DATE_FORMAT yyyy-mm-dd
ALTER SESSION SET date_format='yyyy-mm-dd hh24:mi:ss';
SHOW PARAMETER date_format;
NAME VALUE
--------------------- -------
DATE_FORMAT yyyy-mm-dd hh24:mi:ss
--会话级参数ISOLATION_LEVEL
-- 设置会话的默认隔离级别为SERIALIZABLE。
ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
-- 设置会话的默认隔离级别为READ COMMITTED。
ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED;
# 会话属性参数
# current_schema
该参数为所在会话的当前schema属性。
schema是数据库对象的集合(即所有数据库对象被真实表述为schema.对象名),当用户访问某个数据库对象时,如未显式指定schema,则默认指定为当前schema。
当连接一个会话时,初始的current_schema为当前所登录用户对应的schema,通过ALTER SESSION语句可以动态地改变这个值。改变之后,所有在此会话中执行的SQL语句的默认schema均为修改后的current_schema。
Note:
1.权限校验基于用户,切换当前schema不影响当前所登录用户权限。
2.当前所登录用户需拥有ALTER SESSION权限。
示例
--系统中存在sales1、sales2两个用户
--以sales1用户登录开启会话
conn sales1/sales1;
--创建area表,默认schema为sales1
DROP TABLE IF EXISTS area;
CREATE TABLE area
(area_no CHAR(2) NOT NULL,
area_name VARCHAR2(60),
DHQ VARCHAR2(20) DEFAULT 'ShenZhen' NOT NULL);
INSERT INTO area VALUES ('01','华东','Shanghai');
INSERT INTO area VALUES ('02','华西','Chengdu');
COMMIT;
SELECT * FROM area;
AREA_NO AREA_NAME DHQ
------- -------------------------- -------------------
01 华东 Shanghai
02 华西 Chengdu
--修改current_schema
ALTER SESSION SET current_schema=sales2;
--默认schema被修改为sales2
SELECT * FROM area;
[1:15]YAS-02012 table or view does not exist