错误信息
【汉】ORA-39064:无法写入日志文件
【英】ORA-39064:unable to write to the log file
序
今天在Windows操作系统上的Oracle数据库使用Data Pump(数据泵)导出用户数据时,看到日志中有一个报错,日志文件中的内容被截断,但控制台输出正常。于是调整了cmd窗口的缓冲区高度后,重新导出了一次,并将其控制台内容复制到一个临时文件中,检查日志信息,看到以下错误:
版本
Oracle 11.2.0.1
故
Oracle官方文档提到,在多字节字符集环境中,如果客户端的NLS_LANG变量与数据库中的字符集配置的不一致,就可能会在使用Data Pump(数据泵)导出导入时,遇到ORA-39064。
解
由于数据泵的特性,我们肯定是排查数据库服务器的客户端字符集和数据库服务器字符集参数配置的是否一致。我这里的Oracle是安装在Windows操作系统中的,所以查看注册表的【HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\NLS_LANG】变量中的值和数据库服务器的字符集。
经过简单的排查后,发现我的数据库服务器的字符集是AL32UTF8,但客户端字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,两个字符集不同导致dmp导出报错了,将客户端字符集修改成和服务器端一致就行了。
我这里将其修改为“AMERICAN_AMERICA.AL32UTF8”,然后重新执行Data Pump,就可以正常写入日志文件了。
评论区