Entries tagged with “10g” from DBA notes

Oracle 10g 开始 引入了AWR (Automatic Workload Repository). Oracle 建议用户用这个取代 Statspack。不过这个需要注意的是使用 AWR 需要有 Diagnostic Pack License。Oracle 后来推出了一个解决方案可以禁止掉该特性。

在 Note. 436386.1 有说明:

SQL> @dbms_awr.plb
然后执行:
dbms_awr.disable_awr();

如果用 sys 之外的用户创建 AWR 报告,则需要进行合适的授权。否则会报告错误 PACKAGE 执行错误。

CONNECT / AS SYSDBA;
GRANT ADVISOR TO foo;
GRANT SELECT_CATALOG_ROLE TO foo;
GRANT EXECUTE ON sys.dbms_workload_repository TO foo;

注意 Bug 4597354 在创建基线数据的时候,对性能有很大影响。在一个非常繁忙的系统上不要进行此操作。

如果结合企业管理器用 AWR 是很方便的,如果用手工方式收集性能数据,多了很多可供调整的地方,是更加方便了呢?还是更加麻烦了?

--EOF--

| | Comments (1) |

Oracle 10g 的 ASM (自动存储管理) 真是一把双刃剑,对于存储的管理给 DBA 带来了不少便利,可也存在无穷多的问题。

ASM_POWER_LIMIT 参数

这个参数 ASM_POWER_LIMIT 参数控制 ASM 后台进程 ARBx 的数量。ARBx 进程用来进行 ASM 磁盘数据重新分布打散。ASM_POWER_LIMIT 取值 从 0 到 11(据说从 10gR2 开始可以设置为 0 ). 当新添加磁盘或者删除磁盘后,ASM 会启动 ARBx 进行 IO 分散操作,这是个非常消耗资源的动作,所以一定要选择系统空闲的时候进行。

关于 ASM 的条带与分配单元

ASM 默认的 Stripe Size 为 128K。 (一般操作系统的一个 IO 最大是 1M,对于 Block Size 为 8K 的系统,一般来说,db_file_multiblock_read_count 设置为 16 即可)。分配单元( Allocation Unit ) 是 1M,这个 AU 对应 extent 。在一些 DW 环境,随着数据量增大,AU 会非常的多,会产生性能影响。Stripe Size 和 AU 是可以通过 ASM 实例上的两个隐含参数调整的:

  • _asm_ausize
  • _asm_stripesize(注意最大1M,否则会有负面影响)

磁盘组不能 mount

错误信息类似如下:
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "FOO"
这个问题是因为 设备 PVID 导致的,一般可以通过如下三个方法解决:
  • 对磁盘组中的设备进行 dd 操作抹去磁盘 0 块的内容
  • 用 FORCE 选项把磁盘添加到其他磁盘组中。
  • 用 FORCE 选项用所有这些磁盘创建新的磁盘组。
哪一种方式都有风险,操作需要谨慎。

--EOF--

| | Comments (6) |

Oracle 10g R2 的 Data Pump 是一个好工具,弥补了传统 export/import 工具的很多不足。相关信息可以参考一下我以前对 Data Pump 的介绍

最近在 Linux 平台上经常遇到 ORA-39095 错误。这个错误。这个错误号,文档的解释:

ORA-39095:Dump file space has been exhausted: Unable to allocate string bytes
Cause: The Export job ran out of dump file space before the job was completed.
Action: Reattach to the job and add additional dump files to the job restarting the job.

这个解释只针对一般情况。我遇到的这个案例,目录的空间还有很多,可是也一样报错了。而且,一般在第 100 个 导出文件出错(更正:%U参数是2位,定长的,最大99)。开始以为是 Bug,可是遍查 Metalink,发现和 ORA-39095 错误有关只有两条信息,和我遇到的情况不符。

偶然在阅读 Oracle Database Utilities 手册的时候,发现了这一段话:

Because each active worker process or I/O server process writes exclusively to one file at a time, an insufficient number of files can have adverse effects. Some of the worker processes will be idle while waiting for files, thereby degrading the overall performance of the job. More importantly, if any member of a cooperating group of parallel I/O server processes cannot obtain a file for output, then the export operation will be stopped with an ORA-39095 error. Both situations can be corrected by attaching to the job using the Data Pump Export utility, adding more files using the ADD_FILE command while in interactive mode, and in the case of a stopped job, restarting the job.

真是孤陋寡闻了,我的并行度用的是 4 ,减小这个并行度,该错误不再出现。

You can supply multiple file_name specifications as a comma-delimited list or in separate DUMPFILE parameter specifications. If no extension is given for the filename, then Export uses the default file extension of .dmp. The filenames can contain a substitution variable (%U), which implies that multiple files may be generated. The substitution variable is expanded in the resulting filenames into a 2-digit, fixed-width, incrementing integer starting at 01 and ending at 99. If a file specification contains two substitution variables, both are incremented at the same time. For example, exp%Uaa%U.dmp would resolve to exp01aa01.dmp, exp02aa02.dmp, and so forth.

--EOF--

| | Comments (0) |

其实是一个很老的"新"变化。Oracle 10g 对 CONNECT 角色作了一点调整。原来的 CONNECT 角色(9i) 包括

CREATE SESSION
CREATE TABLE
CREATE VIEW
CREATE SYNONYM
CREATE CLUSTER
CREATE DATABASE LINK
CREATE SEQUENCE
ALTER SESSION
其中象 ALTER SESSION 这样的权限还是很危险的,一个用户可以搞垮整个数据库。所以估计是出于安全的原因吧,Oracle 10g 现在只保留了 CREATE SESSION 这个权限。

在 Metalink Note:317258.1 描述了 CONNECT 的变迁,不看不知道,一看吓一跳,在 Oracle 7 上该角色还包括预定义角色 DBA , 即使是 Oracle 8i 上,该角色也包括了很多权限过大的预定义角色。

细微的东西往往隐藏着危险。

如果是从低版本升级到 10g 导致权限问题,可以用 $ORACLE_HOME/rdbms/admin/rstrconn.sql 这个脚本进行恢复.

--EOF--

| | Comments (2) |

Oracle 10g 的 Data Pump 是个不错的新特性,因为新(其实 10g 也发布好几年了),所以也存在不少问题。

比如 EXPDP 的 EXCLUDE 参数,expdp help=y 输出的内容是这样说明的:

EXCLUDE Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.

可是实际上用这样的格式却是不正确的,会得到一个错误提示信息:

ORA-39071: Value for EXCLUDE is badly formed.

正确的格式是啥? 如果第一次遇到或许还有些不知就里,莫明其妙。在 ITpub 上有个讨论,有朋友贴的文档给出了正确的语法:

EXCLUDE=TABLE:"IN ('TABLENAME1', 'TABLENAME2')"

对于 EXCLUDE/INCLUDE 参数还要注意的是二者不能共用。此外,Linux 和 Windows 下的命令行可能要对转义符号注意一点。

这个语法问题存在好久了,应该算是文档的 Bug ? Oracle 还没有进行修正。

EXPDP 我还遇到另外一个问题,生成的文件超过 99 个就会报错。有谁遇到过没?

--EOF--

BTW: 最近看到有朋友批评我写的东西没意思,其实首先要明确一点,我写的东西基本上是比较简单的所谓"技术", 另外我也不知道写什么有意思,众口难调,而且,写多了我也腻。

| | Comments (8) |

最近手气特好,手边的这一套 Oracle 10gR2 几乎一天遇到一个 Bug。

昨天遇到的问题是查询结果不正确(这可是最为严重的问题了)。大致情况和 Bug 4604970 - Wrong results with 'hash group by' aggregation enabled 相符。通过修改初始化参数 optimizer_features_enable 可以避免这个问题。

今天遇到的问题是:

ORA-27054: NFS file system where the file is created
or resides is not mounted with correct options

这个 Bug 到现在还没有彻底的解决办法,只能通过 hard 方式 mount nfs 目录来避免。

还好这个库的要求也不太高,否则可真的要吃不了兜着走。

Oracle 10g 从发布到现在可不短了。但是从产品的可靠性来看与 9iR2 可差远了。除了 Data Pump 这样的 DW 杀手特性之外,真的很难找到使用 10g 的合适理由。虽然 Oracle 一再暗示已经有绝大多数用户迁移到了 10g 版本,很难让人相信这是真的。

--EOF--

| | Comments (15) |

在 Red Hat Enterprise Linux Server 上安装 Oracle 的时候,如果误打误撞顺利的话可能一个错误都碰不到,如果不顺利可能每一步都有槛。以下是几个小建议,可能会让一些朋友少一点麻烦。

1. 安装 OS 时候请选择 "Install Default Software Servers"

很多朋友在安装操作系统的时候会选择 Custom 模式安装软件包, 这样看上去似乎会灵活一些,但是也带来潜在的极多麻烦。数据库软件依赖的包如果缺少的话,再次安装就麻烦了--软件之间的依赖性非常让人闹心的。RHEL 又没有对 YUM/APT 等自动解决依赖性工具的正式支持。

2. 参考 Oracle Validated Configuration

Oracle 这个服务很好。每个配置清单都是经厂商验证过可行的,参考性比较大。尤其是关于当前版本的临时 Patch 参考,更是必需要着重处理。

3. OS 安装文件 .iso 在服务器上放置一份

对数据库来说,一般都是远程操作服务器,如果临时需要安装文件,总不能跑到机房再把光盘扔里面吧? 这时这个 iso image就有用场了。如果上面说的第一条是定制安装 OS 的话,那么几乎就会用到安装光盘. 很多人要找安装包就从网上 rpmfind.net 之类的地方随便找个 RPM 包安装,强烈反对这样做。

另外:Werner Puschitz 的安装参考要超过 Oracle 的官方指导。必读。

几个小小建议,行家眼里不值一哂。

--EOF--

| | Comments (6) |

最近尝试了一下在 Dell PowerEdge 6850 上部署 EM64T 版本的 Oracle。 Intel 的 EM64T 技术不是真正的 64 位技术,但也可以体验一些 64 位的特性。

Intel EM64T 就是 Extended Memory 64 Technology,也有误缩写做 EMT64 的,通过 EM64T 可以实现 40 位的物理内存寻址与 48 位的虚拟内存寻址。真正的 64 位技术能够实现 50 位的物理地址寻址与 64 位虚拟地址寻址。

对于 Oracle RDBMS 来说,一个显著的变化是能够使用超过 1.7G 的内存边界,SGA 可以默认支持使用 4G 的内存(实际 3.7G 左右)。数据库 Cache 可以设置大一点,这样内存使用效率会好一些。Dell 很多 PC 服务器现在都支持 EM64T , 有不少被用来跑 Oracle 数据库,据我了解,实际使用 EM64T 的用户非常少。PowerEdge 6950 是 AMD 64bit CPU,用户群好像还没有积累起来。

现在 EM64T 已经叫做 Intel64 Architecture 了。

两个参考文档:

Dell 网站的评测报告
Running Oracle on 10g on Windows Server 2003 x64 Editions

--EOF--

| | Comments (4) |

Oracle 10g 关于 NLS 的环境变量发生了一点变化:

For RDBMS 7.2.x version the variable is called ORA_NLS.

For version 7.3.x the variable is called ORA_NLS32.

For Oracle 8, 8i and 9 variable is called ORA_NLS33.

For Oracle 10g the variable is called ORA_NLS10.

ORA_NLS33 的设置值:

ORA_NLS33 = $ORACLE_HOME/ocommon/nls/admin/data

而 ORA_NLS10 只需要设置:

ORA_NLS10 = $ORACLE_HOME/nls/data

定义了 ORA_NLS10 则不需要单独定义 ORA_NLS33 等参数了。

目前应该仍然是向后兼容 ORA_NLS33 的。

更多信息参考 Metalink: Note:77442.1

--EOF--

| | Comments (2) |

Oracle 10G的Data Pump技术能够在不同数据库间高速的移动数据库和元数据. 这个技术的基础是两个数据移动工具:Data Pump Export和Data Pump Import.

Oracle的Data Pump是通过一个PL/SQL包来实现的:DBMS_DataPump(也叫Data Pump API).Data Pump使用直接路径装载和外部表机制进行数据的移动. Data Pump使用DBMS_METADATA PL/Sql包进行包括ETL过程在内的所有的数据库对象操作.

Data Pump 是Oracle一些其它关键特性(如基于流的复制、逻辑Standby等、Grid)的基础。

Data Pump特性是集成到Oracle数据库10G中的,但是标准版本10G并行度只有1.

关键概念

Master Table

Master Table(MT)是Data Pump技术的核心.Master Table 用来保存整个过程中的细节信息(也可以说是一些元数据信息).有了MT,导出或者导入的重启动才变为可能.这些细节信息包括:

  • 产生Job状态的报告
  • 重新启动Job
  • 定位在Dump文件中的所有的对象.

主表在进行当前导出或者导入的操作的用户模式中被创建.该用户必须要有足够空间. 主表的名字和创建它的Job名字相同.这也就是说,你不能显式的指定一个和现有的表或者视图重名的Data Pump Job.

导出的时候,主表被创建,并在完成的时候写到Dump文件中.在启动导入的时候,主表从Dump文件集中载入到数据库中,并用来控制操作的顺序.主表也可以用一些参数来进行初始化操作.要注意的是主表不能跨文件存储.所以,指定的 Dump 文件的大小至少要能够容纳得下 MT .

主表依如下情况或被保留或者删除:

  • Job成功完成,MT 被删除.
  • 如果Job是使用STOP_JOB交互命令停掉的,MT将被保留以用来重启动Job.
  • 如果Job是使用KILL_JOB交互命令Kill掉的,MT将被删除,并且Job不能重新启动.
  • 如果Job意外中止,MT总是被保留.
| | Comments (1) |

Undo_retention Oracle 9i 开始出现新的初始化参数.Oracle 9i 的 Undo 管理特性使得 Ora-1555 错误大大减少, 但是 Undo_retention 的设置仍然会个别的时候出现问题.

Oracle 10g 有自动Automatic Undo Retention Tuning 这个特性.设置的 undo_retention 参数只是一个指导值, Oracle 会自动调整 Undo (会跨过 undo_retention 设定的时间) 来保证不会出现 Ora-1555 错误. 通过查询 V$UNDOSTAT 的 tuned_undoretention 字段可以得到 Oracle 根据事务量(如果是文件不可扩展,则会考虑剩余空间)采样后的自作主张的 retenton 时间. 这样对于一个 事务量分布不均匀的数据库来说, 就会引发潜在的问题--在批处理的时候可能 Undo 会用光. 而且这个状态将一直持续, 不会释放.

10g 中, 如果数据文件的属性是 autoextensible , 则 undo_retention 参数必须设置. 如果 undo 表空间的文件属性是不可扩展的, 则 undo_retention 将不会起到什么作用(修正的办法是把该 Undo 表空间属性设置为GUARANTEE ).

通过如下命令(undotbs01 是undo 表空间名字):

ALTER TABLESPACE undotbs01 RETENTION GUARANTEE;

然后可以查询 DBA_tablespaces 的 retention 列. undo 表空间的属性和普通表空间的属性是不一样的.

-End

| | Comments (4) |

何为闪回恢复区

Oracle 10g 有一项新功能称为:自动的基于磁盘的备份与恢复( Automatic Disk-Based Backup and Recovery )。实现该功能的基础为本文要讲述的闪回恢复区( Flash Recovery Area )。闪回恢复区是 Oracle 10g 中的新事物。简单的说,闪回恢复区是一块用以存储恢复相关的文件的存储空间。 允许用户集中存储所有恢复相关的文件。

闪回恢复区可以放在如下几种存储形式上:

  • 目录
  • 一个文件系统
  • 自动存储管理(ASM)磁盘组

RAC 环境中,这个该位置必须为 集群文件系统 (cluster file system) 或是 ASM 磁盘组亦或是通过 NFS 控制的文件共享目录,还要注意的是,所有实例的位置和操作系统的磁盘限额 (disk quota) 必须一致。

| | Comments (0) |

[Oracle] 用IE登录Linux服务器上的10g em出现的乱码的解决

作者:Fenng

日期:N/A 

出处:http://www.dbanotes.net

版本:1.01

问题描述

  

在Linux(Unix)环境下成功安装了Oracle 10g,从windows下用IE浏览器登录 10g 的em, 按钮是"口口"这样
的方框.

解决办法

其实严格的说来,这是Java的问题.JDK Swing采用TrueType 字体作为按钮的显示字体,如果你的JDK 找不到中文 字体用来显示,你看到的一些按钮就变成小方块的样子. 一般情况下, 我们只需要修改相应的 font.properties 就可 以达到目的. 这里有一篇文档:

http://www.lslnet.com/linux/docs/linux-2940.htm

提供了一个类似的解决办法, 但是不幸的是, 目前的 Oracle 10g毛病多多, 很不容易正确的设置, 而且这个办法也很 麻烦。

不知道大家有没有注意到, 10g EM 显示的中文翻译很是糟糕, "up" "down" 动不动就翻译成"向上""向下",让人哭 笑不得. 很多朋友都说, 干脆给显示英文算了, 可是怎么显示呢?

好了,现在我们有一种办法很容易的间接的解决这个问题:

打开你的IE浏览器, 选择'工具"-->"Internet选项"-->"常规", 选择 "语言", 默认只有 "中文", 选择 " 添加 ", 加入 "英语(美国)" , 调整顺序, 把“英语(美国)”移动到最上面。

OK ,确定.启动em:

$emctl start dbconsole
然后用IE浏览你的相应的地址:
http://yoururl:5500/em

看到了吗?英文界面出来了.(旁白:倒 ,这么简单阿)


参考信息



Core Java2 Volumn1-Fundamentals,6E P 269



http://java.sun.com/j2se/1.3/docs/guide/intl/fontprop.html

这篇文档详细的解释了font.properties

http://www.google.com/
经常搜索,你会收获更多

这是以前的老贴

--EOF--

| | Comments (0) |

DBA notes 的订阅数量,点击则可进行订阅
Feed 订阅数量,点击即可订阅最新内容

订阅更新

如果喜欢用 RSS reader 获取信息,可以订阅这个 Feed 以便获取 “10g” 将来的更新内容.

Subscribe to feed 点击订阅

标签