云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_阿里云首席科学家_是什么

小七 141 0

专属服务器_阿里云首席科学家_是什么

有几个话题是一个持续的困惑,即使是有经验的IT专业人士和开发人员。UNICODE处理是一个例子(请参阅此处了解更多信息),浮点计算是另一个例子(这是一个很好的入门),然后是与时间有关的所有事情。

处理日期、时间、时区等本身就是混乱和违反直觉的;添加计算机并不能使这一点更好。

这篇文章将对SAP HANA中的日期/时间处理进行一些说明,并试图回答我最近遇到的一些问题。

SAP HANA DBMS显然没有自带计时器(尽管我认为这对HANA DBA来说是一个不错的礼物),但它使用了每当需要知道当前时间时,数据和大数据的区别,Linux操作系统提供的日期/时间信息。

Linux从不同的可能来源获取时间,从硬件时钟(又名BIOS时钟)开始,如果配置了ntpd(aemon)。这个手册页(hwclock,date,tz,adjtimex,/proc/timer\u list)读起来很有趣。

这个故事的超短版本是:当电脑启动时,硬件时钟设置电池和BIOS保持的当前时间。这个时间没有一个时区分配给它-它是开放的解释。在某个时候,Linux启动,读取硬件时钟并设置当前系统时间和日期,考虑到Linux安装时为这台计算机声明的时区(是的,大数据数据处理,以后可以更改)。从这里开始,硬件时钟就不可能了。所有与当前日期/时间有关的系统请求都由Linux管理的时钟(系统时间)提供,并且可能通过ntp守护进程不断更新。可以检查当前硬件时间(以ISO 8061格式输出):

+1100是系统时间使用/假设的时区偏移。硬件时钟不"知道"它在哪个时区,因此指定–utc或–localtime并检查哪个结果是正确的本地时间在这里是至关重要的。再一次,大数据库,hwclock的手册页有全部内容。

将其与日期的输出进行比较:

我们了解到系统时间设置为使用澳大利亚东部时区。

另一种检查在系统级别设置了哪个时区的方法是检查文件系统链接/etc/localtime指向的位置:

/usr/share/zoneinfo文件夹是系统时区数据库目录

所有时区,包括夏时制(DST),Linux系统知道的,都可以在这里找到。由于时区定义和DST规则都会定期更改(请参阅时区新闻),因此这些文件通常会在Linux更新期间更新。稍后我们将回到夏令时的话题—它是又一个蠕虫病毒的罐头。

我们在这里,Linux已经启动并准备就绪。我们现在可以登录并询问当前时间和日期(如上所示):

但是如果我的用户使用不同的时区怎么办?

为此,Linux shell提供了一个名为TZ的环境变量形式的设置。将变量设置为时区数据库目录中的一个时区,程序可以返回所选的本地时间:

从shell启动的具有此设置的任何程序现在都将在时区设置为UTC的情况下工作。

如果此设置是永久性的(仅针对当前用户),则必须删除环境变量在用户的shell配置文件中设置。shell概要文件是一个自动启动脚本,它包含shell每次启动时应该执行的命令。对于公共Bourne shell,此脚本文件称为.profile。由于名称以点开头,所以它是一个所谓的隐藏文件,但是在用户的主目录中使用ls-a会列出它:

如果将export TZ=UTC+0行添加到.profile文件中,那么每次使用shell时都会为用户设置新的时区。

现在,对于基于Linux的SAP系统来说,事情稍微…灵活一些。当然,"灵活"是指复杂。将所有设置放在一个文件中会使管理系统或组织范围的设置变得相当乏味。也许有些设置应该是特定于用户的,而有些则应该应用于系统的所有用户,以此类推。为此,可以选择调用其他.profile脚本。

直截了当地说,对于SAP HANA操作系统用户adm,我们正在查看以下配置文件脚本:

这些文件中的大多数是由SAP HANA的安装程序创建的。当我们以adm的身份登录时,文件将按以下顺序执行:

看到这个令人印象深刻的纠结,您可能不太清楚时区设置的位置。

幸运的是,答案很简单,因为几乎所有脚本文件的头注释中都带有警告,告诉您不要手动编辑它。

这会留下。客户.sh作为所有自定义的目标文件,包括时区设置和智能数据访问(SDA)连接的附加路径或环境设置。幸运的是,有人在.profile中添加了一条注释,以明确所有自定义设置都可以在中找到。客户.sh。这样,即使是不知道SAP的Linux管理员也有相当大的机会确定在哪些文件中进行了设置。

此时,我们可以配置系统的硬件时钟、Linux系统时钟和SAP HANA所在的时区应用于任何使用"本地"时区的地方。

此设置设置SAP HANA安装的主时区。这里重要的是要注意术语"安装"。自从租户数据库成为SAP HANA的标准之后,也可以使用"强隔离"模式,在Linux级别上隔离不同租户数据库的SAP HANA进程。每个租户数据库都可以在自己的Linux用户安全上下文中运行。现在很容易假设,由于数据库在它们自己的Linux用户帐户中运行,因此它们可以拥有各自的环境,并具有单独的时区设置。然而,情况并非如此,因为SAP HANA安装的所有租户数据库共享相同的nameserver(hdbnameserver)进程。所有租户数据库共享此名称服务器进程的环境。