摘要: A Simple Fact:可以通过 ALTER DATABASE BACKUP CONTROLFILE TO TRACE来备份控制文件,产生的trace 文件中包含了用来创建控制文件的文本内容,不是二进制形式的,产生的trace文件默认是放在udump目录下的。但是很不幸的是,我尝试了很多次这个命令,但是在udump下愣是没有找到任何trace文件! 如下....[代码]Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--[oracle@ora10g 阅读全文
posted @ 2011-01-27 22:20 FangwenYu 阅读(5134) 评论(2) 推荐(1) 编辑
摘要: 虽然知道可以通过alter system dump datafile xxx block xxx来转储block的内容,但是遗憾的是对生成的trace文件内容却是无从下手,真的跟看天书一般。偶然看到有些牛人做了些研究,而且分享了出来,参见这里, 于是欣欣然尝试去读读这些”神秘代码“,可是费了半天劲还是只是搞懂了些皮毛而已。先记录下来,以后有机会接着看看...[代码]-- dump the blockSQL alter system dump datafile 6 block 13;好吧,生成的block dump文件内容如下...[代码]看了之前提到的别人的研究分享,尝试把上面这个dump文 阅读全文
posted @ 2011-01-27 22:18 FangwenYu 阅读(543) 评论(1) 推荐(0) 编辑
摘要: 之前在Collect Function and String Aggregation Utility中提到过通过1) collect 2) 自定义聚集函数 3)sys_connect_by_path来实现字符串聚集拼接,并对这三种方法的性能进行了简单的对比。今天偶然发现Tim Hall在的个人网站给出了更为详尽的string aggregation techniques的介绍,参见这里。加个链接进来,方便参考, O(∩_∩)O~Tim Hall主要总结了以下几种方法:- LISTAGG 分析函数 (11.2引入)- COLLECT 聚集函数 (10 引入)- SYS_CONNECT_BY_PA 阅读全文
posted @ 2011-01-12 22:10 FangwenYu 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 问题描述在尝试通过show parameter来查看一个参数的时候,遇到了ora-00942: table or view does not exist的错误提示,如下,[代码]问题分析乍看到这个错误,很是惊愕了一下,因为平时几乎没碰到这个问题。但是错误提示给出的信息意思很明显,show parameter的时候访问了某个不存在或者没权限访问的表或者视图。那么是哪个表或者视图呢? 因为还记得访问参数的值,可以直接访问动态新能视图v$parameter, 因此尝试访问了一下,结果也报出了同样的错误提示,[代码]其实至此,上面的问题已经显而易见了,show parameter命令应该就是访问v$p 阅读全文
posted @ 2011-01-06 10:59 FangwenYu 阅读(2038) 评论(1) 推荐(0) 编辑
摘要: 闲来无事就把电脑上的Oracle升级到最新版本11.2.0.1, 截了点图记录下... 主要步骤如下:1) 首先安装11.2的数据库软件2) 用11.2版本的DBUA把现有的数据库(物理数据库文件)升级到11.23) 配置listener, tnsname, em等等图1:数据库软件安装完之后,会自动弹出net ca的配置界面,可以生成新的listener图2: 可以发现安装目录下多了个文件夹11.2.0图3: 接下来进行数据库的升级(DBUA)图4: 选择现有的数据库进行升级图5:出现一些warning, 需要解决下图6:升级完毕图7: EM configuration 有问题,需要手动来完 阅读全文
posted @ 2010-12-22 21:59 FangwenYu 阅读(1051) 评论(0) 推荐(0) 编辑
摘要: 公司进行domain的migration,给我的生活工作带来诸多不便,相当杯具:( 先不说email用不了,收不到任何邮件,搞得心慌慌,而且今天尝试访问下EM,居然发现搞不定了!因为用的是windows操作系统,首先想到去启动“OracleDBConsoleorcl"服务,但是发现根本启动不起来。后来发现因为进行域迁移,电脑的名字也给改了,因此首先就导致listener不work了,这个好办,直接打开listener.ora文件将Host名字给改过来,这样listner就可以正常work了。因为em dbconsole依赖一个oc4j的repository,一般名字也是跟host名字相关的,所 阅读全文
posted @ 2010-12-15 18:27 FangwenYu 阅读(3047) 评论(0) 推荐(0) 编辑
摘要: 在尝试把一个树形查询的SQL中引用的一张表换成视图的时候,居然出现了Oracle internal error (ORA-00600)! 如下,原来的SQL...[代码]这个SQL运行的很正常,现在打算将表XX_ENTITY换成视图V_XX_ENTITY_LINKS,如下...[代码]居然碰到了如下错误信息...[代码]视图V_XX_ENTITY_LINKS其实还蛮简单的,如下,[代码]网上看到有人提到通过可以设置隐含参数_optimizer_connect_by_cost_based来避免这个问题(需要用引号将隐含参数包含起来),如下所示...[代码]不过既然是隐含参数,自然是不推荐来更改的 阅读全文
posted @ 2010-12-08 09:31 FangwenYu 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: 工作之余总结了下写条“好”的SQL语句需要注意的一些地方,肯定不是很全面也不是很深刻,以后有想到的继续补足吧....1.OverviewYes, wring a SQL statement is a no-brainer. But writing anefficient SQL statement is not that easy as you might think of. A badly-written SQL statement will consume alot of resources and get you waiting for a long time before receiv 阅读全文
posted @ 2010-12-06 08:29 FangwenYu 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 有时候会遇到这样的问题,在设计一个表用来存储不固定数目属性的数据时候,为了使得表能够保持足够的灵活性,经常会采取key/value这样的表结构方式。比如说有如下一个问题,我要设计一个程序使得用户可以自由设置一个对象可以有多少种属性,那么这种情况下我在设计表的时候是不知道有多少种属性要存储,也就是说这个表的列数是不好确定下来的。因此很常见的一种方式就是把这种不确定的表的列数转换成行来存储,列就变成了... 阅读全文
posted @ 2010-11-29 11:28 FangwenYu 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 在前一篇IOT, Secondary Index and Mapping Table中提到IOT的secondary index中应该包含了IOT的primary key, 但是不知道怎么去证明一下。网上看到可以通过如下方式dump数据文件中block的内容,To dump single block use following command:alter system dump datafile ... 阅读全文
posted @ 2010-11-13 15:42 FangwenYu 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 本文尝试介绍下IOT(Index Organization Table)相关的secondary index 和 mapping table的基本知识,这个也是我以前一直没有搞明白的东西。1. IOT (Index Organization Table)关于IOT本身来说没有什么好说的,IOT是跟常见的Heap table相对的,可以简单理解成“表即是索引,索引就是表”。 ... 阅读全文
posted @ 2010-11-10 20:27 FangwenYu 阅读(1470) 评论(0) 推荐(0) 编辑
摘要: 貌似DBMS_ALERT也可以用来作为session间信息的传递,所以干脆一不做二不休,多来一篇水文把DBMS_ALERT也搞了。DBMS_ALERT相关接口DBMS_ALERT提供如下一些procedures,- REGISTER procedure (当前session注册到某个alert, 然后从这个alert接收信息)- REMOVE procedure (不再接收某个alert发送的通... 阅读全文
posted @ 2010-11-08 21:29 FangwenYu 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 扯在前面之前提到过Advanced Queue可以用来多个session之间的信息传递,AQ本质上还是依赖于queue table。DBMS_PIPE也可以用来做inter-session的信息传递,但是比较AQ来说,个人感觉还是相当轻量级的。DBMS_PIPE顾名思义,提供像pipe的功能,跟AQ比较起来,数据都是存在内存里面的,因此持久性不强,另外也不提供callback方式来读取信息。通过D... 阅读全文
posted @ 2010-11-06 21:42 FangwenYu 阅读(879) 评论(2) 推荐(0) 编辑
摘要: 扯在前面Oracle通过AQ (Oracle Streams Advanced Queuing)来提供“进程间” (或者跨会话 -- inter-session) 通信的功能。关于inter-session communication, 貌似DBMS_PIPE也可以做到,这个打算写另外一片水文来介绍,在此不表。 AQ 其实类似于一个message queue, 至于为什么叫... 阅读全文
posted @ 2010-11-06 17:01 FangwenYu 阅读(3863) 评论(0) 推荐(1) 编辑
摘要: 整理电脑的时候,发现以前写的一篇关于dbms_profiler的文章,现在贴出来,方便参考。A BRIEF INTRODUCTION TO MY_PLSQL_PROFILER1. BackgroundThis document isnot intended to give out comprehensive introduction to the oracle-suppliedpackage DB... 阅读全文
posted @ 2010-11-04 14:31 FangwenYu 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 如果想得到一个随机值,非常自然地会想到用DBMS_RANDOM包来做。但是有时候不注意,可能得到的并不是我们想要的结果,就遇到如下一个”陷阱“:假设有张表T里面有一列存储字符串,并且在这个列上有个unique constraint, 由于系统并不care这列里面存储的字符串是啥东东,只要它是唯一的就OK。那么有一个简单的function来获取每次需要往这一列插入的字符串,如... 阅读全文
posted @ 2010-10-27 20:46 FangwenYu 阅读(603) 评论(2) 推荐(0) 编辑
摘要: 再来一篇水文:-)主要是想把Steven写的intab贴过来,以方便平时参考参考下。这个intab主要是关于DBMS_SQL的用法,也就是Steven说的关于动态SQL的Method4的典型应用。关于DBMS_SQL, 我在另外一片水文也贴过,see here.关于动态SQL的4中method, 参考下图...不废话,直接贴代码...[代码]--EOF-- 阅读全文
posted @ 2010-10-26 22:16 FangwenYu 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 之前用RMAN做过一个数据库的全备,后来发现数据库mess up了,想要恢复到之前做备份的那个状态,这个用RMAN很好办,[代码]不过杯具的是,在resetlogs之后没有再做一次全备。这样在数据库run了一段时间后,发现还是要回到当初状态比较好。寻思着不如再回到从前吧,尝试重复执行上面的这段脚本,却得到如下错误,[代码]突然意识到,这应该是在resetlogs之后,数据库进入了一个新的incar... 阅读全文
posted @ 2010-10-25 17:39 FangwenYu 阅读(1386) 评论(0) 推荐(0) 编辑
摘要: 在看一个script的时候,看到了类似如下的东东,[代码]对这个@后面的?很感不解,google之,在一个地方发现如下解释,遂释然。[代码]--EOF-- 阅读全文
posted @ 2010-10-19 18:08 FangwenYu 阅读(183) 评论(0) 推荐(0) 编辑
摘要: Long time no blogging, what a shame!最近一直在OT....做着一些有些无聊却又是very time-consuming的工作, 不是一般的蛋疼啊...最近工作上的事情没有啥值得写一写的其实,不过这么久没有更新过了,不写点实在过不去啊,但是又没有啥主题可直奔的,因此这个标题就不知取何名字了,对于我这样一个地道的标题党来说,真的是相当纠结, 相当蛋疼!想了想,就总结下最近被逼写的一些“脚本”吧,就是公司的产品要发布了,因此怎么也要有个所谓的“database installer”吧,所以脚本也是不可避免的。下面简单总结下遇到的问题吧...1. EXP/IMP 相 阅读全文
posted @ 2010-10-16 17:38 FangwenYu 阅读(560) 评论(2) 推荐(0) 编辑
摘要: 随便起了个名字,因为不知道叫啥好。主要是想把最近遇到的一个事情简单记录下,仅此而已。为啥叫Fake SQL Tuning, 自然不是真正地谈SQL优化,因为我也说不出来啥玩意,毕竟SQL优化不是简单的一两句话就可以说出个所以然的。最近遇到个问题,我负责维护的一个产品的用户说他们有一个process老是跑不完,卡在那里。这个产品前端用PB做,中间部分计算引擎用C++来写,还有一大部分的东东是放在数据... 阅读全文
posted @ 2010-09-07 20:19 FangwenYu 阅读(510) 评论(2) 推荐(0) 编辑
摘要: 网上搜了下关于Recovery Window的介绍,发现对这个问题的讨论也不少,但是貌似说得都不是很清楚。在文档《Oracle11g Backup and Recovery User's Guide》里面发现对Recovery Window的讲解,觉得还是很清楚的,摘抄在此,以作参考.....Recovery WindowA recovery window is a period of time ... 阅读全文
posted @ 2010-08-24 21:49 FangwenYu 阅读(1446) 评论(1) 推荐(0) 编辑
摘要: 就像在前一篇提到的,更改一个Schema Name会带来诸多问题,不仅仅是ORA-01031, ORA-28100这些问题,还会造成一些更加诡异的问题,今天就碰到了 :(事情是这样的, 在更改过之后的Schema里面执行了一条普普通通的SQL语句,结果出现了令人摸不着头脑的错误---No more data to read from socket紧接着当前数据库的连接就断掉了!!!!! 我把这条S... 阅读全文
posted @ 2010-08-10 19:29 FangwenYu 阅读(455) 评论(2) 推荐(1) 编辑
摘要: 虽然平时很少会遇到改动一个schema名字的问题,但是并不是不会遇到, 今天就很不幸给碰到了 :-)话说之前用DBCA做了一个数据库A的模板(包含数据文件),然后在另外一台机器上clone出了一个数据库叫B。因为是Clone嘛,自然里面的Schema都是一样的。但是为了方便区分,希望将其中的一个schema改名字,也就是将schema QA 改成 CI.之前没有做过类似的操作,因此不敢贸贸然行动,... 阅读全文
posted @ 2010-08-09 19:21 FangwenYu 阅读(1986) 评论(8) 推荐(1) 编辑
摘要: 在尝试用impdp把一个dump文件从一个schema导入到另外一个schema (两个schema位于同一个数据库上,需要用到remap_schema参数来进行schema的映射转换)遇到了诸多类似如下的错误....(cmd> impdp test/test directory=dump_dir dumpfile=dump.dmp logfile=dump.log remap_schema... 阅读全文
posted @ 2010-07-02 10:05 FangwenYu 阅读(2088) 评论(0) 推荐(1) 编辑
摘要: 遇到一个有点意思的问题,在执行如下一段code的时候,出现了 numeric overflow的错误.....[代码]从给出的错误提示来看,貌似是1000*60*60*24*365超出了number类型所能容纳的范围了,但是...[代码]可以看到1000*60*60*24*365的值的长度为才是11,而NUMBER可以支持到整数位长度为38的数字,因此这个值远远没有到numeric overflow的情况。但是为啥Oracle会报出这么一个错误呢? 真的很费解.......搜了下对这个ORA-error的解释,如下所示......Error:ORA-01426: numeric overflo 阅读全文
posted @ 2010-06-11 21:12 FangwenYu 阅读(12505) 评论(2) 推荐(0) 编辑
摘要: 在创建Oracle 10g数据库的时候,会默认创建以下表空间,- SYSTEM- SYSAUX- TEMP- UNDOTBS1- USER- Example[代码]现在想知道哪些表空间可以被置成offline,或者read only状态,测试如下....(1) Take tablespace offline[代码]可以看到,1) SYSTEM, UNDO 是不可以被take offline的2) ... 阅读全文
posted @ 2010-06-05 14:04 FangwenYu 阅读(998) 评论(0) 推荐(0) 编辑
摘要: 启动EM database constrol> SET ORACLE_SID=orcl> emctl start dbconsole打开浏览器 --https://localhost:1158/em/但是却发现如下问题,刚开始以为是instance没有起来,但是执行如下SQL语句,发现数据库已经Open了,[代码]那么是啥问题呢??? 注意到上图中有个ORA-28001错误,提示pas... 阅读全文
posted @ 2010-06-05 13:27 FangwenYu 阅读(1040) 评论(0) 推荐(0) 编辑
摘要: 需要写一个动态执行一大段SQL脚本的存储过程,因为这个SQL长度太长了,因此不能直接用 NDS -- EXECUTE IMMEDIATE, 只好借助于DBMS_SQL package. 但是在写的时候,遇到个问题,发现DBMS_SQL提供了好几个varchar2 table,一时不太明白这几个table的区别。干脆打开这个package的specification,来看个究竟,如下,注意这几个类型... 阅读全文
posted @ 2010-05-21 09:46 FangwenYu 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 帮同事看一个问题,在更新一个view的时候,触发了一些列的triggers,最后得到的错误信息就是ORA-06502: numeric or value error. 刚开始一直以为是在往表里插入数据的时候,是不是哪个列的类型不匹配造成的。注释了很多地方,都不奏效。无奈之下,只好用了下SQL Developer的debug功能,最后终于发现问题所在,是因为往一个varchar2的变量里面放数据的时... 阅读全文
posted @ 2010-05-21 09:36 FangwenYu 阅读(10289) 评论(2) 推荐(0) 编辑
摘要: 比如说我有一个Package,它的specification如下,[代码]现在我想通过执行一条SQL语句,得到这个Package里面包含哪些Function和Procedure, 类似于SQL*Plus的命令 DESC package_name[代码]其实思路很简单,只要从数据字典视图里面选择需要的数据,然后进行相应的格式化就OK了。下面就是GET_PACKAGE_SPECIFICATION的代码,[代码]我是从USER_ARGUMENTS里面进行数据查询,然后通过分析函数FIRST_VALUE, 10g新增加的collect聚集函数来进行“格式化”。这里面遇到的一个问题是通过调用func 阅读全文
posted @ 2010-05-05 10:01 FangwenYu 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 创建一个Oracle数据库 (10g) 的步骤大致如下:1) Create a parameter file and password file.2) Use the parameter file to build an instance in memory3) Issue the CREATE DATABASE command. This will generate, at a minimum,... 阅读全文
posted @ 2010-05-03 13:42 FangwenYu 阅读(852) 评论(0) 推荐(0) 编辑
摘要: 遇到如下这么一道题目:In ARCHIVELOG mode, the loss of a datafile for any tablespace other than the SYSTEM or UNDOtablespace affects which objects in the database?A. The loss affects only objects whose extents re... 阅读全文
posted @ 2010-05-01 21:45 FangwenYu 阅读(529) 评论(0) 推荐(0) 编辑
摘要: <<写完之后,忽然发现之前的理解不够啊.... Oracle会隐式地给表上加锁的,获取share mode的锁之后,如果更改了该表的数据,这个时候相当于获取了exclusive的锁了,而不再是share lock了... >>有这么一道题目:Which of the following lock modes permits concurrent queries on a t... 阅读全文
posted @ 2010-04-26 19:48 FangwenYu 阅读(9211) 评论(0) 推荐(2) 编辑
摘要: 两者的区别:1。v$rollstat 显示每个undo segment的情况,v$undostat 显示系统当前的一个统计,主要用处估计当前系统需要多少的undo空间2。如果数据库处于回滚段手动管理状态,那么v$undostat 中没有内容,而v$rollstat 始终有数据3。v$undostat 视图每隔10分钟系统自动作一个更新,插入一条新数据,保留最多1008行记录,或者说7天的历史数据可... 阅读全文
posted @ 2010-04-26 10:57 FangwenYu 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 假设我有如下一张表 test_sort_comp, 注意列NAME上有一个索引。[代码]现在如果我需要查找Name为frank的记录,很简单,如下 (注意,设置了autotrace,方便查看执行计划)[代码]很显然,查询结果返回了一条记录,而且采用了index scan的方式。如果现在我想得到name为frank的记录,但是不管字母的大小写,只要是f,r,a,n,k这几个字母按照这个顺序拼出来就可以,很显然表test_sort_comp中有3条记录满足条件 -- frank, Frank, frAnk.很容易想到一种方法,通过upper或lower函数,把name转成要么是大写要么是小写,但 阅读全文
posted @ 2010-04-14 17:13 FangwenYu 阅读(1576) 评论(0) 推荐(0) 编辑
摘要: 关于参数 NLS_LENGTH_SEMANTICS这个参数的说明可以参见Oracle Online Doc --http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams127.htmNLS_LENGTH_SEMANTICSenables you to createCHARandVARCHAR2col... 阅读全文
posted @ 2010-03-30 22:47 FangwenYu 阅读(1853) 评论(0) 推荐(0) 编辑
摘要: 在看别人的代码的时候,发现了如下的编译指令,pragmarestrict_references(get_attribute_name,wnds);get_attribute_name是一个pl/sql function, 当我试图在这个函数中往一个log表里面插入log信息的时候,编译都通不过,给出如下信息,[代码]看来就是上面这个pragma搞得鬼。 查了下Oracle 文档, (http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/restrictreferences_pragma.htm#LNPLS01339)才知道 阅读全文
posted @ 2010-03-12 17:17 FangwenYu 阅读(1499) 评论(0) 推荐(0) 编辑
摘要: Oracle中的password file保存着系统的特权用户(sysdba, sysoper)的密码,主要用于DBA远程访问该数据库,因为如果访问本地的数据库的话,是没有必要通过password file来进行认证的,只需要当前用户是被加到操作系统的oradba group中即可, 如下需要注意的是,使用操作系统级别认证,要设置文件sqlnet.ora (%ORACLE_HOME\NETWORK... 阅读全文
posted @ 2010-03-11 19:06 FangwenYu 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 1. What Is Data Pump Export?简单来说,Data Pump Export是Oracle提供的从数据库导出(unload)数据及元数据(metadata)到一系列的文件中(dump file set)的这么一种工具(utility). 这些生成的dump file set只可以被Data Pump Import导入到目标数据库中, 目标数据库既可以是在同一个Sever上,也... 阅读全文
posted @ 2010-03-03 22:14 FangwenYu 阅读(1780) 评论(0) 推荐(0) 编辑