Blog Category: 数据库


小PC运行Oracle常见问题一二

2010 年 12 月 06 日 下午 2:07 | | 阅读次数 : 2,838 次

数据库 | , ,

    这阵子真的很忙,一个项目组正在使用Oracle开发一个系统,由于新的服务器还在路上,所以只能用一台差不多过时的PC担任DB Server(Windows XP Professional SP3),这样出现了一系列的问题,这里捡两个说一下。

    首先,在Oracle运行一段时间之后,忽然不能启动,出现:ORA-01034 – Oracle not available 和 ORA-27101 – shared memory realm does not exist ,很显然,这是Oracle实例没有启动。为什么出现这个情况呢?环境和Oracle的设置一直没有变过,用 sqlplus / as sysdba 登陆的时候,出现 ORA-28056: Writing audit records to Windows Event Log failed 的错误,Windows的应用日志满了? 无语,这才多大点事啊!解决方法有二:

  1. 清空Windows的应用程序日志,然后使用 sqlplus / as sysdba  ; startup 启动服务,最简便和快捷的方法。
  2. 因为出现这个情况的时候,你的audit 是默认打开的,在这里设置一下就行,(你可以通过 show parameter audit_trail 在Oracle命令行下查看)在Windows下,用 set audit_trail=DB或者是NONE即可以解决,关于audit_trail的问题,可以找找资料,他是Oracle中的一个审计参数。

    其次,由于这台机器的内存和CPU都很有限,很容易造成CPU或者是内存占用过高产生资源不够,这样的话,OracleService服务会自动停止。往往在XP下,cmd窗口的缓存占用很大,而且不会自动丢弃副本,这样控制台管理程序会出来维持正常运行,如果CMD程序过多的话(Oracle运行的时候,会启动很多的CMD程序),MS的控制台管理程序(csrss.exe)会占用很高的CPU(20%-50%),如此一来,机器不死才怪了!这个的临时解决办法就是,设置丢弃CMD的副本!具体操作:控制台窗口属性,里面有个命令纪录,钩选丢弃旧的副本,自行设置适合自己的缓冲区大小和数量,然后重启机器。这时csrss.exe就很少看见了,机器也回归了正常。

Share

postgres failed to initialize lc_messages solved

2009 年 06 月 09 日 下午 4:45 | | 阅读次数 : 42,333 次

数据库 | ,

得到这个错误:

FATAL:  XX000: failed to initialize lc_messages to “”
LOCATION:  InitializeGUCOptions, guc.c:1867

为了方便看日文的source,把测试服务器的LANG改成了Shift_jis,结果今天就启动不了了,到官方一看,原来还是这个原因,虚惊一场。改回来就ok了。。

相对于哪些安装、编译不用指定编码的数据库来说,这很莫名的一个错误,但是对于postgres来说,就有这么严格,因为在一个数据库目录init的时候,需要根据你的服务器环境来决定数据库的安装字符集(如果没有带–encoding=encoding这个参数的话,如果在执行initdb的时候,加上了–encoding=”zh_CN”,那么不管你的服务器环境如何,它将以简体中文作为默认的模板编码)。

两种办法:(以下的encoding是你所在地区的编码,如中国大陆是zh-CN,日文就是Shift_JIS或者是EUC-jp等。这取决你初始化数据库的时候的字符编码)
(更多…)

Share

Oracle 常用函数回顾

2008 年 12 月 12 日 上午 10:07 | | 阅读次数 : 9,773 次

数据库 | ,

  函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:

   单行函数
   组函数

  本文将讨论如何利用单行函数以及使用规则。

  SQL中的单行函数 (更多…)

Share