01 2010 档案

摘要:在另一篇Blog里提到怎么用RMAN来复制数据库,本篇Blog在简单谈谈如何手动来实现复制Oracle数据库。复制数据库可以从一个主数据库创建,无论这个数据库是打开的还是关闭的。为了创建一个复制数据库,来自打开或者关闭的备份文件可以用作数据库文件的副本。关闭备份的数据库文件备份不需要恢复(recover),因为所有的数据文件头的SCN是一致的,而打开备份的数据库文件是需要进行恢复的,因为各个文件相互之间不一致。当clone数据库的时候,将必须创建一个新的控制文件。数据库控制文件可以用CREATE CONTROLFILE命令来创建。很多情况下,这个命令是有用的或者是必要的,比如说在如下情况下就需 阅读全文
posted @ 2010-01-27 22:34 FangwenYu 阅读(487) 评论(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 阅读(336) 评论(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 阅读(466) 评论(0) 推荐(0)
摘要:在网上看到有人问如下问题,已知表TB的数据如下[代码]现在要得到如下的结果,该怎么来解决,[代码]想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数,但是显然这两个是聚集函数,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MIN的值却是作用于每一行上面的,如果要借助于MAX()和 MIN()的话,还需要对原表的数据结构进行下处理(先进行转列操作unpivot... 阅读全文
posted @ 2010-01-23 01:04 FangwenYu 阅读(1356) 评论(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 阅读(364) 评论(0) 推荐(0)
摘要:Adrian Billington 在他的个人网站www.oracle-developer.net上给出了一个很有意思的小工具,Mystats Utility, 用来帮助我们查看某个操作消耗的系统资源。 下面是他的代码 (mystats_pkg), 其实也很简单,主要就是在待考察操作执行前后各采一个样(snapshot),然后比较这两个snapshot统计数据的差值,就可以得出待考察操作消耗的资... 阅读全文
posted @ 2010-01-21 23:37 FangwenYu 阅读(918) 评论(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 阅读(1868) 评论(0) 推荐(0)
摘要:在Windows平台上启动多个Instance比在UNIX环境下要繁琐一点,需要用到ORADIM来创建新的ORACLE_SID. 现在假设在一台Windows PC上装了一个名字为ORCL的Oracle数据库,默认情况下启动的都是这个对应于这个ORACLE_SID的instance, 现在如果我需要在这台机器上启动另外一个instance (假设名字叫ORCL2),该怎么办呢? 首先先创建另外一... 阅读全文
posted @ 2010-01-18 12:02 FangwenYu 阅读(531) 评论(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 阅读(328) 评论(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 阅读(377) 评论(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 阅读(529) 评论(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 阅读(1211) 评论(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 阅读(954) 评论(0) 推荐(0)
摘要:Sql*Plus的重要性不用多说,但是由于Sql*Plus默认的设置往往使得结果显示不是那么友好,比如说linesize, pagesize。 因此,很多时候都要手动去重复设置这些参数。那么有没有一劳永逸的方法呢,glogin.sql就是答案! Sql*Plus每次启动的时候都会自动运行文件glogin.sql中的设置,因此如果我们把常用的参数设置都放在这个文件里面,我们就不用每次都要重复去设置... 阅读全文
posted @ 2010-01-06 23:27 FangwenYu 阅读(384) 评论(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 阅读(996) 评论(0) 推荐(0)
摘要:Subquery Factoring, 其实就是平常比较熟悉的With语句,Adrian Billington 在他的网站上写了一篇介绍Subquery Factoring很好的文章,见这里。这篇Blog同样是对他的这篇文章的笔记。 With语句一般有两种用途,一种就是用来把复杂的SQL语句简单化:复杂的SQL语句一般都会嵌套很多层次,无论是写起来还是读起来都很困难,通过用With语句,把子查询... 阅读全文
posted @ 2010-01-05 11:27 FangwenYu 阅读(660) 评论(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 阅读(323) 评论(0) 推荐(0)
摘要:Partition Outer Join是Oracle 10g新增加的,用来方便“补足”在outer join的时候“漏掉”(NULL)的数据。 当两个用来做Join的表中的数据不“相当”的时候,如果我们希望在最终结果中其中一张表的所有records都不落下,一般会用到outer join。另外一个表中“缺失”的那部分数据自然都是以NULL来补足。但是如果我们希望缺失的那部分数据(NULL)能正... 阅读全文
posted @ 2010-01-04 22:28 FangwenYu 阅读(750) 评论(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 阅读(643) 评论(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 阅读(523) 评论(0) 推荐(0)