oracle服务器的操作系统,Oracle Linux 操作系统及数据库的时区机制分析
Oracle Linux 操作系統及數據庫的時區機制分析
1. /etc/localtime
這個文件記錄的是系統的時區,缺省的數據庫由此獲得時區信息
這個文件是二進制文件,修改該文件的方法是拷貝/usr/share/zoneinfo下的相應時區文件覆蓋 localtime 文件。
/etc/sysconfig/clock 與 localtime 配置,定義的是時區名稱區域信息等。
2./usr/share/zoneinfo/
該目錄存儲所有合法的時區信息,如果會話設置的時區和系統時區不一致,則由此讀取時區信息。
3.$ORACLE_HOME/oracore/zoneinfo
這里存儲的文件記錄數據庫的合法時區,和操作系統提供的信息會進行對比。
-rw-rw-r--. 1 oracle oinstall?? 1407 Jun? 1? 2009 readme.txt
-rw-rw-r--. 1 oracle oinstall 408315 Apr 14? 2010 timezlrg.dat
-rw-rw-r--. 1 oracle oinstall 160733 Apr 14? 2010 timezone.dat4.Linux上的時區信息可以通過 tzselect 命令查看,使用 timeconfig 進行配置修改
5.會話級別的時區設置可以如下進行
TZ='Asia/Shanghai';export TZ
6.hwclock -w
保存時區設置使之重啟系統后仍生效
關于Oracle的時區選項與時區關系,可以通過strace跟蹤進程,清晰的獲得整個流程:
分析整個過程中的文件讀取:
open("/etc/ld.so.preload", O_RDONLY)??? = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/tls/x86_64/libsqlplus.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/lib/tls/libsqlplus.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/lib/x86_64/libsqlplus.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/lib/libsqlplus.so", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.so", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)????? = 3
open("/lib64/libdl.so.2", O_RDONLY)???? = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libm.so.6", O_RDONLY)????? = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libnsl.so.1", O_RDONLY)??? = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib64/libc.so.6", O_RDONLY)????? = 3
open("/u01/app/oracle/product/10.2.0/db_1/lib/libsqlplusic.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/lib/libociicus.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/lib/libociei.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx1boot.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx00001.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx20354.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx10001.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx40011.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx20001.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/nls/data/lx40001.nlb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/sqlplus/mesg/sp1us.msb", O_RDONLY) = 3
open("/u01/app/oracle/product/10.2.0/db_1/sqlplus/mesg/sp2us.msb", O_RDONLY) = 4
open("/u01/app/oracle/product/10.2.0/db_1/sqlplus/mesg/cpyus.msb", O_RDONLY) = 5
open("/usr/share/zoneinfo/Asia/Shanghai", O_RDONLY) = 6
open("/u01/app/oracle/product/10.2.0/db_1/oracore/zoneinfo/timezlrg.dat", O_RDONLY) = 6
open("/u01/app/oracle/product/10.2.0/db_1/rdbms/mesg/ocius.msb", O_RDONLY) = 6可以看到Oracle讀取的操作系統時區文件:
/usr/share/zoneinfo/Asia/Shanghai
這是跟進環境變量的設置讀取的,數據庫的時區文件則是:
/u01/app/oracle/product/10.2.0/db_1/oracore/zoneinfo/timezlrg.dat
這整個驗證過程和Oracle的字符集完全相同,很有意思。
By eygle on 2012-03-20 16:31 |
Comments (0) |
FAQ | 2974 |
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的oracle服务器的操作系统,Oracle Linux 操作系统及数据库的时区机制分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中如何随机排列,科学网—对图
- 下一篇: Oracle单机报监听不支持服务,(转)