记一次ora-02287 sequence number not allowed错误
今天项目里报说一个存储过程总报错,询问修改轨迹后是在以前的insert ... select里面加入了sequence,而且sequence是放在group by的子查询里面了,最后将sequence引入到了外层没有group by的查询里面就OK了。[@more@]下面为模拟错误:create table tests(Id INT,Name varchar2(10));create sequence test_sminvalue 1maxvalue 9999999999999999999999start with 1increment by 1nocache;SQL> insert into tests select test_s.Nextval,1 from dual group by 12 ;insert into tests select test_s.Nextval,1 from dual group by 1ORA-02
通过impdp导出索引脚本
impdp tests/tests directory=dump_dir logfile=logfile.log network_link=crm_test REMAP_TABLESPACE=CRMREPORT:USERS SQLFILE=sqlfile.sql include=INDEX[@more@]
对数据泵数据传输的时间统计
今天正好做数据的迁移工作,工具用的是oracle10g的数据泵,为了考察下这个新工具的工作效率,顺便做了一下统计,统计结果是传输: 的数据量 20431757 rows的数据用了28m,net:千兆网卡sum:7.8Gsum row:20431757 rowsuse time:28mstatistic:4.77M/s12161.76rows/s以上数据时只转储数据的时候的,如果要同时将索引转储过去时间可能会很长,在我的测试中,5G的索引可能要使用53M,时间非常恐怖的,所以在转储的时候最好只转储数据就好了,索引可以后期手动创建(EXCLUTE=Y)[@more@]
记一次ORA-39149
今天在做数据迁移的时候居然遇到了以下错误:ORA-31631: privileges are requiredORA-39149: cannot link privileged user to non-privileged user具体操作如下:[oracle@szpa1 szpa]$ impdp system/manager tables=RECORDINGS_SUM directory=crm_dir logfile=logfile.log network_link=sourcedb table_exists_action=APPEND Import: Release 10.2.0.4.0 - 64bit Production on Monday, 01 November, 2010 16:56:25 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Rel
通过RMAN的Transportable平台间转移数据
首先查看可以使用RMAN的transportable功能的平台:SQL> COLUMN PLATFORM_NAME FORMAT A32SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT----------- -------------------------------- --------------1 Solaris[tm] OE (32-bit) Big2 Solaris[tm] OE (64-bit) Big7 Microsoft Windows IA (32-bit) Little10 Linux IA (32-bit) Little6 AIX-Based Systems (64-bit) Big3 HP-UX (64-bit) Big5 HP Tru64 UNIX Little4 HP-UX IA (64-bit) Big11 Linux IA (64-bit) Little15 HP Open VMS Little8
通过impdp做数据库迁移遇到的问题总结
初始的时候通过两个库之间直接转储数据,命令如下:在要导入的库的OS下执行:[oracle@qqdb auto_dmp]$ impdp tests/tests tables=ABC directory=dump_dir logfile=logfile.log network_link=crm_test table_exists_action=APPEND [@more@]Import: Release 10.2.0.1.0 - 64bit Production on Saturday, 30 October, 2010 2:28:40Copyright (c) 2003, 2005, Oracle. All rights reserved.Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP and Data Mining optionsS
OCFS2的问题汇总(二)
移植OCFS数据文件到OCFS252、我能以OCFS2的形式mount OCFS卷吗?不能,OCFS和OCFS2在磁盘上是不兼容的,因为我们需要在今后的版本中增加新的特性。[@more@]53、OCFS2和OCFS能同时挂载到同一台机器上吗?不能,OCFS只能工作在内核是2.4(Red Hat's AS2.1/EL3 and SuSE's SLES8).OCFS2工作的内核版本为2.6(RHEL4, SLES9 and SLES10). 54、我可以在内核版本为2.6的机器上访问OCFS卷吗?可以的,你可以通过FSCat 、fsls 或者fscp工具来访问OCFS卷,这些工具可以,以上工具可以在设备级浏览、复制文件到其他的文件系统,FSCat工具可以在oss.orac
OCFS2的问题汇总
通用的1、如何使用OCFS2a)下载安装OCFS2模块和rpm包b)创建cluster.conf并复制到其他节点c)配置并启动o2cb服务d)format卷e)mount卷[@more@]2、如何知道当前运行的OCFS2的版本# cat /proc/fs/ocfs2/versionOCFS2 1.2.8 Tue Feb 12 20:22:48 EST 2008 (build 9c7ae8bb50ef6d8791df2912775adcc5)3、如何配置我的系统在遇到kernel-panic的时候自动重启配置系统遇到kernel panic后60秒重启# echo 60 > /proc/sys/kernel/panic保证以上的配置在系统启动后能继续应用,在/etc/sysctl.conf文件内加入:kernel.panic = 60下载和安装部分4、从哪里
linux环境确定OCFS2文件系统的BLOCK和cluster size
应用环境:Linux OS - Version: 1.2 to 1.6Linux x86Linux x86-64[@more@]解决方案:许多已经存在的工具可以完成需要的工作:debugfs.ocfs2 ocfs2console fsck.ocfs2以下示例都是在Enterprise Linux 5 system1、debugfs.ocfs2debugfs.ocfs2(8) command ,这个工具是在ocfs2-tool包内提供的基于EL4/EL5,可以用此工具来确定OCFS2的文件系统# uname -aLinux piston 2.6.18-194.3.1.0.1.el5 #1 SMP Thu May 6 19:58:50 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux# cat /etc/[e,r]*-releaseEnterprise Linux Enterprise Linux Server release 5
向集群环境中增加一个OCFS2节点
可以应用的环境:Linux OS - Version: 1.2.5-1 to 1.2.9-1Linux x86Linux x86-64Linux Kernel - Version: 1.2.5-1 to 1.2.9-1 [@more@]目的:本文的目的是讲述一个向一个现有的cluster环境中增加一个ocfs节点并且不用停止现有的环境。解决方案:o2cb_ctl工具是用来在线增加ocfs2节点的工具,以下的步骤列出了如何增加的操作:* 192.168.100.1 is an existing ocfs2 node which is already in the online ocfs2 cluster and its hostname is rac1 * 192.168.100.2 is an existing ocfs2 node which is already in the online ocfs2 cluster
装10gRAC遇到的libpthread.so.0: cannot open shared object file问题
环境:ORACLE 10G 10.2.0.1 64BITREDHAT 5.4 64BITOS:HP 580RAM:16GSTRO:DELL MD3000 1TKERNEL:2.6.18.164 EL15昨天安装生产环境的10gRAC数据库,在最后配置VIP的时候居然报一下错误:./vipcalibpthread.so.0: cannot open shared object file检查发现这个库文件分明在/usr/lib下面已经存在的,再去看环境变量也是包含这个目录的,很是诡异,一度怀疑是BUG导致的,因为是VIP后面也可以继续配置,所以继续下面的工作,继续降数据库升级到10.2.0.4重新配置VIP成功!最后测试一切正常使用![@more@]
记录:导出文件为十六进制
dd if=/u01/oradata/qqdb/users01.dbf bs=8192 skip=63 count=3|od -xv > 4_64.out[@more@]
dbms_datapump的一点研究(一)
命令行下传输两个数据库的数据:impdp dump_user/dump_user directory=dump_dir logfile=log.log schemas=tests network_link=dump_link sqlfile=dump_dir:expfull.sql table_exists_action=REPLACE[@more@]loc directory 目录loc logfile 本地生成的日志schemas 要转入的用户,必须和network_link内的用户名一致network_link 将要转入的远端数据库的db linksqlfile 若是没有该文件则生成,若有则使用table_exists_action 如果要导入的对象已经存在的替换PL/SQL API调用:简单的:declarehand number; vmessage varchar2(2000); begin han
节后第一天居然遇到BUG-ORA-07445
OS:RH5.0-64bitORACLE:10.2.1问题再现的操作步骤:[@more@]1、将某一列设置为unused的:alter table scott.aaa set unused column a;2、将隐藏的列删除:alter table scott.aaa drop SYS_C00001_10093022:03:33$;3、新增刚刚隐藏并且删除的列:alter table scott.aaa add a number;4、访问表(此时表里必须有数据)SELECT * from scott.aaa;此时这个会话将会hang住,CPU爆满!等待N久后自动报出异常:ERROR at line 1:ORA-03113: end-of-file on communication channel会话自动退出!查看wait event为idle的,设置10046事件后:select * f
块chain后的研究
大家都知道当一条记录在一个块中不能放下的时候,此时记录就会发生chain,记录就会分成至少2部分分别存在不同的块内,在发生chain的时候block overhead的状态为会做相应的变化:[@more@]如果没有发生block chain时,状态为:Block header dump: 0x0100004cObject id on Block? Yseg/obj: 0xc8ca csc: 0x00.ca325 itc: 2 flg: E typ: 1 - DATAbrn: 0 bdba: 0x1000049 ver: 0x01 opc: 0inc: 0 exflg: 0Itl Xid Uba Flag Lck Scn/Fsc0x01 0x0004.02b.0000016c 0x00800040.00cc.03 C--- 0 scn 0x0000.000ca3030x02 0x0004.001.0000016d 0x0080
记一次ora-04091错误
今天项目组报一个触发器ora-04091错误:before insert or delete or update on aaafor each rowdeclaremaxsss number;begin pro_test(:new.a);end; create or replace procedure pro_test(a number) ismm number;begin dbms_output.put_line(a); select count(*) into mm from aaa;end;update aaa set aaa.a=1;ERROR at line 1:ORA-04091: table SCOTT.AAA is mutating, trigger/function may not see itORA-06512: at "SCOTT.PRO_TEST", line 5ORA-06512: at "SCOTT.TRI_AAA", line 4ORA-04088: error
oracle查看回滚的事务
通过查询:x$ktuxe 【[K]ernel layer [t]ransaction layer [u]ndo transaction [e]ntry】select distinct ktuxesiz from x$ktuxe where KTUXESTA='ACTIVE'; 查看恢复进度:select * from x$ktuxe where ktuxecfl = 'DEAD' and ktuxesta = 'ACTIVE';恢复进度declare l_start number; l_end number; begin select ktuxesiz into l_start from x$ktuxe where KTUXEUSN=12 and KTUXESLT=40; dbms_lock.sleep(60); select ktuxesiz into l_end from x$ktuxe where KTUXEUSN=12 and KTUXESLT=40; dbms_output.put_line('time est
oracle events
----------------block------------------------Event 10231:skip corrupted block during a full table scanEvent 10233:skip corrupted data or index blocks on index range scansEvent 10232:dump corrupted blocks in a trace fileEvent 10210:force logical block checking whenever a table data block is modified ,an integrity check id done;bad blocks are maked as soft corruptEvent 10211:as event 10210 for index blocksEvent 10212:as event 10210 for cluster blocksdb_block_checking set to true ,can replace 10210
转 SQL查询连续号码段的巧妙解法
在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里。[@more@]最初的问题是这样的:我有一个表结构,fphm,kshm2014,000000012014,000000022014,000000032014,000000042014,000000052014,000000072014,000000082014,000000092013,000001202013,000001212013,000001222013,000001242013,00000125 (第二个字段内可能是连续的数据,可能存在断点。)怎样能查询出来这样的结果,查询出连续的记录来。就像下面的这样?2014,00000001,000000052014,00000009,000000072013,00000120,000001222013,00000124,00000125ITPUB上的朋友给出了一个非常
使用kfed修复磁盘组DSKGRP2
[@more@]1>. 编译产生kfed cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk ikfed chmod 751 /oracle/app/oracle/product/10.2.0/db_1/bin/kfed 2>. 查看磁盘组信息 select name,path,total_mb,free_mb,failgroup from v$asm_disk order by name ALTER DISKGROUP DSKGRP2 ADD DISK '/oracle/oradata/asmdisk04'; set lines 200 pages 80 col name for a20 col path for a40 select name,path,STATE,total_mb,free_mb,failgroup from v$asm_disk order by name; NAME PATH TOTAL_MB FREE_MB FAIL