首页 > 数据库 >ORACLE的Scheduler的时区总结

ORACLE的Scheduler的时区总结

时间:2023-10-25 13:05:10浏览次数:37  
标签:Scheduler attribute scheduler SQL ORACLE 时区 PDB

在Oracle数据库中,一般人们可能只会关注数据库的时区或会话的时区,但是很少有人会关注Scheduler的时区设置,因为Scheduler的时区设置一般只会影响作业的scheduler和Windows的运行,很多时候,人们往往没有注意到它。这里简单总结一下这个知识点。

在Oracle 10g/11g中,数据库的scheduler的时区是全局统一的,但是从Oracle 12c开始,多租户架构中,CDB和各个PDB的scheduler的时区设置是分开的。我们一般可以通过下面几种方法查看数据库的scheduler时区信息

方法1:

select dbms_scheduler.stime from dual;

方法2:

set linesize 680
col attribute_name for a20
col value for a30
select * from dba_scheduler_global_attribute 
where attribute_name like '%TIMEZONE%';

方法3:

get_scheduler_attributes.sql脚本

SET SERVEROUTPUT ON
show con_name;
EXEC DBMS_OUTPUT.put_line(RPAD('-',60,'-'));
DECLARE
  PROCEDURE display(p_param IN VARCHAR2) AS
    l_result VARCHAR2(50);
  BEGIN
    DBMS_SCHEDULER.get_scheduler_attribute(
      attribute => p_param,
      value     => l_result);
    DBMS_OUTPUT.put_line(RPAD(p_param, 30, ' ') || ' : ' || l_result);
  END;
BEGIN
  display('current_open_window');
  display('default_timezone');
  display('email_sender');
  display('email_server');
  display('event_expiry_time');
  display('log_history');
  display('max_job_slave_processes');
END;
/

如下所示,我们在CDB容器下,查看数据库的Scheduler时区信息,如下所示,第一个SQL可以判断为东八区设置,其它两个SQL的值为null,表示使用systimestamp的时区。而当前systimestamp的时区为东八区

SQL> select dbms_scheduler.stime from dual;

STIME
---------------------------------------------------------------------------
11-SEP-23 10.04.37.395374000 PM +08:00

SQL> set linesize 680
SQL> col attribute_name for a20
SQL> col value for a30
SQL> select * from dba_scheduler_global_attribute 
  2  where attribute_name like '%TIMEZONE%';

ATTRIBUTE_NAME       VALUE
-------------------- ------------------------------
DEFAULT_TIMEZONE

SQL> @get_scheduler_attributes.sql

CON_NAME
------------------------------
CDB$ROOT
------------------------------------------------------------

PL/SQL procedure successfully completed.

current_open_window            : MONDAY_WINDOW
default_timezone               :
email_sender                   :
email_server                   :
event_expiry_time              :
log_history                    : 30
max_job_slave_processes        :

PL/SQL procedure successfully completed.

SQL>

官方文档[1]中的介绍如下

When start_date is NULL, the Scheduler determines the time zone for the repeat interval as follows:

It checks whether or not the session time zone is a region name. The session time zone can be set by either:

Issuing an ALTER SESSION statement, for example:

SQL> ALTER SESSION SET time_zone = 'Asia/Shanghai';



Setting the ORA_SDTZ environment variable.

If the session time zone is an absolute offset instead of a region name, the Scheduler uses the value of the DEFAULT_TIMEZONE Scheduler attribute. For more information, see the SET_SCHEDULER_ATTRIBUTE Procedure.

If the DEFAULT_TIMEZONE attribute is NULL, the Scheduler uses the time zone of systimestamp when the job or window is enabled.

在Oracle 19c中,一般用DBCA创建的PDB数据库,它的scheduler时区默认为PST8PDT, 如下所示,PST8PDT其实是美国的太平洋标准时间,是美国西部城市的主要计时制度。就和我们的北京时间类似。中国是统一使用北京时间,但是美国东西部使用不同的时间制度。美国东部有西5区,西6区等,PST8PDT就是西8区的时间。

ORACLE的Scheduler的时区总结_SQL

关于这个问题,其实官方文档Default Scheduler Timezone Value In PDB$SEED Different Than CDB (Doc ID 2702230.1)[2]有阐述这个现象。

On 12C, 18c and 19c, using DBCA General mode create DB, the default timezone of scheduler of PDB is different with CDB$ROOT.
The default timezone of the scheduler of PDB is PST8PDT on 19c and Etc/UTC on 12C & 18c no matter what the timezone of the scheduler is in CDB$ROOT.
But using create database command or using DBCA customize mode, the default timezone of the scheduler of PDB is same with CDB$ROOT.
It is expected behavior. 
Please refer to the below bug raised an enhancement request.
  Unpublished Bug 30076391 : DIFFERENT TIMEZONES OF SCHEDULER IN CDB$ROOT AND PDB USING DBCA GENERAL MODE CREATE DB

这个现象,如果你没有注意到,可能Scheduler的运行时间跟你所预期的不一样。例如,数据库采集、更新统计信息的时间,这个影响说大其实影响也蛮大的。可能导致在白天业务高峰期,数据库正在收集统计信息。所以,一般你在创建对应的PDB数据库时,就必须检查/设置Scheduler的时区。

设置scheduler的时区

exec dbms_scheduler.set_scheduler_attribute('default_timezone', 'Asia/Shanghai');

参考资料

[1]

1: https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2D8930DD-1042-4FA9-A0C0-2E4C7A7BFE9B

[2]

2: https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=122259819987503&id=2702230.1&_afrWindowMode=0&_adf.ctrl-state=bngoz01qg_129

标签:Scheduler,attribute,scheduler,SQL,ORACLE,时区,PDB
From: https://blog.51cto.com/u_15338523/8016436

相关文章

  • Oracle 19C 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署Oracle#vimdocker-compose.ymlversion:'3.4'services:oracledb:image:container-reg......
  • oracle查询scn
    概述在数据库的恢复过程,有时我们需要查询scn,分享一下具体的方法解决方案SQL>setnumwidth50SQL>setlinesize150pagesize1000SQL>select'D'file_type,file#,checkpoint_change#,statusfromV$datafile_headerunionallselect'L',group#,first_change#,......
  • 单位机房 服务器 ORACLE数据库服务器
    开发好的软件系统都部署在服务器上才能访问,服务器是专门伺候大家为大家服务的计算机。上几张图片看下服务器的样子 ......
  • Oracle特殊恢复原理与实战_12 Oracle坏块处理
       http://dbase.cc/2018/05/22/oracle/Oracle%E7%89%B9%E6%AE%8A%E6%81%A2%E5%A4%8D%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E6%88%98-%E8%AF%BE%E7%A8%8B%E5%AD%A6%E4%B9%A0/12_Oracle%E7%89%B9%E6%AE%8A%E6%81%A2%E5%A4%8D%E5%85%A5%E9%97%A8/......
  • [转]Oracle数据文件损坏的模拟和修复(一) |ORA-01578 data block corrupted|
    造成数据块损坏的原因通常是由于开启了异步I/O或者增加了写进程,还有可能是硬件引起的,今天模拟一下该问题的发生及修复方法。由于水平有限,那面疏漏,欢迎大家指正。 创建测试环境建立测试表空间:123456create tablespacetestdatafile  '/u02/oradata/logdw......
  • oracle rac集群
    操作系统:centos7.6oracle:19c两台RAC服务器配置hosts文件#cat/etc/hosts192.168.3.37rac1192.168.3.105rac2192.168.2.2racprv1192.168.2.3racprv2192.168.3.201racvip1192.168.3.202racvip2192.168.3.200scanip......
  • Oracle Preinstall 调优参数的学习
    OraclePreinstall调优参数的学习背景学习是一个痛苦并快乐的过程.之前自己手工安装过很多套Oracle数据库,也总结过很多但是很多都是比较皮毛的.最近遇到了一些问题.才发现.快餐只能吃饱,要是想学到东西必须精读.必须多方考证多方学习.用户相关所有的应用都不应......
  • OracleADDM自动诊断监视工具介绍
     一.ADDM概述 ADDM(AutomaticDatabaseDiagnosticMonitor)是植入Oracle数据库的一个自诊断引擎.ADDM通过检查和分析AWR获取的数据来判断Oracle数据库中可能的问题.   在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof、sql_trace、statspack、......
  • OracleCBO与RBO
    Oracle的优化器有两种优化方式: 基于规则的优化方式:Rule-BasedOptimization(RBO)基于成本或者统计信息的优化方式(Cost-BasedOptimization:CBO)     RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引......
  • Oracle数据报ora-01109错误解决方法
    Oracle数据库报ORA-01109错误的解决方法:题目:解决方式:1、先把数据库实例shutdownimmediate关闭;2、把报错的数据文件进行脱机处理;执行alterdatabasedatafile'错误文件位置'offline;3、再次执行alterdatabaseopen或者startup,即可正常运行数据库; ......