小路's Blog | 愚者的前进 !


六月 17th, 2010

IT人士之成功之6大步骤

2 Comments, 技术, by 小路.

  一个前辈在移民加拿大后写的文章,写得不错,值得借鉴,转来给大家看看,也给自己

  序言:经过001多年的洗礼,认识了这里这么多的JJMMGGDD,前几天刚得到签证,

无限感慨

  面对未来,我也不知道我31岁如何发展,尤其是我现在在北京还算过的去,各种机会都纷至沓来。

  无论如何,我相信,世界上各种事物都有他们自己的原因,也结合自己在北京接近8年的感悟,写一个总结,我相信,世界上只要有人,无论是什么皮肤,总有人性可以探索,人作为”天生的政治动物”的本性,都是有规律可以总结的。

  我以前有过这种类似的总结自己从山西”移民”在北京工作的文章,反驳VOA的时候也有一些类似的评论。

  只要是001的兄弟,都是经历了加拿大的”75分数选择”,在任何行业都是高手,提出任何”战术”评论,都是不会有共鸣的,很多道理我都是点了一下,没有深讲,希望大家可以从里面看出来我的本意。

  根据最近001频繁的火暴对话,观点差异太激烈,很多人没有包容的心态

  我写文章的风格可能会很尖刻,但是我想提出的是:我的出发点没有歧视,我本身是把001的人当兄弟看,斑竹和BJAPP,老卡等比较明白这个道理,尽管我总是被他们”讽刺”,但是我相信他们对我是很不错,去了加拿大,我们都是哥们,不要片面的引用我的文章,你一定要完全我文章的全部含义,001都是兄弟姐妹,只要是出发点好,任何激烈的辩论都可以接受,希望可以理解”爱国,爱党”的区别。

  本身,从古希腊,法国革命领袖,美国独立战争甚至可以从柏拉图的油画可以看出,几千年来,辩论本身是一个最好的学习的方式

  从001论坛上的激烈辩论中,我得到的知识远比上一个”硕士”还要多。

1:时刻偷窃

  如果说在北京的8年就是”偷窃”的8年,这个话是一点也不过分。

  97年在北京,我很喜欢书籍,尤其是各种崭新的,价格100多的书!经过寻找,我发现北大的”风入松”是唯一一个不买饮料,可以坐在椅子上看书的地方!由于那个时候我总是被开除,在北京也没什么熟人,找的工作也不好,每当下岗的时候,我就直接去看书,实在饿了,去马兰拉面吃饭,如果按照看书的价格计算,我刚到北京,一天就可以挣一千多元啊!从上午看到下午,完全不理会书店老板的脸色!后来有发现理工歌德语言学院可以免费听英文,英语角可以随便说英文,最后发展到在哥们帮助下,去清华多媒体教室偷听讲课。

  往日寒酸不堪回首。。。。。。

  98年的时候我基本不会被开除了,到一个公司的重要事情是复印资料,然后加班看,我还记得98年左右,我在翠微路建设总行,电话总局等,加班看设备,熟悉如何调试,连最简单的打印机命令都要1个月才可以理解。那个时候真是笨蛋到家了

  最后的几年我基本有了一些积蓄,可以买的起一些专业书籍了,公司会安排我去明目张胆的听课。但每周我都要去书店看一看,这个习惯和JJMM逛商场的意思一样,哪怕不买书,书店对我诱惑也是很大。

  后来我”偷窃”的水平很高了,基本原则是”拿无耻当个性”,每次听各个计算机高手的讲课,基本我可以把最”出彩”的地方记忆,然后我讲课的时候再利用一下他们的思路。

  弊病:A:很多人也在偷窃,但是贪多嚼不烂;而且买的书从来不看,要避免这种偷窃

  B:有的东西,比如别人的关系和地位。你想偷也偷不过来;有的人天生就是尊贵的血统,他们的优势太明显,除非你从娘胎重来一次。

2:交友为先

  这个事情的重要性,大家都明白,尤其在国内。

  我在98年的时候,还是在平房里和民工生活,做些简单的IT工作。虽然也看书,苦于没有机会去实践,IT最重要的实践机会。

  这个时候,我认识了李哥,他太原人,我山西老乡。在98年的时候,对BEA,CISCO已经很熟悉了,天生做IT的大脑。人也不错,(他从98年一直到现在,在华为经历几次升迁。2004年在香港华为分公司负责QUID WAY系列总负责的角色。)于是在他的帮助,介绍下,我去两个公司工作,结果都被开除,(被他痛骂是免不了的),但是我一样平时看书,研究华为的秘密资料。

  说来惭愧,那个时候,我摆脱了平房困境,可以洗澡,也有空调,生活他免费照顾我。

  后来我进入UNIX圈子,靠以前的一点基础,(主要是害怕被开除),在www.htt.com.cn一直做到经理的位置。经过接触,和HP的圈子很接近了。

  HP,ORACLE,EMC的圈子基本接近,因为他们都是互相跳槽。里面很多哥们都是很实在的,我每次出差,加班,总要和一个”战壕”的战友认识,其中的乐趣实在太多了。

  现在我基本和华为的网络产品不是一个产品线了,但是多年的友谊让我们更加友好。

  甚至华为北非,俄罗斯,泰国,南京各个分公司的哥们都和我关系不错。移民加拿大后,很想利用签证优势,去各个地方看他们去。

  ”朋友是长青树,需要一生的时间去浇灌”

  ”人生最大的享受莫过于有几个头脑和心灵都很正直的朋友”

  ”背叛朋友就是背叛生命”

  弊病:

  A:”弱国无外交”,如果自己没有实力,尊严,没有利用价值,交什么朋友也没有用。我在华为的哥们可以用”老乡的友谊”帮助我,如果我被老板开除三次 ,估计他也不会搭理我了。

  B:”朋友”不是特别指的PLMM,很多人都把时间,精力用在追求女性朋友上了。美女能给你什么?满足?虚荣?事业?说一个刻薄点的话,如果你象关心美女一样关心哥们,这个哥们会感激你一辈子。。。。。

  当然,又是美女又是技术高手的朋友是最好的,但是根据我多年工作经验,这种事情的概率和飞机失事的概率一样

  C:交朋友不可太多,好朋友有几个就足够了!否则你会无法应付
3:淡薄名利

  在北京同学聚会,哥们聊天。总是听到这样的话”老板真TMD抠门,农民出身”

  ”手机费用也不报销,破公司,笔记本还要从工资扣”

  ”加班越多,工资扣的越多,…财务部”

  其实我认为,不用抱怨”天下乌鸦。。。。。”这种话,其实要有这样的观点,老板是最好的,真的你换一个公司,会发现一个老板比一个老板差!

  而且说难听的,如果感觉老板不好,你可以跳槽,你不走还是说明你自己”下贱”,在一个公司工作,不要抱怨任何事情!如果你真的讨厌老板,那就赶快在最短的时间内成为公司的第一高手,然后大摇大摆的跳槽。

  从2004左右我自己接了几个黑单才知道,做老板是最辛苦的事情,尤其是遇到要帐,客户投诉这种事情。

  名利和收入的关系就好象战争:每个防御就是进攻,进攻又包含着防御。

  名利是每个人都喜欢的,但是最重要的是要把每天的时间花在如何提高自己实力上!不要把心思放在争取名利上。

  北京的IT行业最好的一个优点就是:如果你真的是高手,你的收入会成倍的涨!想拒绝都没办法,因为老板害怕你跳槽啊!

  1999到2001,基本我是学习,积累,象驴一样出差。每天就是地铁,加班,天天想的最多的事情就是”自己的技术水平一定要是公司最高的”。收入在3K,4K,到了2002左右,收入翻番,可报销费用也多了,可以独立做一个部门的经理,我可以做售前,售后,培训,优化等,直接的结果就是公司的技术总监很尴尬,因为我的能力已经超过他了(他原来是老HP员工,比我大7岁,公司用高收入把他挖过来的,也是把我培养出来的老师)。后来西安有个技术故障被客户投诉,总经理找了个理由把他工资降低了,具体原因很复杂。我感觉其中有一部分原因是因为有我的竞争在里面。

  弊病:

  A:毕竟北京是国际消费水平的城市,不能太不在乎工资,但是要用”委婉”的方式争取待遇。

4:吃苦在先

  这个观点其实在流行的书籍中早有类似的说法,《执行》《没有借口》,等,我强调的是遇到事情,不可以躲避!逃避现实,得过且过不是正确的工作态度。

  ”让一个退缩的理由有100个,让人勇敢的理由只有1个;不幸的多数人选择那100个理由”

  在IT行业,有一个不成文的原理;所谓的”高手”,就是他懂这个东西比你早半年;

  高手高就高在他经历的项目多,失败也多。

  所以,在平时的工作中,一定要多吃苦,冲在前面。很多事情,有50%的把握,就要奔赴现场。首先你遇到一手资料,积累了经验;而且你使用上千万的设备,处理真实的故障,机会也难得啊!

  在很多城市,我担任现场负责,没办法,只好脸皮厚厚的去处理故障。有时候被客户正手,反手打一顿耳光;有时候被各种南北功夫打的”皮开肉绽”,有时候被逼迫的偷偷给老总打几十个电话救命。。。。数次都想过直接辞职算了,但是等到你熬过来了,自然会总结到宝贵的经验。

  工作没有退缩的理由,老板为什么给你高工资呢?孩子生病,或者女友不开心,感冒发烧都不是不出差的理由!熬夜两天,2个星期没有洗澡不是不加班的借口!

  给你任务就要解决,不能推脱。

  不谈老板的因素,说严重点,”世界上没有比糟蹋自己的时间更让人痛心的事情了”

  其实,我们可以看到很多大城市的人的通病,懒扬扬的在温柔的沙发里,无所事实,看电视,打麻将打发时光,这也是一种最大的不负责任和对自己的践踏!

  弊病:

  A:太过于承担责任也不好,毕竟一个IT的系统是有很多技术组成的,该让客户签字就别软弱,毕竟要保护自己公司的利益

  B:太过于吃苦有时候抢别人的机会,有实践的机会别一个人霸占,也让别人锻炼一下

5:敏感世事

  在2003年左右的时候,我感觉到一些奇怪的现象,很多HP,ORACLE里面的人的水平都不太高,甚至HP某些渠道,培训部门的人都是在天天扯淡,吹牛。。。。。。

  有时候处理故障,做项目,感到IT很多具体的实施和技术没有任何关系!做一个技术经理不是那么简单

  HP的LU XIAO SHI ,CHEN ZHI HONG这些高级经理被其他人骂的一钱不值。。。

  后来经历了几次公司高层变动,合并(www.htt.com.cn www.huapu.com)渐渐发现,很多老总有眩目的职位和资历,但是本身的精神境界和管理水平真的不高,少数几个老总甚至连一些基本的素质都没有!整个脏话不断,土鳖一个!

  掌握技术以外的东西太重要了,尤其在中国!国外的老总是技术导向,国内的老总基本都是销售导向,区别就在此。”关系”实在是一个无法琢磨的东西

  长天的内外生子,中LIAN的夫妻店,北大的阶级斗争,HP和IBM郭士那的渠道分支,HP合并COMPAQ的皮里阳秋,ORACLE的桌面回扣,东华的价格脱水,EMC的高不胜高,

  VERITAS的别处风景,华普的上海独立,大恒的老太太做IT,神州数码的合理开除,佳节的南方抵抗,中软的策略制约。。。。IT圈子太多事情,太多变化。。。

  在出差,投标的时候, 可以认识很多”对手”哥们,应该和他们多合作,多分析,(反正出差大家也都闲的无聊),要知道公司的各个环节,看到公司的冰山水下的部分,一定要多去探讨,千万别指望报纸可以给你带来”信息”。

  对于技术人员来说,做到这一个步骤是比较难,因为技术人员一般不爱和别人多交流,玩的时候也不太放的开。

  弊病:A:兵法原则:以正合,以奇胜。

  先要有很好的多年准备,才可以接触复杂的人际关系,不能只研究人际关系而忽略IT基本的技术学习。

  B:狡猾,世故等可以成功,尤其在国内,很多人靠这个就可以得到很好的前途!

  但是,如果想真的做大,做好,反而不需要研究很多人际关系,最大的狡猾其实就是诚实,本分的做人。10年,20年过去,总有成功的时候

  总结前5个步骤:其实根据我多年的对人的接触,可以明白这5个步骤的人其实是很少的。001上大部分女性都不会明白这5步(没有歧视的意思),001上大部分哥们会在30-35岁明白这5个道理。

  参考围棋:围棋的初段就是这个阶段,如果想达到势利分析,至少要5段以上的实力

  参考战争:一般的旅长都明白这5个步骤,想当司令就要学习第6个步骤了

  参考公司:一般的公司内部的经理级别,收入在一万左右的领导也是这个阶段

  参考足球:目前亚洲大部分的国家队就是这个水平,基本功,战术都有,惟独缺IQ。少数优秀的球队,日本韩国基本可以用”大脑”踢球

  但是如果想达到世界上那些好球队的水平,必须就要熟悉第6步骤,懂得攻防转换,节奏把握,心态。。。。

  参考VOA等LOSER:他们的英文水平,学历应该是很可以的,如果他走过这5步,至少在北京月薪1万是不成问题;但最关键的问题是这5个步骤不是从大学里学出来的

6:势利分析

  这一步骤是最难理解的,如果没有围棋或者战争的基础,根本无法体会。。。。

  围棋是最讲究势利分析的艺术,但是围棋的规则是如此的简单:你一步,我一步的围地,谁的地多谁赢;也没有什么马走日,象走田;

  战争的规则也是如此简单:谁杀人多,谁杀人的效率高谁就赢

  围棋最难的部分不是在如何吃对方的棋子,而是在” 势利”的转换,用最高的效率达到目标!

  什么是”势”,就是棋子很厚,象城墙,象火焰,你无法靠近他,所有他辐射的地方都是他的领地,尽管他目前没有占领,但是最后总是他的

  什么是”利”,就是已经在你手中控制的地盘,已经是你肚子里的肉了。尽管你有了肉,但是不说明你就赢了!因为棋盘很大,还有更多的肉!

  初段棋手下棋,总是眼中只有局部,看不到全部,总是抓不到主动权。高手下棋根本不在乎几个子的得失,”高者在腹”,你可以在前50步占领一些小范围实地,后来你会发现,高手无意中把其他你没有占领的地方统统威胁!你敢在他的势力范围作战,他就全部杀死你!

  最复杂的还不是这些,关键是你要用最少的子,最少的步数去得到最多的领地!所以计算机无法下围棋,因为围棋包含”哲学”,”个性”。面对棋盘,同时有几种选择,这几个选择都不错,关键看棋手的思路和效率。

  比如说:你得到了”势利”,但是你的效率不高,本来两步就可以得到20目的地,你用了3步。最后你还是要输给高手。

  围棋也可以是说是一个比试谁犯的错误少的游戏。

  即使是9段棋手,也是有很多后悔的地方。围棋一般没有一子走错,满盘皆输的情况。偶尔出现几个本手,缓手是可以接受的(当然:下出了臭手那就不可原谅了);

  因为对方也在犯错。上半盘实在不行,下半盘还有机会,甚至最后可以拼命搏杀一次,颠倒胜负!)

  ”围棋想赢很难,但是想输也不是随随便便就输掉了”

  回到现实,在北京,无非就是金钱,实力的转换

  坐吃山空,这个概念对于大城市的人是体会最深的。(给你个高收入工作好,还是50万好?)

  一般来说,年轻的时候最重要的是积累实力,别想着”天上的馅饼”。有了实力,收入不成问题。如果有钱没实力,很快就会清零。(当然,有钱的人花几百万留学,也可以从金钱转化为实力,这样的人估计在英国加拿大的不少)

  一般来说,不可能同时得到金钱和实力。也就是说,不可能又上大学,又挣钱。

  而且最要命的是,你要付出什么代价才可以得到多少钱?什么代价才可以得到大学的最重要的知识?这个效率问题可比MBA难多了。

  比如没有北京户口:这个问题我想是很多大城市的”外地人”考虑做多的,所以我就选择到IT行业,这个行业对人的要求很高,英文,数学,加班。。。。。不会因为有北京户口,那些技术问题就变的简单。这个行业对人没有任何要求,只要有技术,哪怕是个农民,总经理也是一路绿灯。

  比如总是全国出差:很好,连上班时间和吃饭时间都节省了!可以利用高档宾馆的条件,该游泳,该看书,别浪费时间,我就很擅长在宾馆,旅途上看书。

  比如某些人反应慢:思路慢的人可以考虑更深层的问题。大智弱愚。

  比如有的人难看:所以就要用更多的知识去弥补内心。(001的大部分哥们可以自我安慰一下了)

  回到001,移民,无非就是目前条件和期望条件的转换,失望与信心等综合分析

  关于这个说烂了的话题我就不多说了,国内越好的人就别出去,(尤其是靠”关系”发达的人)

  ”信心是成功的一半”,对患得患失的人,怎么比较也不行!因为”信心”这个因素太重要了!看看恺撒,拿破仑有什么伟大?就是信心!信心决定一切!

  001上中加之间的任何比较,有的甚至到了小数点后几位的级别。。。。。。最要命的是:看看目前国内经济学家的预测,从来不考虑”动荡”"罢工”"权利”因素,纯粹经济理论分析中国和国外的区别,实在是可爱。。。。

  回到公司,无非是关系和利益的转换

  这个就太复杂了,我都无法描述了。国内代理商就是关系商。如何权利和精英的结合?如何衡量贪污,回扣的效率?(参考《现代化陷阱》,《潜规则》,里面分析的比我要好100倍)

  回到战争,无非是战略和战术的转换

  参考胡绳的清末的历史书籍,农民战争。定一个根据地是很好,但是到了后期以保卫天京做战略就不好了。太平天国初期有一个分支北上直接攻打北京,应该是不对的,但是慢慢发展,成了另外一个极端;历史上要真的把北京打下来,比在南方的小富既安要好的多。(洪如果有坚决的信念,是可以打下北京的)

  清朝的江南江北大营被克服这个极端失败,对于曾,左来说,倒是一个好事情。

  围棋和战争是如此接近,谈论围棋,很多时候是稳打稳扎,
  但是也有很多例外,你看一些9段棋手下棋,根本没有任何章法,可以用”惨烈”来形容:刚开始就是一片撕杀!没有精力去占领棋盘其他位置。中盘同时6块长龙在绞杀,你死我活,刺刀见红,走钢丝一般危险!

  战争也是这样,局部战争应该是不太重要,但是有的时候局部也可以影响全部。有时候一个战役可以拖住所有的人的后腿。

  更多的是全部影响局部,战略影响战术,希特勒就是输在了和拿破仑一样的问题上:对俄国的战略失误。

  回到政治,无非就是博奕,策略

  这个问题也很复杂,西方和东方都有类似的政治谋略,都是在下围棋。但是西方的政治围棋是靠”选票”决定胜负。东方是靠”暴力”决定胜负。

  西方下政治围棋是靠三权分立的规则,没有犯规,下不过就是服输。

  东方下政治围棋经常是在关键时候违反规则,甚至有权利的人可以连走两步,或者把另外的人的手剁掉!

  东方西方的政治生态的不同之处和玄妙,可以参考台湾的历史。再深刻的我也写不出来了。

  弊病:

  A:当局势迷茫时,最好的势利分析就是不分析

  有的时候,局部战斗中,你会发现没什么好方法,其实不走就可以了,下一步可以发展其它地盘。没办法的办法在围棋里体现很多。

  ”宁失数子,勿失一先”,”双活”,”长生”

  战争中,枭雄曹操和无赖刘邦很熟悉这个方法,实在无法进行势利分析,没办法的办法就是等待机会,充分领会”三十六计走为上”

  001的哥们对待移民也是这样,天天看书,实践,积累实力是最匾模?

  忘记移民就是处理移民问题最好的方法!(献给castro)

  在对待001论坛问题上,天天来看帖子也不好,反而影响自己的时间安排,本意是学习和交流,过度就是浪费时间了(献给001的JJMM)

  B:大事不糊涂就可以了,不要天天分析势利;尤其是涉及到感情,道德方面,最好别分析
  ”放个P也要算一卦”

  ”爱情是魔鬼的把戏”"上帝在恋爱的时候也会疯狂”

  清朝末年,对待国外的侵略,多少人都在使用谋略,孙子兵法分析,根本没用!

  一个国家不注重基础建设,基本教育投资,玩虚的没用。

  谋略,势利分析如果离开基本的实力,根本就是垃圾。

总结第6步骤,估计001的极其少数的哥们在45岁左右,可以掌握60%的势利分析。

  可以掌握90%的势利分析的人,国内应该没几个吧?

  掌握30%的势利分析:可以根据制定好的规则,做出一个比较好的事业。可以下跳棋和象棋。

  比如:38左右前的曾,基本是充实自己,建设一个稳定的,有战斗力的队伍。

  掌握60%的势利分析:能有初步的预见,主动能力,虽然左右不了大局势,但是可以灵活处理问题。可以打桥牌:输的时候少输点,赢的时候多赢点

  比如:曾的初期战争,”屡败屡战” “擅败不亡”,虽然没有绝对实力,但还是可以和太平天国抗衡

  掌握90%的势利分析:这个阶段很少有人可以达到,有点脸皮厚到无形,心黑到无色的地步。

  参考胡雪岩的发家历史,他可以做一个”局”,让所有的人去追求。任何劣势他都可以转化为优势。

  比如:曾在后期时候,收拾洪扬之流,简直是水到渠成。利用势利到达了随心所欲的地步。分析具体的曾的战役,杀人无数不说,曾用的很多手段简直超过了残忍,甚至是”阴险”,”发指”,他手下的屠城更是数不胜数,但是为了目的,很多东西必须要这样完成。 邱吉儿也有类似的话:”战争的道德就是打赢它”

六月 17th, 2010

Oracle数据库备份与恢复(3):OS备份数据

No Comments, 网络应用, by 小路.

  用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件。这种备份与恢复需要用户的 参与手工或自动完成。

  对于使用 OS拷贝备份的数据文件,可以使用 DBVERTIFY 进行检验。DBVERTIFY是一个外部工具,主要用于校验数据文件或备份的数据文件的数据块是否正确。 例:

  dbv /u01/oradata/oracle/users01.dbf BLOCKSIZE=8192

  参数说明:

关键字 说明 (默认)
FILE 要检验的文件 (NONE)
START 起始块 (文件的第一个块)
END 结束块 (文件的最后一个块)
BLOCKSIZE 逻辑块大小 (2048)
LOGFILE 输出日志 (NONE)
FEEDBACK 显示进程 (0)
  Recover 还可以进行测试,检测恢复的错误,错误信息记载在 alert_SID.log 文件中,通过测试,我们可以知道该恢复操作是否能正常完成。

  SQL> RECOVER TABLESPACE sales TEST;

  SQL> RECOVER DATABASE UNTIL CANCEL TEST;

  3.1 相关设置

  3.1.1 设置ARCHIVELOG与NONARCHIVELOG模式

  重做日志组是以循环方式使用的,重做日志组会被覆盖重做日志信息就会丢失。为了保存历史以来的重做日志,数据库可以运行在日志归档模式下(archivelog mode)。 在日志归档模式下,当日志组撤换到下一个组时后台进程 ARCn 将上一个日志文件复制到另一个地方(oracle 10g 使用快速恢复区会归档到该区)保存。数据库默认为非归档模式(noarchivelog mode)。

  设置ARCHIVELOG模式步骤:

  1. 关闭数据库,备份已有的数据,改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。

  2. 修改初试化参数: 使用 PFILE,修改初始化参数文件 init[SID].ora log_archive_start=true #启动自动归档 log_archive_format=ARC%T%S.arc #归档文件格式 log_archive_dest=/arch12/arch #归档路径

  3. 启动 Instance 到 Mount状态,即加载数据库但不打开数据库:SQL > startup mount;

  4. 发出修改命令SQL > alter database archivelog; SQL > alter database open;设置 NONARCHIVELOG模式步骤同上,只需修改相应参数值即可。

  3.1.2 LOGGING 与 NOLOGGING

  表空间、表、索引、分区可以设置为 NOLOGGING,用于快速装入数据(Direct Load)。 在插入数据时只写入最小的重做日志和回滚数据。在归档数据库模式下,执行 Direct Load 操作后应立即进行备份,否则不能使用之前的备份进行恢复。另外,用户可以设置数据库的 强制日志模式,使用所有操作都记入日志。

  LOGGING 与 NOLOGGING 的区别:

LOGGING NOLOGGING
所有的更改写入 REDO 最小写入 REDO LOG
从最近备份中完全恢复 不能从最近备份中完全恢复
不需要增加备份 需要增加备份
  NOLOGGING 的操作:

  CREATE TABLE … NOLOGGING AS SELECT 语句

  INSERT /*+APPEND*/ INTO <表> NOLOGGING SELECT 语句

  INSERT /*+ PARALLEL(<表>,)达式*/ INTO <表> NOLOGGING SELECT 语句

  SQL*LOADER的DIRECT 方法

  例:

  SQL>CREATE TABLE emp1 NOLOGGING AS SELECT * FROM emp; SQL>SELECT name,unrecoverable_time FROM V$DATAFILE;

  SQL>INSERT /*+ APPEND */ INTO emp1 NOLOGGING SELECT* * FROM emp; SQL>SELECT name,unrecoverable_time FROM V$DATAFILE;

  SQL>ALTER DATABASE NO FORCE LOGGING;

  3.1.3 归档路径

  在归档模式下进行自动归档时,或者在恢复时设置归档所在的位置,需要设置归档路径初始化参数:

  LOG_ARCHIVE_DEST_n=“LOCATION=path MANDATORY|OPTIONAL REOPEN=n”

  LOG_ARCHIVE_DEST_n=“SERVICE=standby MANDATORY|OPTIONAL REOPEN=n
  3.2 NONARCHIVELOG 模式

  3.2.1 脱机冷备与恢复

  冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份 Oracle 信息而言,冷备份是最快和最安全的方法。

  冷备份的优点:

  1.是非常快速的备份方法(只需拷贝文件)

  2.容易归档(简单拷贝即可)

  3.容易恢复到某个时间点上(只需将文件再拷贝回去)

  4.能与归档方法相结合,作数据库“最新状态”的恢复。

  5.低度维护,高度安全。

  冷备份的不足:

  1.单独使用时,只能提供到“某一时间点上”的恢复。

  2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

  3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

  4.不能按表或按用户恢复。

  如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以 工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须 拷贝的文件包括:1.所有数据文件2.所有控制文件3.所有联机 REDO LOG 文件4.参数化参数 Init.ora 文件(可选)。

  3.2.2 案例

  1.9i 脱机冷备/恢复的例子:

  (1) 关闭数据库

  $ sqlplus /nolog

  SQL> connect /as sysdba

  SQL> shutdown normal;

  (2) 用拷贝命令备份/恢复全部的时间文件、重做日志文件、控制文件、初始化参数 文件SQL > host cp xx xx;

  可以使用以下冷备脚本:

  #!/bin/bash

  ##################################################################

  ## 名称: coldback_gen.sh

  ## 功能: 本 shell 用于生成冷备份脚本, 进行冷备份同时生成相应的恢复命令

  ## 可以修改后在生成后立即执行

  ## 编者:

  ## 日期: 2006.12.13.

  ##################################################################

  ##设置变量

  ##设置临时文件名

   tempsql=./backup.sql

  ##设置备份文件存放路径

  backdate=`date -u +%Y%m%d`

  backupdir=/u04/oracle/coldback/$backdate

  mkdir $backupdir

  ##设置备份脚本文件名

  backupsh=$backupdir/coldback.sh

  rcvrsh=$backupdir/recovery.sh

  echo “正在生成冷备份脚本[$backupsh]……”

  ##检查 ORACLE数据库是否启动

  oraisrun=`ps -ef|grep -c ora_`

  if [ "$oraisrun" = "0" ] || [ "$oraisrun" = "1" ]

  then

  echo ”

  ORACLE 数据库尚未启动,请先启动 ORACLE”

  echo “”

  exit

  fi

  ##准备工作

  echo “set heading off ” > $tempsql

  echo “set feedback off ” >>$tempsql

  echo “set tab off ” >>$tempsql

  echo “set verify off ” >>$tempsql

  echo “set pagesize 0″ >>$tempsql

  echo “set linesize 800 ” >>$tempsql

  echo “select ‘#!/bin/bash’ from dual;” >> $tempsql

  echo “select ” from dual;” >> $tempsql

  echo “select ‘## 备份脚本生成时间: ” `date +%Y 年%m月%d日-%H:%M:%S` “‘

  from dual;” >> $tempsql

  echo “select ‘## 备份目的路径: $backupdir’ from dual; ” >> $tempsql

  echo “select ” from dual; ” >> $tempsql

  echo “” echo “select ‘echo ”开始进行脱机冷备……”’ from dual; ” >> $tempsql

  echo “select ‘echo ”备份目的路径: $backupdir ”’ from dual; ” >> $tempsql

  ##这里不直接关闭数据库,提示用户手工关闭为好。如果需要直接关闭,请修改

  echo “select ‘orarun=’||’\`’||’ps -ef|grep -c ora_’||’\`’ from dual;” >>$tempsql

  echo “select ‘if [ "\$orarun" != "0" ] && [ "\$orarun" != "1" ] ‘ from dual;” >>$tempsql

  echo “select ‘then’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘echo ”ORACLE 数据库已启动,请先关闭 ORACLE 数据库” ‘ from dual;”

  >>$tempsql echo “select ‘

  echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘exit’ from dual; ” >>$tempsql

  echo “select ‘fi’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份控制文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘ ||name||’ $backupdir’ from v\$controlfile; ” >> $tempsql

 echo “select ‘echo ”控制文件备份完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份数据文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘ ||name||’ $backupdir’ from v\$datafile; ” >> $tempsql

  echo “select ‘echo ”数据文件备份完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份联机日志……”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘cp ‘||member||’ $backupdir’ from v\$logfile; ” >> $tempsql

  echo “select ‘echo ”联机日志备份完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”脱机冷备完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  ##生成冷备份执行脚本

  sqlplus -s ‘ / as sysdba’ < $tempsql > $backupsh

  rm -f $tempsql

  chmod +x $backupsh

  cp $backupsh .

  echo “正在生成冷备对应的恢复脚本[$rcvrsh]……”

  ##准备工作

  echo “set heading off ” > $tempsql

  echo “set feedback off ” >>$tempsql

  echo “set tab off ” >>$tempsql

  echo “set verify off ” >>$tempsql

  echo “set pagesize 0″ >>$tempsql

  echo “set linesize 800 ” >>$tempsql

  echo “select ‘#!/bin/bash’ from dual;” >> $tempsql

  echo “select ” from dual;” >> $tempsql

  echo “select ‘## 恢复脚本生成时间: ” `date +%Y 年%m月%d日-%H:%M:%S` “‘

  from dual;” >> $tempsql

  echo “select ‘## 恢复文件所在路径: $backupdir’ from dual; ” >> $tempsql

  echo “select ” from dual; ” >> $tempsql

  echo “”

  echo “select ‘echo ”开始进行文件的复制恢复……”’ from dual; ” >> $tempsql

  echo “select ‘echo ”恢复文件所在的路径: $backupdir ”’ from dual; ” >> $tempsql

  ##这里不直接关闭数据库,提示用户手工关闭为好 如果需要直接关闭,请修改

  echo “select ‘orarun=’||’\`’||’ps -ef|grep -c ora_’||’\`’ from dual;” >>$tempsql

  echo “select ‘if [ "\$orarun" != "0" ] && [ "\$orarun" != "1" ] ‘ from dual;” >>$tempsql

  echo “select ‘then’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘echo ”ORACLE 数据库已启动,请先关闭 ORACLE 数据库” ‘ from dual;” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘exit’ from dual; ” >>$tempsql

  echo “select ‘fi’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复控制文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(name,instr(name,’/',-1)+1,

  length(name)-instr(name,’/',-1) )||’ ‘||name from v\$controlfile; ” >> $tempsql

  echo “select ‘echo ”控制文件恢复完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复数据文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(name,instr(name,’/',-1)+1,

  length(name)-instr(name,’/',-1) )||’ ‘||name from v\$datafile; ” >> $tempsql

  echo “select ‘echo ”数据文件恢复完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复联机日志……”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(member,instr(member,’/',-1)+1,

  length(member)-instr(member,’/',-1) )||’ ‘||member from v\$logfile; ” >> $tempsql

  echo “select ‘echo ”联机日志恢复完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”脱机冷备恢复完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  ##生成冷备恢复的执行脚本

  sqlplus -s ‘ / as sysdba’ < $tempsql > $rcvrsh

  rm -f $tempsql

  chmod +x $rcvrsh

  cp $rcvrsh .

  echo “生成脱机冷备备份与恢复脚本完毕!

  ” echo “请检查脚本文件: [$backupsh]”

  echo ” [$rcvrsh]”

  echo “”

  #如果需要生成后立即执行备份,可增加关闭数据库的操作,然后将以一几行的注释#去掉即可

  #./$backupsh

  #echo “备份执行完毕,请检查!”

  #echo “”

  (3) 重启 Oracle 数据库

  $ sqlplus /nolog

  SQL> connect /as sysdba

  SQL> startup

  2.如果自从上次脱机冷备后,数据文件错误,联机日志没有被覆盖,可模拟不完全恢复。

  1. SQL> shutdown;

  2. $ cp …… ……; // 只恢复出错的数据文件

  3. SQL> startup mount;

  4. SQL> recover database;

  5. SQL> alter database open;

  3.3 ARCHIVELOG 模式

  3.3.1 脱机冷备与恢复

  同 NONARCHIVELOG模式

  3.3.2 联机热备

  联机热备是在数据库运行的情况下进行备份的方法。热备份要求数据库在 Archivelog方式下操作,并需要大量的档案空间。

  热备份的优点:

  1.可在表空间或数据文件级备份,备份时间短。

  2.备份时数据库仍可使用,支持 24*7不间断运行。

  3.可达到秒级恢复(恢复到某一时间点上)。

  4.可对几乎所有数据库实体作恢复。

  5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

  热备份的不足是:

  1.不能出错,否则后果严重。

  2.若热备份不成功,所得结果不可用于时间点的恢复。

  3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

  注意:在热备过程中系统会生成更多的重做日志和回滚数据。所以必须在数据库较空闲时才进行备份。

  备份内容:(1) 数据文件: 一个表空间一个表空间地备份 sql> alter tablespace users begin backup; sql> $copy ‘/xx/xx.dbf ”/yy/yy.dbf’ ; sql> alter tablespace users end backup; sql> alter system checkpoint;(只读表空间直接拷贝,不用begin backup)

  (2) 备份归档 log文件

  1)临时停止归档进程 log_archive_max_processes=0

  2)log下那些在 archive redo log 目标目录中的文件

  3)重新启动 archive 进程

  4)备份归档的 redo log 文件

  (3) 备份联机的控制文件:sql> alter database backup controlfile to ‘/xx/xx.ctl’;

  (4) 备份初始化文件 配置文件 等:sql> $copy …… …… ;

  热备脚本:hotback.sql

  Rem 热备份脚本 for Linux

  Rem 执行该脚本必须保证数据库处于归档模式

  Rem db.dw.dm@gmail.com 2007-03-17

  Rem

  Rem 设置 SQL*Plus环境参数

  Rem

  set feedback off

  set pagesize 0

  set heading off

  set verify off

  set linesize 100

  set trimspool on

  Rem 设置备份相关的路径 For Linux

  Rem 设置数据文件备份路径

  define datafile_dir = ‘/u05/oracle/hotback/datafile’

  Rem 设置归档日志文件备份路径

  define archlog_dir = ‘/u05/oracle/hotback/archlog’

  Rem 设置控制文件备份路径

  define controlfile_dir = ‘/u05/oracle/hotback/controlfile’

  Rem 设置生成的备份脚本名

  define hotback = ‘/u05/oracle/hotback/open_hot_backup.sql’

  define spoolfile = ‘/u05/oracle/hotback/spool.tmp’

  define cpy = ‘cp’ prompt *** Spooling to &hotback

  Rem 产生备份数据文件、归档日志文件的命令

  set serveroutput on size 1000000

  spool &hotback

  prompt spool &spoolfile

  prompt archive log list;;

  prompt alter system switch logfile;;

  prompt alter system archive log all;;

  DECLARE

  CURSOR cur_tablespace IS

  SELECT tablespace_name

  FROM dba_tablespaces

  ORDER BY tablespace_name;

  CURSOR cur_datafile (tn VARCHAR) IS

  SELECT file_name

  FROM dba_data_files

  WHERE tablespace_name = tn

  ORDER BY file_name;

  CURSOR cur_arch_dest IS

  SELECT value

  FROM v$parameter

  WHERE name = ‘log_archive_dest’;

  BEGIN

  FOR ct IN cur_tablespace LOOP

  IF ct.tablespace_name!=’TEMP’ then

  dbms_output.put_line (’alter tablespace ‘||ct.tablespace_name||’ begin backup;’);

  FOR cd IN cur_datafile (ct.tablespace_name) LOOP

  dbms_output.put_line (’host &cp y ‘||cd.file_name||’ &datafile_dir’);

  END LOOP;

  dbms_output.put_line (’alter tablespace ‘||ct.tablespace_name||’ end backup;’);

  end if;

  END LOOP;

  FOR dest IN cur_arch_dest LOOP

  dbms_output.put_line (’host &cpy ‘|| dest.value || ‘/* &archlog_dir ‘);

  END LOOP;

  END;/ Rem 产生备份控制文件的命令

  prompt alter system archive log current;;

  prompt alter database backup controlfile to trace;;

  prompt alter database backup controlfile to ‘&controlfile_dir/control.bak’ REUSE;;

  prompt archive log list;;

  prompt prompt ***Hot Backup Finish***;

  prompt spool off spool off;

  host rm -f &spoolfile

  Rem 执行生成的脚本文件

  Rem @&hotback

  Rem host del &hotback

  3.3.3 联机热备的恢复

  3.3.3.1完全恢复

  一般步骤:

  1. 通过以下信息,找到故障数据文件

  alert.log

  background trace file v$recover_file v$recovery_lo通过这两个视图可以了解详细的需要恢复的数据文件与需要使用到的归档日志。

  2. 将故障数据文件对应的表空间 offline SQL> alter tablespace xxx offline;

  3. restore and recover SQL> host cp …… ……;SQL> [alter database] recover database/tablespace/datafile ‘xx’;

  4. 将表空间 online SQL> alter tablespace xxx online;

  3.3.3.2不完全恢复

  不完全恢复的方法只能恢复到过去某个时间点/SCN的数据库状态。

  一些限制:

  1. 必要条件

  一个有效的 online/offline 备份(包含所有的数据文件)

  自从备份到故障前的所有归档日志,有可能需要控件文件 (所有控件文件丢失,数据库结构已改变) SQL> recover database …… using backup controlfile;

  2. 只能恢复到所有备份数据文件的最大 SCN以后,

  3. 恢复后需要 resetlog,所以需要在恢复后马上备份

  三种不完全恢复的方法:

  1. 基于变化的不完全恢复 Change-based Recovery

  2. 基于用户干涉(取消)的不完全恢复 Cancel-based Recovery

  3. 基于时间的不完全恢复 Time-based Recovery

  获得信息:alert.log可以通过 LogMiner获得精确的时间/SCN,一般在备机上恢复,再 exp/imp到生产机。 查看需要恢复的文件,以及相关的提示信息SQL> select * from v$recover_file; SQL> select * from v$datafile;查看二者的 change#, 确定对应的在 v$log_history 中的范围,从而确定需要那个日志文件序列

  设置归档日志文件的路径: LOG_ARCHIVE_DEST

  设置 log 在不同的路径:SQL> SET LOGSOURCE ‘xx’;SQL> alter system archive log start to ‘xx’;

  恢复步骤:

  1. 关闭数据库,启动到 MOUNT 状态SQL> shutdown; SQL> startup mount;

  2. 恢复数据文件、日志文件、归档日志文件SQL> host cp …… ……; SQL> archive log list;SQL> archived log ==>LOG_ARCHIVE_DEST

  3. 执行恢复命令 基于变化:SQL> recover database until change 9999;基于时间:SQL> revover database until time ’2001-12-01 14:02:23′ using backup controlfile;基于取消:SQL> recover database until cancel;

  4. 重置日志,恢复后需要马上备份SQL> alter database open resetlogs;
  3.4 分类案例

  3.4.1 控件文件的备份与恢复

  一、备份

  1. 镜像控制文件手工备份 // 每当数据库结构发生变化时立即备份1.数据库关闭时,OS命令拷贝。

  2. 联机备份SQL> alter database backup controlfile to ‘ctl.bak’; SQL> alter database backup controlfile to trace;

  二、恢复

  1. 损坏一个控制文件:从镜像拷贝或修改 initSID.ora取消损坏的控制文件。

  2. 损坏所有的控制文件:利用备份的控制文件恢复,拷贝或在命令中恢复:SQL> recover database ……using backup controlfile;手工重建控制文件:NOMOUNT状态下执行SQL> CREATE CONYTROLFILE……; //注意联机日志和数据文件的路径和文件名SQL> alter database open resetlogs;

  3.4.2 联机日志文件的备份与恢复

  一、备份

  1. 镜像在不同的磁盘上。 //如果有镜像备份,不用恢复

  2. 非归档模式下,在数据库关闭时用 OS命令拷贝备份。

  3. 归档模式下,手工或自动归档。

  二、恢复 // 在恢复后一定要重做备份 丢失日志组成员:在有多个镜像时,一般不会报错,如果需要恢复,可以先删除再增加。

  1. 删除: SQL> alter database drop logfile member ‘xx’;

  2. 新增: SQL> alter database add logfile member ‘xx’ to group 2;( 如果丢失当前日志组成员: 可以先 alter system switch logfile; 再进行操作。) 以下恢复方法都是指丢失所有日志组成员的情况下的恢复。

  一、丢失非当前联机日志

  1. 重启数据库到 Mount状态:

  2. 重建丢失的日志:用命令清空日志组的方法//已归档,重建该日志SQL> alter database clear logfile group 2;//归档模式下如果没有归档SQL> alter database clear unarchived logfile group 2;

  二、丢失当前联机日志

  1. 如果数据库正常关闭:日志中没有未决事务需要实例恢复,同非当前联机日志方法。

  2. 如果是非正常关闭数据库的情况,未决事务需要实例恢复: 如果有备份,可通过备份进行不完全恢复。// until cancel 没有备份,进行强制性恢复 // 最后的办法,可能导致数据库的不一致

  3. 如果数据库当前为 Open状态,有活动的事务:尝试能否 Export 或热备份,如果可以,赶紧备份检查非当前日志是否正常,可先做 clear,然后尝试是否能 switch log,能否正常关闭 DB,如果可以 switch log 正常关闭 DB,方法同 1,否则同 2

  3.4.3 回滚数据文件的恢复

  1. 从可用备份中恢复非归档模式下的恢复会有数据丢失归档模式下,有可用备份,可完全恢复(需要关闭数据库)

  2. 没有可用备份时强行恢复:// offline drop,删除重建。

  // 需要先注释 undo_tablespace,或者重新指定一个系统回滚段表空间,然后再操作

  1. 数据库正常关闭 没有未决的事务

  (1). shutdown,修改 init参数文件,注释 undo_tablespace

  (2). SQL>startup restrict mount;

  (3). SQL>alter database datafile 2 offline drop;

  (4). SQL>alter database open;

  (5). SQL>drop tablespace xxx including contents;

  (6). 重建回滚段表空间

  (7). shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace

  (8). SQL> alter system disable restricted session;

  2. 非正常关闭 强制恢复 隐含参数:_CORRUPTED_ROLLBACK_SEGMENTS

  (1). shutdown,修改 init参数文件,删除 undo_tablespace

  (2). SQL>startup restrict mount;

  (3). SQL>alter database datafile 2 offline drop;

  (4). SQL>alter database open;

  (5). SQL>drop tablespace xxx including contents;如果出错:回滚段中有活动事务SQL>drop rollback segment rbs0; rbs1, 2 ……

  在第1步中,加入隐含参数_CORRUPTED_ROLLBACK_SEGMENTS = (_SYSSMU1$,_SYSSMU2$,_SYSSMU3$, ……)

  (6). 重建回滚段表空间,online

  (7). shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace去掉隐含参数

  (8). SQL>alter system disable restricted session;

  3.4.5 临时数据文件的恢复

  方法: 先将用户临时表空间置为其他,然后删除重建

  1. SQL> shutdown

  2. SQL> startup restrict mount;

  3. SQL> alter user xxx temporary tablespace TEMP2;

  4. SQL> alter database open;

  5. SQL> drop tablespace temp including contents;

  6. 重建临时表空间

  7. 重新分配给各用户

  8. SQL> alter system disable restricted session; 如果是默认的临时表空间,需要先将默认临时表空间置为其他 SQL> alter database default temporary tablespace temp_2;

六月 17th, 2010

Oracle数据库备份与恢复(2):SQL*Loader

No Comments, 网络应用, by 小路.

  一、基本知识

  Oracle 的 SQL* LOADER 可以将外部格式化的文本数据加载到数据库表中。通常 与 SPOOL导出文本数据方法配合使用。

  1、命令格式

  SQLLDR keyword=value [,keyword=value,……]

  例:$ sqlldr user/pwd control=emp.ctl data=emp.dat bad=emp.bad log=emp.log

  2、控制文件

  SQL*LOADER 根据控制文件可以找到需要加载的数据。并且分析和解释这些数据。

  控制文件由三个部分组成,具体参数参考帮助文档:1. 全局选件,行,跳过的记录数等;2. INFILE 子句指定的输入数据;3. 数据特性说明。

  comment: ——注释

  例:

  load data infile *

  append ——除了 append外,还有 insert、replace、truncate等方式

  into table emp fields terminated b y ‘|’

  (

  no float external, name char(20),

  age integer external,

  duty char(1),salary float external,

  upd_ts date(14) ‘YYYYMMDDHH24MISS’)

  begindata

  100000000003|Mulder|000020|1|000000005000|20020101000000

  100000000004|Scully|000025|2|000000008000|20020101235959

  控制文件中infile选项跟sqlldr 命令行中data 选项含义相同,如使用infile *则表明数据在本控制文件以 begin data 开头的区域内。 一些选项:FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x’09′ FILLER_1 FILLER, // 指定某一列将不会被装载

  DEPTNO position(1:2), DNAME position(*:16), // 指定列的位置SEQNO RECNUM //载入每行的行号

  SKIP n // 指定导入时可以跳过多少行数据

  3、数据文件

  按控制文件数据格式定义的数据行集,

  例:

  100000000001|Tom|000020|1|000000005000|20020101000000

  100000000002|Jerry|000025|2|000000008000|20020101235959

  固定格式、可变格式、流记录格式:

  固定格式:

  当数据固定的格式(长度一样)时且是在文件中得到时,要用 INFILE “fix n”

  load data

  infile ‘example.dat’ “fix 11″

  into table example

  fields terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7)) example.dat:

  001, cd, 0002,fghi,

  00003,lmn,

  1, “pqrs”,

  0005,uvwx,

  可变格式:

  当数据是可变格式(长度不一样)时且是在文件中得到时,要用 INFILE “var n”.如:

  load data

  infile ‘example.dat’ “var 3″

  into table example

  fields terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7)) example.dat:

  009hello,cd,010world,im,

  012my,name is,

  流记录格式: // Stream-recored format:load data infile ‘xx.dat’ “str ‘|\n’”

  into table xx field terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7))

  example.dat:

  hello, ccd,|

  world, bb,|

  4、坏文件

  bad=emp.bad坏文件包含那些被 SQL*Loader拒绝的记录。被拒绝的记录可能是不符合要求的记录。

  5、日志文件及日志信息

  log=emp.log当 SQL*Loader 开始执行后,它就自动建立 日志文件。日志文件包含有加载的总 结,加载中的错误信息等。
  二、高级选项

  1、Conventional Path Load与Direct Path Load

  Conventional-path Load:通过常规通道方式上载。

  特点:commit, always gen redo logs, enforce all constraints, fire insert triggers, can load into cluster, other user can make change

  rows:每次提交的记录数

  bindsize:每次提交记录的缓冲区

  readsize:与 bindsize 成对使用,其中较小者会自动调整到较大者

  sqlldr 先计算单条记录长度,乘以 rows,如小于 bindsize,不会试图扩张,rows以填充 bindsize;如超出,则以 bindsize 为准。 命令为:

  $ sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000

  Direct-Path Load:

  通过直通方式上载,可以跳过数据库的相关逻辑,不进行 SQL解析,而直接将数 据导入到数据文件中。

  特点:save, conditionly gen redo logs, enforce PK UK NN, not fire triggers, can not load into cluster, other user can not make change命令为:

  $ sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true

  2、SPOOL导出文本数据方法

  导入的数据文件可以用 SPOOL导出文本数据方法生成。

  SQL*PLUS环境设置

  SET NEWPAGE NONE HEADING OFF SPACE 0

  PAGESIZE 0 SET TRIMOUT ON TRIMSPOOL ON LINESIZE 2500

  注:LINESIZE 要稍微设置大些,免得数据被截断,它应和相应的 TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。

  但是如果 LINESIZE 设置太大,会大大降低导出的速度,另外在 WINDOWS下导 出最好不要用 PLSQL导出,速度比较慢,直接用 COMMEND 下的 SQLPLUS命令最 小化窗口执行。对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本 文件。

  通常情况下,我们使用 SPOOL方法,将数据库中的表导出为文本文件,如下述:

  set trimspool on

  set linesize 120 pagesize 2000 newpage 1 heading off term off spool 路径+文件名

  select col1||’,’||col2||’,’||col3||’,’||col4||’……’ from tablename;

  spool off
  三、脚本

  1、将表中数据记录导出为字段值用分隔符’|'分开的。dat文件

  #!/bin/ksh

  ##################################################################

  ## 名称: unloadtable

  ## 功能: 本 shell 用于将表中数据记录导出

  ## 导出为字段值用分隔符’|'分开的。dat文件

  ## 编者:

  ## 日期: 2006.03.18

##################################################################

  if [ $# -ne 3 ]

  then echo “usage:unloadtable tablename username password.”

  exit 0

  fi

  ##准备工作

  echo “set heading off ” >/tmp/$1.col

  echo “set pagesize 0″ >>/tmp/$1.col

  echo “set linesize 800 ” >>/tmp/$1.col

  echo “set feedback off ” >>/tmp/$1.col

  echo “set tab off ” >>/tmp/$1.col

  echo “select column_name||’,’ from user_tab_columns where lower(table_name)=’$1′ order by

  column_id; ” >> /tmp/$1.col

  ##产生 select 语句

  echo “set heading off ” >/tmp/$1.sel

  echo “set pagesize 0″ >>/tmp/$1.sel

  echo “set linesize 800 ” >>/tmp/$1.sel

  echo “set feedback off ” >>/tmp/$1.sel

  echo “set tab off ” >>/tmp/$1.sel

  echo “select ” >>/tmp/$1.sel

  echo `sqlplus -s $2/$3 < /tmp/$1.col` |sed "s/,/||'|'||/g" |sed "s/||$//g"|sed "s/date/\"date\"/g"

  >>/tmp/$1.sel

  ##生成 dat文件

  #echo “from $1;\n/” >>/tmp/$1.sel 由于 / 导致多执行一次 select

  echo “from $1;\n” >>/tmp/$1.sel

  sqlplus -s $2/$3 < /tmp/$1.sel >$1_tmp.dat

  #awk ‘{if(FNR!=1) print $0}’ $1_tmp.dat >$1.dat FNR 选项使得第一条记录选不出

  awk ‘{print $0}’ $1_tmp.dat >$1.dat

  rm -f $1_tmp.dat

  2、将数据导入到相应表中

  #!/bin/ksh

  ##################################################################

  ## 名称:loadtable

  ## 功能:本 shell 用于将已经准备好的。dat数据文件导入相应的表中

  ## .dat 文件各个字段值用分隔符’|'分开。

  ## 编者:

  ## 日期: 2006.03.18

  ##################################################################

  if [ $# -ne 3 ]

  then

  echo “usage:loadtable tablename username password.” exit 0 fi

  ##准备工作

  echo “set heading off ” >/tmp/$1.colsql

  echo “set pagesize 0″ >>/tmp/$1.colsql

  echo “set linesize 800 ” >>/tmp/$1.colsql

  echo “set feedback off ” >>/tmp/$1.colsql

  echo “set tab off ” >>/tmp/$1.colsql

  echo “select column_name||’,’ from user_tab_columns where lower(table_name)=’$1′ order by

  column_id; ” >> /tmp/$1.colsql

  ##产生 ctl文件

  echo “load data” >/tmp/$1.ctl

  echo “infile *” >>/tmp/$1.ctl

  echo “into table $1″ >>/tmp/$1.ctl

  echo “fields terminated by ‘|’” >>/tmp/$1.ctl

  echo `sqlplus -s $2/$3 < /tmp/$1.colsql` |sed "s/,$/)/g" |sed "s/^/(/g" >>/tmp/$1.ctl

  ##开始导入数据

  echo “truncate table $1;” >/tmp/$1.sql

  sqlplus $2/$3 < /tmp/$1.sql

  sqlldr $2/$3 data=$1.dat control=/tmp/$1.ctl log=/tmp/$1.log

六月 17th, 2010

Oracle数据库备份与恢复(1):exp和imp

No Comments, 网络应用, by 小路.

一、基本命令

  1、 获取帮助

  $ exp help=y

  $ imp help=y

  2、三种工作方式

  (1)交互式方式

  $ exp // 然后按提示输入所需要的参数

  (2)命令行方式

  $ exp user/pwd@dbname file=/oracle/test.dmp full=y // 命令行中输入所需的参数

  (3)参数文件方式

  $ exp parfile=username.par // 在参数文件中输入所需的参数

  参数文件 username.par 内容 userid=username/userpassword buffer=8192000

  compress=n grants=y

  file=/oracle/test.dmp full=y

  3、三种模式

  (1)表方式,将指定表的数据导出/导入。

  导出:导出一张或几张表:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2

  导出某张表的部分数据

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\“where col1=\‘…\’and col2 \<…\”

  导入:导入一张或几张表

  $ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,

  table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y

  (2)用户方式,将指定用户的所有对象及数据导出/导入。

  导出:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)

  只导出数据对象,不导出数据 (rows=n )

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n

  导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2

  commit=y ignore=y

  (3)全库方式,将数据库中的所有对象导出/导入导出:

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y

  导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
  二、高级选项

  1、分割成多个文件

  以多个固定大小文件方式导出:这种做法通常用在表数据量较大,单个 dump文件可能会超出文件系统的限制的情况

  $ exp user/pwd file=1.dmp,2.dmp,3.dmp,…filesize=1000m log=xxx.log full=y

  以多个固定大小文件方式导入

  $ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m

  tables=xxx fromuser=dbuser touser=dbuser2 commit=y ignore=y

  2、增量导出/导入

  // oracle 9i 以后 exp 不再支持 inctype

  必须为 SYS 或 SYSTEM 才可执行增量导出导入

  增量导出: 包括三个类型:

  (1)“完全”增量导出(Complete) // 备份整个数据库

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete

  (2)“增量型”增量导出 导出上一次备份后改变的数据。

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental

  (3) “累计型”增量导出(Cumulative)只导出自上次“完全”导出之后数据库中变化 了的信息。

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative

  增量导入:$ imp usr/pwd FULL=y inctype=system/restore/inct ype

  其中:

  SYSTEM: 导入系统对象

  RESTORE: 导入所有用户对象

  3、以SYSDBA进行导出/导入

  (1)用于 Oracle 技术支持

  (2)用于表空间传输

  例:$ imp \'usr/pwd@instance as sysdba\' tablespaces=xx transport_tablespace=y file=xxx.dmp datafiles=xxx.dbf $ imp file=expdat.dmp userid=“”“sys/password as sysdba”“” transport_tablespace=y“datafile=(c:tempapp_data,c:tempapp_index)”

  4、表空间传输 (速度快)

  表空间传输是8i 新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成 dmp 文件,这 在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快。

  (1)关于传输表空间有一些规则 (10g前):

  源数据库和目标数据库必须运行在相同的硬件平台上

  源数据库与目标数据库必须使用相同的字符集

  源数据库与目标数据库一定要有相同大小的数据块

  目标数据库不能有与迁移表空间同名的表空间

  SYS 的对象不能迁移

  必须传输自包含的对象集

  有一些对象,如物化视图,基于函数的索引等不能被传输(同字节序文件的跨平台可以用更换数据文件的文件头的方法)

  (10g 支持跨平台的表空间传输,只要操作系统字节顺序相同,就可以进行表空间 传输。需要使用 RMAN转换文件格式,略)

  (2)检测一个表空间是否符合传输标准的方法:

  SQL > exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true); SQL > select * from sys.transport_set_violations;

  如果没有行选择,表示该表空间只包含表数据,并且是自包含的。对于有些非自包含的表空间,如数据表空间和索引表空间,可以一起传输。

  (3)简要使用步骤:

  如果想参考详细使用方法,也可以参考 ORACLE联机帮助。

  1).设置表空间为只读(假定表空间名字为 APP_Data 和 APP_Index)

  SQL > alter tablespace app_data read only; SQL > alter tablespace app_index read only;

  2).发出 EXP命令

  SQL> host exp userid=“”“sys/password as sysdba”“” transport_tablespace=y tablespaces=(app_data, app_index)

  以上需要注意的是。为了在 SQL 中执行 EXP,USERID 必须用三个引号,在 UNIX中也必须注意 避免“/”的使用。在 816和以后,必须使用 sysdba才能操作。这个命令在 SQL中必须放置在一行(这里是因为显示问题放在了两行)

  3).拷贝。dbf数据文件(以及。dmp文件)到另一个地点,即目标数据库可以是 cp(unix)或 cop y(windows)或通过 ftp传输文件(一定要在 bin方式)

  4).把本地的表空间设置为读写

  $ alter tablespace app_data read write;

  $ alter tablespace app_index read write;

  5).在目标数据库附加该数据文件 (直接指定数据文件名)

  (表空间不能存在,必须建立相应用户名或者用 fromuser/touser)

  $ imp file=expdat.dmp userid=“”“sys/password as sysdba”“” transport_tablespace=y datafiles=(“c:\app_data.dbf,c:\app_index.dbf”) tablespaces=app_data,app_index tts_owners=hr,oe

  6).设置目标数据库表空间为读写

  $ alter tablespace app_data read write;

  $ alter tablespace app_index read write;
  三、优化

  1、加快exp速度

  加大large_pool_size,可以提高 exp的速度 采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查。 设置较大的 buffer,如果导出大对象,小buffer会失败。

  export文件不在ORACLE使用的驱动器上,不要export到NFS文件系统。

  UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能

  2、加快imp速度

  建立一个indexfile,在数据 import完成后在建立索引将import文件放在不同的驱动器上增加 DB_BLOCK_BUFFERS增加 LOG_BUFFER

  用非归档方式运行 ORACLE:ALTER DATABASE NOARCHIVELOG; 建立大的表空间和回滚段,OFFLINE其他回滚段,回滚段的大小为最大表的 1/2 使用 COMMIT=N

  使用 ANALYZE=N

  单用户模式导入

  UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能

  3、通过unix/Linux PIPE管道加快exp/imp速度

  通过管道导出数据:

  (1)通过 mknod -p 建立管道

  $ mknod /home/exppipe p // 在目录/home下建立一个管道 exppipe注意参数 p

  (2)通过 exp和 gzip导出数据到建立的管道并压缩

  $ exp test/test file=/home/exppipe & gzip < /home/exppipe > exp.dmp.gz

  $ exp test/test tables=bitmap file=/home/newsys/test.pipe & gzip < /home/newsys/test.pipe > bitmap.dmp.gz

  (3)导出成功完成之后删除建立的管道

  $ rm -rf /home/exppipe

  导出脚本:

  ###UNIX下 ORACLE数据库通过 PIPE管道进行备份

  ###### using “export” and “tar” command to bakup oracle datebase #######

  trap “” 1 #nohup

  LOGFILE=/opt/bakup/log/bakup_ora.log

  export LOGFILE

  DUMPDIR=/archlog_node1

  export DUMPDIR

  exec >$LOGFILE 2>&1

  echo

  echo ‘ Begin at ‘ `date`

  echo

  # clear old result file

  cd $DUMPDIR

  if [ -f exp.dmp.Z ]

  then echo “clear old result file”

  rm exp.dmp.Z

  fi

  # make pipe

  mkfifo exp.pipe

  chmod a+rw exp.pipe

  # gain the dmp.Z file

  compress < exp.pipe > exp.dmp.Z &

  su -u oracle -c “exp userid=ll/ll file=$DUMPDIR/exp.pipe full=y buffer=20000000″

  echo

  echo ‘ exp end at ‘`date`

   echo

  # rm pipe

  rm exp.pipe

  # tar the dmp.Z file to tape

  mt -f /dev/rmt/0 rew

  tar cvf /dev/rmt/0 exp.dmp.Z

  echo

  echo ‘ tar end at ‘`date`

  echo

  通过管道导入生成的文件:

  (1)通过 mknod -p 建立管道

  $ mknod /home/exppipe p

  (2)导入生成的压缩文件

  $ imp test/test file=/home/exppipe fromuser=test touser=macro & gunzip < exp.dmp.gz > /home/exppipe

  (3)删除管道

  $ rm –fr /home/exppipe

  (4)全库导入的一般步骤

  注意:在导出时,需要通过toad或其他工具提取源数据库创建主键和索引的脚本

  (1)先全库加 rows=n 把结构导进去

  $ imp system/manager file=exp.dmp log=imp.log full=y rows=n indexes=n

  (2)使业务用户的触发器失效/删除主键和唯一索引

  spool drop_pk_u.sql

  select ‘alter table ‘||table_name||’ drop constraint ‘||constraint_name||’;’

  from user_constraints

  where constraint_type in (’P',’U');

  /

  spool off

  spool disable_trigger.sql

  select ‘alter trigger ‘||trigger_name||’ disable;’

  from user_triggers;

  /

  spool off

  @drop_pk_u.sql

  @disable_trigger.sql

  (3)以 ignore=y全库导入$ imp system/manager file=exp.dmp log=imp.log full=y ignore=y

  (4)通过 toad或其他工具提取源数据库创建主键和索引的脚本,在目标数据库中创建主键和索引。使触发器生效。
  四、常见问题

  1、字符集问题

  ORACLE多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示, 货币形式,排序方式和 CHAR,VARCHAR2,C LOB,LONG 字段的数据的显示等有效。ORACLE 的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语 言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则。

  ORACLE字符集设定,分为数据库字符集和客户端字符集环境设置。在数据库端,

  字符集在创建数据库的时候设定,并保存在数据库props$表中。

  在客户端的字符集环境比较简单,主要就是环境变量或注册表项 NLS_ LANG,注意 NLS_LANG的优先级别为:参数文件<注册表<环境变量

  使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可,如 uedit32.用编辑方式打开导出的dmp文件,获取 2 、3 字节 的内容 , 如 00 01 , 先把它转换 为 10 进制数,为1 ,使用函数

  NLS_CHARSET_NAME 即可获得该字符集:

  SQL> select nls_charset_name(1) from dual; NLS_CHARSET_NAME(1)

——————- US7ASCII

  可以知道该dmp文件的字符集为 US7ASCII,如果需要把该 dmp文件的字符集换成ZHS16GBK,则需要用 NLS_CHARSET_ID 获取该字符集的编号: SQL> select nls_charset_id(’zhs16gbk’) from dual; NLS_CHARSET_ID(’ZHS16GBK’)

————————–

  把852换成16进制数,为354,把 2、3字节的 00 01 换成03 54,即完成了把该 dmp文件字符集从us7ascii 到 zhs16gbk 的转化,这样,再把该dmp文件导入到 zhs16gbk 字符集的数据库就可以了。

  2、版本问题

  Exp/Imp很多时候,可以跨版本使用,如在版本7与版本8之间导出导入数据,但这样做必须选择正确的版本,规则为:总是使用IMP的版本匹配数据库的版本,如果要导入到 816,则使用816的导入工具。总是使用 EXP 的版本匹配两个数据库中低的那个版本,如在815与816之间互导,则使用815的EXP 工具。

  imp和exp版本不能往上兼容: imp可以导入低版本exp生成的文件, 不能导入高版本exp生成的文件。

六月 10th, 2010

如何获取国外大学资源

No Comments, 网络应用, by 小路.
大学这几年我从互联网上学到的东西远比课堂里学到的多。今天咱要展示的就是如何在网上获取国外大学的优质教学资源。

一、直接参加国外大学的网上公开课程

加州大学伯克利分校
http://webcast.berkeley.edu/courses.php
作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。
麻省理工学院
http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm
麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。www.core.org.cn(中国大陆)推荐,www.myoops.org(中国台湾)
卡耐基梅隆大学
http://www.cmu.edu/oli/
卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。
犹他大学
http://ocw.usu.edu/front-page/Courese_listing
犹他大学类似于麻省理工,提供大量的课程课件
塔夫茨大学
http://ocw.tufts.edu
塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。
英国公开大学
http://openlearn.open.ac.uk/course/index.php
英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。
约翰霍普金斯大学
http://ocw.jhsph.edu/topics.cfm
只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。
Connexions
http://cnx.rice.edu
CNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。
索菲亚大学
http://sofia.ocw.cn/gallery
无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。
华盛顿大学
http://www.cs.washington.edu/education/course-webs.html
华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。
牛津、斯坦福、耶鲁大学联合网站
http://www.alllearn.org
哥伦比亚大学
http://ci.columbia.edu/ci
伯克利音乐学院
http://www.berkleeshares.com
杜克大学法律中心
http://www.law.duke.edu/cspd/lectures
圣母大学
http://ocw.nd.edu
英国格雷莎姆学院
http://www.gresham.ac.uk/default.asp
加州大学Irvine分校
http://ocw.uci.edu
富布莱特学校
http://ocw.fetp.edu.vn/home.cfm
日本东京大学
http://ocw.u-tokyo.ac.jp/english
日本早稻田大学
http://www.waseda.jp/ocw/index.html
日本大阪大学
http://ocw.osaka-u.ac.jp/index.php
法国巴黎高科
http://graduateschool.paristech.org

二、查看国外大学的视频播客

普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast
美国西南理工http://pocast.swtc.edu/lecture/index.php
加州大学洛杉矶分校http://www.bruincast.ucla.edu
西肯塔基大学http://blog.wku.edu/podcasts
Dupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html
纽约城市大学http://podcast.york.cuny.edu/lectures
莱斯大学http://webcast.rice.edu
加州大学圣地亚哥分校http://podcast.ucsd.edu
剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html
美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts
杜克大学法律学院http://www.law.duke.edu/webcast
乔治敦大学 http://webcast.georgetown.edu
芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast
波士顿学院 http://frontrow.bc.edu
哈佛商学院在线 http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml
威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm
约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html
伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm
普林斯顿大学 http://uc.princeton.edu/main/index.php
英国泰晤士报MBA http://uc.princeton.edu/main/index.php
耶鲁大学 http://www.yale.edu/opa/podcast/

三、去苹果的iTunes U

http://www.apple.com/education/itunes-u/
iTunes U是苹果的网络商城iTunes里面的一个专区,里面有很多大学的教学音频、视频、文档等资料。只要安装了Apple iTunes,我们可以很方便的在线查看以及下载这些资源。

四、在国内的分享网站下载

有些积极人士会在前面说的那些网站里面获取资料后分享到国内的一些分享网站上来;另外一些在国外大学读书的朋友有时也会分享些资料上来。例如VERYCD里面就有不少国外的大学资源。在分享网站里面找资源最大的好处就是不用费劲去看英文网站;另一方面别人看过的东西再发上来品质上也会有保证;最后国内网站的访问速度也会优于国外网站。
总之,对于获取国外大学资源,我的建议是从国内分享网站开始再到iTunes U再到网上公开课程再到播客,以一个循序渐进的过程来熟悉。有了这些资源,要想搞懂它,让它变为自己的知识,在英语上面一定得下苦功夫。

加州大学伯克利分校http://webcast.berkeley.edu/courses.php作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。麻省理工学院http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。www.core.org.cn(中国大陆)推荐,www.myoops.org(中国台湾)卡耐基梅隆大学http://www.cmu.edu/oli/卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。犹他大学http://ocw.usu.edu/front-page/Courese_listing犹他大学类似于麻省理工,提供大量的课程课件塔夫茨大学http://ocw.tufts.edu塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。英国公开大学http://openlearn.open.ac.uk/course/index.php英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。约翰霍普金斯大学http://ocw.jhsph.edu/topics.cfm只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。Connexionshttp://cnx.rice.eduCNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。索菲亚大学http://sofia.ocw.cn/gallery无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。华盛顿大学http://www.cs.washington.edu/education/course-webs.html华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。牛津、斯坦福、耶鲁大学联合网站http://www.alllearn.org哥伦比亚大学http://ci.columbia.edu/ci伯克利音乐学院http://www.berkleeshares.com杜克大学法律中心http://www.law.duke.edu/cspd/lectures圣母大学http://ocw.nd.edu英国格雷莎姆学院http://www.gresham.ac.uk/default.asp加州大学Irvine分校http://ocw.uci.edu富布莱特学校http://ocw.fetp.edu.vn/home.cfm日本东京大学http://ocw.u-tokyo.ac.jp/english日本早稻田大学http://www.waseda.jp/ocw/index.html日本大阪大学http://ocw.osaka-u.ac.jp/index.php法国巴黎高科http://graduateschool.paristech.org普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast美国西南理工http://pocast.swtc.edu/lecture/index.php加州大学洛杉矶分校http://www.bruincast.ucla.edu西肯塔基大学http://blog.wku.edu/podcastsDupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html纽约城市大学http://podcast.york.cuny.edu/lectures莱斯大学http://webcast.rice.edu加州大学圣地亚哥分校http://podcast.ucsd.edu剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts杜克大学法律学院http://www.law.duke.edu/webcast乔治敦大学 http://webcast.georgetown.edu芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast波士顿学院 http://frontrow.bc.edu哈佛商学院在线 http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm普林斯顿大学 http://uc.princeton.edu/main/index.php英国泰晤士报MBA http://uc.princeton.edu/main/index.php耶鲁大学 http://www.yale.edu/opa/podcast/http://www.apple.com/education/itunes-u/iTunes U是苹果的网络商城iTunes里面的一个专区,里面有很多大学的教学音频、视频、文档等资料。只要安装了Apple iTunes,我们可以很方便的在线查看以及下载这些资源。有些积极人士会在前面说的那些网站里面获取资料后分享到国内的一些分享网站上来;另外一些在国外大学读书的朋友有时也会分享些资料上来。例如VERYCD里面就有不少国外的大学资源。在分享网站里面找资源最大的好处就是不用费劲去看英文网站;另一方面别人看过的东西再发上来品质上也会有保证;最后国内网站的访问速度也会优于国外网站。总之,对于获取国外大学资源,我的建议是从国内分享网站开始再到iTunes U再到网上公开课程再到播客,以一个循序渐进的过程来熟悉。有了这些资源,要想搞懂它,让它变为自己的知识,在英语上面一定得下苦功夫。

一月 11th, 2010

Pranav Mistry的互动世界

No Comments, 未分类, by 小路.

MIT的印度天才Pranav Mistry搞了很多新玩意。虽然有一些类似的见过。

但是他把世界和数字相互融合在一起的想法还是很棒的!创意不能有束缚。我们需要out of box. More