摘要: 今天同事遇到个问题,他手动删除了一些数据文件(本来尝试去drop一个schema的,但是发现太耗时了,所以来个“暴力”方法,直接删除数据文件),从而导致数据库不能打开了。 这个是很容易理解的,因为在数据库open阶段,会进行数据库一致性检查 (control文件记录的文件都应该存在),在这种情况下control文件中记录了数据库中有这个数据文件,但是数据库却发现该文件丢失了... 阅读全文
posted @ 2010-03-01 22:17 FangwenYu 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 首先来看几个简单的FQA,对Data Pump有个大概的了解,(1) Data Pump 在哪个版本被引入的 ? Oracle 10g 引入了Data Pump 技术, 包含两个utilities: Data Pump Export (expdp), Data Pump Import (impdp), 用来取代之前版本的emp 和 imp。(2) Data Pump 主要作用是啥? Data Pu... 阅读全文
posted @ 2010-02-27 21:26 FangwenYu 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 最近在一个测试数据上设置了参数db_recovery_file_dest_size (也就是flashback recovery area的大小),并且把archive log destination 指向了这个flashback recovery area, (USE_DB_RECOVERY_FILE_DEST)[代码]由于flashback recovery area的大小设置不够大,归档日志... 阅读全文
posted @ 2010-02-24 18:37 FangwenYu 阅读(712) 评论(0) 推荐(0) 编辑
摘要: 1. 关于视图命名的单复数问题 动态性能视图(v$xxx)的名字一般都是单数形式,而静态视图(ALL/USER/DBA)一般是复数形式 examples: user_tables, user_views v$instance, v$version, v$database, v$session, v$process... 发现一个特例:v$timezone_names 这个动态视图是个复数形式, 用... 阅读全文
posted @ 2010-02-03 16:27 FangwenYu 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 在另一篇Blog里提到怎么用RMAN来复制数据库,本篇Blog在简单谈谈如何手动来实现复制Oracle数据库。复制数据库可以从一个主数据库创建,无论这个数据库是打开的还是关闭的。为了创建一个复制数据库,来自打开或者关闭的备份文件可以用作数据库文件的副本。关闭备份的数据库文件备份不需要恢复(recover),因为所有的数据文件头的SCN是一致的,而打开备份的数据库文件是需要进行恢复的,因为各个文件相互之间不一致。当clone数据库的时候,将必须创建一个新的控制文件。数据库控制文件可以用CREATE CONTROLFILE命令来创建。很多情况下,这个命令是有用的或者是必要的,比如说在如下情况下就需 阅读全文
posted @ 2010-01-27 22:34 FangwenYu 阅读(479) 评论(2) 推荐(0) 编辑
摘要: 1. Contrasting Interfaces to Abstract Base ClassesAbstract base classes do far more than define a group of abstract methods. They are free to define public, private, and protected state data, as well as any number of concrete methods that can be accessed by the subclasses.Interfaces, on the other ha 阅读全文
posted @ 2010-01-25 17:54 FangwenYu 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 1. Calling Garbage CollectionIf you determine it may be beneficial to have the garbage collector check for unreachable objects, you could explicitly trigger a garbage collection, as follows: 1: static void Main(string[] args) 2: { 3: ... 4: // Force a garbage collection and wait for 5: // each objec 阅读全文
posted @ 2010-01-25 14:44 FangwenYu 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 在网上看到有人问如下问题,已知表TB的数据如下[代码]现在要得到如下的结果,该怎么来解决,[代码]想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数,但是显然这两个是聚集函数,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MIN的值却是作用于每一行上面的,如果要借助于MAX()和 MIN()的话,还需要对原表的数据结构进行下处理(先进行转列操作unpivot... 阅读全文
posted @ 2010-01-23 01:04 FangwenYu 阅读(1344) 评论(0) 推荐(0) 编辑
摘要: 1. System.Environment and System.Console 1: public class Program 2: { 3: private static void Main() 4: { 5: Console.ForegroundColor = ConsoleColor.DarkGreen; 6: 7: string[] aArgs = Environment.GetCommandLineArgs(); 8: foreach (string aArg in aArgs) 9: { 10: Console.WriteLine("Command Line Args 阅读全文
posted @ 2010-01-22 15:29 FangwenYu 阅读(348) 评论(0) 推荐(0) 编辑
摘要: Adrian Billington 在他的个人网站www.oracle-developer.net上给出了一个很有意思的小工具,Mystats Utility, 用来帮助我们查看某个操作消耗的系统资源。 下面是他的代码 (mystats_pkg), 其实也很简单,主要就是在待考察操作执行前后各采一个样(snapshot),然后比较这两个snapshot统计数据的差值,就可以得出待考察操作消耗的资... 阅读全文
posted @ 2010-01-21 23:37 FangwenYu 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 有时候可能需要去创建一个跟target数据库一样的一个数据库副本, 用RMAN可以很方便地通过Target数据库的备份文件(backup sets)来clone一个同样的数据库。 本文主要讲述如何用RMAN在同一个Host上duplicate一个数据库, (target database and duplicated database reside in the same machine). 因... 阅读全文
posted @ 2010-01-18 17:20 FangwenYu 阅读(1841) 评论(0) 推荐(0) 编辑
摘要: 在Windows平台上启动多个Instance比在UNIX环境下要繁琐一点,需要用到ORADIM来创建新的ORACLE_SID. 现在假设在一台Windows PC上装了一个名字为ORCL的Oracle数据库,默认情况下启动的都是这个对应于这个ORACLE_SID的instance, 现在如果我需要在这台机器上启动另外一个instance (假设名字叫ORCL2),该怎么办呢? 首先先创建另外一... 阅读全文
posted @ 2010-01-18 12:02 FangwenYu 阅读(513) 评论(0) 推荐(0) 编辑
摘要: Adrian Billington 在他的文章collection extensions in 10g 中对10g增加的对collection增加的类似在SQL语句中的UNION, MINUS等集合操作有着详细的介绍。在10g之后,我们就可以像对两个SQL语句(其实也就是两个集合)那样来求两个collection的并集,差集等等。 下面是对该篇文章的摘要, 1. 比较两个collection是... 阅读全文
posted @ 2010-01-09 22:04 FangwenYu 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 有时候在用Enterprise Manager DB Console的时候(Windows平台下)会遇到如下问题, RemoteOperationException: ERROR: Wrong password for user 如下所示, 解决这个问题的方法如下, Control Panel-->Administrative Tools-->Local Security Poli... 阅读全文
posted @ 2010-01-08 15:50 FangwenYu 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 关于Oracle 10g 中的Recylebin,有两篇文章说得很详细, (1) Flashback Table by Arup Nanda (2) Using Oracle's recycle bin by Natalka Roshak 本篇blog只是简单介绍如何去追溯recyclebin的本质。 Recyclebin是Oracle 10g中新加入的一个feature, 就像Windows操作... 阅读全文
posted @ 2010-01-07 21:55 FangwenYu 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 我们知道查询一条SQL的执行计划,一般可以通过如下两种方式(当然还有其他方式) (1) Explain plan for / DBMS_XPLAN.DISPLAY (2) Set autotrace on Explain plan for 和 Set autotrace 都是SQL*PLUS命令,DBMS_XPLAN是Oracle提供的查询执行计划相关的包。 这两种方法在Oracle10g都得... 阅读全文
posted @ 2010-01-07 09:41 FangwenYu 阅读(1201) 评论(0) 推荐(0) 编辑
摘要: 之所以把Explain Plan 和 Autotrace的设置放到一起来说,是因为这2者都依赖于同一张表PLAN_TABLE,因此都需要首先创建PLAN_TABLE. 1. Create Table PLAN_TABLE 有时候貌似不需要手动去创建这张表,PLAN_TABLE在数据库安装过程中已经被创建好了。我们可以首先测试下PLAN_TABLE是否已经存在, scott@ORCL> d... 阅读全文
posted @ 2010-01-07 09:39 FangwenYu 阅读(940) 评论(0) 推荐(0) 编辑
摘要: Sql*Plus的重要性不用多说,但是由于Sql*Plus默认的设置往往使得结果显示不是那么友好,比如说linesize, pagesize。 因此,很多时候都要手动去重复设置这些参数。那么有没有一劳永逸的方法呢,glogin.sql就是答案! Sql*Plus每次启动的时候都会自动运行文件glogin.sql中的设置,因此如果我们把常用的参数设置都放在这个文件里面,我们就不用每次都要重复去设置... 阅读全文
posted @ 2010-01-06 23:27 FangwenYu 阅读(365) 评论(0) 推荐(0) 编辑
摘要: Oracle 9i加入了支持一次向多个表同时插入数据的SQL语句 --- INSERT ALL|FIRST INTO…SELECT…FROM…INSERT ALL|FIRST [WHEN condition THEN] INTO target [VALUES] [WHEN condition THEN] INTO target [VALUES] ... [ELSE] INTO target [VA... 阅读全文
posted @ 2010-01-05 14:07 FangwenYu 阅读(979) 评论(0) 推荐(0) 编辑
摘要: Subquery Factoring, 其实就是平常比较熟悉的With语句,Adrian Billington 在他的网站上写了一篇介绍Subquery Factoring很好的文章,见这里。这篇Blog同样是对他的这篇文章的笔记。 With语句一般有两种用途,一种就是用来把复杂的SQL语句简单化:复杂的SQL语句一般都会嵌套很多层次,无论是写起来还是读起来都很困难,通过用With语句,把子查询... 阅读全文
posted @ 2010-01-05 11:27 FangwenYu 阅读(640) 评论(0) 推荐(0) 编辑
摘要: Adrian Billington 有一篇介绍Case Expression 和 Case Statement 的文章,写得很好,参见这里。 用过Case 很多次了,但是并没有很系统地学习过,看了他的这篇文章终于明白Case Expression和Case Statement的区别: 1. Case Expression 可以用在SQL和PL/SQL中,关于Case Expression最重要... 阅读全文
posted @ 2010-01-05 10:09 FangwenYu 阅读(321) 评论(0) 推荐(0) 编辑
摘要: Partition Outer Join是Oracle 10g新增加的,用来方便“补足”在outer join的时候“漏掉”(NULL)的数据。 当两个用来做Join的表中的数据不“相当”的时候,如果我们希望在最终结果中其中一张表的所有records都不落下,一般会用到outer join。另外一个表中“缺失”的那部分数据自然都是以NULL来补足。但是如果我们希望缺失的那部分数据(NULL)能正... 阅读全文
posted @ 2010-01-04 22:28 FangwenYu 阅读(735) 评论(0) 推荐(1) 编辑
摘要: Varchar2的大小限制在SQL和PL/SQL中是不一样的,这点经常被忘记,因此会遇到一些问题。 Oracle SQL中Varchar2类型只支持最大4000bytes,而pl/sql则可以支持最大32767bytes的大小!在创建Oracle Table时,如果一个列存储的数据大于4000bytes时候,最好换成CLOB类型。 下面进行一些测试看看, SQL> select * fr... 阅读全文
posted @ 2010-01-04 15:35 FangwenYu 阅读(629) 评论(0) 推荐(0) 编辑
摘要: Adiran在他的网站上www.oracle-developer.net上给出一个有意思的Utility – data_dump, 用来把一个表中的数据dump到一个文件中。表面上看好像没啥大的价值,毕竟可以用export data pump来导出数据, 但是data_dump支持对给定的一个SQL语句来导出数据,而且可以指定每行数据的field之间的分隔符。 这个utility用起来也是非常方便... 阅读全文
posted @ 2010-01-04 14:30 FangwenYu 阅读(516) 评论(0) 推荐(0) 编辑
摘要: Oracle 10g 增加了一个非常有用的 group 函数 ----- COLLECT, 并且在11g中得到了进一步加强。 这个函数可以用来实现“String Aggregation” 作用, 即把同一个group中的多行数据转成一行(以collection形式出现)。记得曾在园子中回答过一个SQL问题,见这里, 当时用到的是sys_connect_by_path,但是这种方法性能很不好,在下... 阅读全文
posted @ 2009-12-31 15:20 FangwenYu 阅读(2936) 评论(0) 推荐(0) 编辑
摘要: 1. v$version SQL> desc v$version; Name Null? Type ------------------------------------------------------------------------------------------------- BANNER VARCHAR2(64) SQL> select * from v$vers... 阅读全文
posted @ 2009-12-31 09:52 FangwenYu 阅读(328) 评论(0) 推荐(0) 编辑
摘要: Oracle 9i 引入了flashback query,可以方便我们查询过去一个时间“点”的数据库的状态。比如我们在T1时刻更改了一条记录,接着在T2时刻删除了该条数据(并且commit了),我们可以通过flashback query来查询到T1时刻的该条记录。 Oracle 10g把flashback query推进了一步,不光可以查询过去一个时间“点”的数据库状态, 而且可以查询过去一段时间... 阅读全文
posted @ 2009-12-30 18:08 FangwenYu 阅读(1512) 评论(0) 推荐(0) 编辑
摘要: 默认的Select 语句的显示结果是把表中的每一条记录显示成一行,如果表的列数很多会带来一个问题(求其是在SQL*PLUS中),那就是要么列名显示不全,或者会折成很多行来显示,造成阅读上的不便。 如果我们只是很关心这种多列表中的特定一行或几行数据,如果可以把显示结果“转置”过来,每一行显示一个列的数据,这样会大大有助于阅读,分析数据。 多说无益,还是上例子说明。 如下, 默认的显示 SQL&g... 阅读全文
posted @ 2009-12-29 13:54 FangwenYu 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 本文基本上是对Orace文档(http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciaggfns.htm#sthref542) 的翻译。 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG(), 但是这些预定义的聚集函数基本上都是适应于标量数据(scalar data), 对于复杂的数据类型... 阅读全文
posted @ 2009-12-28 14:29 FangwenYu 阅读(1284) 评论(0) 推荐(2) 编辑
摘要: Abstract: 行变列,列变行在生成报表的时候经常遇到,行变列叫做"Pivot”, 反之叫做"Unpivot”。 在Oracle11g之前,一般都是通过很多work around来实现,但是Oracle11g中直接支持PIVOT和UNPIVOT的操作。 关于PIVOT和UNPIVOT用法可以参见这里 1. Rows to Columns Rows to Columns是比较常见的操作,比... 阅读全文
posted @ 2009-12-27 12:25 FangwenYu 阅读(687) 评论(0) 推荐(0) 编辑
摘要: Abstract: Function-based index 可以很巧妙地帮助我们实现“不一般”的unique index, 但是如果没有注意function-based index对于该index对应的function的要求,很有可能会触发ORA-01802这个错误。 本文尝试去阐述这个错误是如何触发的,以及如果去解决。 OK, let’s get down to business. 记得To... 阅读全文
posted @ 2009-12-16 23:06 FangwenYu 阅读(877) 评论(0) 推荐(0) 编辑
摘要: 了解历史,才能预知未来! 下图列出了c#的发展史 阅读全文
posted @ 2009-12-02 17:49 FangwenYu 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 看了这本《C# in Depth》的第一部分,觉得作者Jon Skeet对c#中的一些概念打的比方非常有意思,而且让人一下子就明白。关于其中个人认为比较出彩的地方,记录如下:1. delegate 通常大家提到delegate,往往就会提到C中的函数指针。诚然,两者确实有相似的地方,都是通过某种方式来间接调用方法。但是毕竟C#中的delegate不同于C中函数指针,而且单单提到函数指针也很难确切表达delegate的用处所在。还是来看看Jon是怎么来讲述delegate是个什么东东吧。 Jon说我们可以把这个delegate看做是一个人的遗嘱,里面列出了这个财产该怎么分配,是给情人还是老婆等等 阅读全文
posted @ 2009-12-02 17:37 FangwenYu 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 【 注意Presenter跟View之间的关系,从Presenter出发的箭头并没有直接连在View上,而是跟View的“接口”相连,这就说明一个很重要的一点就是Presenter并不是直接跟具体的View紧密联系在一起,Presenter只知道View的Interface。这样做的好处就是让Presenter可以独立于具体的View而实现所有的logic, 如果之后改变View,只要相应的Int... 阅读全文
posted @ 2009-12-01 14:53 FangwenYu 阅读(1462) 评论(0) 推荐(0) 编辑
摘要: Resource: Data Modeling Resource Center: http://infogoal.com/dmc/dmcdmd.htmData Warehousing Tutorial: http://www.infogoal.com/datawarehousing/ETL (Extract-Transform-Load) for Data Warehousingfrom http://www.infogoal.com/datawarehousing/etl.htmStocking the data warehouse with data is often the most t 阅读全文
posted @ 2009-11-30 16:17 FangwenYu 阅读(861) 评论(0) 推荐(0) 编辑
摘要: Resource: Data Modeling Resource Center: http://infogoal.com/dmc/dmcdmd.htmData Warehousing Tutorial: http://www.infogoal.com/datawarehousing/OLAP and Business IntelligenceIf you want to analyze data, then On-Line Analytical Processing (OLAP) is often the best way to organize the data. OLAP organiza 阅读全文
posted @ 2009-11-30 14:15 FangwenYu 阅读(532) 评论(0) 推荐(0) 编辑
摘要: Resource: Data Modeling Resource Center: http://infogoal.com/dmc/dmcdmd.htmData Warehousing Tutorial: http://www.infogoal.com/datawarehousing/Data Warehousing and Business Intelligence Introductionfrom http://www.infogoal.com/datawarehousing/overview.htmIn this part of the Data Warehousing and Busin 阅读全文
posted @ 2009-11-30 13:50 FangwenYu 阅读(444) 评论(0) 推荐(0) 编辑
摘要: Resource: Data Modeling Resource Center: http://infogoal.com/dmc/dmcdmd.htmData Warehousing Tutorial: http://www.infogoal.com/datawarehousing/What is Data Modeling? Data modeling is the process of creating and extending data models which are visual representations of data and its organization. The E 阅读全文
posted @ 2009-11-30 13:34 FangwenYu 阅读(1679) 评论(0) 推荐(0) 编辑
摘要: Source: http://blog.vuscode.com/malovicn/archive/2006/10/10/Model-View-Presenter-_2800_MVP_2900_-pattern.aspx What is MVP? View is responsible for visual representation of the form and it contains a ... 阅读全文
posted @ 2009-11-29 22:48 FangwenYu 阅读(404) 评论(0) 推荐(0) 编辑
摘要: Source: http://blog.vuscode.com/malovicn/archive/2007/01/19/dependency-injection-and-service-locator.aspx Dependency Injection (DI) -- Dependency injection is an interface programming technique whic... 阅读全文
posted @ 2009-11-28 21:16 FangwenYu 阅读(329) 评论(0) 推荐(0) 编辑