问题描述
Oracle 租户设置时区时出现错误。
ORA-01882: timezone region 'Asia/Shanghai' not found。
问题原因
租户下的
SYS.ALL_VIRTUAL_TENANT_TIME_ZONE_NAME_REAL_AGENT视图为空。租户变量
sql_select_limit的值为非 default。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
解决方法
OBClient 登录异常租户,执行如下命令,确认时区是否为空或者变量
sql_select_limit的值是否为默认。查询视图。
obclient > select count(*) from sys.ALL_VIRTUAL_TENANT_TIME_ZONE_NAME_REAL_AGENT;查询本租户系统变量。
obclient > show variables like '%sql_select_limit%';
如果时区数据为空或者变量
sql_select_limit的值为非 default,执行如下命令,导入时区数据,设置sql_select_limit值。进入 oceanbase 的
bin目录下执行导入时区命令。[admin@xxx /]$ cd /home/admin/oceanbase/bin ./import_time_zone_info.py -hipaddr -P2881 -txydcqs -p syspwd -f ../etc/timezone_V1.log登录 Oracle 租户。
设置恢复全局 select 查询允许返回默认行数。
obclient > ALTER SYSTEM SET global sql_select_limit=default;设置恢复一个 select 查询允许返回默认行数。
obclient > ALTER SYSTEM SET sql_select_limit=default;