记一次case中遇到的ora-12704错误解决
环境:ORACLE10.2.0.4OS:LINUX 5.3[@more@]今天系统中需要统计一批数据,可是当我通过case语句进行转换某一列的时候确报ORA-12704: 字符集不匹配,检查发现case中满足条件后输出的列为NVARCHAR2类型的,试着将这列转换为char的问题就可以解决了。以下为测试结果:SQL> create table test (a nvarchar2(10)); Table created SQL> insert into test values('a'); 1 row inserted SQL> insert into test values('b'); 1 row inserted SQL> commit; Commit complete SQL> select case when a = 'a' then 'a' else a end from t
OCR环境下,当ORACLE_HOME被删除后,对DATABASE的移除
应用环境:ORACLE 企业版 10.2.0.1 - 10.2.0.4适合平台:所有平台[@more@]本文目的:本文的目的就是提供一个简单的环境是当将ORACLE_HOME删除后,想要通过srvctl remove database -d DBNAME对数据库实例进行删除的时候报PRKH-1013错误:PRKH-1013 : The oracle home /app/oracle/product/RAC/10.2 does not exist解决方案:1、创建相应的ORACLE_HOME目录以及ORACLE_HOME下的bin目录,并且所属权限为oracle用户:$ mkdir <$ORACLE_HOME> $ mkdir <$ORACLE_HOME>/bin2、通过touch创建oracle执行文件:$ touch $ORACLE_HOME/bin
oracle 10GR2 CLUSTERWARE(RAC)中关于OCR和VOTING磁盘的管理信息
应用平台:ORACLE企业版版本:10.2.0.1-10.2.0.1应用平台:所有平台[@more@]解决方案:1、基本平台要求Common for all platformsStorageOCR and Voting DiskLocal File SystemNoASMNoLinuxStorageOCR and Voting DiskOCFSYesOCFS2YesGPFS (for Linux on POWER)YesNFS file system (Requires a certified NAS device)YesShared raw partitionsYesBlock devices (IBM zSeries based systems only)YesHP Tru 64StorageOCR and Voting DiskCluster File System with TruCluster v.5.1BYesLogical Storage Manager with TruCluster v. 5.1BVoti
解决ORA-15097 Cannot shutdown ASM if OCR is Located in ASM
环境介绍:数据库版本: oracle 11.2.0.1数据库平台:所有平台[@more@]问题现象:当你试图关闭ASM的时候,报以下错误:ORA-15097: cannot SHUTDOWN ASM instance with connected clientsrvctl stop asm -n enode1 -fPRCR-1014 : Failed to stop resource ora.asmPRCR-1065 : Failed to stop resource ora.asmCRS-2673: Attempting to stop 'ora.asm' on 'enode1'ORA-15097: cannot SHUTDOWN ASM instance with connected clientCRS-2675: Stop of 'ora.asm' on 'enode1' failedCRS-2675: Stop of 'ora.asm' on 'enode1' failed通过检查环境
解决ORA-15036:disk is truncated错误
问题出现的版本:10.2.0.1-11.2.0.1,在任何平台都有可能出现。问题描述:这种错误会在单节点或者是RAC环境下出现。在你准备mount ASM diskgruop(DG1)时,报以下错误:ORA-15032: not all alterations performedORA-15036: disk 'ORCL:DATA10' is truncatedORA-15036: disk 'ORCL:DATA09' is truncated最近的操作:在磁盘组DG1的ASM内新增了两块硬盘,ORCL:DATA09和ORCL:DATA10,并且在OS级别进行了resize。原因分析:系统管理员或者存储管理员分配了两块65530MB大小的空间,提供给ASM使用,ASM管理员或者DBA根据提供的两块空间通过ASMLIB
11g中节点间拷贝文件
如果你的某一数据库上的文件(controlfile、datafile、archivelog file)在节点1上的ASM上,你想要将里面的文件拷贝到第二个数据库服务器的ASM或者文件系统上,可以在11g中通过执行以下步骤达到拷贝的目的。[@more@]oracle 11g的release 1和2允许你通过RMAN来在通过网络在节点间进行文件的传输,这个新的特性可以指定“AUXILIARY FORMAT"参数来在备份的时候完成。以下你可以拷贝archivelog:connect target SYS/...@srcinst # source systemconnect auxiliary SYS/...@destinst # destination systembackup as copy reusearchivelog l
移动ASM的spfile到一个新的disk group
在初始安装完ASM后,ASM的spfile文件默认在默认的盘组,现在需要将ASM的spfile文件移入另一个新的盘组内,以下有两种方式以供实现。在ASM的文档中说是使用asmcmd spmove来移动,但是在实际的使用过程中会报错 :$ asmcmd spmove +DATA/asm/asmparameterfile/REGISTRY.253.715881237 +PLAY/spfileASM.oraORA-15032: not all alterations performedORA-15028: ASM file '+DATA/asm/asmparameterfile/REGISTRY.253.715881237' not dropped; currently being accessed (DBD ERROR: OCIStmtExecute)[@more@]1、通过创建一个中间的PFILE文件来达
解决 ocrconfig -replace ocr Fails With PROT-16
当想要新建一个OCR时,执行ocrconfig -replace的时候,如果新的ocr文件大小小于先前的ocr文件时候(128、256)就会报错,提示不能执行成功,原因就是当执行以上命令的时候,会先去检查newocr大小是否不小于oldocr(>=128)。[@more@]解决方案:1、先创建同等大小的ocr文件dd if=/dev/zero of=/ocfs/OCR/ocrnew.dbf bs=1M count=128dd if=/dev/zero of=/ocfs/OCR/ocrmirrornew.dbf bs=1M count=1282、执行replace操作:./ocrconfig -replace ocrmirror <file_name/raw_device_name> ./ocrconfig -replace ocr <file_name/raw_d
LONG字段类型向CLOB迁移
oracle 10g最近准备对数据库进行一次错误排查和管理,其中涉及到了对LONG类型的字段进行CLOB类型的转换,前台是SSH2架构的应用,对数据库的操作都封装在了hibernate里面,实际实施过程中发现及其easy,直接对表上的字段进行编辑成为CLOB就可以的啦,编辑完后需要对索引进行重建,重建完后重新进行APP测试,发现IDUS功能都照用无误。[@more@]
记一次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
VC2006与pro/C 集成开发
今天需要用proc写点基于oracle的开发,于是将pro c与VC2006进行了集成以方便开发1安装完数据库设置Oracle 的HOME环境变量:右击"我的电脑"->高级->环境变量->加入你安装的目录,如本人安装在C:oracle目录下,则对应的ORACLE_HOME的值为C:oracleproduct10.1.0Db_1,再检查Path环境变量中是否已经设置了%ORACLE_HOMEbin%,如果没有,应该加上.开始->运行->cmd,然后运行proc,如果能运行,则说明可以编译*.pc文件.[@more@]2.打开VC++6.0,新建一个控制台工程,把PROC工具加到VC++6.0中,操作如下:工具->定制->切到"
linux的OS简单的备份和恢复
1. 准备用dump备份/boot目录下的文件. 使用df /boot查看/boot所在的设备(以下假设为/dev/hda1)2. 首先确认备份需要的空间. 查看一个0级备份需要的字节数,使用 -S# dump -oS /dev/hda13. 备份到文件而非磁带. 确认在/var/tmp目录是否有足够的空间,执行# dump -0u –f /var/tmp/dumpfile /dev/hda14. 检查/etc/dumpdates,查看完全备份的时间戳.5. 使用restore检查备份文件的内容# restore –tf /var/tmp/dumpfile6. 我们可以使用restore的互动模式恢复特定文件到一个临时目录.# mkdir /tmp/restored; cd /tmp/restored# restore –if /var/t
MYSQL使用记录之:handler
HANDLER tbl_name OPEN [ AS alias ] HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...) [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST } [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name READ { FIRST | NEXT } [ WHERE where_condition ] [LIMIT ... ] HANDLER tbl_name CLOSE HANDLER语句提供通往表存储引擎接口的直接通道。HANDLER可以用于MyISAM和InnoDB表。[@more@]HANDLER...OPEN语句用于打开一个表,
MYSQL使用记录之:infile/outfile
由于现有的东家要求使用MYSQL数据库,所以最近也开始了对MYSQL数据库的进一步的研究,首先介入的当然是一些正常的应用了:outfile/infile的灵活:[@more@]今天接触了下mysql下的outfile和infile感觉和实际使用很贴切,不像ORACLE那么商业化,任何操作都要封装成自己的接口来实现、操作,MYSQL直接通过一个简单的语句就完成了数据的导入、导出,满足了日常的灵活性与可控性。LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'strin
MySQL 备份和恢复 一
本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL 版本为 5.0.22。目前 MySQL 支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),
Mysql 备份与恢复 二
逻辑备份:1.mysqldump(数据导出工具)mysqldump options db_name[table_name]//备份单个数据库mysqldump 选项 --database database-name1 [databases-name2]....//备份指定的数据库一个或者多个mysqldump 选项 --all-database //备份所有的数据库链接选项:-u :指定用户名-p:指定密码-h:指定服务器ip或者域名-P(大写):指定端口eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user>/home/wuxiaoxiao/user.txt输出内容选项:--add-drop-database:每个数据库创建语句之前加上drop database语句--add-drop-table:每个表创建
通过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