分类归档: Database

Oracle 修改软件 License 计算策略

Oracle 数据库软件的 License 一般是按照服务器的 CPU 个数计算的.这样就会有一个微妙的问题:对于双核心或者是多核的 CPU 该怎么计算呢 ?

在 05 年七月之前,Oracle 把每个核心(core)看做一个单独的处理器.七月的时候,Oracle 调整了一次 License 计算策略.每个核心算做 3/4 个 CPU (价格).这样对那些使用多核CPU的用户看起来似乎还不够公平 .根据这里看到的一个评测,使用多核处理器的中小企业们未必能获取最佳的性价比.

而在前几天,Oracle 重新调整了一下 License 策略.对每个多核(双核心)的 Intel/AMD 的 CPU, 每个 Core 算做 0.5 颗 CPU (价格),而对 Sun UltraSparc T1 , 每个 Core 只算作 1/4 CPU (价格).

继续阅读

联机重定义表示例

Oracle 9i 之后可以进行联机重定义表(Online Redefine Tables,或”在线重定义表”).该特性从某种程度上提供了一定的高可用性.通过该功能可以做到:

  • 修改表的存储参数
  • 移动该表到相同 Schema 下的 不同表空间内
  • 添加并行查询支持
  • 添加或删除分区
  • 重建表以便减少碎片
  • 在普通表和索引组织(index-organized)表之间互相转换
  • 添加或删除列

做一个从普通表到分区表之间的转换操作.可以用 DBA 用户操作.如果是普通用户需要有DBMS_REDEFINITION 包的可执行权限以及如下权限:

* CREATE ANY TABLE
* ALTER  ANY TABLE
* DROP   ANY TABLE
* LOCK   ANY TABLE
* SELECT ANY TABLE 

下面通过一个例子来简单演练一把.假定目前产品库有一个非分区表 TEST. 准备对把该表联机修改为分区表.

继续阅读

Oracle 选择 Open Solaris 10 作为64位首选开发平台

这是一则旧闻. Oracle 公司宣布将使用 Sun 公司的 Open Solaris 10 操作系统作为 x64 架构的首选开发平台.此前的32位平台上的开发,Oracle 最近几年首选的操作系统平台是 Linux(硬件是Dell) .这从Oracle发布软件补丁的顺序可以看出来.最近一两年,Oracle 的 Linux平台的软件或者补丁总是会先发布.而之前,如果我记的不错的话,应该是基于 HP-UX 平台的产品先发布.Oracle 表示,将在基于 Open Solaris 平台上同时支持 AMD Opteron 与 Intel Xeon 以及 Sun 的 UltraSparc 三种芯片.

Sun 最近一两年在操作系统市场上一直是走颓势.高端有竞争对手 AIX ,低端有 Linux 的繁荣的冲击. Sun 干脆把 Solaris 开源,希望挽回一些失地,暂时看来还是有一定效果的.相信这次 Oracle 也是很看中不需要软件许可证费用同时还可以得到 Sun 技术支持这一点.

当然,如果说仅仅一个 开源就让 Oracle 投怀送抱,也未免太简单了一些. 之所以选择 Sun, Oracle 也有很大一部分原因是背 Dynamic Tracing (DTrace) 诱惑的 (参见). Sun 刚推出 Dtrace 的时候,我以为不过是一个性能调整的工具而已,最近参加了一次 Dtrace 的培训,发现 Sun 已经把 Dtrace 做成了一个性能 Tuning 的框架.甚至作了语言上的扩展.用户可以通过一些自定义的脚本对软件进行性能上的分析.而这样的产品应该是 Oracle 所梦寐以求的. Dtrace是内建到 Solaris 核心的,虽然 Sun 表示将把 Dtrace 开源,但是移植到 Linux 平台上不知道要等多久了.

继续阅读

Ora-03113 错误分析

每一个DBA在进行数据库管理的过程中不可避免的要遇到形形色色的错误(ORA-1547
,ORA-904,ORA-1578 ……)。有些错误由于频繁出现、原因复杂而被 Oracle DBA 们戏称之为”经典的错误”。其中ORA-3113 “end of file on communication channel” 就是这样的一个。

我们可以简单的把这个错误理解为Oracle客户端进程和数据库后台进程连接中断。不过,导致这个错误的原因实际上有很多种:对数据库设置不当、任何能导致数据库后台进程崩溃的行为都可能产生这个错误。这个错误的出现还经常伴随着其它错误,比如说:

ORA-1034 ORACLE not available

此外,该错误出现的场景复杂,可能出现在:

  • 启动的Oracle的时侯
  • 试图创建数据库的时侯
  • 试图对数据库进行连接的时侯
  • 在客户端正在运行SQL/PL/SQL的时侯
  • 备份/恢复数据库的时侯
  • 其它一些情况下......

在论坛上也时常可以看到初级DBA对这个问题的求救。在这里简单的对该问题进行一下整理。

继续阅读