|
|
用户名:smallcar 笔名:小汽车 地区: 湖北-武汉 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
闭着眼睛做的梦常常忘了,醒的时候做的梦却永远记在心里!
虽然知道结局,但仍然期待做梦!
射手座注定孤独zz
发信人: Corange (积极的去实现自己的理想~!), 信区: Astrology
标 题: 射手座注定孤独zz
发信站: 武汉白云黄鹤站 (2006年06月14日12:04:35 星期三), 站内信件
射手座的人注定孤独
射手座的传说有几个。最多的就是“奇伦”的故事。这个年轻的古希腊的大草原中人
马族的男子,为了朋友而牺牲了生命。于是天神宙斯把他的尸体抛向空中,幻化成了现在
的射手星。人马族的“半人半兽”代表着理性与非理性、人性与兽性间的矛盾挣扎,而这
些,就是今天的“射手座”。
书上说,射手座人是天生的乐观主义者,但他们也是天生的不可知论者。要同时显示
乐观主义和怀疑主义互相矛盾着的品质是一种复杂的平衡表演,但射手座人做到了。这就
是占星术中所说的“双重”宫相——或叫具有“两重性”的日宫。射手座人半喜半忧,半
轻浮半庄重,半痴半智,半丑角半哲人。他们并不象双子座那样纯属人类复制品,他们具
有真正的两重性。
射手对真理与哲学的追求太过天真,他们会寂寞,因为身边那么多都不是想要的。有
太多的不确定在里面作祟,于是沉默与悲伤似乎变成见不得人的东西,在一个人的时候才
显露无疑。射手座对自由与真理的执著是众所周知的。于是它一个不小心成了十二星座中
最固执的一个。对于认定的人和事,一定会全部付出,付出中可以完全不顾及收获。我不
想说射手座人单纯,因为不是。只是偶尔对一个人的固执,像个孩子的坚持一样,狠狠的
不肯罢休放手。因为对哲学的憧憬,我想射手座人说话都很强调措辞,注意感觉。
寂寞。射手座一直被认为是乐观开朗朋友多的星座。朋友很多,但是他们都不知道自
己要的是哪一个。他们的寂寞有点莫名,常常是突如其来的。很多时候你会看到,他们在
极少的人中,在大家都沉默的时候,却显得活跃,快乐。而当大家都很快乐很兴奋的时候
,那个蹲在一边静静看与思考的人就是射手座。前者,是因为他不想自己的朋友难过不开
心;后者,因为他寂寞。
我常常一个人走。中学的那些早晨,一个人走去学校,天气微凉,天边微亮。冷的时
候就把外套裹紧一点。晚上,一个人走回家,空气冰冷,空寂的夜色。怕吗,我还能怕什
么。我只是一个人,我还有什么好怕呢。我在摸索。我想什么时候适合思念,什么时候适
合无言。我喜欢一些不流行的东西,听旧的歌,喜欢过气的明星,爱上所谓永恒的古典和
艺术,还有故作忧伤的文字。
书上说,十二星座里默契率最高的是射手和水瓶。我有那么一点点的相信。关于这个
星座,我仅仅知道它不是具有两重性的星象,因此水瓶座人尽管有时比射手座人更具有对
抗性和矛盾性,但他们不象射手座人那样天生受到“双重”星象的影响。他们,一言以蔽
之,与众不同。
射手座的故事会一直继续下去,他的固执和寂寞会延续到世界的尽头。在射手的眼睛
里,你能看得到残缺的纯净和希冀。他们在一面撕杀一面掩埋,在没有人的时候放纵思念
与孤独。
--
┏━━╮┏┓ ┏━━┓┏━━┓┏━━┓ ┏━━╮┏━━┓┏┓┏┓ ┏┓
┃┏╮┃┃┃ ┃ ━┫┃┏━┫┃┏━┫ ┃ ━ ┃┃ ━ ┃┃┃┃┃ ┃┃
┃┃━┫┃┃ ┃ ┃┃ ╋ ┃┃ ╋ ┃ ┃┏╮┫┃╭╮┃┃╰╯┃ ┃┃
┃┗╯┃┃┗━┓┃ ━┫┣━┛┃┣━┛┃ ┃┃┃┃┃┃┃┃┃ ┃ ┃┗━┓
┗━━╯┗━━┛┗━━┛┗━━┛┗━━┛ ┗┛┗┛┗┛┗┛╰━━╯ ┗━━┛
※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn·
六大搜索引擎谁执牛耳




搜索结果比较
搜索感受:从搜索时间上来看,百度的速度最快,其次是中搜搜索和新浪的爱问;从搜索的结果来看,Google以1,100,000条结果排名第一,中搜和百度分列次席和第三名。从相关的搜索内容看来,百度以10个相关搜索排名第一,搜狗和一搜以8个相关搜索并列第二名;从搜索内容的准确性来看,百度和Google各有5条搜索结果与我们的搜索内容相吻合。
编辑总结:通过对以上4个不同类型的关键字进行搜索,我们已经详细列出了各大搜索引擎的搜索结果。从上面的图表中我们不难看出,百度搜索在搜索速度、搜索结果的数量、搜索的准确率和相关搜索等四个方面优势明显。所以本次页面搜索评测的优胜者,应该是百度。而新浪的爱问搜索在功能特色独树一帜,也同时受到了我们的关注。
音乐搜索 年轻人的天堂
音乐搜索的测试,我们是通过下载成功率、下载的方便性、歌曲收录数量、对新歌的收录速度、对歌曲类型的支持、试听成功率、标题准确性、榜单的权威性等多方面来进行衡量各大搜索引擎的搜索结果。
评测对象
百度MP3搜索:mp3.baidu.com
爱问MP3搜索:m.mp3.com
搜狗MP3搜索:d.sogou.com
一搜MP3搜索:music.yisou.com
中搜MP3搜索:mp3.zhongsou.com
关键字:放假了 张含韵
张含韵是伴随着超级女声而一夜成名的女歌手,随着一首《酸酸甜甜就是我》而越发变得大红大紫。首张专辑《我很张含韵》也使她的Fans们如获至宝。《放假了》更是这个专辑的代表作之一。下面,我们就以“放假了 张含韵”为关键字来测试一下各大搜索厂商在对新歌的收录速度、试听成功率、标题准确性等方面的表现。

搜索结果比较
搜索感受:因为该歌曲是新歌,所以在不同搜索引擎上搜索出来的结果也是不一样的,从上面的表中我们可以很容易的看出,百度和中搜的搜索结果都是41条,这说明两者在对新歌的收录速度方面,表现的较为强劲。在试听成功率方面,笔者对前10首歌曲进行了在线试听,百度搜索以7首的试听成功率排名榜首,爱问搜索和一搜搜索同以6首的试听成果率名列第二。标题准确性方面,各大搜索引擎都几乎都准确的与关键字吻合,所以这方面大家平分秋色。
关键字:铁血丹心 射雕英雄传

搜索结果比较
搜索感受:经典的老歌值得我们回味,此次的搜索结果也值得我们探讨。百度搜索在这次对歌曲的收录数量、下载的成功率和方便性的测试当中,除了搜索结果的数量上略逊于一搜之外,在其他评测指标上又是大获全胜,几乎所有的评测指数都名列榜首。这次一搜搜索的表现也令我们感到赞赏,搜索结果的数量超过了百度,搜索的时间也只比百度长了0.029秒。
关键字:yesterday once more

搜索结果比较
搜索感受:通过此次对英文歌曲的搜索数据来看,百度无疑是其中的王者。此次笔者也专门对前10首歌曲进行了下载测试,百度更是以100%的连通率排名榜首。其次是一搜搜索,下载成功率也达到了80%。
编辑总结:绝大部分网民都是通过搜索引擎进行相关的音乐搜索来达到在线试听歌曲的目的。所以各大搜索引擎也是在音乐搜索领域下足了功夫。通过以上3个不同关键字进行搜索的结果数据来看,百度搜索以不可动摇的地位名列榜首,因此,音乐搜索测试的优胜者,应该属于百度。
新闻搜索 我们时刻关注着
新闻搜索,注重的是新闻的实效性和新闻的搜索数量等方面。我们通过焦点/头条新闻的质量、新闻的时效性、新闻收录数量、新闻源的数量、对个性化的支持、RSS订阅、邮件订阅、分类准确性、图片新闻的支持、高级检索功能等多方面进行测试,从中选择出表现最为优异的搜索引擎。
评测对象
百度新闻搜索:news.baidu.com
Google新闻搜索:news.google.com
爱问新闻搜索:iask.com/news/news.html
搜狗新闻搜索:news.sogou.com
一搜新闻搜索:news.yisou.com
中搜新闻搜索: news.zhongsou.com
关键字:伦敦地铁爆炸案

搜索结果比较
搜索感受:从搜索时间上来看,百度搜索的速度最快,一搜搜索紧追其后;从搜索结果方面来看,百度共搜索到702条结果,后面的两位分别是搜狗搜索和爱问搜索;新闻时效性方面,百度搜索的第一条搜索结果的时间为6分钟以前。Google搜索提供第一条搜索结果的时间也为6分钟以前。爱问搜索的第一条搜索结果的时间同是20分钟以前。搜狗搜索的第一条搜索结果的时间为2小时以前;从新闻源数量来看,以第一页面为例,百度共有中国经济网、新浪网、楚天都市报、搜狐网、中国日报等13家媒体来源。Google共有千龙网、浙江都市网、中华网、新浪网、搜狐网、北京新闻周刊等11家媒体来源。爱问搜索主要是以新浪网为主要信息来源。值得一提的是,爱问搜索不仅给出了相关的新闻搜索,在整个页面的右边还有专门针对该关键字进行设计的时间搜索。从1999年至今,可以在新浪网上查询所有与伦敦地铁爆炸案相关的新闻信息。
关键字:芙蓉姐姐

搜索结果比较
搜索感受:从上面的数据很容易看出,百度搜索在搜索结果的数量上的优势明显,而爱问搜索在搜索时间上面排名第一;在RSS订阅方面,目前只有百度一家支持该项功能;Google以新华网、博客中国、杭州都市快报、网易等10家媒体为主要的信息来源。爱问主要还是以新浪网为主要的信息来源。同时也给出了以时间为顺序对该关键字的索引。
编辑总结:通过对以上两个不同关键字进行搜索测试,从新闻的时效性、新闻收录的数量、新闻源的数量、RSS订阅等各方面进行比较,结果发现百度搜索的各项指标均高于其他搜索引擎,因此,新闻搜索领域的优胜者,应当属于百度。同时爱问搜索也值得我们一提,各项性格指数他仅与百度搜索有微小的差距,而且他的人性化搜索更是其他搜索引擎值得学习的目标。
图片搜索 让你一次看个够
在这里,我们可以通过搜索的速度、搜索页面的数量、图片更新速度、死链情况、搜索结果的重复性、搜索结果的相关性等方面来综合衡量各大搜索引擎的表现,从而指导用户选择最佳的搜索引擎为我们服务。
评测对象
百度图片搜索:image.baidu.com
Google图片搜索:www.google.com/imghp?hl=zh-CN&&tab=wi&&q=
爱问图片搜索:p.iask.com
一搜图片搜索:image.yisou.com
中搜图片搜索:img.zhongsou.com
关键字:刘德华
刘德华是我国著名的影视歌三栖明星,他不仅演技出色,唱歌也是技冠群雄,因此众多网友都成为了他的忠实Fans。下面我们就以“刘德华”为关键字,搜索与他相关的所有明星照片。

搜索结果比较
搜索感受:从搜索结果的数量来看,百度以74,500条搜索结果遥遥领先排名第二的一搜搜索;从图片更新速度来看,以第一页面为例,近一周百度搜索关于“刘德华”的图片共有21张,Google搜索关于“刘德华”的图片共有14张,一搜搜索关于“刘德华”的图片共有11张;死链方面,以第一页面为例,百度只有1个链接无法打开。Google有2个链接无法打开,爱问搜索和一搜搜索共有4个链接无法打开。
关键字:Windows XP 壁纸
Windows XP操作系统可谓是微软公司的精华之作,它不仅有华丽的界面,还基本上排除了蓝屏的困扰。下面,我们就以“Windows XP 壁纸”为关键字,搜索与它相关的所有壁纸(尺寸标准:1024×768、 800×600)。

搜索结果比较
搜索感受:从搜索时间上来看,百度搜索的速度最快,爱问搜索和一搜搜索分列后两位;从搜索结果的数量来看,百度搜索以1,070条搜索结果排名第一,一搜搜索排名第二,中搜以微弱的优势排名第三;图片的重合度方面,以第一页面为例,百度搜索有共3张图片内容重合,Google搜索共有7张图片内容重合,爱问搜索共有4张图片内容重合,一搜共有4张图片内容重合,中搜共有5张图片内容重合。
编辑总结:图片搜索做为一种常见搜索引擎应用,搜索结果数和图片与关键字相关度就显得格外重要,通过对以上不同类型两个关键字进行搜索的综合对比,百度搜索在各方面的表现都是比较令人满意的,其次是Google搜索,他与百度搜索的差距不大。其后分别是中搜搜索、爱问搜索和一搜搜索。因此,图片搜索领域的优胜者,应该属于百度。
社区搜索 秀的就是个性
在此项评测中,我们将更看重社区的人气、社区内容的覆盖量、某个特定主题分类中首页的垃圾贴数以及登录、发帖速度等方面的综合表现,根据这些评测项目的表现将便于未来用户在选择最佳搜索关键字社区的时候目的性更明确。
评测对象
百度贴吧:post.baidu.com
搜狗说吧:s.sogou.com
一搜部落:bulo.yisou.yahoo.com
关键字:夏侯敦
三国名将夏侯敦,字元让,沛国谯人,高祖太仆滕公夏侯婴之后,比起关羽、张飞之辈知名度差了很多,但是熟悉历史和爱玩三国类游戏的朋友确也有部分成了其忠实的Fans,各大搜索关键字社区对该人物的专项讨论区人气和谈论质量就成了能够反映很多问题的一个风向标。

搜索结果比较
搜索感受:在做完此项评测后,我们感到更多的是震惊,明显的数量对比和巨大反差无疑能够引起我们很多的遐想。客观的讲,关键字选择我们多少有些故意,找这些不热门但又不是绝对冷门的人物去为我们勾勒出搜索引擎社区宽阔的覆盖面。从百度贴吧优异的测试结果中不难看出,其每天超过200万发帖量绝非虚言。需要特别说明的是Google和中搜,由于本地化的问题,我们在打开了Google论坛后经过艰辛努力进入了一个充满乱码的对应页面。而中搜则是一个类似于门户网站的形态展现在了我们面前,让我们无法评价。
关键字:超级女声
如果要说最近娱乐界有什么可以让亿万人关心呢?无疑就是由湖南卫视全力打造的超级女声了,张靓颖、周笔畅、李宇春等一个个未来的娱乐新星就在万人注目中成长着,每天使用搜索引擎了解他们详细资料的人络绎不绝。那么每天在各大搜索引擎社区上进行交流沟通的人有多少呢?

搜索结果比较
搜索感受:作为近期热门的话题,超级女声在各大搜索关键字社区得到大范围迎合原是意料之中,在这个环节中百度贴吧以320多万发帖数绝对让人耳目一新,首页单帖最高回复过万,几近排名次席一搜部落的总发帖数着实让我们领教了百度无可比拟的超大流量带来的充足人气。作为论坛和搜索引擎的结合体,在具备搜索引擎固有特色的同时,论坛适用的衡量规则也一样适用。简单的创建专署贴吧模式加上丰富的贴吧应用,也难怪超级女声Fans们会选择在贴吧上建立自己支持明星的专署吧去一诉情怀,也就难怪有人会这么评价贴吧:“宇宙有多大,贴吧有多大”了。
编辑总结:通过人气、回复率、点击率等等一系列参数对比,就可以得出比较客观的结论。百度每天日均发帖数超过200万的量,加上目前百度每天过亿查询量可能带来的潜在百度贴吧流量,无疑加大了其搜索关键字社区和其他同类型产品的竞争力和对普通网民的吸引力。因此,关键字社区领域的优胜者,应该属于百度。
知识搜索 科技与人同步
现在是互联网高速发展的时代,网民数量越来越多,网络这个资源共享的载体的功能也越来越重要,网民上网主要就是找资料,怎么找资料呢?当然是通过网页搜索最方便,但是网页搜索并不是万能的,用户使用网页搜索找资料,将自己的问题提炼成若干关键字,输入到输入框,搜索引擎通过对数据的分析,显示出与关键字匹配的结果,但是仅仅一个输入框和机器的算法是无法彻底理解用户的真实需要的,而且对于一些初级用户来说,提炼关键字并不是一件简单的事情。当用户通过添加关键字无法找到合适的结果时,知识搜索的特点就更明显了。相信很多人遇到过这种问题,这个时候用户更希望得到的是有经验的人的帮助,爱问知识人(iask.sina.com.cn/)就为用户提供了这样的一个平台。
目前支持知识搜索的搜索引擎厂商只有百度(百度知道)和新浪的爱问搜索(爱问知识人)。下面,我们就通过问题的解答数量、问题的回复速度、问题的准确程度、规则设计是否合理等方面来进行相关的检验。
评测对象
百度知道:zhidao.baidu.com
爱问知识人:iask.sina.com.cn
关键字:地球为什么自转
这个问题也是一个简单而又难于解决的问题,地球为什么会自转?要想准确回答这个问题,恐怕三言两语是很难解释清楚的。
搜索结果比较

搜索感受:从搜索的结果数量看来,这次“爱问知识人”以102,103条搜索结果遥遥领先于“百度知道”;回答问题的准确性方面,由于爱问采用了回答问题奖励的机制,因此“爱问知识人”回答问题的准确性方面也远远高于“百度知道”;回复速度方面,“爱问知识人”的第一个答案回复离问题提出的时间只相隔12分钟!而“百度知道”的第一个答案回复离问题提出的时间相隔大约6小时。从回答题目的数量上看,“百度知道”共有311人回复了该问题,“爱问知识人”共有834人回复了该问题。
关键字:感冒了应该吃什么药

搜索结果比较
搜索感受:这次搜索的结果有点令人意外,这个问题竟然“百度知道”没有搜索出任何结果,而“爱问知识人”却搜索出了73,202条结果,并且答案准确率也是高的惊人。本次搜索过程中笔者发现,“健康/医疗”栏目中有专业的人士会诊,他们同样也是热心的网民,利用业余时间来专门回答关于健康方面的网友提问,这无疑更增加了答案的准确性和时效性。
编辑总结:从以上两组数据已经看出,在知识搜索领域,爱问搜索的优势是相当明显的,虽然百度搜索在其他各项单项测试中的表现可圈可点,但是在知识搜索方面,它明显要比爱问搜索相差很远。“爱问知识人”这次能大获全胜,主要是规则的设计非常合理,再加上人性化的界面,从而聚集了相当多的人气,才有了超越百度的实力。因此,知识搜索领域的优胜者,应该属于新浪的爱问搜索。爱问知识人对于爱问搜索引擎除了是一个有力补充之外,同时也是一个非常好的知识平台,用户在这里能够学习到非常多的知识,可以找到展示自己的舞台,还可以将自己的资料拿出来与其他用户共享。知识人的这些人性化的设计非常好地利用网络的优势,真正从用户的角度出发,为用户服务。
本地搜索 找到你 其实很简单
作为搜索引擎一个重要分支,本地搜索(Local Search)集成了本地信息搜索、电子地图、空间位置查询、公交和驾车路线计算等服务。网友可以凭借这一智能化工具,根据所输入的位置信息,精确搜索到当地的生活、娱乐、出行等所需要的相关信息,甚至可以搜索出诸如营业时间、餐馆菜单和饭店环境等详细信息。
目前国内只有新浪爱问(local.iask.com)和搜狐搜狗(local.sogou.com)开通了本地搜索服务;Google本地搜索也还只是做了个中文页面,实际尚未开通中国城市的服务,其他著名的搜索引擎公司如百度、一搜、中搜尚未推出此类产品。
本环节将通过使用实例,从搜索结果数量、准确性、设计上是否人性化等方面做比较,为用户选择一款最为好用的本地搜索引擎。
评测对象
爱问本地搜索:local.sina.com.cn
搜狗本地搜索:local.sogou.com
关键字:中关村
中关村是北京的高新科技园区,众多IT公司都坐落与此地,在国内外也是小有名气。下面,我们就以“中关村”为关键字,对支持本地搜索的两家搜索引擎进行一次测试。

搜索结果比较
搜索感受:首先,在搜索时间上来看,爱问搜索并无显示,搜狗搜索的时间为0.3秒。另外,从结果数量来看,爱问搜索在数据量上占有较大的优势。从搜索结果的表现形式来看,爱问搜索结果的表现更加的人性化和科学化。首先,他罗列出了所有包含“中关村”在内的所有相关信息,并有详细的地址资料和联系方式,最下方还有该信息的“地图显示”。而搜狗这方面就明显差了许多,它仅提供了位于中关村附近的部分相关地址和联系方式,且操作过程十分复杂,远没有体现出本地搜索的特点和方式,而且还不具备驾车路线计算这个必备功能。
关键字:中关村 水煮鱼
这次搜索的目的很简单,就是要查找中关村附近的做水煮鱼的餐馆。这次搜索的关键字将更加人性化,同时也增加了搜索引擎搜索的技术难度。

搜索结果比较
搜索感受:搜索结果的数量显示,爱问搜索共在中关村附近找到了78家做煮鱼的餐馆,每家餐馆都有详细的地址、联系电话、地图,甚至还有详细的餐馆介绍,人均消费额等。更加令人惊喜的是,每家餐馆到中关村的距离也有详细的记录。例如“麻辣百分百”,地址在中关村知春路海淀剧院东侧,距中关村的最近距离为0.47公里。点击“地图显示”图标,地图中不仅用醒目的符号标注出该餐馆的具体位置,点击“详细资料”,在这里,你还能查看营业时间、 停车位、用户满意度等详细的信息,可谓是体贴入微。如果你要找最近的水煮鱼餐馆,爱问搜索还提供按距离排序功能。令人遗憾的是,搜狗搜索引擎一个结果也没搜出来。
编辑点评:从以上二组关键字搜索显示的结果,以及笔者实际使用体验来看,爱问搜索的本地搜索功能要比搜狗引擎强大的多,从搜索的页面数量、搜索结果内容的完整性、界面美观、搜索的人性化体现等多方面,爱问的各项参数都要比搜狗高出许多,因此,本地搜索领域的优胜者,应当属于新浪的爱问搜索。
搜索工具条 让上网简单化
随着网络搜索技术的发展,搜索引擎提供商们纷纷推出了极具个性化的搜索利器——集成在浏览器中的“搜索工具条”,它与浏览器一起开启或关闭。有了它,无需进入搜索引擎网站即可在工具条中输入关键字进行搜索了,因而备受网友的青睐。正因为搜索工具条的特殊与重要性,所以下面将花费大力气“拷问”一下百度、Google、一搜、中国搜索四家搜索引擎服务商提供的工具条究竟魅力如何!
评测对象
百度超级搜霸:bar.baidu.com
一搜工具条:toolbar.yisou.com
中搜网络猪:pig.zhongsou.com
Google Toolbar:toolbar.google.com/intl/zh-CN/
工具条比较

编辑总结:经过对以上四家搜索引擎工具条的安装与使用,从上表统计出来的数据也可以看出, 除了中搜网络猪之外,百度超级搜霸、Google Toolbar、一搜工具条的文件大小及安装所需空间都很小,且系统需求也很低。搜索类型方面,百度超级搜霸几乎支持所有的搜索类型,而Google Toolbar、一搜工具条、中搜网络猪只部分支持;搜索的易用性方面,这四家工具条的表现都令人比较满意,都比较人性化的支持自由拖动、与资源管理器整合等特点;在广告拦截方面,百度超级搜霸全部支持Flash广告拦截、图片拦截、浮动广告拦截和信使拦截,而Google Toolbar、一搜工具条、中搜网络猪只部分支持或根本不支持以上拦截功能。在工具条的辅助功能方面,百度的超级搜霸不仅支持插件屏蔽、垃圾清理、隐私保护等基本功能外,还支持系统加速和修复功能,这令笔者感到非常意外。因此,百度超级搜霸是搜索工具条领域的优胜者。
总结:
关于百度
百度公司是中国互联网领先的软件技术提供商和平台运营商。中国提供搜索引擎的主要网站中超过80%是由百度提供。1999年底,百度成立于美国硅谷,它的创建者是在美国硅谷有多年成功经验的李彦宏先生及徐勇先生。2000年百度公司回国发展。百度的起名,来自于“众里寻她千百度”的灵感,它寄托着百度公司对自身技术的信心。
百度公司自进入中国互联网及软件市场以来,就一直以开发真正符合中国人习惯的互联网核心技术为使命,依靠自身实力不断研发出拥有自主知识产权的可扩展的网络应用软件。
百度的产品及服务是针对不同企业及各机构网络化的基本需求而设计的,主要产品线有:基于全球互联网的中文网页检索和企业级的信息检索解决方案,包括网事通系列软件及百度企业竞争情报系统。其中,网事通系列软件包括网站站内检索系统,行业垂直检索系统、新闻监控系统、企业垂直检索系统、实时信息系统及信息采集系统。目前,这些企业级的信息检索解决方案正服务于各个不同领域。
“众里寻她千百度”,“百度”二字正是源自辛弃疾的《青玉案》,她象征着百度对中文信息检索技术执著的追求。
关于爱问搜索
作为首个中文智慧型互动搜索引擎,“爱问”突破了由Google、百度为代表的算法致胜的搜索模式。 新浪“爱问”在保留了传统算法技术在常规网页搜索的强大功能外,以一个独有的互动问答平台弥补了传统算法技术在搜索界面上智慧性和互动性的先天不足。通过调动网民参与提问与回答,“爱问”能汇集千万网民的智慧,让用户彼此分享知识与经验。值得一提的是,“爱问”所包含的许多答案,是新浪创业12年来在内容资讯上沉淀积累的精华,它集合了新浪各个频道的海量信息与资源,体现着新浪作为全球最大的中文门户网站在内容上的强大优势。
为了使搜索结果更贴合网民的实际需要,爱问独创了“内容直达互动”的功能。在网页搜索结果页面右侧,“爱问”特别开辟了“直达特区”。如用户搜索“王菲”,在直达特区将出现王菲的照片、简介、歌曲下载,有关王菲的问题和答案;用户搜索“魔兽世界”时,将在直达区自动出现网民提出的与这款热门游戏相关介绍和新浪游戏频道特别制作的专区,希望了解游戏详情的用户再也不用从庞大的搜索结果中去苦苦搜寻了。
此外,“爱问”还包含了一系列传统搜索所不具备的人性化功能:对视频搜索的支持实现了内容形式上的丰富和扩展;具有浓郁地区特色的本地搜索为网民提供包括地图在内的生活、娱乐、出行等所需的各地区相关信息;而收藏夹则是非常方便与网友共享的网页收藏工具。
财富--2006年IT业八大预测
作为一家市值高达1270亿美元的企业,Google的一举一动都备受关注。例如,Google与AOL合作事宜日前就成为了各大新闻媒体关注的焦点。但是,有“上”就有“下”,尤其是IT市场,企业瞬间蒸发几乎司空见惯。因此,明年的Google将不在不可战胜,原因之一在于日益兴起的“社区搜索(community-powered search)”在该领域,雅虎已经通过收购del.icio.us走在了前头。与传统搜索相比,社区搜索能够让用户在更短的时间内找到所需内容。
2. 亚马逊在Web市场重新崛起
明年,亚马逊将重新发展成为Web巨头,并将推出一系列与Google等相抗衡的服务。尽管亚马逊以商业为主,但在科技市场同样拥有睿智的头脑和远大的抱负。近期,亚马逊将其Alexa搜索引擎数据库全部开放。这意味着,在没有成千上万台服务器支持的情况下,程序员可以仍可以创建自己的搜索引擎。而亚马逊可以从中收取适当的费用。网络界泰斗John Battelle日前表示,亚马逊、Google、eBay、 MSN、Yahoo和AOL六大巨头将引领下一代互联网市场。
3.电信公司的ISP地位无人可撼
业内知名分析家Mark Anderson日前表示,有线电视公司、电话公司、移动运营商,以及其他ISP未来的竞争取决于所提供数字内容的廉价程度。相比之下,电信公司更具优势。明年,德仪将推出VDSL2芯片,该芯片可以确保当前的铜线电话线的数据传输速度达到100M/秒。因此,电话公司可以直接通过电话线提供超高速互联网服务。
4. 苹果将进军手机市场
明年,苹果可能推出一款手机产品。在个人消费市场,手机与MP3结合的问题始终未能处理得当。今年,摩托罗拉推出了基于苹果技术的ROKR iPod MP3手机。但并未受到消费者的青睐。任何人都不希望在听音乐的时候有来电的干扰,因此,来电后音乐播放器要自动停止。相信凭借乔布斯的天才和设计师乔纳森的智慧,一定能将很好地解决该问题。
5.手机电视成为趋势
明年,通过手机看电视已习以为常。但是,美国的用户至少还要等到2007年。
6.AMD继续给英特尔施压
明年,AMD给英特尔带来的压力将进一步增大。AMD首席执行官赫克托-鲁伊兹上周宣布,将于明年夏季提前启动新工厂计划。随着新工厂的落成,AMD的市场竞争力将得到进一步提升。
7. 排队抢购“Windows 95”一去不复返
明年,微软将推出新一代操作系统Vista和新一代Office办公软件。曾记否,10年前人们排队购买Windows 95的热闹场面?但如今,这种场面将一去不复返。
8.思科将重新获得投资者追捧
在过去的18个月中,思科在 股票市场表现平平。但是,凭借思科在IP基础设施领域的垄断地位和潜在的利润增长,相信明年必将成为投资者的宠儿。
经济管理类网址(转载)
经济学常识:七个问题(转载)
发信人: lovesmile (为你流泪), 信区: SCDA 标 题: 考考你的经济学常识:七个问题(转载) 发信站: 武汉白云黄鹤站 (2005年12月14日19:41:45 星期三) 【 以下文字转载自 hustfund 讨论区 】 【 原文由 lyman 所发表 】 考考你的经济学常识:七个问题 1994年4月北京大学经济学院团委和学生会组织经济文化月活动。在开幕式上邀请了七 八位北京经济学界著名人士到会发言,每人限定10分钟。由于时间有限,许多经济学家言 犹未尽。会上大则经济研究所所长茅于轼教授作了7分钟发言,提了七个经济学的普通问题 ,难倒了不少北大师生。 他认为经济学知识是每个具有高中以上文化水平的人都应具备的,所以现在高中 和大学里都要教政治经济学。但是传统的政治经济学能否传授有用的经济知识却可能存在 问题,因此他出了七个普通问题,考一考非经济专业而学过一般政治经济学的学生。如果 大部分问题都答不上,就证明当今的经济学作为一门大学里的公共课有加以改造的必要。 这七个问题都不是冷僻怪题,但看来容易,却真难回答。七个问题激起了北大校园内一阵 不平静的思考。 下面就是茅于轼教授所出的七个题目: 1.何以穷国和富国同工而不同酬? 从简单劳动如餐馆里洗碗,到复杂劳动如外科手术大夫,几乎一切行业中中国的 从业人员所得到的待遇远远比不上美国同行的待遇。我们也可以不用货币收入,通过汇率 折算,而可以直接比较吃、穿、住、用、玩的实际生活水平,这一结论仍旧成立。 有的经济学家解释说,一般而言,美国工人使用的工具先进,所以同样劳动产出 的价值较多。可是拿洗碗,理发等服务业来说,工具的先进并不起多大作用。再说中国也 有高度自动化的流水生产线,那甲工人的待遇仍不能和美国工人衍比。 由于穷国和富国同工不同酬,当他们之间发生贸易时,富国包含少量劳动的产品 可以交换穷国包含大量劳动的产品,因而有的经济学家认为是富国剥削了穷国。可是在没 有贸易往来时,同工不同酬的现象仍旧存在,这显然不能用剥削来解释。正因为存在这一 现象,所以不少人希望移民到富国去,使自己支付同样的劳动能得到较好的享受。政治经 济学告诉我们,一切财富都是劳动创造的,劳动是财富唯一的泉源。根据这一理论,质量 和数量相同的劳动应该创造出相同的价值,可是政治经济学从来没有对富国和穷国同工不 同酬的事实作出任何最起码的解释。 2.投机活动是否创造财富? 这里我们将投机活动定义为一些人既不生产又不消费,买进只是为了卖出,并从 买卖差值中赚钱的活动。这包括房地产、股票、期货的投机,也包括囤积居奇,制造价格 差别从中渔利的行为。 如果投机活动不创造财富,那么投机赚的钱只是一种变相欺骗,把别人口袋里的 钱骗到自己口袋里,那就和赌博没多少区别。世界各国政府多半禁止赌博,却极少禁止投 机。 如果投机钱确实创造了财富,那么这一部分钱应该计人国民生产总值。那么请问 ,投机分子为谁服了务?生产出了什么产品?对社会作出了什么贡献? 3.交换能否创造价值? 据说,市场经济的特点是等价交换,意思大概是说买卖双方谁也挣不了谁的钱, 同 时谁也不会吃亏。可是做买卖不是小孩子玩过家家,而是为了赚钱。无论是国际 贸易或是国内贸易,任何一笔双方积极参与的公平交易,都同时为双方带来利益。当然, 这并不是说做买卖永远都能赚钱,蚀本的情况是存在的。但大多数情况下只要双方出于自 愿同意,任一方赔钱的交易是做不成的。 如果承认了交换能赚钱,试问这新增的价值从何而来? 假定一头羊与一柄斧交换,交换之前和交换之后都是一头羊一柄斧,仅仅是变换 了他们的所有者。从劳动创造价值来看,交换能创利更不能自圆其说。 你是相信交换能创造价值,还是坚信交换不能创造价值,你的理由何在?另一种 说法的错误何在? 4.汇率是由什么决定的? 汇率是两种货币的交换比例。货币之所以有价,是因为它有购买力,因此货币交 换的比例显然应该等于两种货币购买力的比。这种论断大量地流行于当今肤浅的教科书里 ,但其错误是显而易见的,因为两种货币的购买力的比取决于买什么东西。例如,用美元 买汽车,其购买力约为人民币的20倍,但用美元买旅游鞋,两块美元也顶不上一块钱人民 币。实际上,正因为买各种商品时两种货币购买力的比价不同,才有国际贸易发生。用美 元买汽车便宜,而用人民币买旅游鞋便宜,所以才有中国出口旅游鞋进门汽车。 对上述问题比较接近的说法是汇率取决于两种货币的供需情况,当用人民币买美 元供不应求时,美元汇价上升,反之则下跌。然而这一答案只是对现实的描述,井未从经 济理论上加以说明。譬如这样的汇率和购买力比较有什么关系?这种汇率有什么特点?它 是有利于两国,还是不利于两国,或有利于其中的某一国? 5.“有计划、按比例”有什么错? 社会主义经济的基本规律是“有计划、按比例”。每当国民经济出毛病时,我们 总可发 现是某种比例失调所引起的,所以事先把比例掌握好,就不致发生比例失调的毛 病,因而才有“有计划,按比例”的说法。市场经济则是靠着成千上万个生产者和消费者 通过价格机制来调节,它无疑带有盲目性。当然价格确能调节余缺,因为供过于求时价格 下降,从而消费增加,生产减少;供不应求时则相反。然而这种余缺调剂能否实现我们所 需要的比例,却没有任何保证,是什么理由,我们竟放弃了这个基本规律,改换为市场的 盲目调节呢? 6.钱能不能度量价值?什么条件下它能?什么条件下不能? 我们知道,凡是不能交换的东西,都不能用钱度量其价值。健康是有价值的,然 而不能交换。一个人生了病,不论他愿意出多少钱给别人,也不论别人有多愿意用自己的 健康去交换钱,事实上也无法做到。除了健康,还有友谊、爱情、创造欲望和好奇欲望的 满足等等,也都不能用钱交换。 那么,凡是能交换的东西是否都能用钱来度量其价值呢?工厂产品的价格高于它 原料的价格,其差价是否精确地表明了工厂创造的价值?由于市场价格的波动,即使工厂 内部的生产状况完全照旧,它创造的财富是否也相应地变动?一个人做生意赚了钱是否证 明他创造了价值? 7.是什么决定了一物的价格? 我们知道,价格等于成本加利润。一般而言,产品的成本是企业已知的,所以上 述问题也可以表述什么决定了利润。 利润的变化很大,有时可能是负的,这就是企业亏损;有时可能超过了成本,使 利润率达到百分之百。企业没有不希望多赚钱的,那么是什么限制了利润呢? 合理利润又是多少?如果你是一名物价检查员,你将如何去执行任务?利润率达 到什么水平可以称之为暴利?如果你认为利润率达到50%以上就可以算暴利,你如何去说 服坚持10%作标准的人? 问题已经提了出来,答卷平均能评多少分,没有人统计。但从北大校院内沸沸扬 扬的议论来看,大家开始反省传统的政治经济学教育是否有助于我国建设市场经济的大业 ?这种教学究竟给学生多少有用的知识?大学教学本来应该领先于现实的发展,可是这一 门课程到底起了什么作用?当然,这些司题并不是仅仅针对北大的。但几十年来北大师生 一直是我国学术和文化的先驱者,也许会在经济学的教学改革上率先行动 -- ※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn· -- ※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn·
自我发型设计的依据zzz
| 转自:中华育儿网 发型设计是一门综合的艺术,它涉及广泛,须掌握多门学科,影响发型设计主要有:头型、脸型、五官、身材、年龄,其次有职业、肤色、着装、个性嗜好、季节、发质、适用性和时代性。 一、头型: 人的头型大至可以分为大、小、长、尖、圆等几种型状。 (1)头型大:头型大的人,不宜烫发,最好剪成中长或长的直发,也可以剪出层次,刘海不宜梳得过于太高,最好能盖住一部分前额; (2)头型小:头发要做得蓬松一些,长发最好烫成蓬松的大花,但头发不宜留得过长; (3)头型长:由于头型较长,故两边头发应吹得蓬松,头顶部不要吹得过高,应使发型横向发展; (4)头型尖:头型的上部窄,下部宽,不宜剪平头,剪短发烫卷,顶部压平一点,两侧头发向后吹成卷曲状,使头型呈出椭圆形; (5)头型圆:刘海处可以吹得高一点,两侧头发向前面吹,不要遮住面部; 二、脸形: 发型与脸型的配合十分重要,发型和脸型配的适当,可以表现此人的性格,气质,而且使人更具有魅力,常见脸形有七种:椭圆形、圆形、长方形、方形、正三角形、倒三角形及菱形等; (1)椭圆脸形:是一种比较标准的脸形,好多的发型均可以适合,并能达到很和谐的效果; (2)圆脸形:圆圆的脸给人以温柔可爱的感觉,较多的发型都能适合,只须稍修饰一下两侧头发向前就可以了,如长、短毛边发型、秀芝发型,不宜做太短的发型; (3)长方脸形:避免把脸部全部露出,刘海做一排,尽量使两边头发有蓬松感,不宜留长直发,如:长蘑菇发型、短秀芝发型,学生发型; (4)方脸形:方脸形缺乏柔和感,做发型时应注意柔和发型,可留长一点的发型,如:长穗发、长毛边或秀芝发型,长直披发不宜留短发; (5)正三角脸形:刘海可削薄薄一层,垂下,最好剪成齐眉的长度,使它隐隐约约表现额头,用较多的头发修饰腮部,如:学生发型,齐肩发型,不宜留长直发; (6)倒三角脸形:做发型时,重点注意额头及下巴,刘海可以做齐一排,头发长度超过下巴两公分为宜,并向内卷曲,增加下巴的宽度; 头发长度超过下巴两公分为宜,并向内卷曲,增加下巴的宽度; (7)菱形脸形:这种脸形颧骨高宽,做发型时,重点考虑颧骨突出的地方,用头发修饰一下前脸颊,把额头头发做蓬松拉宽额头发量,如:毛边发型、短穗发等。 三、五官: 五官对发型的设计成不成功有着直接联系,五官的缺陷,发型师应设法弥补,如:高鼻子、低鼻子、大耳朵、小耳朵、宽眼距、窄眼距等。 (1)高鼻子: 做发型时,可将头发柔和的梳理在脸形的周围,从侧面看可以减少头发与鼻尖的距离; (2)低鼻子:应将两侧的头发往后梳,使头发与鼻子距离拉长; (3)大耳朵:不宜剪平头或太短的发型,应留盖耳长的发型,且要蓬松; (4)小耳朵:小耳不易夹头发,所以太多、太厚的头发不宜夹存耳朵上,长毛边式发型往后梳时应用饰发夹; (5)宽眼距:头发应做的蓬松一点,不宜留长直发; (6)窄眼距:两侧发型可以做成不对称式,若对称的秀芝发型可以将一边的头发搁在面部,另一边的头发搁在耳后。 四、体态对发型的影响: (1)瘦长形:身材瘦长的人,多数脸形也是瘦长的,一般颈部较长,应采用两侧蓬松,横向发展的发型,如:大波浪; (2)肥胖形:一般颈较短,头发不宜留长,最好采用略长的短发式样,两鬓要服贴,后发际线应修剪得略尖; (3)短小形:适合留短发,如留长发,则应在头顶部扎马尾或是梳成发髻,尽可能把重心向上移; (4)高大形:不宜留短发,根据个人脸形嗜好选择中长发; (5)溜肩型:是现代女性不喜欢的身材,选择发型时要弥补这方面的不足,发型要在肩颈部周围形成丰盈的发量,不宜短发。 五、职业特征的影响: 发型设计除考虑到的头型、脸形、五官及身材以外还必须要注意到顾客的职业特点,发型根据职业的需要在不影响工作的情况下,努力做到最完美的效果; (1)工作时需戴安全帽的顾客:发型不要做得太复杂,应尽量剪成短发或是长发扎辫子; (2)运动员学生:由于年龄及运动员的职业特点,发型可做成轻松而活泼的短发型,易梳理; (3)文秘、公关人员及交际活动繁忙的女顾客:这类顾客社会活动较多,头发最好留长一些,以便能经常变换发型; (4)教师、机关工作人员:简洁、明快、大方、朴素的发型,表现出淡雅,端庄的感觉; (5)文艺工作者、服装模特:发型可以做得突破一点,创造性,前卫性。 |
zz找工作
Something about finding a job
雅虎中国要推垂直搜索
2005年8月,百度成功登陆纳斯达克,Google重金挖来微软干将李开复主持中国市场,如今又多了个马云带领下的雅虎中国,中文搜索市场呈现三足鼎立之势。
Google的优势在技术,百度的优势在本土化,雅虎则是雅虎和阿里巴巴的结合,既拥有雅虎的技术优势,又有阿里巴巴本土化优势, 究竟能否在中文搜索上站稳脚跟,仍需拭目以待。
做搜索无非几个,第一是技术积累,第二是资本,第三是前瞻性的技术研发,迎接下一代搜索革命。雅虎搜索分散在三个品牌:3721、雅虎和一搜,没有形成合力,现在要集中起来。
搜索底层技术都是类似的,但百度在精细化运作上面走在了别人的前面。百度可以在北大请上百个学生做分析、做词库,但雅虎中国做不了。因为雅虎是一个预算引导的公司,每年就有3个指标:第一就是你今年花多少钱,第二你今年有多少人头,第三今年要完成多少利润。我们每年都是围绕这三个指标来做,但是现在不一样了,也许我们也可以用几百人来做分词指标。
雅虎原来什么都做,做很多频道,做很多内容,现在收缩变窄,围绕财经、体育、娱乐三个方向做深,现在90%的信息是他们自己做的,未来希望能做改观,雅虎只作10%,其余都是别人做的,但是要做深.
如今互联网企业对网民的争夺愈演愈烈,单靠网上做广告是不够的,还需做网下营销,以吸引更多的网民。而不同的互联网企业根据不同的产品线投放广告的策略也有所不同。阿里巴巴是 电子商务企业,更需要做网下营销.
除了重金投放广告,雅虎中国还将用娱乐营销造势搜索。据了解,就在此前的12月1日,雅虎刚刚成为华语音乐榜中榜的首席赞助商,一起“搜索华语音乐最强音”。这一做法旨在全力打造音乐搜索。百度在音乐下载方面遭受的侵权官司显然给业界提了个醒。雅虎中国方面表示,想在音乐方面有长足发展,就要和那些音乐歌曲版权所有者们一起合作,所以和华语音乐榜中榜合作开创了全新的合作方式。据悉,本届华语音乐榜中榜特别设置了搜索年度最热门歌手,搜索年度最热门歌曲,以及雅虎无线票选人气歌手,雅虎无线票选歌曲四个与往届不同的奖项。马云表示,有品味、时尚的娱乐必须引导未来的趋势,在一切资讯娱乐化,连生活方式都娱乐化的当下,这一战略的第一根“触角”就是迅速伸向娱乐领域。
围巾搭配
白肤色者选围巾应避免刺激强烈色调,宜用淡蓝,浅麦红, 苹果绿,柠檬黄等色调。黑皮肤者避免用浅色调围巾,宜选用深色为好,如巴西黄,深米色,深铁灰等色调。
体胖,胸围偏大者挑选花型设计简单的深色或单色宽松型针织围巾或丝绸围巾;身体瘦小者,围巾的花型和款式以简朴、素雅为宜,色法宜选用暖色调,以增强活跃感。
宽肩的人,选用花型呈直型满幅图案格局的围巾,使肩部有缩小感,选用文静,素雅的色泽,如湖蓝、米黄、淡橙红等。溜肩的人,应选择加长型围巾,将围巾两端搭在肩部向身后垂挂,视觉上可使肩部显得匀称。
穿红色毛衣时,不妨用黑色薄透的围巾,压住红色不致于太刺眼,还能衬映得肤色白嫩。穿乳白色毛衣,围上一条玫瑰色围巾,便从素淡中升起幽雅的仪态。丝绸花巾质地轻薄柔软,系法多种多样,即使你身穿一袭普通衣衫,也可令你凭添姿色。若穿一身淡蓝的西服套装,配上一条色彩较深的真丝围巾,能达到生气勃勃的效果,若穿一件宽松式茄克,系一条纯白的绸围巾,会衬得芳容如花似玉。
身材修长,但胸部平坦,选配质地稍具松感的丰厚性图案,大花型的围巾,采用对称悬搭前胸围系法,可使胸部显得丰满。
Oracle安全全接触
或许很久以前,大家都觉得Oracle数据库的安全并不存在隐患,因为Oracle公司在去年11月份开始促销其数据库软件时提出的口号是“只有Oracle9i能够做到绝对安全”。但是不管它这么说是为了促销,还是为了扩大知名度,总之伴去年12 月份,英国的安全专家 David Litchfield 发现的9iAS 中存在的程序错误导致的缓冲溢出漏洞以及后来,PenTest Limited 和 eEye Digital Security 各自提出了一个小的漏洞,所有使用Oracle公司产品的人都不由地紧张了原本松弛的大脑--这个对于用户来说,毕竟关系到了自己的“身家性命”。
下面笔者将带着大家走进Oracle数据安全的世界。由于笔者水平有限,所以不足之处在所难免,望大家不吝赐教。
(一)Oracle数据库的一些基本常识
这里仅仅是为了以后的安全奠定一些基础,因为我们后面要用到它们。
1.Oracle所包含的组件:
在 Oracle,数据库是指整个 Oracle RDBMS 环境,它包括以下组件:
·Oracle 数据库进程和缓冲(实例)。
·SYSTEM 表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。
·其它由数据库管理员 (DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。
·两个以上的联机恢复日志。
·归档恢复日志(可选)。
·其它文件(控制文件、Init.ora、Config.ora 等)。
每个 Oracle 数据库都在一个中央系统类目和数据字典上运行,它位于SYSTEM 表空间。
2.关于“日志”
Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。下面我们将大体上了解一下作为主要结构之一的“日志”:
每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)日志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。
·关于在线日志:一个Oracle数据库的每一实例有一个相关联的在线日志。一个在线日志由多个在线日志文件组成。在线日志文件(online redo log file)填入日志项(redo entry),日志项记录的数据用于重构对数据库所作的全部修改。
·关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。其对数据库备份和恢复有下列用处:
<1>数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。
<2>在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。
数据库可运行在两种不同方式下:NOARCHIVELOG方式或ARCHIVELOG 方式。数据库在NOARCHIVELOG方式下使用时,不能进行在线日志的归档。如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。
3.物理和逻辑存储结构:
Oracle RDBMS是由表空间组成的,而表空间又是由数据文件组成的。表空间数据文件被格式化为内部的块单位。块的大小,是由DBA在Oracle第一次创建的时候设置的,可以在512到8192个字节的范围内变动。当一个对象在Oracle表空间中创建的时候,用户用叫做长度的单位(初始长度((initial extent)、下一个长度(next extent)、最小长度(min extents)、以及最大长度(max extents))来标明该对象的空间大小。一个Oracle长度的大小可以变化,但是要包含一个由至少五个连续的块构成的链。
4.Oracle与Microsoft SQL Server比较下的联网协议:
(二)Oracle数据安全的维护
记得某位哲学家说过:“事物的变化离不开内因和外因。”那么对于Oracle数据安全这个话题而言,也势必分为“内”和“外”两个部分。那么好,我们就先从“内”开始说起:
§1.从Oracle系统本身说起
我们先抛开令人闻风色变的“hacker”和其他一些外部的原因,先想一下我们的数据库。什么硬盘损坏,什么软件受损,什么操作事物……一系列由于我们的“疏忽”而造成的系统问题就完全可以让我们辛苦建立的数据库中的数据一去不复返。那么,我们就先从自己身上找找原因吧。
【一】解决系统本身问题的方法--数据库的备份及恢复
·数据库的备份:
关于Oracle数据库的备份,标准地有三中办法:导出/导入(Export/Import)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。
<1>导出/导入(Export/Import)
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。
a.简单导出数据(Export)和导入数据(Import)
Oracle支持三种类型的输出:
(1)表方式(T方式),将指定表的数据导出。
(2)用户方式(U方式),将指定用户的所有对象及数据导出。
(3)全库方式(Full方式),将数据库中的所有对象导出。
数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。
b.增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三个类型:
(1)“完全”增量导出(Complete)
即备份整个数据库,比如:
$exp system/manager inctype=complete file=990702.dmp
(2)“增量型”增量导出
备份上一次备份后改变的数据。比如:
$exp system/manager inctype=incremental file=990702.dmp
(3)“累计型”增量导出(Cumulative)
累计型导出方式只是导出自上次“完全” 导出之后数据库中变化了的信息。比如:
$exp system/manager inctype=cumulative file=990702.dmp
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。比如数据库的备份任务可作如下安排:
·星期一:完全导出(A)
·星期二:增量导出(B)
·星期三:增量导出(C)
·星期四:增量导出(D)
·星期五:累计导出(E)
·星期六:增量导出(F)
·星期日:增量导出(G)
如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回段。
第三步:完全增量导入A:
$imp system./manager inctype= RECTORE FULL=Y FILE=A
第四步:累计增量导入E:
$imp system/manager inctype= RECTORE FULL=Y FILE =E
第五步:最近增量导入F:
$imp system/manager inctype=RESTORE FULL=Y FILE=F
<2>冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:
·是非常快速的备份方法(只需拷贝文件)
·容易归档(简单拷贝即可)
·容易恢复到某个时间点上(只需将文件再拷贝回去)
·能与归档方法相结合,作数据库“最新状态”的恢复。
·低度维护,高度安全。
但冷备份也有如下不足:
·单独使用时,只能提供到“某一时间点上”的恢复。
·在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
·若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
·不能按表或按用户恢复。
如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:
·所有数据文件
·所有控制文件
·所有联机REDO LOG文件
·Init.ora文件(可选)
值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的
下面是做冷备份的完整例子:
(1) 关闭数据库$sqldba lmode=y
SQLDBA >connect internal;
SQLDBA >shutdown normal;
(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件
SQLDBA >! cp < file > < backup directory >
(3) 重启Oracle数据库
$sqldba lmode=y
SQLDBA >connect internal;
SQLDBA >startup;
<3>热备份
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:
1.数据文件一个表空间一个表空间地备份。
(1)设置表空间为备份状态
(2)备份表空间的数据文件
(3)恢复表空间为正常状态
2.备份归档log文件。
(1)临时停止归档进程
(2)log下那些在archive redo log目标目录中的文件
(3)重新启动archive进程
(4)备份归档的redo log 文件
3.用alter database backup controlfile命令来备份拷贝文件
热备份的优点是:
·可在表空间或数据文件级备份,备份时间短。
·备份时数据库仍可使用。
·可达到秒级恢复(恢复到某一时间点上)。
·可对几乎所有数据库实体作恢复。
·恢复是快速的,在大多数情况下在数据库仍工作时恢复。
热备份的不足是:
·不能出错,否则后果严重。
·若热备份不成功,所得结果不可用于时间点的恢复。
·因难于维护,所以要特别仔细小心,不允许“以失败而告终”。
【二】来自内部的另外一个隐患--用户管理以及密码问题
在这里,其实作为一个差不多点的数据库管理员都很清楚,Oracle数据库本身就使用了很多种手段来加强数据库的安全性,经常见到的就有密码,角色,权限等等。那么我们就从最简单的DBSNMP
说起:
Oralce数据库如果采用典型安装后,自动创建了一个叫做DBSNMP的用户,该用户负责运行Oracle系统的智能代理(Intelligent Agent),该用户的缺省密码也是“DBSNMP”。如果忘记修改该用户的口令,任何人都可以通过该用户存取数据库系统。现在我们来看一下该用户具有哪些权限和角色,然后来分析一下该用户对数据库系统可能造成的损失。
启动SQL/PLUS程序,使用该用户登录进入:
SQL> select * from session_privs;
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
ANALYZE ANY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
可以看到该用户不是SYS或SYSTEM管理用户,然而,它却具有两个系统级权限:UNLIMITED TABLESPACE和CREATE PUBLIC SYNONYM。
看到这两个权限你应该马上想到,这些都是安全隐患,尤其是UNLIMITED TABLESPACE,它是破坏数据库系统的攻击点之一。如果这时候你还依然认为,即使有人利用这个没有修改的口令登录进数据库也造成不了什么损失的话,我就不得不提醒你:该用户具有UNLIMITED TABLESPACE的系统权限,它可以写一个小的脚本,然后恶意将系统用垃圾数据填满,这样数据库系统也就无法运行,并将直接导致最终的瘫痪。目前很多数据库系统都要求7X24的工作,如果出现了系统用垃圾数据填满的情况,那么,等数据库系统恢复时,恐怕不可挽回的损失已经造成了。
可是除了 DBSNMP 还有很多其他的用户,怎么办呢?让我们先看一下目前普遍存在于Oracle数据库中的用户管理问题:
(1)权限过大:对ORACLE数据库编程和浏览的一般用户常常具有DBA (数据库管理员权限),
能对数据库系统做任何修改或删除。
(2)安全性差:很多ORACLE用户缺省存储位置都在系统表空间,这样不仅影响系统的正常工
作,而且不同用户的数据信息互相影响、透明,保密性差。随着数据的不断加入,
有可能使整个数据库系统崩溃。
(3)密码有规律:在ORACLE调试初期形成的用户名和密码一致的不良习惯保留到现在;系统用户SYS和SYSTEM的密码也众所皆知。
知道了这些普遍的“毛病”,我们怎么做呢?下面是我的一些建议:
(1)ORACLE DBA (数据库管理员)的规范
·SUN Solaris操作系统下ORACLE用户密码应严格保密,绝不该把密码设成
ORACLE;并指定专门的数据库管理员定期修改。
·ORACLE初始化建立的SYS和SYSTEM系统管理员用户密码应由原来MANAGER改成别的不易被记忆的字符串。
·ORACLE WEB SERVER的管理端口具备DBA浏览数据库的能力,因此其管理者
ADMIN的密码也应保密,不该把密码设成MANAGER;并指定专门的数据库管理员定
期修改。
·ORACLE DBA最好在SUN SPARC服务器控制台上用窗口式界面实现管理。前提
是ORACLE用户启动服务器,然后在窗口式命令行下输入SVRMGRM,即启动了ORACLE SERVER MANAGER菜单式管理;用SYSDBA身份登录后,就可做数据库系统维护工作了
(2)SQL*PLUS编程用户的规范
·存储结构的规范
考虑到用SQL*PLUS编程可实现各行各业、各公司、各部门多种多样的应用需求,我们的SQL*PLUS编程用户也应该朝这个方向规范:不同种类的应用必须有不同的用户;不同种类的应用必须有不同的存储位置,包括物理文件、缺省表空间、临时表空间的创建和规划:当准备编写某一较大规模(从ORACLE数据量和面向用户量考虑)应用程序时,首先应该创建一个逻辑的存储位置-表空间,同时定义物理文件的存放路径和所占硬盘的大小。
①、物理文件缺省的存放路径在/oracle_home/dbs下,在命令行下用UNIX指令df -k 可查看硬盘资源分区的使用情况。如果oracle_home使用率达90‰以上,而且有一个或多个较为空闲的硬盘资源分区可以利用,我们最好把物理文件缺省的存放路径改到较为空闲的硬盘资源分区路径下。在此路径下我们可以这样规划资源物理文件的存储:
xxx表空间
xxx行业/ xxx公司/ xxx 部门/ xxx 服务.dbf
DEMO表空间
default_datafile_home1/col /elec/sys4/demo1.dbf
default_datafile_home1/col /elec/sys4/demo2.dbf
公司系统四部摹拟演示系统物理文件
HUMAN表空间
default_datafile_home1/col/elec/human/human.dbf
公司人事部人事管理系统物理文件
BOOK表空间
default_datafile_home1/col/elec/book/book.dbf
公司资料室图书管理系统物理文件
QUESTION表空间
default_datafile_home1/col/elec/client/question.dbf
公司客户服务部问题库系统物理文件
PC表空间
default_datafile_home1/col/chaoxun/client/pc.dbf
公司PC机售后服务系统物理文件
……表空间
default_datafile_home2/……………………………
等等
说明:其中default_datafile_home1指oracle_home/dbs;
default_datafile_home2指较为空闲的硬盘资源分区路径。
②、物理文件的大小根据应用系统的数据量、数据对象、程序包的多少来定。一般用于摹拟演示的小系统,表空间初始的物理文件为2M即能满足要求,如果信息量满,还可以增加物理文件,扩充表空间(每次扩充大小也可暂定为2M);一般实际运行的应用系统可适当增加表空间初始的物理文件大小,但也不要一次分配太大(因为不易回收空间,却易扩充空间),这也需要根据具体情况具体分析:信息量大、需长时间保存的应用在条件允许情况下,表空间可以大到几百M甚至上G;信息量小、短期经常刷新的应用,表空间可以控制在2M以下。
③、表空间的名称应该采用同系统应用相似的英文字符或字符缩写,表空间所对应的一个或多个物理文件名也应有相关性。不同用户所处的缺省表空间不同,存储的信息就不能互相访问。这比把所有用户信息都储存在系统表空间,安全性大大提高了。如果用ORACLE WEB SERVER管理端口创建的用户,其缺省和临时表空间一定是系统表空间,DBA切记要改变用户的缺省表空间。临时表空间存放临时数据段,处理一些排序、合并等中间操作,根据实际应用的需求可以把它们放在专门创建的表空间里;如果系统表空间大,也可以把它们放在系统表空间。用户创建的数据索引最好和数据文件分开存放在不同表空间,以减少数据争用和提高响应速度。
·密码和用户名的规范
有相当数量的ORACLE用户名和密码一致,这是个很不安全的因素。我们建议ORACLE用户名和密码一定不要一样,密码最好在五,六位字符以上。不同用户间不应该使用相同的密码。用户名的定义可根据实际应用的英文名来设,而依据编程人员的姓名定义的用户名实际上不规范,可在日后的工作中结合上述有关存储结构规范的说明逐步改进。
(3)特殊要求用户的规范
在ORACLE数据库使用过程中,还会遇到一些有特殊要求的用户:非编程人员需要对某个表有查询、增加、删除、修改的权利。DBA应创建一个这样的用户,先确定用户名和密码,再规定相关应用所在缺省表空间(包含某个表)和临时表空间,最后TABLE属主给其授权:赋予CONNECT角色SELECT、INSERT、DELETE、UPDATE ON THE TABLE的对象级权限,这可根据实际需求自由取舍。
举例:●给新用户授于对象级权限(命令行方式):
假设新用户NEW2需要有查询、删除、修改DCD用户的表EMP。
%svrmgrl
SVRMGR>connect internal; 以系统管理员登录
SVRMGR>create user new2 identified by new2345 default tablespace app;
SVRMGR>connect dcd/dcdpwd; 以dcd用户登录
SVRMGR>grant connect to new2;
SVRMGR>grant select on emp to new2;
SVRMGR>grant delete on emp to new2;
SVRMGR>grant update on emp to new2;
说了这么多关于用户的问题,那么接下来我们就详细得说一下关于密码文件的使用以及维护--在Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证。因此,管理好密码文件,对于控制授权用户从远端或本机登录Oracle数据库系统,执行数据库管理工作,具有重要的意义。
Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令,它一般存放在ORACLE_HOME\DATABASE目录下。
·密码文件的创建:
在使用Oracle Instance Manager创建一数据库实例的时侯,在ORACLE_HOME\DATABASE目录下还自动创建了一个与之对应的密码文件,文件名为PWDSID.ORA,其中SID代表相应的Oracle数据库系统标识符。此密码文件是进行初始数据库管理工作的基础。在此之后,管理员也可以根据需要,使用工具ORAPWD.EXE手工创建密码文件,命令格式如下:
C:\ >ORAPWD FILE=< FILENAME > PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >
各命令参数的含义为:
FILENAME:密码文件名;
PASSWORD:设置INTERNAL/SYS帐号的口令;
MAX_USERS:密码文件中可以存放的最大用户数,对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数。由于在以后的维护中,若用户数超出了此限制,则需要重建密码文件,所以此参数可以根据需要设置得大一些。
有了密码文件之后,需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态。
·设置初始化参数REMOTE_LOGIN_PASSWORDFILE:
在Oracle数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:
NONE:指示Oracle系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;
EXCLUSIVE:指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息,即允许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户。
SHARED:指示可有多个数据库实例可以使用此密码文件。在此设置下只有INTERNAL/SYS帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以SYSOPER/SYSDBA的权限登录。此设置为缺省值。
在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE、SHARED情况下,Oracle系统搜索密码文件的次序为:在系统注册库中查找ORA_SID_PWFILE参数值(它为密码文件的全路径名);若未找到,则查找ORA_PWFILE参数值;若仍未找到,则使用缺省值ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相应的Oracle数据库系统标识符。
·向密码文件中增加、删除用户:
当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时,系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统,执行数据库管理工作;这些用户名必须存在于密码文件中,系统才能识别他们。由于不管是在创建数据库实例时自动创建的密码文件,还是使用工具ORAPWD.EXE手工创建的密码文件,都只包含INTERNAL/SYS用户的信息;为此,在实际操作中,可能需要向密码文件添加或删除其他用户帐号。
由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中,所以当向某一用户授予或收回SYSOPER/SYSDBA系统权限时,他们的帐号也将相应地被加入到密码文件或从密码文件中删除。由此,向密码文件中增加或删除某一用户,实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限。
要进行此项授权操作,需使用SYSDBA权限(或INTERNAL帐号)连入数据库,且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE。具体操作步骤如下:
创建相应的密码文件;
设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;
使用SYSDBA权限登录: CONNECT SYS/internal_user_passsword AS SYSDBA;
启动数据库实例并打开数据库;
创建相应用户帐号,对其授权(包括SYSOPER和SYSDBA): 授予权限:GRANT SYSDBA TO user_name;
收回权限:REVOKE SYSDBA FROM user_name;
现在这些用户可以以管理员身份登录数据库系统了;
·使用密码文件登录:
有了密码文件后,用户就可以使用密码文件以SYSOPER/SYSDBA权限登录Oracle数据库实例了,注意初始化参数REMOTE_LOGIN_PASSWORDFILE应设置为EXCLUSIVE或SHARED。任何用户以SYSOPER/SYSDBA的权限登录后,将位于SYS用户的Schema之下,以下为两个登录的例子:
1. 以管理员身份登录:
假设用户scott已被授予SYSDBA权限,则他可以使用以下命令登录:
CONNECT scott/tiger AS SYSDBA
2. 以INTERNAL身份登录:
CONNECT INTERNAL/INTERNAL_PASSWORD
·密码文件的维护:
1. 查看密码文件中的成员:
可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限。这些用户也就是相应地存在于密码文件中的成员。
2. 扩展密码文件的用户数量:
当向密码文件添加的帐号数目超过创建密码文件时所定的限制(即ORAPWD.EXE工具的MAX_USERS参数)时,为扩展密码文件的用户数限制,需重建密码文件,具体步骤如下:
a) 查询视图V$PWFILE_USERS,记录下拥有SYSOPER/SYSDBA系统权限的用户信息;
关闭数据库;
c) 删除密码文件;
d) 用ORAPWD.EXE新建一密码文件;
e) 将步骤a中获取的用户添加到密码文件中。
3. 修改密码文件的状态:
密码文件的状态信息存放于此文件中,当它被创建时,它的缺省状态为SHARED。可以通过改变初始化参数REMOTE_LOGIN_PASSWORDFILE的设置改变密码文件的状态。当启动数据库事例时,Oracle系统从初始化参数文件中读取REMOTE_LOGIN_PASSWORDFILE参数的设置;当加载数据库时,系统将此参数与口令文件的状态进行比较,如果不同,则更新密码文件的状态。若计划允许从多台客户机上启动数据库实例,由于各客户机上必须有初始化参数文件,所以应确保各客户机上的初始化参数文件的一致性,以避免意外地改变了密码文件的状态,造成数据库登陆的失败。
4. 修改密码文件的存储位置:
密码文件的存放位置可以根据需要进行移动,但作此修改后,应相应修改系统注册库有关指向密码文件存放位置的参数或环境变量的设置。
5. 删除密码文件:
在删除密码文件前,应确保当前运行的各数据库实例的初始化参数REMOTE_LOGIN_PASSWORDFILE皆设置为NONE。在删除密码文件后,若想要以管理员身份连入数据库的话,则必须使用操作系统验证的方法进行登录。
但是管理员都觉得乏味,因为在管理员中流行一种很简单的加密办法--就是经常,很频繁地修改自己的密码。可是,每次修改都跟打一次仗似的--因为更新程序并不是每个人都愿意做的事情。
那么有没有什么简单点的办法呢?请往下看:
模型:Oracle7.3;开发工具:Develope2000。收费系统(在数据库中的名称是SFYY),其Client端分散在市区的数个营业点,通过城域网与主机(小型 机)相连。
过程:
·在收费小型机Oracle系统的system用户(DBA)下,创建新用户test;
create user test
identified by carton
default tablespace dataspace1
quota 100K
·对test用户授以权限;
grant create session to test;
grant resource to test;
·在test用户下建立一个存储函数mmtranslate,它其实是一个加密程序。下面是一个简 单的例子。
function mmtranslate(m varchar2)
return varchar2
as
i number(2);
kk varchar2(10);
begin
kk:=′′;
i:=1;
loop
if i<=length(m) then
if instr(′1234567890′,substr(m,i,1),1,1)>0 then
kk:=kk||chr(100+to_number(substr(m,i,1)));
elseif instr(‘wxyz‘,substr(m,i,1),1,1)>0 then
kk:=kk||chr(-8+ascii(substr(m,i,1)));
else
kk:=kk||chr(4+ascii(substr(m,i,1)));
end if;
else
exit;
end if;
i:=i+1;
end loop;
return kk;
exception
when others then
return ′-1′;
end;
·在test用户下建表mmtest并插入记录:
create table mmtest
(usnamevarchar2(6),------用户名称
mimavarchar2(6)------加密前的密码);
insert into mmtest values( ‘sfyy‘,‘eds2‘);
commit;
·执行以下语句
SQL>select mmtranslate(‘eds2‘) from dual;
MMTRANSLATE(‘EDS2‘)
----------------------------------------
ihwf
利用DBA权限更改sfyy的密码为上面语句的执行结果:
alter user sffy
identified by ihwf; ;
·修改应用程序,对于开发环境是Develope2000的程序来说,主要是修改主程序的on-lo gon触发器:
declare
mm varchar2(6);
begin
logon(‘test‘,‘carton‘);
select mima into mm from mmtest where usname=‘sfyy‘;
mm:=mmtranslate(mm);
logout;
logon(‘sfyy‘,mm);
end;
然后再利用触发器WHEN-NEW-FROM-INSTANCE执行Callfrom或Newform等 命令,进入业务处理程序。这个主程序应当仅仅由管理员来掌握,编译之后将执行文件下发 到各收费点的Clien端。
·在System用户下,利用Oracle提供的pupbld.sql,建立表Productuserprofile,执行下面这样的命令,限制在非开发状态Sql命令的使用,例如
insert into productuserprofile
(product,userid,attribute,charvalue) values
(‘SQL*Plus‘,‘TEST‘,‘CONNECT‘,‘DISABLED‘);
insert into productuserprofile
(product,userid,attribute,charvalue) values
(‘SQL*Plus‘,‘SFYY‘,‘DELETE‘,‘DISABLED‘);这样,在SQL状态下,根本无法连接到TEST用户,而在 sfyy用户下,delete命令将不能执行。当然,DBA可以改变这些设置。
当然了,这个仅仅是属于一种“应用技巧”,但是足可以把那些每天忙于更新系统的管理员舒服好几天了。但是另一方面,还要加强对源程序的管理,在Client端只存放执行程序。加强审计,发现异常现象,及时处理。这样才可以做到更高一层的“安全”。
在下面,我主要是向大家介绍一个REM对GHXXB制立数据库触发子,密码的加密程序。
REM 对GHXXB制立数据库触发子(当INSERT OR UPDATE GHXXB时触发)
drop trigger scjmmm;
create or replace trigger scjmmm
before insert or update of mm On ghxxb For each Row
Begin
:new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,‘SS‘));
End;
/
---------------------------密码的加密程序ENCRYPT----------------------
Create or Replace
Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2)
Return Varchar2 Is
bcs varchar2(20);
bcs1 number;
cs number;
jg number;
m_gh VARCHAR2(4);
m_mm VARCHAR2(20);
Begin
m_gh:=IN_GH;
m_mm:=INPASS;
cs:=TO_NUMBER(IN_SS);
If cs<=1 then cs:=77 ;end if;
bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);
If bcs<‘1‘ then bcs:=‘7‘ ;end if;
m_gh:=substr(m_gh,2);
Loop EXIT WHEN nvl(length(m_gh),0)=0 ;
bcs:=bcs||substr(to_char(ascii(substr(m_gh,1,1))),-1,1);
m_gh:=substr(m_gh,2);
End loop;
Loop EXIT WHEN nvl(length(m_mm),0)=0 ;
bcs:=bcs||substr(to_char(ascii(substr(m_mm,1,1))),-1,1);
m_mm:=substr(m_mm,2);
End loop;
bcs1:=to_number(bcs);
jg:=cs*bcs1;
Loop EXIT WHEN length(to_char(jg))>13;
jg:=jg*cs ;
End loop;
RETURN(IN_SS||substr(to_char(jg),1,14));
End;
/
总结上面的东西,我们仅仅是从自身做起,知道了怎么维护Oracle数据库安全这个话题的“皮毛”。可是,对于这个似乎永远也说不完的话题,我们光知道怎么从内部“防御”就够了吗?不要忘了,在外面,还有一群虎视耽耽的“hacker”在盯着你的数据库--因为这里面有他们想要的东西。
所以,请大家关注好下一个话题:
§2.不被“hacker”入侵的几个建议
我们的目标是:没有蛀牙!(开个玩笑~!呵呵)其实应该是:它应尽可能地堵住潜在的各种漏洞,防止非法用户利用它们侵入数据库系统。对于数据库数据的安全问题,数据库管理员可以参考有关系统双机热备份功能以及数据库的备份和恢复的资料。
以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。
·组和安全性:在操作系统下建立用户组也是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的几种方法:
(1)在安装Oracle Server前,创建数据库管理员组(DBA)而且分配root和Oracle软件拥有者的用户ID给这个组。DBA能执行的程序只有710权限。在安装过程中SQL*DBA系统权限命令被自动分配给DBA组。
(2)允许一部分Unix用户有限制地访问Oracle服务器系统,增加一个由授权用户组的Oracle组,确保给Oracle服务器实用例程Oracle组ID,公用的可执行程序,比如SQL*Plus,SQL*forms等,应该可被这组执行,然后该这个实用例程的权限为710,它将允许同组的用户执行,而其他用户不能。
(3)改那些不会影响数据库安全性的程序的权限为711。(注:在我们的系统中为了安装和调试的方便,Oracle数据库中的两个具有DBA权限的用户Sys和System的缺省密码是manager。为了您数据库系统的安全,我们强烈建议您该掉这两个用户的密码,具体操作如下:
在SQL*DBA下键入:
alter user sys indentified by password;
alter user system indentified by password;
其中password为您为用户设置的密码。
·Oracle服务器实用例程的安全性:
以下是保护Oracle服务器不被非法用户使用的几条建议:
(1) 确保$ORACLE_HOME/bin目录下的所有程序的拥有权归Oracle软件拥有者所有;
(2) 给所有用户实用便程(sqiplus,sqiforms,exp,imp等)711权限,使服务器上所有的用户都可访问Oracle服务器;
(3) 给所有的DBA实用例程(比如SQL*DBA)700权限。Oracle服务器和Unix组当访问本地的服务时,您可以通过在操作系统下把Oracle服务器的角色映射到Unix的组的方式来使用Unix管理服务器的安全性,这种方法适应于本地访问。
在Unix中指定Oracle服务器角色的格式如下:
ora_sid_role[_dla]
其中 sid 是您Oracle数据库的oracle_sid;
role 是Oracle服务器中角色的名字;
d (可选)表示这个角色是缺省值;a (可选)表示这个角色带有WITH ADMIN选项,您只可以把这个角色授予其他角色,不能是其他用户。
以下是在/etc/group文件中设置的例子:
ora_test_osoper_d:NONE:1:jim,narry,scott
ora_test_osdba_a:NONE:3:pat
ora_test_role1:NONE:4:bob,jane,tom,mary,jim
bin: NONE:5:root,oracle,dba
root:NONE:7:root
词组“ora_test_osoper_d”表示组的名字;词组“NONE”表示这个组的密码;数字1表示这个组的ID;接下来的是这个组的成员。前两行是Oracle服务器角色的例子,使用test作为sid,osoper和osdba作为Oracle服务器角色的名字。osoper是分配给用户的缺省角色,osdba带有WITH ADMIN选项。为了使这些数据库角色起作用,您必须shutdown您的数据库系统,设置Oracle数据库参数文件initORACLE_SID.ora中os_roles参数为True,然后重新启动您的数据库。如果您想让这些角色有connect internal权限,运行orapwd为这些角色设置密码。当您尝试connect internal时,您键入的密码表示了角色所对应的权限。
·SQL*DBA命令的安全性:
如果您没有SQL*PLUS应用程序,您也可以使用SQL*DBA作SQL查权限相关的命令只能分配给Oracle软件拥有者和DBA组的用户,因为这些命令被授予了特殊的系统权限。
(1) startup
(2) shutdown
(3) connect internal
·数据库文件的安全性:
Oracle软件的拥有者应该这些数据库文件($ORACLE_HOME/dbs/*.dbf)设置这些文件的使用权限为0600:文件的拥有者可读可写,同组的和其他组的用户没有写的权限。
Oracle软件的拥有者应该拥有包含数据库文件的目录,为了增加安全性,建议收回同组和其他组用户对这些文件的可读权限。
·网络安全性:
当处理网络安全性时,以下是额外要考虑的几个问题。
(1) 在网络上使用密码在网上的远端用户可以通过加密或不加密方式键入密码,当您用不加密方式键入密码时,您的密码很有可能被非法用户截获,导致破坏了系统的安全性。
(2) 网络上的DBA权限控制您可以通过下列两种方式对网络上的DBA权限进行控制:
A 设置成拒绝远程DBA访问;
B 通过orapwd给DBA设置特殊的密码。
·建立安全性策略:
系统安全性策略
(1)管理数据库用户:数据库用户是访问Oracle数据库信息的途径,因此,应该很好地维护管理数据库用户的安全性。按照数据库系统的大小和管理数据库用户所需的工作量,数据库安全性管理者可能只是拥有create,alter,或drop数据库用户的一个特殊用户,或者是拥有这些权限的一组用户,应注意的是,只有那些值得信任的个人才应该有管理数据库用户的权限。
(2) 用户身份确认:数据库用户可以通过操作系统,网络服务,或数据库进行身份确认,通过主机操作系统进行用户身份认证的优点有:
A 用户能更快,更方便地联入数据库;
B 通过操作系统对用户身份确认进行集中控制:如果操作系统与数据库用户信息一致,Oracle无须存储和管理用户名以及密码;
C 用户进入数据库和操作系统审计信息一致。
(3) 操作系统安全性
A 数据库管理员必须有create和delete文件的操作系统权限;
B 一般数据库用户不应该有create或delete与数据库相关文件的操作系统权限;
C 如果操作系统能为数据库用户分配角色,那么安全性管理者必须有修改操作系统帐户安全性区域的操作系统权限。
·数据的安全性策略:
数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。然而,如果数据很重要,那么应该有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。
·用户安全性策略:
(1) 一般用户的安全性:
A 密码的安全性:如果用户是通过数据库进行用户身份的确认,那么建议使用密码加密的方式与数据库进行连接。这种方式的设置方法如下:
在客户端的oracle.ini文件中设置ora_encrypt_login数为true;
在服务器端的initORACLE_SID.ora文件中设置dbling_encypt_login参数为true。
B 权限管理:对于那些用户很多,应用程序和数据对象很丰富的数据库,应充分利用“角色”这个机制所带的方便性对权限进行有效管理。对于复杂的系统环境,“角色”能大大地简化权限的理。
(2) 终端用户的安全性:
您必须针对终端用户制定安全性策略。例如,对于一个有很多用户的大规模数据库,安全性管理者可以决定用户组分类为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户角色,以及为用户分配相应的用户角色。当处理特殊的应用要求时,安全性管理者也必须明确地把一些特定的权限要求授予给用户。您可以使用“角色”对终端用户进行权限管理。
·数据库管理者安全性策略:
(1) 保护作为sys和system用户的连接:
当数据库创建好以后,立即更改有管理权限的sys和system用户的密码,防止非法用户访问数据库。当作为sys和system用户连入数据库后,用户有强大的权限用各种方式对数据库进行改动。
(2) 保护管理者与数据库的连接:
应该只有数据库管理者能用管理权限连入数据库,当以sysdba或startup,shutdown,和recover或数据库对象(例如create,drop,和delete等)进行没有任何限制的操作。
(3) 使用角色对管理者权限进行管理
·应用程序开发者的安全性策略:
(1) 应用程序开发者和他们的权限数据库应用程序开发者是唯一一类需要特殊权限组完成自己工作的数据库用户。开发者需要诸如create table,create,procedure等系统权限,然而,为了限制开发者对数据库的操作,只应该把一些特定的系统权限授予开发者。
(2) 应用程序开发者的环境:
A 程序开发者不应与终端用户竞争数据库资源;
B 用程序开发者不能损害数据库其他应用产品。
(3) free和controlled应用程序开发应用程序开发者有一下两种权限:
A free development
应用程序开发者允许创建新的模式对象,包括table,index,procedure,package等,它允许应用程序开发者开发独立于其他对象的应用程序。
B controlled development
应用程序开发者不允许创建新的模式对象。所有需要table,indes procedure等都由数据库管理者创建,它保证了数据库管理者能完全控制数据空间的使用以及访问数据库信息的途径。但有时应用程序开发者也需这两种权限的混和。
(4) 应用程序开发者的角色和权限数据库安全性管理者能创建角色来管理典型的应用程序开发者的权限要求。
A create系统权限常常授予给应用程序开发者,以至于他们能创建他的数据对象。
B 数据对象角色几乎不会授予给应用程序开发者使用的角色。
(5) 加强应用程序开发者的空间限制作为数据库安全性管理者,您应该特别地为每个应用程序开发者设置以下的一些限制:
A 开发者可以创建table或index的表空间;
B 在每一个表空间中,开发者所拥有的空间份额。应用程序管理者的安全在有许多数据库应用程序的数据库系统中,您可能需要一应用程序管理者,应用程序管理者应负责起以下的任务:
a)为每一个应用程序创建角色以及管理每一个应用程序的角色;
b)创建和管理数据库应用程序使用的数据对象;
c)需要的话,维护和更新应用程序代码和Oracle的存储过程和程序包。
我相信有了以上的这些建议,作为一个Oracle的管理者绝对可以做好他本职的工作了。可是,我们再怎么努力,都始终得面对这样一个现实,那就是Oracle毕竟是其他人开发的,而我们却在使用。所以,Oracle到底有多少漏洞--我想这个不是你和我所能解决的。不过既然作为一篇讨论Oracle数据安全的文章,我认为有必要把漏洞这一块也写进去,毕竟这也是“安全”必不可少的一部分。呵呵!
所以……
【Oracle漏洞举例】:
·Oracle9iAS Web Cache远程拒绝服务攻击漏洞(2002-10-28)
·Oracle 8.1.6的oidldapd中的漏洞
·Oracle 9iAS OracleJSP 泄漏JSP文件信息漏洞
·Linux ORACLE 8.1.5漏洞
sqlserver 增量备份及恢复
database右键选“所有任务”->"备份数据库"->选"数据库-差异"项。 用命令backup database .... to .... with DIFFERENTIAL ...
用vbs脚本,如何对sqlserver进行差异(增量)备份?
我的差异备份代码如下(完全备份已经做好).但是执行时,在对应的目录下找不到所备份文件.
strConn="Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" & Reg_dbname & ";Data Source=" & Reg_oraserver
Set dbconn=WScript.CreateObject("ADODB.CONNECTION")
dbconn.Open strConn,Reg_user_name,Reg_user_password
strSql="BACKUP DATABASE "& Reg_dbname &" TO disk=" & Reg_BackPath &"\"&Date&Reg_dbname & ".bak with DIFFERENTIAL"
MsgBox strSql
dbconn.execute strSql
Set dbconn=nothing
包括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查备份集、修复数据库等
(一)挂起操作
在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:
到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
删除PendingFileRenameOperations
(二)收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
(三)压缩数据库
dbcc shrinkdatabase(dbname)
(四)转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
(五)检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
(六)修复数据库
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
--CHECKDB 有3个参数:
--REPAIR_ALLOW_DATA_LOSS
-- 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。
--REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
--REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
--DBCC CHECKDB('dvbbs') with NO_INFOMSGS,PHYSICAL_ONLY
SQL SERVER日志清除的两种方法
在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法……
方法一
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
删除数据库中重复数据的几个方法
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
更改数据库中表的所属用户的两个方法
大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……
--更改某个表
exec sp_changeobjectowner 'tablename','dbo'
--存储更改全部表
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@OldOwner as NVARCHAR(128),
@NewOwner as NVARCHAR(128)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO
SQL SERVER中直接循环写入数据
没什么好说的了,大家自己看,有时候有点用处
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
无数据库日志文件恢复数据库方法两则
数据库日志文件的误删或别的原因引起数据库日志的损坏
方法一
1.新建一个同名的数据库
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go
方法二
事情的起因
昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB,于是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的。我真是不知道我那时候是怎么想的?!
这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储过程。真希望这只是一场噩梦!
没有效果的恢复步骤
附加数据库
_Rambo讲过被删除日志文件中不存在活动日志时,可以这么做来恢复:
1,分离被置疑的数据库,可以使用sp_detach_db
2,附加数据库,可以使用sp_attach_single_file_db
但是,很遗憾,执行之后,SQL Server质疑数据文件和日志文件不符,所以无法附加数据库数据文件。
DTS数据导出
不行,无法读取XXX数据库,DTS Wizard报告说“初始化上下文发生错误”。
紧急模式
怡红公子讲过没有日志用于恢复时,可以这么做:
1,把数据库设置为emergency mode
2,重新建立一个log文件
3,把SQL Server 重新启动一下
4,把应用数据库设置成单用户模式
5,做DBCC CHECKDB
6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉
我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库XXX,然后停掉SQL服务,把原来的数据文件再覆盖回来。之后,按照怡红公子的步骤走。
但是,也很遗憾,除了第2步之外,其他步骤执行非常成功。可惜,重启SQL Server之后,这个应用数据库仍然是置疑!
不过,让我欣慰的是,这么做之后,倒是能够Select数据了,让我大出一口气。只不过,组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 'XXX' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”
最终成功恢复的全部步骤
设置数据库为紧急模式
停掉SQL Server服务;
把应用数据库的数据文件XXX_Data.mdf移走;
重新建立一个同名的数据库XXX;
停掉SQL服务;
把原来的数据文件再覆盖回来;
运行以下语句,把该数据库设置为紧急模式;
运行“Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go”
执行结果:
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
接着运行“update sysdatabases set status = 32768 where name = 'XXX'”
执行结果:
(所影响的行数为 1 行)
重启SQL Server服务;
运行以下语句,把应用数据库设置为Single User模式;
运行“sp_dboption 'XXX', 'single user', 'true'”
执行结果:
命令已成功完成。
ü 做DBCC CHECKDB;
运行“DBCC CHECKDB('XXX')”
执行结果:
'XXX' 的 DBCC 结果。
'sysobjects' 的 DBCC 结果。
对象 'sysobjects' 有 273 行,这些行位于 5 页中。
'sysindexes' 的 DBCC 结果。
对象 'sysindexes' 有 202 行,这些行位于 7 页中。
'syscolumns' 的 DBCC 结果。
………
ü 运行以下语句把系统表的修改选项关掉;
运行“sp_resetstatus "XXX"
go
sp_configure 'allow updates', 0
reconfigure with override
Go”
执行结果:
在 sysdatabases 中更新数据库 'XXX' 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),
没有更新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 'allow updates' 从 1 改为 0。请运行 RECONFIGURE 语句以安装。
重新建立另外一个数据库XXX.Lost;
DTS导出向导
运行DTS导出向导;
复制源选择EmergencyMode的数据库XXX,导入到XXX.Lost;
选择“在SQL Server数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没有数据,也没有视图和存储过程,而且DTS向导最后报告复制失败;
所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录;
于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个;
视图和存储过程是执行SQL语句添加的。
维护Sql Server中表的索引
在使用和创建数据库索引中经常会碰到一些问题,在这里可以采用一些另类的方法解决…
--第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100%
declare @table_id int
set @table_id=object_id('表名')
dbcc showcontig(@table_id)
--第二步:重构表索引
dbcc dbreindex('表名',pk_索引名,100)
--重做第一步,如发现扫描密度/Scan Density还是小于100%则重构表的所有索引
--杨铮:并不一定能达100%。
dbcc dbreindex('表名',',100)
SQL Server补丁安装常见问题
谁碰到问题就看看咯:)
一、补丁安装过程中常见问题
如果在安装补丁的时候遇到如下类似错误:
1、安装过程中出现“以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动”,请按照下面步骤解决:
a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤
b、在开始->运行中输入regedit
c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置
d、选择文件->倒出,保存
e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认
f、重启安装,问题解决
如果还有同样问题,请检查其它注册表中是否有该值存在,如有请删掉。
2、在安装SQL Server SP3,有时候会出现:无论用windows认证还是混和认证,都出现密码错误的情况,这时查看临时目录下的sqlsp.out,会发现以下描述:
[TCP/IP Sockets]Specified SQL server not found.
[TCP/IP Sockets]ConnectionOpen (Connect()).
其实这是SQL Server SP3的一个小bug,在安装sp3的时候,没有监听tcp/ip端口,可以按照以下步骤进行:
1、打开SQL server客户器网络实用工具和服务器网络工具,确保启用的协议中包含name pipe,并且位置在第一位.
2、确保[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
"DSQUERY"="DBNETLIB".
如果没有,请自己建立
3、停止mssql.
4、进行安装.
这样就可以进行正确安装了。
二、SQL Server补丁版本的检查
SQL Server的补丁版本检查不如Windows 补丁版本检查直接,一个系统管理员,如果不了解SQL Server版本对应的补丁号,可能也会遇到一点麻烦,因此在这说明一下,通过这样的办法判别机器是安全的办法,不会对系统产生任何影响。
1、用Isql或者SQL查询分析器登录到SQL Server,如果是用Isql,请在cmd窗口输入isql -U sa,然后输入密码,进入;如果是用SQL查询分析器,请从程序中启动,输入sa和密码(也可以用windows验证)。
2、在ISQL中输入:
Select @@Version;
go
或者SQL查询分析器中输入(其实如果不想输入,只要打开帮助的关于就可以了
)
Select @@Version;
然后按执行;
这时会返回SQL的版本信息,如下:
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 3)
其中的8.00.760就是SQL Server的版本和补丁号。对应关系如下:
8.00.194 -——————SQL Server 2000 RTM
8.00.384 -——————(SP1)
8.00.534 -——————(SP2)
8.00.760 -——————(SP3)
这样我们就能看到SQL Server的正确版本和补丁号了。
我们也可以用xp_msver看到更详细的信息
Sql Server数据库的备份和恢复措施
最常用的操作,新手们看看……
一、备份数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录
3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库
4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份
二、还原数据库
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择恢复数据库
4、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮
5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_data.mdf,现在的数据库是forum,就改成forum_data.mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是*_log.ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\bbs_data.mdf或者d:\sqldata\bbs_log.ldf),否则恢复将报错
6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL操作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复
三、收缩数据库
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
四、设定每日自动备份数据库
强烈建议有条件的用户进行此操作!
1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器
2、然后点上面菜单中的工具-->选择数据库维护计划器
3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择
4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定
5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:\databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名一般都是bak就用默认的
6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成
7、完成后系统很可能会提示Sql Server Agent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择Sql Server Agent,然后点击运行箭头,选上下方的当启动OS时自动启动服务
8、这个时候数据库计划已经成功的运行了,他将按照您上面的设置进行自动备份
修改计划:
1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划-->打开后可看到你设定的计划,可以进行修改或者删除操作
五、数据的转移(新建数据库或转移服务器)
一般情况下,最好使用备份和还原操作来进行转移数据,在特殊情况下,可以用导入导出的方式进行转移,这里介绍的就是导入导出方式,导入导出方式转移数据一个作用就是可以在收缩数据库无效的情况下用来减小(收缩)数据库的大小,本操作默认为您对SQL的操作有一定的了解,如果对其中的部分操作不理解,可以咨询动网相关人员或者查询网上资料
1、将原数据库的所有表、存储过程导出成一个SQL文件,导出的时候注意在选项中选择编写索引脚本和编写主键、外键、默认值和检查约束脚本选项
2、新建数据库,对新建数据库执行第一步中所建立的SQL文件
3、用SQL的导入导出方式,对新数据库导入原数据库中的所有表内容
利用数据库日志恢复数据到时间点的操作
由于不正常的数据丢失,而又不想使用备份数据还原,只要原来有备份且当前日志保存完好,可以采用这个方法试试,说不定可挽回损失……
1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进
进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
backup log dbName to disk='fileName'
2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢
复
restore database dbName from disk='fileName' with norecovery
3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻
restore log dbName from disk='fileName'
with stopat='date_time'
以上这些操作都可以在SQL SERVER企业管理器里完成,难度不大。。。
当然,如果误操作是一些不记日志的操作比如truncate table,select into等操作,那么是无法利
用上述方法来恢复数据的...
SQL Server2000数据库文件损坏时如何恢复
出现这样的问题是比较严重的了,能否修复只能看你的运气……
SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,仅适用于非master,msdb的数据库。
说明如下:
1 建一个测试数据库test(数据库类型为完全)
2 建一个表,插入点记录
create table a(c1 varchar(2))
go
insert into a values('aa')
go
insert into a values('bb')
go
3 作完全备份,到文件test_1.bak
4 在作一点修改
insert into a values('cc')
go
create table b(c1 int)
go
insert into b values(1)
go
insert into b values(2)
go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容,相当于数据库遭到致命的损坏。
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。
8 运行isql -SLocalhost -Usa -P
1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP
est_2.bak' WITH NO_TRUNCATE
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。
9 进行恢复最老的完全备份
1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQL
BACKUP est_1.bak' WITH NORECOVERY
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。
10 恢复最近的日志
1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKU
P est_2.bak' WITH RECOVERY
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。
存储过程编写经验和优化措施
经验之谈,看看……
一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。
二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。
三、内容:
1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验。
2、开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查。
3、高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点:
a)SQL的使用规范:
i. 尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。
ii. 尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据到临时表中,然后再做连接。
iii. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该改写;如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。
iv. 注意where字句写法,必须考虑语句顺序,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能的让字段顺序与索引顺序相一致,范围从大到小。
v. 不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
vi. 尽量使用exists代替select count(1)来判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。
vii. 尽量使用“>=”,不要使用“>”。
viii. 注意一些or子句和union子句之间的替换
ix. 注意表之间连接的数据类型,避免不同类型数据之间的连接。
x. 注意存储过程中参数和数据类型的关系。
xi. 注意insert、update操作的数据量,防止与其他应用冲突。如果数据量超过200个数据页面(400k),那么系统将会进行锁升级,页级锁会升级成表级锁。
b)索引的使用规范:
i. 索引的创建要与应用结合考虑,建议大的OLTP表不要超过6个索引。
ii. 尽可能的使用索引字段作为查询条件,尤其是聚簇索引,必要时可以通过index index_name来强制指定索引
iii. 避免对大表查询时进行table scan,必要时考虑新建索引。
iv. 在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。
v. 要注意索引的维护,周期性重建索引,重新编译存储过程。
c)tempdb的使用规范:
i. 尽量避免使用distinct、order by、group by、having、join、cumpute,因为这些语句会加重tempdb的负担。
ii. 避免频繁创建和删除临时表,减少系统表资源的消耗。
iii. 在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert。
iv. 如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的索引。
v. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。
vi. 慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作会在一条语句中多次使用tempdb的系统表。
d)合理的算法使用:
根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。具体可用ASE调优命令:set statistics io on, set statistics time on , set showplan on 等
ORACLE数据库备份与恢复详解


$A: 现在先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。理论基础:Oracle提供的Export和Import具有三种不同的操作方式(就是备份的数据输出(入)类型):
1,表方式(T) 可以将指定的表导出备份;
2,全库方式(Full) 将数据库中的所有对象导出;
3,用户方式(U) 可以将指定的用户相应的所有数据对象导出;
*在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别:
1,完全增量导出(Complete Export) 这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=20041125.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有明确含义的字符命名)
2,增量型增量导出(Incremental Export) 这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental file=20041125.dmp
3,累积型增量导出(Cumulate Export) 这种方式的话,是导出自上次完全增量导出后数据库变化的信息。exp system/manager inctype=cumulative file=20041125.dmp
通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建议写好计划说明),一般,我们采用普遍认可的下面的方式进行每天的增量备份:
Mon: 完全备份(A)
Tue: 增量导出(B)
Wed:增量导出(C)
Thu: 增量导出(D)
Fri: 累计导出(E)
Sat: 增量导出(F)
Sun: 增量导出(G)
这样,我们可以保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构;
第二步:创建一个足够大的附加回滚。
第三步:完全增量导入A:
imp system/manager inctype=RESTORE FULL=y FILE=A
第四步:累计增量导入E:
imp system/manager inctype=RESTORE FULL=Y FILE=E
第五步:最近增量导入F:
imp system/manager inctype=RESTORE FULL=Y FILE=F
通常情况下,DBA所要做的导入导出备份就算完成,只要科学的按照规律作出备份,就可以将数据的损失降低到最小,提供更可靠的服务。另外,DBA最好对每次的备份做一个比较详细的说明文档,使得数据库的恢复更加可靠。
$B 物理备份之冷备份(条件-NonArchiveLog):
当数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数据相关文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷贝回原来的位置,这样,就完成了一次快捷安全等数据转移。由于是在数据库不提供服务的关闭状态,所以称为冷备份。冷备份具有很多优良特性,比如上面图中我们提到的,快速,方便,以及高效。一次完整的冷备份步骤应该是:
1,首先关闭数据库(shutdown normal)
2,拷贝相关文件到安全区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))
3,重新启动数据库(startup)
以上的步骤我们可以用一个脚本来完成操作:
su – oracle <
connect / as sysdba
shutdown immediate;
!cp 文件 备份位置(所有的日志、数据、控制及参数文件);
startup;
exit;
这样,我们就完成了一次冷备份,请确定你对这些相应的目录(包括写入的目标文件夹)有相应的权限。
恢复的时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了,当然也可以用脚本来完成。
$C 物理备份之热备份:(条件-ArchiveLog)
当我们需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是下面讨论的热备份。热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤如下:
1,通过视图v$database,查看数据库是否在Archive模式下: SQL> select log_mode from v$database;
如果不是Archive模式
则设定数据库运行于归档模式下:SQL>shutdown immediate
SQL>startup mount
SQL> alter database archivelog;
SQL> alter database open;
如果Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档,如:
正常shutdown数据库,在参数文件中init.ora中加入如下参数
SQL>shutdown immediate
修改init.ora:
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置可以自己定义)
SQL>startup
然后,重新启动数据库,此时Oracle数据库将以自动归档的方式工作在Archive模式下。其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不同的硬盘,一方面减少磁盘I/O竞争,另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢失。归档路径也可以直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件和性能等因素。
注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。另外,为创建一个有效的备份,当数据库在创建时,必须履行一个全数据库的冷备份,就是说数据库需要运行在归档方式,然后正常关闭数据库,备份所有的数据库组成文件。这一备份是整个备份的基础,因为该备份提供了一个所有数据库文件的拷贝。(体现了冷备份与热备份的合作关系,以及强大的能力)
2,备份表空间文件:
a,首先,修改表空间文件为备份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;
b,然后,拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;
c,最后,将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;
3,对归档日志文件的备份:
停止归档进程-->备份归档日志文件-->启动归档进程
如果日志文档比较多,我们将它们写入一个文件成为一个恢复的参考:$ files `ls <归档文件路径>/arch*.dbf`;export files
4,备份控制文件:
SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;
当然,我们也可以将上面的东东写为一个脚本,在需要的时候执行就可以了:
脚本范例:
su – oracle <
connect / as sysdba
ALTER TABLESPACE tablespace_name BEGIN BACKUP
!CP tablespace_name D_PATH
ALTER TABLESPACE tablespace_name END BACKUP
alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;
!files `ls <归档文件路径>/arch*.dbf`;export files
热备份的恢复,对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份。归档备份在理论上可以无数据丢失,但是对于硬件以及操作人员的要求都比较高。在我们使用归档方式备份的时候,全库物理备份也是非常重要的。归档方式下数据库的恢复要求从全备份到失败点所有的日志都要完好无缺。
恢复步骤:LOG_ARCHIVE_DEST_1
shutdown数据库。
将全备份的数据文件放到原来系统的目录中。
将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
利用sqlplus登陆到空实例。(connect / as sysdba)
然后 startup mount
set autorecovery on
recover database;
alter database open;
1644年吴三桂的命运和悲剧
历史上,明末清初的吴梅村一句“恸哭三军皆缟素,冲冠一怒为红颜”,似乎为这段历史和其主人公之一吴三桂的抉择动因定下了永恒的基调。事实是否真如此?然而,纵观历史长河,考量当时的历史背景,吴三桂绝不是一个脸谱化人物,历史也绝非因红颜而改变那么简单。
吴三桂能够成为影响历史的人物,不得不追溯他的发迹史。其父吴襄为明将,而吴三桂在十六七岁时就应试武功并中得武举,《庭闻录》里说他“自少为边将”。他的教生陈邦选也说他“少年悬印”。史书说吴三桂勤于读书习武,“终日无惰容”。他年少读《汉书》,被“仕宦当作执金吾,取妻当得阴丽华”这两句话深深打动。不过李治亭认为,吴三桂能够迅速升迁,乃由于他家与关东豪族祖大寿一家有亲戚关系。
吴三桂的家庭背景和非凡天资,终于让他在崇祯五年(1632年)20岁就荣升为游击将军。虽然明清正史从无记载,但是《庭闻录》、《吴三桂记略》和《平吴录》都曾记载吴三桂“少年救父”的“忠孝”事迹,说吴三桂在数万清军的围困中,率数十家骑出城成功救父并受伤。李治亭说,如果这一历史属实,那应该是在崇祯三年,皇太极第一次率领大军绕道蒙古入关,祖大寿应朝廷之命支援,在建昌(今天辽宁凌源)与皇太极部相遇。当时吴三桂父亲吴襄率骑兵侦察被清军围困,吴三桂此举可以说无愧“忠孝”二字。
自努尔哈赤起兵反明、高迎祥、李自成起兵举义后,明朝的精兵良将已经在长期战争中丧失殆尽,最优秀的军事人才在崇祯皇帝的猜忌和文臣党争中也逐一凋零。然而吴三桂却是一个例外。崇祯四年(1631年),吴襄在皇太极于8月发动的大凌河之役中,在增援大凌河战斗中因逃跑而导致全军溃败,遂被削职,但吴三桂仍然被朝廷留在军中供职。《明清史料》记载,崇祯十二年,吴三桂在27岁时被任命为宁远团练总兵,至此效力朝廷更倍于前。在次年五月与清兵在杏山的遭遇战中,吴三桂一得到警报,立即出动3000人马“长驱直过杏山”,“与贼血战”。最后他奏报战斗“大获全胜”。
《明史》这样记载了此后的松山、杏山战斗中,吴三桂部“胆勇倍奋,士气益鼓”,“凡三战,松山、杏山皆捷”。在锦州被围之际,吴三桂在众运粮官“惊心奴儆”的情况下,亲自“督运米车”,成功躲过清军的监视,在春节期间将粮食运入锦州。《明档》记载他自当总兵后“忠可炙日,每逢大敌,身先士卒,绞杀虏级独多”。
忠孝和背叛
然而在决定明清战争命运的松山决战中,吴三桂前后表现却判若两人。在初战中,洪承畴在小胜后上报朝廷的奏章中称赞:“吴三桂英略独擅,两年来,以廉勇振饬辽兵,战气倍尝,此番斩获功多。”然而在此后决战中,他却未能和主帅兼老师的洪承畴同命运,反而擅自撤逃。尽管他布置有方,成为战争中损失最小的一部,以至清太宗赞叹他:“吴三桂果是汉子!得此人归降,天下唾手可得矣。”然而无论如何,一向被明朝视为“敢战”的他在决战中逃之夭夭,李治亭认为实在“难以解释,而最终他竟没有受到朝廷处罚,也同样令人意外”。
吴三桂父亲吴襄说,他们父子有家丁三千人。在决战中自率部署逃跑,因此李治亭认为,惟一可能解释,是吴三桂为保存自身性命和自家的军事实力。他认为,“以祖大寿和吴三桂为代表的关外豪族,凭借自身军事实力,才成为明清朝廷都全力争取的力量”。这也是吴三桂几乎从来没受到猜疑极重的崇祯惩罚的原因。李自成东渡黄河向北京进军后几天,崇祯就曾在德政殿召集大臣商讨调吴三桂入关事宜。其时崇祯征召全国兵马“勤王”,几乎无人响应,吴三桂的关宁铁骑,是朝廷惟一能够调动的机动力量。
正当崇祯皇帝和大臣们为了避免承担失地的责任相互推诿时,吏科都给事中吴麟征不畏崇祯可能“事定以‘弃地’杀我辈”的危险,强调了将吴三桂撤离宁远的重要性:“……吴三桂勇将益收用,(不可)委之敌人。”此后他更再次上书,指出,“边臣不可令有惧心,尤不可令有死心。臣读三桂疏,言切情微,若有格格不忍言之意。臣知其有惧心……”其实当时吴三桂给崇祯的上奏,已经显示他主张从宁远撤退的意思。
然而受封“平西伯”的吴三桂接到勤王的圣旨,从驻守的宁远(今天辽宁兴城)到山海关一百二十公里距离,竟走了八天。此前金军入侵北京周边时,镇守宁远的袁崇焕为解金兵之围,曾以精锐昼夜兼程赶赴北京。而此次吴三桂却“迁延不急行,简阅步骑”,然后才亲率精兵殿后,这其中有没有政治上的权衡,后人已不可考。
事实是,当吴三桂迟迟抵达河北丰润,崇祯皇帝已于前日自缢于煤山。《明季北略》记载,吴三桂于是感到再去勤王已没有实际意义,马上拨转马头会师山海关。在崇祯下令吴三桂入关前,为反驳吴三桂有降清之意的谣言,吴襄曾很肯定地说:“三桂忠孝,必不至此。”]
从降李到乞兵的剧变
明人看重“求忠臣于孝子之门”,在与清军抗战的最前线宁远,城内至今保存着祖氏兄弟在明帝批准下修建的雄伟石坊。上面“忠贞胆智”、“登坛骏烈”所赞颂的,正是在抗清前线与清军死战数十年,被俘降清,之后反清投明,最后再次在绝境中无可奈何就缚于清军的祖氏兄弟。与祖氏兄弟相比,吴三桂显示出更大的矛盾性。他曾冒死杀入清阵拯救父亲
对李自成的招降,吴三桂曾高姿态表示:“都城失守,先帝宾天,三桂受国厚恩,益以死报国。”但他最后故意要问手下将领,“然非藉将士力不能以破敌,今将若之何?”在所有人都不敢表态的情况下,他不得不逼问下属,“今闯王使至,其斩之乎,抑迎之乎?”当诸将在他带着暗示和压力的迫问下终于回答“今日死生惟将军命”时,吴三桂终于决定“报使于自成,卷甲入朝”。这和崇祯不愿承担失地责任何其相似。
吴三桂投降李自成,但还是全军缟素为崇祯举哀。他的这一举动又补给自己一笔。吴三桂在投降李自成后,按说已经进行了一轮政治抉择。但戏剧性的是,又出现了刘忠敏抢劫陈圆圆的变数。李治亭认为,陈圆圆对于吴三桂决策的改变,同样不容被历史忽视。在将山海关交付李自成手下后前往北京途中,吴三桂得知父亲吴襄被捕,反应起初是并不在意:“此胁我降尔,何患!”然而当得知爱妾陈圆圆被刘宗敏掠走后,终于咬牙切齿,“大丈夫不能保一女子,何面见人耶!”当下立刻反军攻克山海关,并复信吴襄,声称“父既不能为忠臣,儿亦安能为孝子乎?”
李治亭认为,吴梅村讽刺吴三桂为了一个女人而投降清朝,实在是忽视了对待一个女人态度的背后,是面对两大阵营的政策问题。“反过来说,刘宗敏为了占有一个女人,不惜拷掠吴襄,而完全不顾及吴三桂,这不是自坏大事吗?陈圆圆与吴三桂对于农民军孰轻孰重,一目了然。所以刘宗敏占有圆圆,不能说只是一个女人的问题,恰恰相反,是一个重大策略的原则问题。”
到底是吴三桂因一个女人投降了清朝,还是李自成、刘宗敏因一个女人而失去了到手的政权,谁自种了更大的悲剧和遗憾,实在一目了然。此前吴三桂多次受清朝劝降却未同意,而吴三桂因陈圆圆反李,有人提出“借北兵(清兵)进关,共歼‘李贼’”。《平西王吴三桂传》记载吴三桂在清兵统一全国后对当时决策的回忆:“正值闯贼构乱,召卫神京,计不能两全,乃乞师本朝(清朝),以雪君父大仇。”然而事实上,他未能全力救君,也放弃李自成的和解而导致父亲和全家被杀,最终一心复仇,终与陈圆圆团圆。
从乞兵到降清的转折
1644年4月15日,清摄政王多尔衮接到吴三桂的书信,信中请求“乞念亡国孤臣忠义之言,速选精兵,直入中胁、西胁,三桂自率所部,合兵以抵都门,灭流寇于宫廷,示大义于中国,则我朝之报北朝者,岂惟财帛?将裂土以酬,不敢食言。”信中,吴三桂仍以“亡国孤臣”名义,恳请清朝出兵助他复仇,再图明朝“中兴”。吴三桂在信中称清为北朝,自称南朝,俨然以明朝代言人的身份与清朝商讨,颇似申包胥借秦兵复楚。晚明曲坛被称为“传情家第一手”的剧作家和戏曲理论家孟称舜曾创作《二胥记》,借春秋时伍子胥因父兄遭楚平王杀害而借吴兵灭楚复仇,以及申包胥忠君爱国借秦兵复楚的故事,歌颂忠孝真情。当时有文化名士夏允彝在《幸存录》中称,吴三桂借清兵,犹如“包胥复楚”,并称吴三桂“借东夷,而东夷遂吞我中华,岂三桂罪哉?所遭不幸尔!”
在与清军结盟后,吴三桂在多尔衮要求下,为“乞师”不惜“剃发无恨”,成为明朝最后一个投降清的重要将领,也是清入关时第一个投降的将领。李治亭认为,吴三桂在明亡之初的确并无降清念头。事实上,多尔衮收到吴三桂书信后,立刻复书,再次以清朝一贯对吴三桂的招降态度表示:“今伯若率众来归,必封以故土,晋为藩王,一则国仇得报,一则身家可保,世世子孙长享福贵,如河山之永也。”吴三桂在回信中仍未对是否“来归”有任何明确表示,只是模糊表示,若得民心与财土,“何事不成”。
史料佐证,明亡后数年内,虽然也有亲历甲申之变的杨士聪在《甲申核真略》中斥责吴三桂“西不能讨贼,东不能守关,有何功言?”但《谀闻续笔》曾记载吴三桂请求多尔衮“毋伤百姓,毋犯陵寝。访东宫(明太子)及二王所在,立之南京,黄河为界,通南北好”。显示出他复明的确存在真诚性。而此后他在讨清的檄文中指责多尔衮“逆天背盟,乘我内虚,雄居燕都,窃我先朝神器”,清朝官方对此不敢正面回答,更显示吴三桂当年与清朝的盟约并非子虚乌有。然而在山海关之战击败李自成后,多尔衮以顺治皇帝名义封吴三桂为平西王,并令吴三桂以下各将领和吴军全部剃发,这标志着吴三桂已经彻底投降清朝。身为明将多年不接受清朝招降的吴三桂,于是迅速完成了从降李到反李,从借兵到降清的复杂过程。
弑君:自以为智,而适成其愚
吴三桂被人唾弃所谓“反复无常,见利忘义”,更多来自于明亡后他的作为。
吴三桂消灭李自成起义军后,南明朝廷不知他已经投降清朝,有人甚至称赞他“克复
然而吴三桂最终在对南明政权的追剿中却穷追不舍。清朝官书《清世祖实录》和《清史稿》等诸多文献都记载了吴三桂在顺治十七年四月二日上奏顺治皇帝,要求消灭永历帝的奏章,并提出所谓不灭永历,有所谓“三患二难”。当年“终身不忍一矢相加遗”的话此时早已被他抛在脑后。征途中,吴三桂收到朱元璋第十三代孙、永历皇帝的亲笔信,指责他“抑或封王锡爵之后,犹欲歼仆以邀功”,“岂天覆地载之中,独不容仆之一人乎?”永历帝那封信里的话,最终竟成了吴三桂命运的预言:"将军自以为智,而适成其愚;自以为厚,而反觉其薄”,“奕祀而后,史有传,书有载,当以将军为何如人乎?”
吴三桂最终不考虑永历质问他将来如何做人,在抓捕永历后,和吴三桂在一起的内大臣、满将定西将军爱星阿提出将永历献俘北京,让朝廷处置,而吴三桂为了确立自己的不世之功,力主朝廷将永历就地处决。四个月后,清朝廷批复到达云南:“仁皇帝命恩免献俘”,“着将永历正法”。在如何处决永历的过程中,吴三桂显现出对前恩主的残忍无情。爱星阿等清将认为,“永历尝为中国之君,今若斩首,未免太惨,仍当赐以自尽,始为得体”。但吴三桂决意“骈(斩)首”。最后仅因为安南将军、满将卓罗极力反对,以永历“也曾当过中国皇帝,应当全其尸首,何必用斩!”吴三桂这才勉强同意。
削藩和叛清:反复无常的悲剧
后来的乾隆皇帝对吴三桂极力要求入缅甸消灭永历皇帝的目的评价说,吴三桂坚决要求消灭永历皇帝,无论是招降缅甸、攻击李定国还是招降白文选,都是出自他的策划。但是他的策划哪里是为我们国家考虑!……“彼之为宣力,皆所以自为也!”
“三藩之乱”平定后,有人在云南楚雄题诗咏谈,所谓“擒人即是人擒路”。在吴三桂等三藩日益坐大时,康熙皇帝却开始削藩。这从根本上伤害了为清朝卖命一生的吴三桂及其势力的利益。对于削藩的方式,年轻的康熙皇帝坚持认为:“吴、尚等蓄彼凶谋已久,今若不早除之,使其养痈成患,何以善后?况其势已成,撤亦反,不撤亦反,不若先发制之可也。”
康熙将尚可喜当作凶谋毫无根据,实际上,尚可喜至死未背叛清朝,而康熙怀疑吴三桂早有异心也缺乏根据。吴三桂虽然看重自身利益,但反叛的原因很大程度上还是由于满族统治者对于拥有实力的汉族异姓王有畏惧心理,并由于康熙撤藩措施不当而直接导致。《平滇始末》记载,吴三桂侄子和女婿对康熙撤藩的直接反应是,如果顺从朝廷撤藩的命令,“就迁于辽东,他日朝廷吹毛求疵,我们只能引颈受戮!不如举兵,父子可保全!”可见吴三桂再次反叛清朝,并非完全是野心使然,更多乃是对康熙撤藩政策和手段的绝望。
1681年吴三桂叛军被全部肃清后,吴三桂的子孙后代最终被彻底杀光。在战争中,康熙为了分化瓦解吴三桂盟军,曾经多次以诏书形式明确表示赦免一切归顺的前吴三桂部下和盟友。但在吴三桂实力被彻底消灭后,这些人中的骨干又被康熙罗织各种罪名清除。在李治亭的采访调查中,今天吴三桂部下的后裔仍然说:祖上早已传话,当年凡是副将以上的将领都被杀头。这与清史的官方记载完全吻合。
简单将吴三桂称为“逆贼”和“逆臣”的说法,仅仅是康熙以来清朝给吴三桂作出的结论。无论是生前谋反的吴三桂还是寿终正寝的洪承畴,在天下平定、开始大力宣扬“臣节”的清朝中叶,所有曾经备极哀荣的前明降臣大多被清朝列入“贰臣传”。“吴三桂这个人,因为反复无常,见利忘义而备受人们谴责。”
历史人物是需要在整个历史的长河中考量的,不能单凭某个历史时期的说法而定。
选择眼影要看肤色