2007 年 11 月 02日, 星期五

Oracle Temporary Tables临时表

Oracle Temporary Tables临时表

Frank, wang 2007-11-3

Oracle临时表分为 会话级临时表 和 事务级临时表

会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。

事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。

临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,并且不能访问其它Session的临时表中的数据。因此,

临时表不需要DML.当一个会话结束(用户正常退出 用户不正常退出 ORACLE实例崩溃)或者一个事务结束的时候,Oracle对这个会话的表执行 TRUNCATE 语句清空临时表数据.但不会清空其它会话临时表中的数据.

你可以索引临时表和在临时表基础上建立视图.同样,建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效.

临时表可以拥有触发器.

建立临时表

临时表的定义对所有会话SESSION都是可见的,但是表中的数据只对当前的会话或者事务有效.

建立方法:

1) ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法.

C:Documents and Settingswangfan>sqlplus wangfan/wangfan

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Nov 2 16:48:31 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> create global temporary table wf(col1 varchar2(10)) on commit delete rows;

Table created.

SQL> insert into wf select * from dual connect by rownum<10;

9 rows created.

---------未提交事务前查询该表--------------------

SQL> select * from wf;

COL1

----------

X

X

X

X

X

X

X

X

X

9 rows selected.

---------提交事务后查询------------------------------

SQL> commit;

Commit complete.

SQL> select * from wf;

no rows selected

2)ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法.

session 1:

SQL> create global temporary table wfa(col1 varchar2(10)) on commit preserve rows;

Table created.

SQL> insert into wfa select * from dual connect by rownum<10;

9 rows created.

SQL> commit;

Commit complete.

SQL> select * from wfa;

COL1

----------

X

X

X

X

X

X

X

X

X

session 2:

C:>sqlplus wangfan/wangfan

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Nov 2 16:56:56 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> select * from wfa;

no rows selected

 查看全文
wangfans 发表于:2007.11.02 17:04 ::分类: ( Oracle ) ::阅读:(1791次) :: 评论 (6) :: 引用 (0)

2007 年 11 月 01日, 星期四

[原创]阿联不可能达到姚明的高度

阿联,国内又一位征战NBA的球员,全国的篮球迷都为此瞩目。
很多人都开始将他与姚明做比较,包括媒体将季前赛的数据对比等等。理性点,公正点,没有任何偏见(我也很喜欢易建联)的说:
易建联不可能达到姚明的高度。

首先,易建联的身体,亚洲人人种问题决定了阿联再怎么长也长不过本华莱士。而打前锋没有身体显然是不行的,即使你技术出众。
姚明还不是照样被比自己矮N头的小个欺负。强悍的身体,并不是野蛮的象征,而是霸气的表现,起码在NBA球场上是这个逻辑。历数NBA历届总冠军,哪个不是有铁汉子,大佛头坐镇。顺便说句,火箭为什么老是不能像男人一样战斗,除了姚麦温文尔雅的个性,还有就是他们不够凶狠,没有舍我其谁的霸气。总冠军拼到最后,是什么?是霸气,也就是大家说得冠军相。再举一例,小牛每年都让人充满幻想,每次都折戟沉沙,为什么?诺维茨基顶多投几个高难度的三分,他不会像奥尼尔,邓肯一样在对方头上爆扣,也是身体原因吧。所以阿联的最佳成长标杆应当是得克。而德克在大前锋位置,还没有被作为全明星首发,虽然去年被尊为MVP。姚明的身体虽然也没有达到非常强悍的地步,但是凭借着身高的优势,可以弥补不足,从这方面讲,阿联在 NBA的发展应当达不到姚明的高度。

其次,NBA历史上,球队位置中,最不缺人才的位置是哪个?很多人说是后卫,得分后卫,控位。其实是大前锋这个位置。而最缺人才的位置就是中锋位置。要不怎么说姚明是NBA时代最后的恐龙呢?现在姚明,作为传统型中锋,在NBA达到了第一第二的高度。阿联呢?他要面对伟大的邓肯先生,曾经的狼王加内特,太阳的霸王斯塔德迈尔,卡洛斯布泽尔,得克诺维茨基,。。。。太多太多了,随便拿说几个来都够阿联对付的。阿联在整个位置上能不能达到第一第二的高度?谁敢确信20岁的阿联能成为雄鹿的非卖品之于火箭的姚明,谁又能?

还有很多原因,包括阿联的打球的方法等等。


wangfans 发表于:2007.11.01 17:29 ::分类: ( Sports ) ::阅读:(38次) :: 评论 (0) :: 引用 (0)

2007 年 10 月 23日, 星期二

海外华人的质问:谁在误导中国人艳羡美国?

美国新闻界强烈的一致意识:美国是世界上最好的,凡是美国做的事都是对的,和美国不一样的想法就是错的,不照美国规矩行事的国家都是邪恶的。这一点从美国各大媒体的报导中不难看出来。在国内的时候,时常到各大网站的论坛逛逛,发现不少人有很深的“美国情结”。
  
  但我到了美国工作之后,再去浏览国内论坛对美国的种种说法,发现其中更有许多自以为是的误导。
  
  误导之一:美国的繁荣。美国是当今世界唯一的超级大国,它的繁荣当然是不言而喻的。但经过一些人的加工想象,美国已经成了每个角落都闪着金光的风水宝地。实际上,美国虽然拥有数量庞大的中产阶级,整体生活水平较高,但贫困问题一直是一大困扰。在美国的各大城市,都有规模不小的穷人区。首都华盛顿的闹市区,街道两旁“三步一岗、五步一哨”的,是那些拿着纸杯子要钱的穷人。美国人的概念是,你穷是因为你懒,没有必要同情。政府给他们发食品券,提供低价住房。但是并不等于他们不被忽视。穷人区的房子年久失修,学校是最差的,秩序混乱,抢劫、枪杀,层出不穷,新闻媒体不报导,警察也懒得管。在那种地方住着,永远是在社会最底层。要是不愿意认命,只有两条路可走,一条是当兵,如现任国务卿鲍威尔,即是最成功范例。二是当体育或演艺明星,比如乔丹。但这种空前绝后的成功故事在世界任何地方都可能上演,绝不仅限于美国。而且穷人区几乎清一色是有色人种,不能不说有种族歧视的成份吧?
  
  误导之二:对美国生活方式的无原则崇拜。这里面还包含着一层误解,就是什么是美国的生活方式。在一些人眼里,似乎无拘无束就是美国生活方式的体现。自己做了什么事,受到社会舆论压力,往往会来一句“这要在美国,算什么呀!”其实,只要在美国住的时间稍长,就可以明显地感到,美国社会的阶层分得很清楚,主流社会概念清晰。主流社会控制着美国的政治、经济、社会生活,影响力强大,他们的孩子也基本上生下来就被决定了今后的生活道路。美国的生活方式,绝对不是片面的吃汉堡,喝可乐,听摇滚,快车,随随便便地结婚离婚。看看布什的母亲芭芭拉和夫人劳拉,再看看尼可·基德曼,怎么可能下结论后者就代表美国的生活方式呢?
  
  误导之三:美国的自由,特别是新闻自由这一点在国内,是误解最深,也是争论最大的。“没有消息就是好消息”,“狗咬人不是新闻,人咬狗才算新闻”之类。但是这一切,都是在一个大原则下进行的。那就是美国新闻界强烈的一致意识:美国是世界上最好的,凡是美国做的事都是对的,和美国不一样的想法就是错的,不照美国规矩行事的国家都是邪恶的。这一点从美国各大媒体的报导中不难看出来。平时的报导看起来五花八门,包括尼克松的“水门事件”,克林顿的“拉链门事件”,都敢往外揭。但是如果事关国家利益,主流媒体就会众口一词,一致对外。科索沃战争时期,有过任何一点质疑么?美国主流媒体负责人自己都说,每天早晨一上班,头等大事就是看《纽约时报》的社论。不为别的,就是要为自己的报纸“定方向”。美国媒体平时各说各的话,背后其实有两只看不见的手在操纵,一个是党派利益,一个是经济利益。尼克松和克林顿,就是当了党派之争的“炮灰”。
  
  误导之四:美国的政治。美国的政坛就像一个大舞台,各色人等“你方唱罢我登场”,热闹非凡。于是我们一些同胞就看戏入了迷,以为美国政治真的那么透明,那么乾净。再一提到国内的贪污腐败,就更痛心疾首了: “看看人家!”这让我想起《围城》里的一句话,大意是说,贪官不肯放下身段去偷钱袋,是因为钱袋里的钱太少,根本不值一偷。同样,美国大致是不会出贪污腐败案的,因为美国的政界人士几乎根本不用腐败。首先,你要是没钱,根本就从不了政。要想当官,不论哪一级吧,总要竞选,竞选就要有经费,就要拉赞助。赞助拉得多,以后高升的希望就大。做到州长的,哪个背后都得有几个响当当的大财团。总统竞选就更不用说了。其次,所有从政的人,从政坛退下之后,都自己“下海”或是做顾问,根据在任时的级别,收入各有不同,但都极为可观。这些人靠的,全是当初政坛上的老关系。美国还有一些团体专靠吃政治饭发财的。他们举行各种集资晚宴,每个桌上请来各路政坛人士,再留一些空位给各大公司。每个空位都有明码标价,要想参加的公司就要掏钱。集来的钱,用于竞选,搞大型活动等等,提高政界人士声望。所以一个愿打一个愿挨,完全用不着背后塞钱送礼,而是把腐败公开化,合理合法化了。
  
  被误导的深层原因其实某些误导,只要用自己的头脑冷静思考,是不难化解的。但是我们有不少人,偏偏愿意相信道听途说而来的东西,而不愿认真地做一点研究。这其中,是有一些深层次原因的。最根本的原因,是近百年来根植于部份中国人内心深处的自卑心理。自从鸦片战争打破中国人的唯我独尊之后,对“洋”的东西既崇拜又恐惧的心理在长时间主导着部份中国人的意识。所以,改革开放初期,国门一开,难免让我们认为“月亮都是外国的圆”了。改革开放不过20多年,我们取得的成就应该说有目共睹。但用20多年的时间完全改变国人的心态,是不可能的一件事情。何况,我们仍然是发展中国家,与西方,特别是美国相比,还有很大差距。
  
  这种差距可能激发的,一种是迎头赶上,奋发图强的斗志,但是更多的,恐怕是慨叹己不如人的自卑了。有人往往会用人家的优点来比自己的缺点,越比越比出了自己的不行。一旦听人说美国的缺点,就斥为谎言,甚至一副“老虎屁股摸不得”的架式,比别人说了中国的坏话还要生气。
  
  第二点原因,在于我们的部份宣传媒介多年来有一些误导。自改革开放以来,我们的部份媒体出于一种希望,对西方,特别是对美国,先进的一面说得多,希望我们学习的一面说得多,给人的感觉好像整个美国都笼罩在玫瑰色当中。近几年,中国报刊大发展,又介绍了不少有关美国的另类生活方式,又使人觉得似乎美国人个个“酷毙”,搞得我们国内的主流社会倒像另类。
  
  另一部份的误导,来自于翻译小说。读得多了,我们会以为洋人个个温文尔雅,偶尔气急了说句“该死”,还要自责骂了粗话。想起当初在大学课堂上,老师突然来了兴致大讲英文中的粗话,我们立刻目瞪口呆。原来所有的粗话都可以在汉语中一一对应,有的甚至更加难听。前一阵读黑马的一篇文章,说到他正试图用北方乡村方言翻译英国诺丁汉的人说话,不禁拍手叫好。


wangfans 发表于:2007.10.23 14:20 ::分类: ( Spark ) ::阅读:(40次) :: 评论 (0) :: 引用 (0)

2007 年 10 月 09日, 星期二

值得收藏的146条经典民间偏方

值得收藏的146条经典民间偏方 查看全文
wangfans 发表于:2007.10.09 15:01 ::分类: ( 一般分类 ) ::阅读:(60次) :: 评论 (0) :: 引用 (0)

Oracle 10g RMAN 简单测试(数据库备份与恢复)

--Frank, Wang---Oct 9th 2007-------

--------察看当前数据库数据文件-----------------
SQL> select name from v$datafile;
NAME
-----------------------------------------------
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLTEST
C:ORACLEPRODUCT10.2.0ORADATAORCLBPO

-----------在BPO datafile上面建立tablespace rman---------------

SQL> create tablespace rman datafile 'BPO' size 10M
Tablespace created.


SQL> create user rman identified by rman default tablespace rman temporary tablespace temp;
User created.

SQL> grant connect,resource,recovery_catalog_owner to rman;
Grant succeeded.

----数据库运行在online状态下,并且启动自动归档模式 。
SQL> alter database archivelog;
Database altered.
SQL> archive log start ;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 45
Next log sequence to archive 47
Current log sequence 47

SQL> alter database open;
Database altered.

C:Documents and Settingswangfan>rman target 'rman/rman'

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Oct 9 11:26:28 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: ORCL (DBID=1137974514)


------配置RMAN------------------------------------------------
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'F:%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLEPRODUCT10.2.0DB_2DATABASESNCFORCL.ORA'; # default

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
using target database control file instead of recovery catalog
old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:rman-bk%F';

old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'f:%F';
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:rman-bk%F';
new RMAN configuration parameters are successfully stored

------------在rman dataspace上建表a---------------------
SQL> create table a(col1 varchar2(10)) tablespace rman;
Table created.
SQL> insert into a values('1');
1 row created.
SQL> insert into a values('2');
1 row created.
SQL>commit;
SQL> select * from a;
COL1
----------
1
2

----------备份数据库------------------------------------
RMAN> backup database;

Starting backup at 09-OCT-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=148 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
input datafile fno=00003 name=C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
input datafile fno=00005 name=C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
input datafile fno=00007 name=C:ORACLEPRODUCT10.2.0ORADATAORCLBPO
input datafile fno=00002 name=C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
input datafile fno=00006 name=C:ORACLEPRODUCT10.2.0ORADATAORCLTEST
input datafile fno=00008 name=C:ORACLEPRODUCT10.2.0DB_2DATABASEBPO
input datafile fno=00004 name=C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
channel ORA_DISK_1: starting piece 1 at 09-OCT-07
piece handle=C:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2007_10_09O.....
comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:00
Finished backup at 09-OCT-07

Starting Control File and SPFILE Autobackup at 09-OCT-07
piece handle=C:RMAN-BKC-1137974514-20071009-03 comment=NONE
Finished Control File and SPFILE Autobackup at 09-OCT-07

-------关闭数据库-----------------------------------
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

------删除数据文件bpo----------------------------

SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLTEST
-------将数据库启动到mount状态下-------------------------
SQL> startup mount;
ORACLE instance started.

Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 218104488 bytes
Database Buffers 67108864 bytes
Redo Buffers 2945024 bytes
Database mounted.
--------恢复数据库----------------------------------------

RMAN> restore database;

Starting restore at 09-OCT-07
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
restoring datafile 00002 to C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
restoring datafile 00003 to C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
restoring datafile 00004 to C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
restoring datafile 00005 to C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
restoring datafile 00006 to C:ORACLEPRODUCT10.2.0ORADATAORCLTEST
restoring datafile 00007 to C:ORACLEPRODUCT10.2.0ORADATAORCLBPO
restoring datafile 00008 to C:ORACLEPRODUCT10.2.0DB_2DATABASEBPO
channel ORA_DISK_1: reading from backup piece C:ORACLEPRODUCT10.2.0
FLASH_RECOVERY_AREAORCLBACKUPSET2007_10_09O1_MF_NNNDF_TAG20071009T125630_3JP2HZ9X_.BKP
channel ORA_DISK_1: restored backup piece 1
piece handle=C:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLBACKUPSET2007_10_09
O1_MF_NNNDF_TAG20071009T125630_3JP2HZ9X_.BKP tag=TAG20071009T125630
channel ORA_DISK_1: restore complete, elapsed time: 00:02:14

Finished restore at 09-OCT-07

RMAN> recover database;
Starting recover at 09-OCT-07
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:03

Finished recover at 09-OCT-07

---------打开数据库---------------------
SQL> alter database open;
Database altered.
---------察看数据--------------------
SQL> select * from a;

COL1
----------
1
2

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
C:ORACLEPRODUCT10.2.0ORADATAORCLTEST
C:ORACLEPRODUCT10.2.0ORADATAORCLBPO
C:ORACLEPRODUCT10.2.0DB_2DATABASEBPO

8 rows selected.

SQL> select * from v$tablespace;

TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO YES
11 TBS_ETL_USERS YES NO YES
13 RMAN YES NO YES

9 rows selected.

简单Rman测试结束.


wangfans 发表于:2007.10.09 13:15 ::分类: ( Oracle ) ::阅读:(342次) :: 评论 (3) :: 引用 (0)