sqlplus啟動失敗

skzhuga發表於2019-03-19

作業系統:CentOS 7.5

資料庫:Oracle 11.2.0.4


sqlplus突然無法啟動,報錯資訊如下:

Error 5 initializing SQL*Plus

NLS initialization error

初步判斷是nls編碼檔案讀取失敗導致sqlplus無法啟動。用strace跟蹤sqlplus的執行過程:

[oracle@node3 ~]$ strace -t -e trace=file sqlplus

10:30:16 execve("/opt/app/oracle/product/11g/bin/sqlplus", ["sqlplus"], [/* 29 vars */]) = 0

10:30:16 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/tls/x86_64/libsqlplus.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib/tls/x86_64", 0x7ffd81e7e460) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/tls/libsqlplus.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib/tls", 0x7ffd81e7e460) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/x86_64/libsqlplus.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib/x86_64", 0x7ffd81e7e460) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libsqlplus.so", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libclntsh.so.11.1", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libnnz11.so", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib32/tls/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib32/tls/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib32/tls/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib32/tls", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib32/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib32/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib32/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/opt/app/oracle/product/11g/lib32", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/tls/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/lib/tls/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/tls/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/lib/tls", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/lib/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0

10:30:16 open("/usr/lib/tls/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/usr/lib/tls/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/tls/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/usr/lib/tls", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/x86_64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/usr/lib/x86_64", 0x7ffd81e7e3d0) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 stat("/usr/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0

10:30:16 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libnsl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libnsl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libnsl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libnsl.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib64/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libaio.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libaio.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libaio.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib/libaio.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/usr/lib/libaio.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/lib64/libaio.so.1", O_RDONLY|O_CLOEXEC) = 3

10:30:16 open("/opt/app/oracle/product/11g/lib/libsqlplusic.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libociicus.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/lib/libociei.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

10:30:16 open("/opt/app/oracle/product/11g/nls/data/lx1boot.nlb", O_RDONLY) = 3

10:30:16 open("/opt/app/oracle/product/11g/nls/data/lx00001.nlb", O_RDONLY) = 3

10:30:16 open("/opt/app/oracle/product/11g/nls/data/lx20354.nlb", O_RDONLY) = 3

Error 5 initializing SQL*Plus

NLS initialization error

10:30:16 +++ exited with 1 +++


可看到是在讀取lx20354.nlb檔案候,導致sqlplus退出。檢視此檔案:

[oracle@node3 data]$ ll /opt/app/oracle/product/11g/nls/data/lx20354.nlb

ls: cannot access /opt/app/oracle/product/11g/nls/data/lx20354.nlb: No such file or directory

發現此檔案竟然丟失了。因此可斷定,是編碼檔案lx20354.nlb的丟失導致了sqlplus啟動失敗。


解決方案:

 從執行正常的同版本例項中複製丟失的檔案並放到相應目錄下即可解決問題。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544156/viewspace-2638739/,如需轉載,請註明出處,否則將追究法律責任。

相關文章