加一新盘到Diskgroup引发相应DG dismount

2015年1月15日 没有评论

1 现象
11.2.0.3的ORACLE RAC,因一DG空间紧张,故加一新盘到这个DG,命令如下:

SQL> alter diskgroup SALEDB_04
add disk ‘/dev/rdisk/disk2565’ name SALEDB_04_0012;

却引发了这个DG的dismount,进而引发了这个结点的ORACLE实例宕。
阅读全文…

自动强制回滚prepare事务

2015年1月4日 没有评论

因两阶段提交的问题,偶而会产生prepare事务,通过查询dba_2pc_pending视图可以查到,处理不及时会引发中间件队列异常。
人为的发现会有一定的延后性,如下以一个小例子使这一部分工作自动化,同时也简单的描述一下scheduler job的常见操作,希望能起到三生万物的效果。
阅读全文…

分类: Oracle 标签: , , , ,

unpv13e的使用

2014年9月2日 没有评论

做UNIX编程应该都读过史蒂文斯Unix Network Programming这三本书,unpv13e是卷1的源码,很多的时侯为编程方便会直接使用相应的例子,unpv13e的使用方法如下:

1 unpv13e可以从这里下载http://url.cn/SXi9W9
2.解压下载的unpv13e.tar.gz文件

tar -zxvf unpv13e.tar.gz

3 进入unpv13e目录

./configure
cd lib
make

cd ../libfree # continue building the basic library
make

然后在unpv13e文件夹中成功生成libunp.a文件
4 将生成的libunp.a静态库复制到/usr/lib/中

cd ..
sudo cp libunp.a /usr/lib

5 修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便

vi lib/unp.h //将unp.h中#include “../config.h”修改为#include “config.h”

sudo cp lib/unp.h /usr/include
sudo cp config.h /usr/include

这里复制到/usr/include目录后,非root用户无权查看,记得chmod 744 一下

分类: Unix 标签: ,

10g move fga_log$ to new tablespace raise ORA-00997 error and fga relative test

2014年8月14日 没有评论

FGA-细颗粒度审计,Oracle 9i版本出现,只支持对select的审计,在10g及之上的版本,FGA支持insert,delete,update,merge的审计。审计结果dba_fga_audit_trail存放在SYSTEM表空间中,实际dba_fga_audit_trail是一个视图,其基表是fga_log$。当数据库有大量的审计信息时,fga_log$会膨胀得很大,SYSTEM占太多空间是每个DBA都不想看到的,因此把fga_log$表移动到一专属的表空间很有必要。
1 move到专属表空间时报ORA-00997错

SQL> alter table fga_log$ move tablespace USERS;
alter table fga_log$ move tablespace TBS_OPERLOG
*
ERROR at line 1:
ORA-00997: illegal use of LONG datatype

2 相关信息
DBA_FGA_AUDIT_TRAIL的基表是fga_log$
阅读全文…

分类: Oracle 标签: , ,

Oracle自动收集统计信息JOB失败解决

2014年8月1日 没有评论

Oracle自动收集统计信息JOB总是失败,原因大都因为数据量较大,在预计的时间窗口内统计信息未收集完毕。

1、查看JOB运行状态
阅读全文…

分类: Oracle 标签: ,

exp一张大表报ORA-01555和ORA-22922

2014年6月26日 没有评论

好早之前的一个活,一个pc server,windows下装的oracle9i,想换ibm p570小机,数据需从pc server迁移到小机,一张大表含blob类型字段,表数据量4T,当数据量导出到1.5TB时就会报ORA-01555和ORA-22922错。做了N多尝试,还是用了Oracle MOS的方案,原因还是在于有一些LOB数据库坏掉了,这里记录一下。

1 建一张临时表,用于存坏掉LOB相应行的rowid,例如:corrupt_lobs

SQL> create table corrupt_lobs (corrupt_rowid rowid, err_num number);

2 看一下表结构

DESC LOBDATA

Name Null? Type
———- ——— ————
ID NOT NULL NUMBER
DOCUMENT BLOB

阅读全文…

分类: Oracle 标签: , ,

amdu,从非挂载的asm提取文件

2014年6月8日 没有评论

ASM是10g时引入的,使用的人不多,偶尔有一些吃“螃蟹”的基本都是用在了linux下做rac,抑或是测着玩,原因在于大家对于新事物还都是观望的态度,传统的裸设备用久了也用熟了。而ASM是一个黑盒,如果ASM坏了,里面的数据文件等各种文件都读不出来岂不傻眼了,干着急没办法,只能求助于Oracle。
从11g开始,Oracle悄无生息的在$ORACLE_HOME/bin目录下多了amdu这个工具,手册上没有这个工具的任何信息,顶多是执行amdu -help会列出这个工具的各种选项,不过google或baidu一下内容就多了,会从各个搜索结果只言片语中立体的了解这个工具,细心一点也会知道Oracle mysupport上的DOC_ID:553639.1简单介绍了这个,Oracle也提供了10g的amdu的版本。
说了这么多,amdu倒底干啥用的,简单的说就是使用它可以从一个崩溃的ASM中把数据文件等各种文件读出来,它的存在为极大的增强最终用户使用asm的信心。它是给Oracle supporter的,不是面向最终用户的。不是每个最终用户都有Oracle服务,所以多学些知识没有坏处,如下以一个测试案例演示一下这个工具的使用。
阅读全文…

分类: Oracle 标签:

LogMiner

2014年5月16日 没有评论

LogMiner是Oracle数据库自带的一个工具,可以通过它分析在线日志和归档日志获取数据库过往详细、具体的操作,非常有用。

1 为什么会用到LogMiner?
主要出于以下几个缘由:
1)当数据库发生了误操作,需要不完全恢复,为确认误操作准确的时间点或SCN号,此时需用到LogMiner。
2)传统恢复一个上TB或是恢复一个几百GB表空间中的一个小表,标准的操作是把整个表空间恢复到之前的状态,然后再应用归档日志,加上搭建恢复环境的时间,整个时间会很长。通过LogMiner可以换一种恢复思维,能通过它解析到这个表上所有的DML操作,可以做反向修复。合理的使用会大幅降低此情况恢复的复杂度和时间。
3)可以把LogMiner当成最强大的数据库审计工具。
4)在过去的某个时间数据库很忙或是产生了大量的归档日志,通过LogMiner可以知道是哪些操作,哪个表占比较大,主要矛盾在哪。

2 几个概念
源库:生成归档日志和在线日志的库
目标库:执行LogMiner进行日志分析的库
字典:英文名为CATALOG,用于把日志中的内部信息翻译成实际的表名、列名等有价值信息
源库与目标库可以是同一个,也可以是不同的。如果不同,要求目标库数据库版本高于或等于源库;字符集要相同;操作系统、硬件平台要相同。
阅读全文…

分类: Oracle 标签:

AIX 创建没有头部偏移的LV

2014年5月4日 没有评论

在早期版本以裸设备做数据文件会有4k头部偏移量,严重情况会引起坏块

1、检查
eg:

lslv data_001.crm|grep DEVICESUBTYPE
DEVICESUBTYPE : DS_LVZ

看类型是不是DS_LVZ


dbfsize /dev/rdata_001.crm

如表有Database file type: raw device without 4K starting offset这样的提示也表明是没有4k头部偏移的

2、AIX卷组类型说明
1)Big VG,如果我们指定-T O,则创建DS_LVZ类型的LV,否则,创建普通类型的LV
2)普通的VG,用什么命令创建,都是普通的DS_LV类型的LV
3)calable-typeVG,用什么方式的命令创建,都是DS_LVZ类型的LV

3、创建无头部偏移lv命令

1)mklv -y’data_001.zw’ -t’raw’ -T O -u’5′ ‘-S128K’ vgzw03 250 或
2)mklv -y LVname -T O -w n -s n -r n VGname NumPPs(ORACLE alert日志给出的命令)

分类: Unix 标签: , ,

RAC Rman备份考虑

2014年4月23日 没有评论

电信数据库大多做的是ORACLE RAC,数十TB级,因此备份的压力较大,需要在预计时间内完成全备份等任务。这个时侯很多人会想到备份从多结点走这样的方式,既保证了每个结点IO量保持在合适的范围,又会提升备份的性能,减少备份的时间。我们能见到一些技术书籍、技术文档描述的都非常简单,实测会发现依据这些描述在一些稍极端的情形(例如RAC向单结点恢复)恢复基本无法完成,备份变成了一种摆设。
以legato networker备份oracle rac为例,描述一下正确的设定有哪些。

1 legato networker配置注意项
计费库RAC系统包含两个个节点,分别名为jfdb1和jfdb2。每个节点是一个hp-ux操作系统,legato networker备份到IBM 3584带库,networker 存储节点软件安装在每个节点上。
在 NMC 界面中,两结点存储节点等配置都完成。
jfdb1结点为备份发起点点。(节点任意选择,也可以为jfdb2)在所有 RMAN 备份和还原脚本中, NSR_CLIENT 必须设置为节点jfdb1的主机名。
jfdb1的 NetWorker 客户端资源中:
“远程访问”属性设置为节点jfdb2的主机名称或*@*。
“存储节点”属性设置要修改为:
curphyhost
nsrserverhost

其它配置略。
阅读全文…

分类: Oracle 标签: , , ,