2009年5月14日星期四

Windows性能计数器的对象名显示为数字的解决办法



打开一台windows 2003 server的Performance count,发现所有的计数器库值都变成了数值,找到了一篇微软的KB,虽然说“本文中的信息仅适用于英语版 Windows 2000”,但在文章后的适用中包括了windows 2003 server。

照着在英文版windows 2003 server执行了一遍,问题解决

微软KB链接300956

2009年5月13日星期三

SQL Server 2008 系统视图打印版

原始素材来自:微软网站
这里可以下载这幅图的pdf格式文档



本来打算传原图供大家下载后利用大图片打印工具在普通打印机机上打印出来.

自己实践了一下,发现下载的图片已经被压缩了.

Google架构学习

Google架构学习

关键字: google
原文:Google Architecture
摘自:javaeye
Google是伸缩性的王者。Google一直的目标就是构建高性能高伸缩性的基础组织来支持它们的产品。

平台
Linux
大量语言:Python,Java,C++

状态
在2006年大约有450,000台廉价服务器
在2005年Google索引了80亿Web页面,现在没有人知道数目
目前在Google有超过200个GFS集群。一个集群可以有1000或者甚至5000台机器。成千上万的机器从运行着5000000000000000字节存储的GFS集群获取数据,集群总的读写吞吐量可以达到每秒40兆字节
目前在Google有6000个MapReduce程序,而且每个月都写成百个新程序
BigTable伸缩存储几十亿的URL,几百千千兆的卫星图片和几亿用户的参数选择

堆栈
Google形象化它们的基础组织为三层架构:
1,产品:搜索,广告,email,地图,视频,聊天,博客
2,分布式系统基础组织:GFS,MapReduce和BigTable
3,计算平台:一群不同的数据中心里的机器
4,确保公司里的人们部署起来开销很小
5,花费更多的钱在避免丢失日志数据的硬件上,其他类型的数据则花费较少

可信赖的存储机制GFS(Google File System)
1,可信赖的伸缩性存储是任何程序的核心需求。GFS就是Google的核心存储平台
2,Google File System - 大型分布式结构化日志文件系统,Google在里面扔了大量的数据
3,为什么构建GFS而不是利用已有的东西?因为可以自己控制一切并且这个平台与别的不一样,Google需要:
-跨数据中心的高可靠性
-成千上万的网络节点的伸缩性
-大读写带宽的需求
-支持大块的数据,可能为上千兆字节
-高效的跨节点操作分发来减少瓶颈
4,系统有Master和Chunk服务器
-Master服务器在不同的数据文件里保持元数据。数据以64MB为单位存储在文件系统中。客户端与Master服务器交流来在文件上做元数据操作并且找到包含用户需要数据的那些Chunk服务器
-Chunk服务器在硬盘上存储实际数据。每个Chunk服务器跨越3个不同的Chunk服务器备份以创建冗余来避免服务器崩溃。一旦被Master服务器指明,客户端程序就会直接从Chunk服务器读取文件
6,一个上线的新程序可以使用已有的GFS集群或者可以制作自己的GFS集群
7,关键点在于有足够的基础组织来让人们对自己的程序有所选择,GFS可以调整来适应个别程序的需求

使用MapReduce来处理数据
1,现在你已经有了一个很好的存储系统,你该怎样处理如此多的数据呢?比如你有许多TB的数据存储在1000台机器上。数据库不能伸缩或者伸缩到这种级别花费极大,这就是MapReduce出现的原因
2,MapReduce是一个处理和生成大量数据集的编程模型和相关实现。用户指定一个map方法来处理一个键/值对来生成一个中间的键/值对,还有一个reduce方法来合并所有关联到同样的中间键的中间值。许多真实世界的任务都可以使用这种模型来表现。以这种风格来写的程序会自动并行的在一个大量机器的集群里运行。运行时系统照顾输入数据划分、程序在机器集之间执行的调度、机器失败处理和必需的内部机器交流等细节。这允许程序员没有多少并行和分布式系统的经验就可以很容易使用一个大型分布式系统资源
3,为什么使用MapReduce?
-跨越大量机器分割任务的好方式
-处理机器失败
-可以与不同类型的程序工作,例如搜索和广告。几乎任何程序都有map和reduce类型的操作。你可以预先计算有用的数据、查询字数统计、对TB的数据排序等等
4,MapReduce系统有三种不同类型的服务器
-Master服务器分配用户任务到Map和Reduce服务器。它也跟踪任务的状态
-Map服务器接收用户输入并在其基础上处理map操作。结果写入中间文件
-Reduce服务器接收Map服务器产生的中间文件并在其基础上处理reduce操作
5,例如,你想在所有Web页面里的字数。你将存储在GFS里的所有页面抛入MapReduce。这将在成千上万台机器上同时进行并且所有的调整、工作调度、失败处理和数据传输将自动完成
-步骤类似于:GFS -> Map -> Shuffle -> Reduction -> Store Results back into GFS
-在MapReduce里一个map操作将一些数据映射到另一个中,产生一个键值对,在我们的例子里就是字和字数
-Shuffling操作聚集键类型
-Reduction操作计算所有键值对的综合并产生最终的结果
6,Google索引操作管道有大约20个不同的map和reduction。
7,程序可以非常小,如20到50行代码
8,一个问题是掉队者。掉队者是一个比其他程序慢的计算,它阻塞了其他程序。掉队者可能因为缓慢的IO或者临时的CPU不能使用而发生。解决方案是运行多个同样的计算并且当一个完成后杀死所有其他的
9,数据在Map和Reduce服务器之间传输时被压缩了。这可以节省带宽和I/O。

在BigTable里存储结构化数据
1,BigTable是一个大伸缩性、错误容忍、自管理的系统,它包含千千兆的内存和1000000000000000的存储。它可以每秒钟处理百万的读写
2,BigTable是一个构建于GFS之上的分布式哈希机制。它不是关系型数据库。它不支持join或者SQL类型查询
3,它提供查询机制来通过键访问结构化数据。GFS存储存储不透明的数据而许多程序需求有结构化数据
4,商业数据库不能达到这种级别的伸缩性并且不能在成千上万台机器上工作
5,通过控制它们自己的低级存储系统Google得到更多的控制权来改进它们的系统。例如,如果它们想让跨数据中心的操作更简单这个特性,它们可以内建它
6,系统运行时机器可以自由的增删而整个系统保持工作
7,每个数据条目存储在一个格子里,它可以通过一个行key和列key或者时间戳来访问
8,每一行存储在一个或多个tablet中。一个tablet是一个64KB块的数据序列并且格式为SSTable
9,BigTable有三种类型的服务器:
-Master服务器分配tablet服务器,它跟踪tablet在哪里并且如果需要则重新分配任务
-Tablet服务器为tablet处理读写请求。当tablet超过大小限制(通常是100MB-200MB)时它们拆开tablet。当一个Tablet服务器失败时,则100个Tablet服务器各自挑选一个新的tablet然后系统恢复。
-Lock服务器形成一个分布式锁服务。像打开一个tablet来写、Master调整和访问控制检查等都需要互斥
10,一个locality组可以用来在物理上将相关的数据存储在一起来得到更好的locality选择
11,tablet尽可能的缓存在RAM里

硬件
1,当你有很多机器时你怎样组织它们来使得使用和花费有效?
2,使用非常廉价的硬件
3,A 1,000-fold computer power increase can be had for a 33 times lower cost if you you use a failure-prone infrastructure rather than an infrastructure built on highly reliable components. You must build reliability on top of unreliability for this strategy to work.
4,Linux,in-house rack design,PC主板,低端存储
5,Price per wattage on performance basis isn't getting better. Have huge power and cooling issues
6,使用一些collocation和Google自己的数据中心

其他
1,迅速更改而不是等待QA
2,库是构建程序的卓越方式
3,一些程序作为服务提供
4,一个基础组织处理程序的版本,这样它们可以发布而不用害怕会破坏什么东西

Google将来的方向
1,支持地理位置分布的集群
2,为所有数据创建一个单独的全局名字空间。当前的数据由集群分离
3,更多和更好的自动化数据迁移和计算
4,解决当使用网络划分来做广阔区域的备份时的一致性问题(例如保持服务即使一个集群离线维护或由于一些损耗问题)

学到的东西
1,基础组织是有竞争性的优势。特别是对Google而言。Google可以很快很廉价的推出新服务,并且伸缩性其他人很难达到。许多公司采取完全不同的方式。许多公司认为基础组织开销太大。Google认为自己是一个系统工程公司,这是一个新的看待软件构建的方式
2,跨越多个数据中心仍然是一个未解决的问题。大部分网站都是一个或者最多两个数据中心。我们不得不承认怎样在一些数据中心之间完整的分布网站是很需要技巧的
3,如果你自己没有时间从零开始重新构建所有这些基础组织你可以看看Hadoop。Hadoop是这里很多同样的主意的一个开源实现
4,平台的一个优点是初级开发人员可以在平台的基础上快速并且放心的创建健全的程序。如果每个项目都需要发明同样的分布式基础组织的轮子,那么你将陷入困境因为知道怎样完成这项工作的人相对较少
5,协同工作不一直是掷骰子。通过让系统中的所有部分一起工作则一个部分的改进将帮助所有的部分。改进文件系统则每个人从中受益而且是透明的。如果每个项目使用不同的文件系统则在整个堆栈中享受不到持续增加的改进
6,构建自管理系统让你没必要让系统关机。这允许你更容易在服务器之间平衡资源、动态添加更大的容量、让机器离线和优雅的处理升级
7,创建可进化的基础组织,并行的执行消耗时间的操作并采取较好的方案
8,不要忽略学院。学院有许多没有转变为产品的好主意。Most of what Google has done has prior art, just not prior large scale deployment.
9,考虑压缩。当你有许多CPU而IO有限时压缩是一个好的选择。

2009年5月12日星期二

SQL Server 2008 R2 新特性

消息来源

Capitalize on Hardware Innovation

Increase in the number of logical processors supported from 64 up to 256. This will provide customers with more choices for obtaining single system scalability with high performance.

Optimize Hardware Resources

Dashboard viewpoints provide real-time insight into utilization and policy violations to help identify consolidation opportunities, maximize investments and maintain healthy systems.

Manage Efficiently at Scale

Through new extensions in SQL Server Management Studio, organizations will gain insights into their growing applications and databases and help ensure higher service levels through policies and dashboard viewpoints.

Enhance Collaboration Across Development and IT

Streamline Application Lifecycle Management through integration with Visual Studio. A new project type enables a single unit of management for packaging database schema with application requirements. This ensures higher quality application development while also accelerating deployments, moves, and changes over time.

Improve the Quality of Your Data

Centralized approach to defining, deploying, and managing master data can ensure reporting consistency across systems and deliver faster more accurate results across the enterprise.

Manage User-Generated Analytical Applications

Comprehensive management thru Microsoft SharePoint gives IT the ability to manage and secure all BI assets, thus freeing the original authors to focus on the priorities of the business.

Report with Ease

Decrease time and costs developing reports by giving users the ability to design their own queries, reports and charts through powerful and intuitive authoring and ad hoc reporting capabilities.

Get More Out of Your Data

New support for geospatial visualization can produce new insights and discoveries when geospatial data is combined with corporate data for reporting and analysis.

Build Robust Analytical Applications

With the in-memory analytics add-in for Microsoft Excel 2010, business users can quickly access, analyze and summarize vast amounts of data directly in Excel without the assistance of the IT department.

Consolidate Your Data

New “data mash up” capabilities will simplify time consuming data gathering and consolidation tasks. Integrate data from multiple sources, including corporate databases and external sources, using powerful tools within Microsoft Excel.

Share and Collaborate with Confidence

New collaboration tools make it easy to share analytic applications and reports through Microsoft Office SharePoint, where they are refreshed automatically, maintained, and made accessible to others.

上面的都是官方宣传词,下面这些是DBA们感兴趣的了
1. 对多核CPU的支持加强,从原来的64核增加到了256核,这样可以提高原有系统的性能和增加扩展性.

2. Management Studio的新特性:
2.1 新向导将帮助DBA快速发现环境中的数据库并加入到集中管理;

2.2 DBA可以通过管理的目标服务器或者集中管理服务器的程序执行统一的期望阀值等政策;

2.3 仪表板(DashBoard)将提供实时图像,反映资源利用率和政策符合度,这些将帮助管理员发现系统需要加固的地方,最大化资源利用率及强化系统健康;

2.4 Visual Studio的整合
加强了开发和运维的联系,新增的包类型可以使DBA参与到开发中,并方便部署

3. Master Data Services (MDS)

4. 对Excel2010 sharepoint 2010支持的增强;



5. Reporting Service 2008 R2增强,支持了更丰富的图形.


2009年5月11日星期一

F5助力eBay数据库服务器负载均衡

美国eBay公司是世界上最大的网上交易平台。据统计,每天有涉及几千个分类的几百万件商品在eBay上销售;eBay的年增长率达到50%。但是,和快速增长的业务相比,eBay的IT支撑系统的高可用性还相对滞后,其IT系统重构规划时还确认用户数据库有单点故障(SPOF)。为此,eBay采用了F5公司提供的数据库服务器负载均衡解决方案,不仅使数据库可用性达到99.9%,而且还实现了在线拓展、高安全和高可管理性,从而解决了eBay的用户数据库服务请求的压力,为其进一步的持续高速发展铺平了道路;该方案也为电子商务以及其他公共服务行业类的数据库服务器负载均衡,提供了一个不可多得的成功样板。
需求及挑战

问题还得从eBay的数据库系统说起,eBay拥有30套生产数据库,全部采用Oracle数据库,其中包括12 数据库支持 “live” 项目 (Sun 480/4500);1 个数据库支持存档项目(Sun 4800);4个数据库支持客户数据 (Sun 4800);2 个数据库支持 eBay的反馈系统 (Sun 480);1个 数据库支持非正常的 “cache” 数据 (Sun 4800);其他的数据库 (大部分 Sun 480 class)。同时,采用Hitachi SAN 建立存储架构,建立了两个远程备份数据库,并实施实时复制数据到远程数据库实现冗灾,同时每24小时实施针对数据块的数据备份。

因此,通过eBay 数据库读写的比率分析,可以发现,eBay在数据库提供服务时,读和查询的操作达到530亿次,而数据库写和更新的操作达到2亿次。“读和查询”操作与“写和更新”的比率达到265:1。可见查询和数据库读的操作给数据库管理系统带来巨大的压力。而更为严峻的是,eBay年增长率达到50%,这意味着,来自读和查询的操作压力将持续增大,要保证数据库服务的响应能力和效率,稳定性和安全性,eBay 必须采用数据库服务器的负载均衡解决方案。

但是,由于系统庞大,出于投资保护等考虑,Bay 对数据库服务器的负载均衡解决方案的需求有如下几个特点:不改变eBay的数据库体系结构;可用性目标达到99.9%;需承载eBay每年50%的高成长;简单管理等等。这意味着在不对系统大动干戈的同时,却革命性地提高其性能,其挑战不言而喻。

解决方案

针对eBay数据库服务器负载均衡的需求特点,eBay考虑了三种主要解决方案。1) 将数据库垂直分割,划分成多层数据库处理,减轻原来单层数据库处理数据而形成的瓶颈与可用性问题。但问题:这种方案很难部署,而且也没有从根本上解决单点故障问题。2)采用Oracle OPS/RAC机群解决方案。问题:要求给便数据库编程代码,非常难以管理与维护。3)采用F5 与SharePlex 联合解决方案。其优点是:简单管理,不需要改变整个体系结构。

在最初,eBay采用Oracle OPS/RAC解决问题。但是后来经过充分论证和探讨,最终eBay采用了基于F5/SharePlex的解决方案。F5解决方案是应用类似OPS/RAC,但是却相对简单的f5的解决方案,不用改变数据库体系结构,管理和维护简单得多。F5解决方案得主要思路是,通过应用将数据库“读与查询”的操作与”写和更新”的操作导向到分开的 “逻辑” 数据库,这些数据库服务器都单独配备数据存储,而没有采用共享存储的方式!这样,F5 应用交换机动态的将所有的数据库”读与查询”请求导向到查询数据库服务器群中,并智能负载均衡到最佳的数据库服务器上。所有的”写和更新”请求都指向到一个单一的数据库服务器上,由SeharePlex动态实时将数据记录复制到”读与查询”数据库服务器群的数据库中。

这样,一方面,数据库服务器群被F5应用交换机虚拟化和集群,变成了一个“池”;另一方面,“读与查询”的操作,可以根据需要,选择更高效率得数据库服务器,从而使“读与查询”的操作压力得到解决。同时,随着业务的增长,还可以随时根据客户业务的压力在线扩展新的服务器在这个群之中。由于根据以上分析,数据库读写的比例超过260倍,采用这样的方法,有效解决了数据库性能和高可用性要求。



采用F5/Share Plex 解决方案示意图

方案特点

F5解决方案具有以下特点:1.运用分离读和写操作,使读和写操作进入分别的逻辑数据库 而不是共享磁盘2. f5 数据库服务器均衡可以使所有的读操作交叉分配到available hosts; 所有的写操作都指定到单一的database-of-record ; 3.应用类似OPS/RAC,但是却相对简单的f5的解决方案; 4.发挥f5产品灵敏的量测性和显著的增强可用性。

采用F5的BIG-IP负载均衡器后,对于eBay应用系统有独到的优势:
高可用性: BIGIP动态分配每一个流量请求到后台的四台Oracle 9i Database 数据库服务器,并动态检查各个服务器的健康状态,将下一个请求分配给最有效率的服务器,任何服务起死机时,BIGIP即刻将流量请求分配给其他的三台服务器,从而达到99.999%系统有效性。特别是针对Oracle 9i 数据库服务器,F5公司专门为Oracle 9i 数据库开发了专用的健康检查模块,通过调用F5专有的扩展应用校验(EAV)进程,F5能够随时得到Oracle 9i数据库的应用层服务能力而不是其他的负载均衡设备所采用的iCMP / TCP 层进行健康检查。

高安全性: BIGIP支持地址翻译技术和安全地址翻译,这样一来客户不可能知道真正提供服务的服务器的IP地址与端口,从而保护数据库服务器不受到诸如SYN Flood 等DOS及DDOS进攻。

高效率: 采用BIG-IP 负载均衡之后, BIG-IP可以智能寻找最佳状态的数据库服务器从而保证客户得到响应最快的数据库服务器以提供最佳的查询数据库服务!

高可扩展性: BIGIP可以支持动态增加或删除其负载均衡的数据库服务器群组的任何数量的服务器,而不需要对前端或后台做任何改变从而使得系统扩展轻松方便,透明。

高可管理性: BIGIP有专门的管理软件可以实时监控整个数据库服务器群组的流量状态,并分析发展趋势帮助客户及时根据流量增长增加服务器。

客户价值

F5解决方案具有低成本、低维修,以及保护投资,高效率的特点,并方便在线拓展,面向未来。在2001年第二季度,F5公司与Quest公司合作成功帮助客户实现了以上解决方案,初期布署了两台”读与查询”数据库服务器和一台”写和更新”数据库服务器。在2001年第三季度成功通过了99.9%高可用性。并真正实现了在线高可扩展性,在2002年增加另外两台读与查询”数据库服务器,并于2002年第三季度增加部署了冗灾备份的功能。

F5提供的eBay数据库服务器负载均衡解决方案对行业也具有相当的借鉴意义。电子商务应用同样有着数据库查询的压力,如果能够有效将查询的压力分解到单独的服务器群来处理,将有效提高电子商务的应用效率。 对于电子商务类应用系统数据库扩展解决方案,只需要在Web Portal上将数据库请求分成两个不同模块,问题便迎刃而解。

对于公众服务行业类的数据库服务器的负载均衡,如银行,电信,税务等系统,每月和每季度的都会有报表生成汇总,这些报表既包括用户的月结单数据信息,也需要产生总体业务的业绩报告。这样就必须对数据库系统进行检索和查询。如果这些业务工作与实际生产环境是一个数据库的情况下,将造成系统的巨大压力。采用F5类似方法,同样能够有效达到高可用性预告可扩展性能的需要!

2009年5月9日星期六

如何使用SQL SERVER 数据库管理员专用连接(DAC)

使用专用管理员连接

SQL Server 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在 SQL Server 不响应标准连接请求时,管理员也可以使用此诊断连接访问 SQL Server,以便执行诊断查询并解决问题。

此专用管理员连接 (DAC) 支持 SQL Server 的加密功能和其他安全功能。DAC 只允许将用户上下文切换到其他管理用户。

SQL Server 尽力使 DAC 连接成功,但在非常特殊的情况下也可能会出现连接失败。

使用 DAC 连接
默认情况下,只能从服务器上运行的客户端建立连接。不允许进行网络连接,除非它们是使用带 remote admin connections 选项的 sp_configure 存储过程配置的。

只有 SQL Server sysadmin 角色的成员可以使用 DAC 连接。
数据库实例同一时间仅支持一个专用连接。

通过使用专用的管理员开关 (-A) 的 sqlcmd 命令提示实用工具,可以支持和使用 DAC。有关使用 sqlcmd 的详细信息,请参阅将 sqlcmd 与脚本变量结合使用。您还可以将前缀 admin: 连接到实例名上,格式为 sqlcmd -Sadmin:。还可以通过连接到 admin:<实例名>,从 SQL Server Management Studio 查询编辑器启动 DAC。

限制
由于 DAC 仅用于在极少数情况下诊断服务器问题,因此对连接有一些限制:

为了保证有可用的连接资源,每个 SQL Server 实例只允许使用一个 DAC。如果 DAC 连接已经激活,则通过 DAC 进行连接的任何新请求都将被拒绝,并出现错误 17810。

为了保留资源,SQL Server Express 不侦听 DAC 端口,除非使用跟踪标志 7806 进行启动。

DAC 最初尝试连接到与登录帐户关联的默认数据库。连接成功后,可以连接到 master 数据库。如果默认数据库脱机或不可用,则连接返回错误 4060。但是,如果使用以下命令覆盖默认数据库,改为连接到 master 数据库,则连接会成功:
sqlcmd –A –d master
由于只要启动数据库引擎实例,就能保证 master 数据库处于可用状态,因此建议使用 DAC 连接到 master 数据库。

SQL Server 禁止使用 DAC 运行并行查询或命令。例如,如果使用 DAC 执行下列任何语句,都会生成错误 3637。

RESTORE

BACKUP

DAC 只能使用有限的资源。请勿使用 DAC 运行需要消耗大量资源的查询(例如,对大型表执行复杂的联接)或可能造成阻塞的查询。这有助于防止将 DAC 与任何现有的服务器问题混淆。为了避免发生潜在的阻塞情况,如果必须执行可能会发生阻塞的查询,则尽可能在基于快照的隔离级别下运行查询;或者,将事务隔离级别设置为 READ UNCOMMITTED,将 LOCK_TIMEOUT 值设置为较短的值(如 2000 毫秒),或者同时执行这两种操作。这可以防止 DAC 会话被阻塞。但是,根据 SQL Server 所处的状态,DAC 会话可能会在闩锁上被阻塞。可以使用 CNTRL-C 终止 DAC 会话,但不能保证一定成功。如果失败,唯一的选择是重新启动 SQL Server。

为保证连接成功并排除 DAC 故障,SQL Server 保留了一定的资源用于处理 DAC 上运行的命令。通常这些资源只够执行简单的诊断和故障排除功能,如下所示。

虽然理论上可以运行任何不必在 DAC 上并行执行的 Transact-SQL 语句,但极力建议您限制使用下列诊断和故障排除命令:

查询动态管理视图以进行基本的诊断,例如查询 sys.dm_tran_locks 以了解锁定状态,查询 sys.dm_os_memory_cache_counters 以检查缓存质量,查询 sys.dm_exec_requests 和 sys.dm_exec_sessions 以了解活动的会话和请求。避免使用需要消耗大量资源的动态管理视图(例如,sys.dm_tran_version_store 扫描整个版本存储区,并且会导致大量的 I/O)或使用了复杂联接的动态管理视图。有关性能影响的信息,请参阅特定动态管理视图的文档。

查询目录视图。

基本 DBCC 命令,例如 DBCC FREEPROCCACHE、DBCC FREESYSTEMCACHE、DBCC DROPCLEANBUFFERS, 和 DBCC SQLPERF。请勿运行需要消耗大量资源的命令,如 DBCC CHECKDB、DBCC DBREINDEX 或 DBCC SHRINKDATABASE。

Transact-SQL KILL 命令。根据 SQL Server 的状态,KILL 命令并非一定会成功;如果失败,则唯一的选择是重新启动 SQL Server。下面是一般的指导原则:

请通过查询 SELECT * FROM sys.dm_exec_sessions WHERE session_id = 来验证 SPID 是否已被实际终止。如果没有返回任何行,则表明会话已被终止。

如果会话仍在运行,则通过运行查询 SELECT * FROM sys.dm_os_tasks WHERE session_id = 来验证是否为此会话分配了任务。如果发现还有任务,则很可能当前正在终止会话。注意,此操作可能会持续很长时间,也可能根本不会成功。

如果在与此会话关联的 sys.dm_os_tasks 中没有任何任务,但是在执行 KILL 命令后该会话仍然出现在 sys.dm_exec_sessions 中,则表明没有可用的工作线程。选择某个当前正在运行的任务(在 sys.dm_os_tasks 视图中列出的 sessions_id <> NULL 的任务),并终止与其关联的会话以释放工作线程。请注意,终止单个会话可能不够,可能需要终止多个会话。

DAC 端口
SQL Server 在启动数据库引擎时动态分配的专用 TCP/IP 端口上侦听 DAC。错误日志包含所侦听的 DAC 所在的端口号。默认情况下,DAC 侦听器只接受本地端口上的连接。有关激活远程管理员连接的代码示例,请参阅 remote admin connections 选项。

配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL Server,并且客户端可以立即远程连接到 DAC。通过先在本地使用 DAC 连接到 SQL Server,然后再执行 sp_configure 存储过程接受远程连接,则即使 SQL Server 停止响应,DAC 侦听器仍然可以接受远程连接。

对于群集配置,DAC 在默认情况下是禁用的。用户可以执行 sp_configure 的 remote admin connection 选项,使 DAC 侦听器能够访问远程连接。如果 SQL Server 停止响应并且未启用 DAC 侦听器,则可能必须重新启动 SQL Server 来连接 DAC。因此,建议在群集系统上启用 remote admin connections 配置选项。

DAC 端口由 SQL Server 在启动时动态分配。当连接到默认实例时,DAC 会避免在连接时对 SQL Server Browser 服务使用 SQL Server 解决协议 (SSRP) 请求。它先通过 TCP 端口 1434 进行连接。如果失败,则通过 SSRP 调用来获取端口。如果 SQL Server 浏览器没有侦听 SSRP 请求,则连接请求将返回错误。若要了解 DAC 所侦听的端口号,请参阅错误日志。如果将 SQL Server 配置为接受远程管理连接,则必须使用显式端口号启动 DAC:

sqlcmd –Stcp:,

SQL Server 错误日志列出了 DAC 的端口号,默认情况下为 1434。如果将 SQL Server 配置为只接受本地 DAC 连接,请使用以下命令和环回适配器进行连接:

sqlcmd –S127.0.0.1,1434

示例
在此示例中,管理员发现服务器 URAN123 不响应,因此要诊断该问题。为此,用户激活 sqlcmd 命令提示实用工具,并使用 -A 指明 DAC 连接到服务器 URAN123。

sqlcmd -S URAN123 -U sa -P –A

现在,管理员可以执行查询来诊断问题,并且可以终止停止响应的会话。

2009年5月7日星期四

用标准纸张打印大图片ProPoster

ProPoster是一款将大幅图片分割打印的实用软件,该软件无需特别打印机的支持,它可以在普通的标准打印机上打印大尺寸横幅,签名,海报等。图片,数码照片,Microsoft Word 文档,Excel 电子数据表格都可以被作为海报的来源,也可以直接采集扫描仪的数据。

使用ProPoster,简单地选择一个图像,该软件就会自动地将其分割为必要数量的页面,然后将各页面打印出来,再加工就能完成大幅图片的打印工作,为您节省不少费用。

软件原版为多国语言,但仅支持繁体中文

2009年5月5日星期二

Windows 性能监视器的计数器及阈值应用

Windows 性能监视器的计数器及阈值应用
原文出处
下面这些计数器是针对我对windows操作系统,C/S结构的sql server数据库及WEB平台.net产品测试时的一些计数器;
Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始:
Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。


page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。


page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。
由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
Physical Disk\ % Disk Time
Physical Disk\ Avg.Disk Queue Length
例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
要确定过多的页交换对磁盘活动的影响,请将 Physical Disk\ Avg.Disk sec/Transfer 和 Memory\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。


Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。
Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化
如果您怀疑有内存泄露,请监视 Memory\ Available Bytes 和 Memory\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\Private Bytes、Process\Working Set 和Process\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\Pool Nonpaged Bytes、Memory\ Pool Nonpaged Allocs 和 Process(process_name)\ Pool Nonpaged Bytes。


Pages per second :每秒钟检索的页数。该数字应少于每秒一页。

Process:
%Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%
Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
Work set: 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
Inetinfo:Private Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。
%Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
%User Time:表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
%Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。
% DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

Thread
ContextSwitches/sec: (实例化inetinfo 和dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

Physical Disk:
%Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。
Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。
Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。
Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。
Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。
Network Interface:
Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

SQLServer性能计数器:
Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
. Full Scans/sec(全表扫描/秒) 每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。
. Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。
Buffer Manager(缓冲器管理器):监视 Microsoft® SQL Server? 如何使用: 内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。
.Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。
.Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。
.Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
. Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。
Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft® SQL Server? 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。
. Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。
Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。
. Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。
. Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。
Locks(锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。
. Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量
. Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间
. Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。
Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:
是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。
是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
Total server memory:sql server服务器当前正在使用的动态内存总量.

监视IIS需要的一些计数器
Internet Information Services Global:
File Cache Hits %、File CacheFlushes、File Cache Hits
File Cache Hits %是全部缓存请求中缓存命中次数所占的比例,反映了IIS 的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache Hits是文件缓存命中的具体值,File CacheFlushes 是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File Cache Hits 和File Cache Flushes 可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL 、MemCacheSize 、MaxCacheFileSize)
Web Service:
Bytes Total/sec:显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。
Connection Refused:数值越低越好。高数值表明网络适配器或处理器存在瓶颈。
Not Found Errors:显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404)

2009年4月28日星期二

47岁的传奇



观看视频:
http://v.youku.com/v_show/id_XODU4OTY2MzI=.html
47岁的苏珊·波伊儿日前在伦敦参加业余歌手选秀节目一夜成名,她对英国电视观众来说是个奇迹。...

苏珊·博伊尔现在很忙。她参加拉里·金的脱口秀,接受奥普拉·温弗瑞的访谈,录制新专辑,甚至接到诸多大牌导演的邀请,拍摄一部以她本人为原型的电影。

仅仅十二天前,苏珊还是苏格兰小村庄里默默度日的“老处女”,生活中唯一的伴侣是一只名叫“佩博斯”的猫。自从4月11日在英国热门电视选秀节目《英国达人》中一唱惊人,她的名字立即传遍全世界。

  “傻苏西”的确不聪明

据说,英国每个小村庄里都可能有一个像苏珊·博伊尔这样的女性:身材肥胖,头发蓬乱,不爱出门,年纪一把尚未出嫁。孩子们看到她会哄笑着喊“傻苏西(Susie Simple)”。

苏珊1961年6月出生在苏格兰西洛锡安一个小村庄。母亲在47岁高龄时产下她,由于出生时缺氧,苏珊的大脑受到伤害,导致学习能力出现问题,在学校里常常成为众人欺凌的对象。

但性格温良的苏珊从来都不怪罪欺负她的孩子们。她只是淡淡地说:“他们喜欢捉弄那些安静的孩子,不过总体上对我还是友好的。”

中学毕业后,18岁的苏珊几乎没几门功课及格。她曾经在社区服务,但此后大部分的成年岁月,苏珊放弃工作,全职照顾高龄的母亲,直至两年前母亲去世。

  唱片公司曾拒绝她

歌唱似乎是上帝作为补偿赐给她的礼物。

12岁时,苏珊开始在学校和唱诗班表演。一开始,她没有想过当歌星,她就是爱唱,并且坚持练习。直到有一次,她在爱丁堡看到职业歌手在舞台上表演,“那歌声夺走了我的魂”。

1999年,苏珊参加了别的选秀,但发挥得并不出色,后来,她又倾尽积蓄自费灌了一张唱片,并赠送给几个好朋友,但没有公司愿意发行。

在母亲布里吉特鼓励下,苏珊曾去酒吧唱歌、参加俱乐部的比赛,还得过不少奖项。母女俩常在一起看《英国达人》,“母亲总是说,我应该站在这个舞台上,并且夺得冠军。”

2009年4月11日,当她无视扑面而来的鄙夷、嘲笑和怀疑,引吭高歌《我曾有梦》,赢得了全世界的掌声和眼泪,也终于实现了母亲的心愿。

  “出名让我不再寂寞”

苏珊现在到底人气有多旺?她在《英国达人》舞台上表演的视频在Youtube上点击率超过3500万次,风靡程度胜过美国总统奥巴马的就职演说。

粉丝们为苏珊建立了的网站,你可以定制“苏珊·博伊尔款”T恤衫。因为苏珊曾在节目中自曝“从来没有被异性亲吻过”。两名青年千里迢迢骑车来到苏珊的家,亲吻她的脸颊。

当脱口秀明星拉里·金问出名对她的生活有什么影响时,苏珊回答,“我当然再不会寂寞了。”

“那么你是否会改变自己的形象?”———“为什么我要改?”

《英国达人》的裁判之一摩根赞同道,“苏珊最大魅力就是她保持自己的方式,她的模样,她的举动,都是本色。”

■ 观察

  “这是对以貌取人的嘲讽”

苏珊的故事就像是现代版“灰姑娘”。但苏珊从12岁起就练习唱歌,一夜成名的背后是35年不间断地放声歌唱。

有评论说,这是对大众以貌取人恶习的嘲讽。“我们的社会惯常以一举一动来判断一个人的社会地位,当苏珊出现在大众面前,她的服饰、发型和言语无不表现出,她就是个失败者。”当短暂的震惊过后,人们感到内疚、羞愧、和期望。

现代人更能从苏珊身上反省自身。美国评论家彼得·布里格曼写道,“在我们大多数人的一生之中,有谁不曾暗藏着一些追求,甚至绝望地认定命运应该赐予我们更多?有多少平庸的外表下跃动着一颗超凡的心灵?只要有合适的机会、合适的舞台、合适的观众,我们也能实现真正的自我,像明星一样闪耀。”


I dreamed a dream in days gone by
When hope was high and life worth living
I dreamed that love would never die
I dreamed that God would be forgiving.

Then I was young and unafraid
And dreams were made and used and wasted.
There was no ransom to be paid,
No song unsung, no wine untasted.

But the tigers come at night
With their voices soft as thunder
As they tear your hope apart
As they turn your dream to shame.

He slept a summer by my side,
He filled my days with endless wonder.
He took my childhood in his stride
But he was gone when autumn came.

And still I dreamed he'd come to me,
That we would live the years together
But there are dreams that can not be
And there are storms we can not weather.

I had a dream my life would be
So different from this hell I'm living,
So different now from what it seemed
Now life has killed the dream I dreamed.

2009年4月24日星期五

服务导向架构(Service-Oriented Architecture,SOA) 簡介

服務導向架構(Service-Oriented Architecture,SOA) 簡介
作者: 曾保彰 / 臺灣大學計算機及資訊網路中心資訊網路組
--------------------------------------------------------------------------------

「以客為尊」的核心概念,提供網路服務單位建構一個具彈性、可重複使用的整合性介面,加速達到網路服務提升的目標。

前言
SOA是一種架構模型,由網站服務技術等標準化元件組成,目的是為企業、學校或提供網路服務單位建構一個具彈性、可重複使用的整合性介面,促進內外部如內部應用程式、用戶、與部門(系所)等相關單位完美的溝通,盡速達到網路服務提升的目標。

何謂SOA?
我們常聴到 Information Technology (IT)產業的架構演進,由1980年代的主機(mainframe)架構,到1990年代的主從式(client server)架構,到1999年時是network centric架構,而到2004年時已複雜到所謂的 Service-Oriented Architecture架構(SOA,服務導向架構) 。此外也常聴到:如果企業不導入這個架構,企業在未來就會沒有競爭力。因此,本文將針對SOA作淺顯的簡介,也希望透過本文的介紹,對於本校網站服務技術(web services) 未來的架構有所幫助。
首先讓我們釐清一些SOA的迷思。正確來說 [1]:

SOA不是新玩意:多年前即有資訊部門或公司成功地用SOA方式來建構、運行應用程式,且當時XML、web service都尚未提出。

SOA不是種技術:它是種建構、組織的方法,用來建立應用程式的運行環境,以及讓學校的業務程式能以「功能化」方式發展、累積。

就算購買最新的XML、web services產品(如開發工具、執行平台、軟體元件等),也不表示就可以建構出SOA式的應用程式。

簡單來說,SOA是一種遵循典範,是針對學校或企業內應用程式的設計、開發、佈建、管理所提出的遵循典範。從資訊技術層面而言,一個執行學校或企業業務的應用程式稱為一個獨立的「邏輯單位」,而對學校或企業營運層面而言則可稱為一項「服務」,在企業的整體運算環境中就存在著多個「獨立邏輯/業務服務」,且需要對其進行妥善設計、開發、佈建、管理等,也因此需要採行服務導向架構(SOA)。

要實現SOA,需要學校或企業的程式設計師改採「持續累積服務」的觀念與角度來開發應用程式,即便這麼做在短時間內看不到顯著好處,程式師還是必須跳脫、超越過往對應用程式的想法,改以「既有服務可否再運用?」或者是「能否沿用其他同仁開發過的服務再建構?」的觀點來面對程式開發。

SOA主張「程式開發技術」與「程式建構方法」的交替並用,以類似傳訊溝通的作法,將數個所需的「業務服務」進行連結,以此來實現一個新的應用程式,而非「從頭開發」。透過適當的程式組構及傳訊式的程式連結,可讓學校或企業快速因應學生或用戶的需求與改變,新的應用程式只要透過「傳訊微調」即可實現,而非「重新撰寫」。

SOA不單只是程式開發的方法論,也提供行政管理層面的依循。例如它並非是以應用程式個體為角度來進行管理,而是直接將過往程式師開發出的程式視為「服務」來管理。而對「服務」間的「互動傳訊」進行分析,SOA便可讓程式設計部門的主管瞭解何時該執行哪個業務邏輯,以及為何要執行,如此資訊管理者與分析師便可對服務程序進行最佳化調適。

SOA如何運作?
SOA服務導向架構是一種新興的系統架構模型,主要概念是針對學校或企業需求組合而成的一組軟體元件。組合的元素通常包括:軟體元件、服務及流程三個部份。當學校或企業面對外部要求時,流程負責定義外部要求的處理步驟;服務包括特定步驟的所有程式元件,而軟體元件則負責執行工作的程式。SOA 已成為現今軟體發展的重要技術,透過 SOA 讓異質系統整合變得容易,程式再使用度也提高。不必自行開發或擁有所有程式元件,發展者可以視其需要組合網路上最好的服務。不受限於特定廠商的產品功能或是平台,達到真正的開放性(Openness)。從分散式元件架構到 SOA概念上,SOA 如同物件導向、軟體元件等軟體技術一般,運用小的零組件組合成應用系統。但 SOA 強調的是如何將彼此關係鬆散的應用系統功能元件在網路上發行、組合及使用。SOA 具有下列技術特性[2]:

分散式架構 (distributed)-SOA 的組成元件是由許多分散在網路上的系統組合而來,可能是區域網路,也可能是來自廣域網路。例如網站服務技術 (web services) 就是運作 HTTP來相互連結的 SOA。如此的作法,也使得網站服務技術很快的就成為所有支援網際網路的系統平台均能使用的技術。

關係鬆散的界面 (loosely coupled)-傳統的系統主要是將應用系統功能需求切割成相互關聯的小零組件:模組、物件或元件,發展者要花費極大的心力了解零組件是如何設計及使用,以確保不會違反零組件連接關係限制。如此一來,若要以不同零組件替換原始設計,就成為一件困難的事。SOA 的作法是以界面標準來組合系統,只要符合界面要求,零組件可以任意替換,大幅提高系統變更的彈性度。

依據開放的標準 (Open standard)-使用開放標準是 SOA 的核心特色,過去的軟體元件平台如 CORBA、DCOM、RMI、J2EE 採用專屬協定作為元件連結的規範,使得不同平台的元件無法相通。SOA 則著重於標準與互動性,將可避免不同平台 (.NET web services 與 Java web services) 開發程式間相互整合的困擾。

以流程角度出發 (process centric)-在建構系統時,首先了解特定工作的流程要求,並將其切割成服務界面(包括輸入與輸出資料格式),如此其他的發展者就可以依據服務界面開發 (或選擇) 合適的元件來完成工作。

最後舉一個學校常用的例子來說明SOA在實際應用上帶來的可能性。假設我們要建立一個線上投稿的網站,網站提供的服務包括了線上投稿作業、論文分派作業、論文審查作業、線上註冊及報名作業等。傳統的方式我們會儘快找一個類似的網站,再儘快將其他類似網站的原始碼(source code)拿來修改,但其他類似網站的原始碼所執行的平台有可能不是架站者所熟悉的作業系統。若要讓架站者作一個客製化,並符合自己投稿主題的線上投稿的網站,可能要熟悉這個平台並修改網頁及測試,再加上別人的網站可能有一些bug,如果要做到毫無問題,除錯時間可能要花上三個月的時間。但是,如果我們導入SOA的架構的話,可能將來只要花費心力將作業服務模組化、物件化或元件化,然後將它們整合到網站中即可,不需要再花費時間和資源自己去維護一個線上投稿的網站,也不需要再自行建立和資料庫連結、報名付款機制等。這個網站就像是建立在SOA上,整合了這些web services元件的一個應用程式系統。更重要的是,透過如http、XML、SOAP 等產業標準開放式協定,不必擔心這些服務使用甚麼平台、甚麼技術來建立,而將來如果有更好的服務或服務提供者時,也可以輕易的將服務更換或更新。對系統開發者來講,可以快速輕鬆的將系統建構完成,將心思專注在規劃更好、更完善的系統上;對服務提供者而言,只要能設計出一個好的服務,它的潛在使用者市場將不再受到使用者平台的限制而有無限的可能。單就這類應用所呈現的美好遠景,應該可以解釋為什麼會到處聽到有人在談論SOA了。

因此 SOA 的實作,就是將所有程式邏輯及服務內容全部包裹在服務內部,並實作一個標準的介面與外部作溝通,這種做法跟傳統的元件導向做法非常類似,唯一的差別是介面定義的方式、資料格式、與溝通管道必須是產業標準 (http、XML、SOAP 等)。 也就是說只要能實作出這樣的介面,不論介面後面是什麼,都可使成為 SOA。
 

結論
綜合以上的介紹,SOA能帶來的幫助,有以下好處:
1.增加企業盈收,或提升學校的服務品質。
2.提供可變動的網路服務型態。
3.降低學校或企業的成本。
4.降低開發服務的時間。
5.整合學校或企業的網路服務技術資源。
6.降低整體風險及意外。
 

參考文獻
[1] http://dev2dev.bea.com.tw/techdoc/07soa/07soa_040812_01.htm
[2] http://www.microsoft.com/taiwan/msdn/columns/soa/SOA_overview_2004112901.htm

2009年4月22日星期三

Word 2007 修正目录页码的方法

问题现象:
目录的页码包含了目录本身,正文从第4页开始,目录上显示的正文第一章节就是第4页,打算变为显示第1页。

解决办法:
Word2003的时候,有插入分节符,重新编码等操作可以解决,到了Word2007,菜单都变成图形化了,原来的方法换了地方,还真有点麻烦。

首先,将光标移动到正文的开始,选择“页面布局”选项卡,选择“分隔符”下拉按钮,选择“分节符”下一页;


然后,选择“插入”选项卡,选择“页码”、“设置页码格式”,页码编号选择起始页码为“1”



最后,选择“页面布局”选项卡点击“页面布局”右下脚的小按钮,在打开的页面上单击“版式”选项卡,在“页眉和页脚”下,选中“首页不同”复选框,然后单击“确定”。



此时,完成了所有设置,在目录页面上更新域即可看到效果。

hosts/host.conf/resolv.conf三个配置文件的区别

这三个文件都位于 /etc/目录下,在这里区分一下

1.hosts文件.

和Windows系统下的host的文件相类似,就是一个文本文件,里面存放一些IP和域名的对应关系。

2.host.conf. #解析器查询顺序配置文件

例:vi /etc/host.conf

order hosts bind 表示先查询本地hosts文件,如果没有结果,再尝试查找BIND dns服务器。

3. resolv.conf

配置Linux系统DNS服务器的配置文件:

vi /etc/resolv.conf

nameserver 192.168.0.1


nameserver 202.99.96.68

ORA-12162: TNS:net service name is incorrectly specified

ORA-12162: TNS:net service name is incorrectly specified

问题现象:

连接数据库时候出现问题了:

[oracle@as3]$ sqlplus “/ as sysdba”

ERROR:

ORA-12162: TNS:net service name is incorrectly specified

Enter user-name: orcl

Enter password:

ERROR:

ORA-12162: TNS:net service name is incorrectly specified



可能问题:

1:~.bash_profile文件中估计没有正确设置ORACLE_SID环境变量
2:检查sqlnet.ora中sqlnet.authentication_services设置
3:用 orapwd 重建密码文件

解决问题:

上面的问题经过检查是由于ORACLE_SID设置引起的,主要是因为在oracle环境变量中,虽然设置了ORACLE_SID,但是没有export引起的。最后在~/.bash_profile中设置export ORACLE_SID,问题解决!

下面是metalink.的解释:

The information in this document.nbspapplies to:

Oracle Server - Enterprise Edition - Version: 10.1.0.3 to 10.1.0.3

This problem can occur on any platform.

Affects most UNIX platforms (not seen on Microsoft Windows due to difference in BEQ communication specifics)

Errors

ORA-12162 "TNS:service name is incorrectly specified"

Symptoms

When trying to connect locally (BEQ) to the database, getting "ORA-12162 error tns:net service nameis incorrectly spelled"

This is unusual because a TNS:Net service name is not being specified, nor is the environement variable TWO_TASK set.

Cause

The user environment variable $ORACLE_SID is not set.

When this is not set, then SQL*Plus use, without a connect string, may result in an ORA-12162 error.

Solution

Add the ORACLE_SID to the .profile for the Oracle user.

This will give the BEQ adapter a route to connect to the instance.

References

2009年4月21日星期二

Verizon:2008年数据泄露多于四年总和

  2008年泄露的电子记录总量比去年四年的总和还要多,而且其中大部分(90%)的泄露都是可以通过持续实施基本的防护性控制避免的。

  Verizon在发布的《2009年Verizon业务数据泄露调查报告》中指出,2008年发生的已经确定的90起数据泄露事件涉及2.85亿份记录,而在2004年到2007年之间发生的数据泄露事件总共涉及2.3亿份记录。

  Verizon调查的数据泄露事件中有大约1/3已经公开,预计今年年底还会有更多事件被公开。

  调查发现:被涉及的记录中有91%的记录与犯罪组织团伙有关;有目的的病毒攻击翻了一番;受到攻击最多的板块是默认证书和SQL注入。

  Verizon业务安全解决方案部门研究副总裁Peter Tuppett表示,这份报告向人们敲响了警钟:企业业务需要更完善的安全和防护措施,尤其是当前的经济危机很可能引发更频繁的犯罪活动。

  不过也有一个好消息,针对个人数据的市场已经瓦解。

  报告指出:“最近几年磁带数据的大量泄露已经泛滥了整个信息黑市,这种市场饱和已经导致磁带信息变得一文不值。甚至出售被盗戏弄卡数据的价格已经从2007年年中的每份记录10~16美元锐减到现在每份记录0.5美元。”

  坏消息是,网络犯罪开始转向盗取和银行账户信息有关的个人身份数字,罪犯可以利用这些数字盗走受害人账户上的现金。

  这就解释了为什么2008年受牵连的2.85亿份记录中有95%都是来自于金融机构。报告中还指出,这主要是因为2008年金融机构发生数据泄露规模之大。

  正如Verizon之前的数据泄露报告一样,大多数受调查的数据泄露事件都是有第三方发现的。这表明企业机构需要对他们自己的数据有更好的监管和控制。

  令人感到以外的是,99%的泄露记录都是通过服务器和应用访问的,而不是笔记本电脑、上网本、手机或者可移动存储介质。

  从报告中中我们可以接受到很多教训。但最主要的一个是持续应用安全策略其实是可以防止大多数数据泄漏事件发生的。

  而且Verizon还给企业机构提供了更具体的建议,比如更改默认证书、避免分享证书、复查用户账户、应用测试和代码复查、智能补丁管理、员工期满终止流程、应用日志和监控、对可以或者匿名网络行为的监控。

Oracle收购Sun七大明智之处

北京时间4月20日,甲骨文和Sun微系统公司联合发表声明,甲骨文以74亿美元收购Sun。国外媒体发表分析文章称,甲骨文收购Sun有7大明智之处:

1,如果云计算对企业来说变得越来越重要,那么数据将是云计算的核心。 而讲到数据,也就意味着数据库。就如塔克商学院数字策略中心主任M. Eric Johnson所说的那样,Sun已经清楚展现了一个真实的云计算环境。就那些将云计算停留在理论阶段的对手来说,收购Sun对甲骨文来说将获得竞争优势。

2,Johnson主任还指出,Sun在很多需求旺盛的方面“保持领先地位”。Sun的技术可以帮助数据库提高性能,尤其是对大型数据库。甲骨文和Sun的结合之后,对任何一个信息官来说都具有吸引力。

3,甲骨文软件和Java的紧密结合,使得甲骨文的软件能跨平台使用。就如IDC研究副总裁Jean Bozman指出那样,真正云计算的第一步是“将服务器和存储单元垂直化”,可以适用于不同的硬件平台。凭借Java,甲骨文可以拓展跨平台的控制力,而这正是企业IT部门想要的。实际上,甲骨文的Oracle Fusion Middleware正是基于Java。

4,有意思的是,Oracle Fusion Middleware扩大了对服务器的需求,其中原因正是由于它是基于Java。而现在,甲骨文通过购得Sun服务器资源,可以进一步降低价格,从而进一步提高Oracle Fusion Middleware的竞争力。

5,由于甲骨文大部分收入来自数据库软件许可,因此有必要的话,可以用便宜的服务器硬件作为促销的手段,这样对那些硬件服务器竞争对手来说是不小的打击。

6,Sun已经售出160万到200万台服务器,还有更多的运行Sun Solaris操作系统的其它公司的服务器。这对甲骨文捆绑销售自家产品也很有帮助。

7,甲骨文收购Sun,当然也包括开源数据库MySQL。对于那些预算不多但又需要甲骨文产品的用户,甲骨文可以用MySQL来满足这些用户的需求。这可以使甲骨文进入中小企业业务,更有机会在这方面超过SAP。此外,还提供了和微软SQLServer的竞争产品,而不需要降低甲骨文自有的产品的定位。

甲骨文和Sun的合作可能会影响甲骨文和一些合作伙伴的关系,比如甲骨文和惠普的关系可能就会出现问题。不过,不像IBM,事实上,每个硬件公司都绕不开甲骨文,因为它是数据库的主力军。他们离不开甲骨文,因此,他们也只能选择忍气吞声。

而且,与Sun和IBM联合不同,甲骨文和Sun不存在硬件的冲突,那些Sun的服务器用户不必担心合并会导致放弃自己在使用的服务器产品线。

总而言之,甲骨文以相对较低的价格收购Sun是明智之举,将会使得合并后的甲骨文成为各大公司数据中心的枢纽。

在Redhat linux AS 4.4下安装oracle 10gR2 过程记录

在Redhat linux AS 4.4下安装oracle 10gR2 过程记录
参考来源:在 Linux x86 上安装 Oracle 数据库 10g
1.硬件要求
1.1 内存至少512M,使用下面的命令检查
grep MemTotal /proc/meminfo
1.2 交换分区 至少1G
grep SwapTotal /proc/meminfo
1.3 /tmp 目录空闲区 至少400M
df -k /tmp 400M
1.4 硬盘空闲区 至少4G
df -k
2. 软件要求
2.1 操作系统,redhat ES/AS 2.1(x86),redhat ES/AS 3(x86)
我的是redhat AS 4.4. 可以使用以下命令检查
cat /etc/issue

2.2 需要安装了以下软件包
Gnu gcc package 至少是
gcc-3.2.3-2
make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1
compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
可以使用以下命令检查:
rpm -q package_name
注意这里的package_name不带任何版本号,例如检查make-3.79
rpm -q make
经查,有个别文件没有安装,安装过程如下:
安装gcc最是麻烦,需要多个前置条件,感觉就想在捋绳头,最后才把gcc拉出来

# glibc-kernheaders-2.4-9.1.98.EL.i386.rpm
# glibc-headers-2.3.4-2.25.i386.rpm
# glibc-devel-2.3.4-2.25.i386.rpm
# gcc-3.4.6-3.i386.rpm

# rpm -ivh compat-db-4.1.25-9.i386.rpm
# rpm -ivh compat-gcc-32-3.2.3-47.3.i386.rpm
# rpm -ivh compat-gcc-32-c++-3.2.3-47.3.i386.rpm
# rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386.rpm

2.3 防火墙软件
如果你不知道具体怎么配置,请禁用. 如何禁用:
关闭防火墙
/etc/rc.d/init.d/iptables stop

3. 创建安装oracle 所需的组和用户
需要的用户是oracle,组是dba,oinstall
可以用界面的方式添加,也可以用命令行的方式
groupadd osinstall
groupadd dba
useradd –g osinstall –G dba oracle
passwd oracle

4. 创建安装安装所需的目录
4.1 Oracle Base 目录/u01/app/oracle
mkdir –p /u01/app/oracle/10g
chown –R oracle:oinstall /u01/app/oracle/10g
chmod –R 755 /u01/app/oracle/10g


4.2 Oracle数据库文件存放目录. 这个可以没有的. 一般设置为/u02/oradata
mkdir –p /u02/oradata
chown –R oracle:oinstall /u02/oradata
chmod –R 755 /u02/oradata
5. 配置内核参数
5.1 用文本编辑器,创建或者编辑/etc/sysctl.conf文件,添加或修改如下的行
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
5.2 改变当前内核参数的值
sysctl -p
6. 检查您的/etc/host.conf 是否含有下面的条目
127.0.0.1 localhost
如果没有的话, oracle 的监听器无法启动

7.为了提高在linux系统上运行软件的性能,必须对oracle用户设置下列shell 限定。
7.1 打开文件数和进程数的限制
加入下面的行到文件/etc/security/limits.conf
   * soft nproc 2047
   * hard nproc 16384
   * soft nofile 1024
   * hard nofile 65536
* 是指对所有的用户和组的限制, Oracle官方文档是这样要求的

7.2 加入下面的行到文件/etc/pam.d/login ,假如它不存在的话
session required /lib/security/pam_limits.so
Oracle 官方网站如此说,但是已经有人发现这个也会造成影响.
我的操作系统版本是Redhat AS 4.4,这步忽略
7.3 根据oracle 用户的默认shell,对默认 shell start-up文件作如下改变.
如果是Bourne, Bash, or Korn shell,修改环境变量/etc/profile文件如下:
if [ \$USER = "oracle" ]; then
   if [ \$SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
   else
ulimit -u 16384 -n 65536
fi
fi

如果是c shell,则环境变量文件 /etc/csh.login的修改值如下:
if ( $USER == "oracle" ) then
   limit maxproc 16384
   limit descriptors 65536
endif
RedHat AS4.4 使用的是bash。

8. 为oracle用户设置环境变量,注意以下命令为,必需以oracle用户身分登录
  ●Bash shell,更改.bash_profile,添加以下行
# su oracle -
# vi ~/.bash_profile
   ORACLE_BASE=/u01/app/oracle
ORACLE_SID=ora10g110
   export ORACLE_BASE ORACLE_SID

unset ORACLE_HOME
unset TNS_ADMIN

  ●c shell,更改.login文件,添加以下行
   setenv ORACLE_BASE /u01/app/oracle
   setenv ORACLE_SID **********

9. 确认ORACLE_HOME and TNS_ADMIN 的环境变量不被用户设置 (未设置)
千万不要因为安装过程中的其他错误,而设置这些值
●Bash shell
   unset ORACLE_HOME
   unset TNS_ADMIN
  ●c shell
unsetenv ORACLE_HOME
  unsetenv TNS_ADMIN

10. 准备好安装介质
#10.1 一般我想是网上下载的. 先要解压,保证解压后的目录,拥有者是oracle:osinstall,并且有执行权限
10.2 如果光盘的,要mount上, 一般操作系统是自动mount的.
#mkdir /mnt/vcdrom
#mount -o loop -t iso9660 /home/oracle/RHEL4-U4-i386-AS-with-Oracle10gR2-DVD.iso /mnt/vcdrom

11. /etc/profile 文件最后增加
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/10g

12 安装
12.1 编辑安装需要的应答文件
静默模式(Silent)安装必须指定一个应答文件来完成安装过程所须的各类参数。
在Oracle安装目录的response子目录里有enterprise.rsp有enterprise.rsp、standard.rsp和custom.rsp三个应答文件,分别对应企业版、标准版和定制的安装。
以enterprise.rsp为例,用任意的文本编辑器打它,修改以下这些项目的值。
ORACLE_HOME= Oracle服务器的主目录位置,必须是绝对路径。
ORACLE_HOME_NAME Oracle服务器的名称,必须以字母开头。
COMPONENT_LANGUAGES Oracle服务器支持的语言,默认只有英语,可以添加多个语言。
s_nameForDBAGrp 用于Oracle系统管理的linux用户组名,该组的用户拥有管理Oracle服务器的权限,在本例中设置为 dba。
s_nameForOPERGrp 用于Oracle数据库常规操作的linux用户组名,该组的用户拥有常规操作Oracle数据库的权限,在本例中设置为 oper。
n_configurationOption 安装类型(1为在安装后创建数据库,2为安装后创建一个自动存储管理实例,3为只安装服务器软件),在本例中选择3。
其它项目用默认值即可,也可以根据自己的须要进行修改。

ORACLE_HOME=/u01/app/oracle/10g
ORACLE_HOME_NAME=ora10g110
COMPONENT_LANGUAGES={"en","zh_CN"}
s_nameForDBAGrp="osinstall"
s_nameForOPERGrp="oracle"
n_configurationOption=3


注:如果Oracle从光盘安装,必须先将应答文件复制到硬盘上,才能修改。本例就是将enterprise.rsp拷贝到$HOME/oracle目录

12.2 开始安装
现在万事具备,可以安装了。
用oracle用户登录,然后在Oracle安装目录里执行
# /mnt/vcdrom/Oracle10gR2/runInstaller -silent -responseFile <应答文件的绝对路径>
因为是挂载的镜像,所以必须使用这种方式,否则,如果从光盘上的安装目录,提示错误。

接下来就是等待安装结束了。
各安装参数的含义如下
ignoreSysPrereqs 让Oracle忽略系统检查,因为Oracle官方声明只支持Linux服务器产品,所以要在非服务器产品的Linux上安装就必须指定此参数。
silent 让安装程序以静默模式运行。
responseFile 指定一个应答文件。

安装过程顺利完成,至此,刚刚将数据库软件安装到系统里。
下面的内容摘录自安装过程的控制台显示:
=======================================================================
PrereqChecks complete

.......................................... 100% Done.


-----------------------------------------------------------------------------
Summary
Global Settings
Source: /mnt/vcdrom/Oracle10gR2/stage/products.xml
Oracle Home: /u01/app/oracle/10g (ora10g110)
Installation Type: Enterprise Edition
Product Languages
English
Simplified Chinese
Space Requirements
/ Required 1.38GB (includes 108MB temporary) : Available 23.07GB
New Installations (107 products)
Oracle Database 10g 10.2.0.1.0
Enterprise Edition Options 10.2.0.1.0
Oracle Partitioning 10.2.0.1.0
Oracle Spatial 10.2.0.1.0
Oracle OLAP 10.2.0.1.0
Oracle Enterprise Manager Console DB 10.2.0.1.0
Oracle Net Services 10.2.0.1.0
Oracle Database 10g 10.2.0.1.0
Oracle Net Listener 10.2.0.1.0
HAS Files for DB 10.2.0.1.0
Oracle Internet Directory Client 10.2.0.1.0
Oracle Call Interface (OCI) 10.2.0.1.0
Oracle Programmer 10.2.0.1.0
Oracle interMedia 10.2.0.1.0
Enterprise Manager Agent Core 10.2.0.1.0
Oracle JVM 10.2.0.1.0
Database Configuration and Upgrade Assistants 10.2.0.1.0
Oracle interMedia Locator 10.2.0.1.0
Oracle XML Development Kit 10.2.0.1.0
Oracle Text 10.2.0.1.0
Oracle Database Utilities 10.2.0.1.0
Generic Connectivity Common Files 10.2.0.1.0
Oracle Advanced Security 10.2.0.1.0
Enterprise Manager Repository Core 10.2.0.1.0
PL/SQL 10.2.0.1.0
Oracle Net 10.2.0.1.0
Assistant Common Files 10.2.0.1.0
Enterprise Manager plugin Common Files 10.2.0.1.0 Beta
Buildtools Common Files 10.2.0.1.0
Installation Common Files 10.2.0.1.0
Oracle LDAP administration 10.2.0.1.0
Oracle Java Client 10.2.0.1.0
Precompiler Common Files 10.2.0.1.0
Oracle Recovery Manager 10.2.0.1.0
SQL*Plus 10.2.0.1.0
iSQL*Plus 10.2.0.1.0
Enterprise Manager plugin Common Files 10.2.0.1.0
HAS Common Files 10.2.0.1.0
Oracle Clusterware RDBMS Files 10.2.0.1.0
Oracle Wallet Manager 10.2.0.1.0
Enterprise Manager Minimal Integration 10.2.0.1.0
Oracle Database User Interface 2.2.13.0.0
Secure Socket Layer 10.2.0.1.0
Oracle ODBC Driver 10.2.0.1.0
Required Support Files 10.2.0.1.0
Database SQL Scripts 10.2.0.1.0
OLAP SQL Scripts 10.2.0.1.0
PL/SQL Embedded Gateway 10.2.0.1.0
Oracle Globalization Support 10.2.0.1.0
Character Set Migration Utility 10.2.0.1.0
LDAP Required Support Files 10.2.0.1.0
Oracle Help for the Web 1.1.10.0.0
Oracle JDBC Thin Driver for JDK 1.4 10.2.0.1.0
Oracle JDBC Thin Driver for JDK 1.2 10.2.0.1.0
Oracle interMedia Client Option 10.2.0.1.0
Oracle Notification Service 10.1.0.3.0
Oracle Code Editor 1.2.1.0.0I
Perl Interpreter 5.8.3.0.2
JDBC Common Files 10.2.0.1.0
Oracle Locale Builder 10.2.0.1.0
Oracle Containers for Java 10.2.0.1.0
Database Workspace Manager 10.2.0.1.0
Oracle Core Required Support Files 10.2.0.1.0
Platform Required Support Files 10.2.0.1.0
Oracle interMedia Locator RDBMS Files 10.2.0.1.0
Oracle JDBC/OCI Instant Client 10.2.0.1.0
Oracle interMedia Annotator 10.2.0.1.0
SQLJ Runtime 10.2.0.1.0
Oracle interMedia Java Advanced Imaging 10.2.0.1.0
Oracle Database 10g interMedia Files 10.2.0.1.0
Oracle Data Mining RDBMS Files 10.2.0.1.0
Enterprise Manager Baseline 10.2.0.1.0
Oracle Help For Java 4.2.6.1.0
Oracle UIX 2.1.22.0.0
XML Parser for Java 10.2.0.1.0
Precompiler Required Support Files 10.2.0.1.0
XML Parser for Oracle JVM 10.2.0.1.0
Oracle Message Gateway Common Files 10.2.0.1.0
Oracle Starter Database 10.2.0.1.0
Sample Schema Data 10.2.0.1.0
Parser Generator Required Support Files 10.2.0.1.0
Agent Required Support Files 10.2.0.1.0
Oracle RAC Required Support Files-HAS 10.2.0.1.0
RDBMS Required Support Files 10.2.0.1.0
RDBMS Required Support Files for Instant Client 10.2.0.1.0
XDK Required Support Files 10.2.0.1.0
Oracle OLAP API 10.2.0.1.0
Oracle OLAP RDBMS Files 10.2.0.1.0
DBJAVA Required Support Files 10.2.0.1.0
SQL*Plus Required Support Files 10.2.0.1.0
Oracle JFC Extended Windowing Toolkit 4.2.33.0.0
Oracle Ice Browser 5.2.3.6.0
Oracle Display Fonts 9.0.2.0.0
Oracle Extended Windowing Toolkit 3.4.38.0.0
Enterprise Manager Common Files 10.2.0.1.0
Enterprise Manager Agent DB 10.2.0.1.0
Oracle Net Required Support Files 10.2.0.1.0
Enterprise Manager Repository DB 10.2.0.1.0
SSL Required Support Files for InstantClient 10.2.0.1.0
regexp 2.1.9.0.0
Bali Share 1.1.18.0.0
Oracle Universal Installer 10.2.0.1.0
Oracle One-Off Patch Installer 10.2.0.1.0
Installer SDK Component 10.2.0.1.0
Java Runtime Environment 1.4.2.8.0
Sun JDK 1.4.2.0.8
Sun JDK extensions 10.1.2.0.0
-----------------------------------------------------------------------------


Installation in progress (Tue Apr 21 20:40:02 CST 2009)
............................................................... 18% Done.
............................................................... 36% Done.
............................................................... 54% Done.
............................................................... 72% Done.
................ 76% Done.
Install successful

Linking in progress (Tue Apr 21 20:47:05 CST 2009)
Link successful

Setup in progress (Tue Apr 21 20:48:56 CST 2009)
.............. 100% Done.
Setup successful

End of install phases.(Tue Apr 21 20:49:04 CST 2009)
WARNING:A new inventory has been created in this session. However, it has not yet been registered as the central inventory of this system.
To register the new inventory please run the script '/home/oracle/oraInventory/orainstRoot.sh' with root privileges.
If you do not register the inventory, you may not be able to update or patch the products you installed.

The following configuration scripts
/u01/app/oracle/10g/root.sh
need to be executed as root for configuring the system. If you skip the execution of the configuration tools, the configuration will not be complete and the product wont function properly. In order to get the product to function properly, you will be required to execute the scripts and the configuration tools after exiting the OUI.

The installation of Oracle Database 10g was successful.
Please check '/home/oracle/oraInventory/logs/silentInstall2009-04-21_08-38-46PM.log' for more details.

Linux下挂载ISO镜像为虚拟磁盘

挂接命令(mount)
  首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

  命令格式:

  mount [-t vfstype] [-o options] device dir

  其中:

  1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

  光盘或光盘镜像:iso9660

  DOS fat16文件系统:msdos

  Windows 9x fat32文件系统:vfat

  Windows NT ntfs文件系统:ntfs

  Mount Windows文件网络共享:smbfs

  UNIX(LINUX) 文件网络共享:nfs

  2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

  loop:用来把一个文件当成硬盘分区挂接上系统

  ro:采用只读方式挂接设备

  rw:采用读写方式挂接设备

  iocharset:指定访问文件系统所用字符集

  3.device 要挂接(mount)的设备。

  4.dir设备在系统上的挂接点(mount point)。

  挂接光盘镜像文件

  由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;三、硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。


光盘镜像文件的挂接(mount)

   #mkdir /mnt/vcdrom

   注:建立一个目录用来作挂接点(mount point)

   #mount -o loop -t iso9660 /** /mydisk.iso /mnt/vcdrom 如:#mount -o loop -t iso9660 /usr/local/tooldisk/mydisk3.iso /mnt/vcdrom

   注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。在这之前要先挂载你的*.ISO文件

比如在有E盘,文件为NTFS格式,当然挂载点mkdir /mnt/vcdrom要存在,要不先建立挂载点:mkdir /mnt/vcdrom 然后挂载文件:mount -t ntfs /dev/hda6 /mnt/vcdrom

用df -lh命令查看/mnt/e是否挂载了。如果有多张ISO像镜文件要连继挂载安装。。就要先卸载文件先挂载的ISO像镜:umount /usr/local/tooldisk

再挂载mount -o loop -t iso9660 /usr/local/tooldisk/mydisk4.iso /mnt/vcdrom 依此类推...
如你现在安装在第三张光盘像镜完毕后提示放入第4张。这个时候你要先先卸载文件先挂载的ISO像镜mydisk3.iso 再挂载mount -o loop -t iso9660 /usr/local/tooldisk/mydisk4.iso /mnt/vcdrom 再确定提示对话框。

SQL Server 2005数据库置疑状态的修复

重起服务器的时候遭遇了数据库置疑状态,在网上查找帖子,发现都是针对SQL2000的,不过借助这个原理,转换了一下SQL语句,成功解决,使用的脚本如下:

这个脚本适应于日志损坏的情况,在SQL Log里有如下信息:
反映的是日志状态不对。

Recovery of database 'SuspectDB' (5) is 96% complete (approximately 0 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
SQL Server detected a DTC/KTM in-doubt transaction with UOW {D5141B98-7BB7-4D42-BF0D-F294CB378AB7}.Please resolve it following the guideline for Troubleshooting DTC Transactions.
错误: 3437,严重性: 21,状态: 3。
An error occurred while recovering database 'SuspectDB'. Unable to connect to Microsoft Distributed Transaction Coordinator (MS DTC) to check the completion status of transaction (0:32748311). Fix MS DTC, and run recovery again.
错误: 3414,严重性: 21,状态: 2。
An error occurred during recovery, preventing the database 'SuspectDB' (database ID 5) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.



alter database SuspectDB set emergency
go
alter database SuspectDB set single_user with rollback immediate
go
use master
go
alter database SuspectDB Rebuild Log on
(name=SuspectDB_log,filename='D:\Log\SuspectDB_log.LDF')
go
alter database SuspectDB set multi_user
go

DBCC CHECKDB('SuspectDB')
go

2009年4月16日星期四

如何重命名 SQL Server 故障转移群集实例

如果 SQL Server 实例包括在故障转移群集中,则重命名虚拟服务器的过程不同于重命名独立实例的过程。有关详细信息,请参阅如何重命名承载 SQL Server 独立实例的计算机。

虚拟服务器的名称始终与 SQL 网络名称(SQL 虚拟服务器的网络名称)相同。尽管您可以更改虚拟服务器的名称,但不能更改实例名。例如,您可以将名为 VS1\instance1 的虚拟服务器更改为其他名称(例如 SQL35\instance1),但是名称的实例部分 (instance1) 将保持不变。

开始重命名进程之前,请阅读下列各项。

除了在复制时使用日志传送的情况之外,SQL Server 不支持对复制所涉及的服务器进行重命名。如果主服务器永久丢失连接,则可以重命名日志传送中的辅助服务器。有关详细信息,请参阅复制和日志传送。

当您重命名被配置为使用数据库镜像的虚拟服务器时,必须在进行重命名操作之前先关闭数据库镜像,然后用新的虚拟服务器名称重新建立数据库镜像。数据库镜像的元数据将不会自动更新来反映新的虚拟服务器名称。

重命名虚拟服务器
使用群集管理器将 SQL 网络名称更改为新名称。

使网络名称资源脱机。这将使 SQL Server 资源和其他相关资源也脱机。

使 SQL Server 资源重新联机。

验证重命名操作
虚拟服务器被重命名之后,任何使用旧名称的连接现在都必须使用新名称来连接。

若要验证重命名操作是否已完成,请从 @@servername 或 sys.servers 中选择信息。@@servername 函数将返回新的虚拟服务器名称,sys.servers 表将显示新的虚拟服务器名称。若要验证故障转移过程是否能够使用新名称正常工作,用户还应尝试将 SQL Server 资源故障转移到其他节点。

对于从群集中任何节点进行的连接,都可以立即使用新名称。但是,对于从客户端计算机使用新名称进行的连接,则必须在新名称对该客户端计算机可见之后,才能使用新名称连接到服务器。根据网络配置,通过网络传播新名称所需的时间长度可能为几秒钟,也可能长至 3 到 5 分钟;旧的虚拟服务器名称在网络上不再可见也可能会需要一些时间。

若要最小化虚拟服务器重命名操作的网络传播延迟,请使用下列步骤:

最小化网络传播延迟
在服务器节点上从命令提示符发出下列命令:

ipconfig /flushdns
ipconfig /registerdns
nbtstat –RR

2009年4月15日星期三

推荐Windows平台上的日志分析挖掘工具LogParser

Log Parser是日志分析利器,目前最新版本是2.2。
它支持多种日志格式,分析效率极高,可以输出多种格式的图表;
支持标准SQL 查询,可以混合使用文件对象、日志源,功能非凡。

该工具完全免费,从微软网站上就可以获取,另有可爱的网友将原命令行工具包装了可视化界面--Log Parser Lizard

还有一个Visual Log Parser

功能差不多,凭各位喜好了。

LogParser里面使用的SQL语言基本是标准的,但是跟其他数据库里的函数稍有差异。
比如,SQL Server里获取当前日期的函数是getdate(),而这里使用的是SYSTEM_TIMESTAMP,这些在安装的帮助里有非常详细的介绍,稍微对比一下,很快就会掌握的。

2009年4月13日星期一

镜像数据库故障切换后的发布订阅延续问题

问题:
主体服务器A,镜像服务器B,2台服务器上的数据库DB_Mirror已经配置成镜像。
主题服务器A上已经新建了发布DB_Mirror_Repl,节点服务器C已经成功订阅了这个发布。
请问如何在发生故障转移的时候,节点服务器C继续能从镜像服务器B上同步过来数据。

参考答案:
有两个方案可以参考:
1. 暂时摒弃SQL的发布订阅机制,使用TableDiff等追差异工具定时运行,以保障数据同步。
本方案的主要应用场景是,服务器A和服务器B的硬件配置不对等,当发生切换的时候,DBA需要争取时间修复服务器A,等修好后再切换回服务器A。

2. 配置服务器A到C的复制过程中,将各个环节的脚本妥善保管,并针对服务器B进行相应修改,当切换发生后,在服务器B上应用脚本,实现快速配置发布订阅关系,中间可以借助TableDiff弥合数据差异,并跳过发布订阅初始化的漫长过程,达到快速恢复的目的。
本方案的应用场景是,服务器AB硬件配置相当,切换回去以A为主不是必须的情况。

微软官方文档说可以支持镜像服务器配置复制,有空研究一下
http://technet.microsoft.com/zh-cn/library/ms151799(SQL.90).aspx

镜像数据库本身是基于数据库的,不是基于服务器的,所以,超出镜像数据库本身的对象都要在第二服务器上创建,比如login,链接服务器、jobs等等,这些细节的关注是在故障发生时快速修复的
前提条件。

塑料瓶底的数字含义

  看数字区别使用塑料瓶  

许多饮料瓶、矿泉水瓶的底部都有一个带有箭头的三角形标志,里面标有数字,不同的数字代表不同的材料。  
“01”———PET(聚对苯二甲酸乙二醇酯)  

矿泉水瓶、碳酸饮料瓶都是用这种材质做成的。董金狮指出,饮料瓶不能循环使用装热水,这种材料耐热至70℃,只适合装暖饮或冻饮,装高温液体或加热则易变形,有对人体有害的物质溶出。科学家发现,这种塑料制品用了10个月后,可能释放出致癌物,对人体具有毒性。因此,饮料瓶等用完了就丢掉,不要再用来作为水杯,或者用来做储物容器盛装其他物品。  

“02”———HDPE(高密度聚乙烯)  

承装清洁用品、沐浴产品的塑料容器,目前超市和商场中使用的塑料袋多是此种材质制成,可耐110℃高温,标明食品用的塑料袋可用来盛装食品。承装清洁用品、沐浴产品的塑料容器可在小心清洁后重复使用,但这些容器通常不好清洗,残留原有的清洁用品,变成细菌的温床,清洁不彻底,最好不要循环使用。  

“03”———PVC(聚氯乙烯)  

据介绍,这种材质的塑料制品易产生的有毒有害物质来自于两个方面,一是生产过程中没有被完全聚合的单分子氯乙烯,二是增塑剂中的有害物。这两种物质在遇到高温和油脂时容易析出,有毒物随食物进入人体后,容易致癌。目前,这种材料的容器已经比较少用于包装食品。如果在使用,千万不要让它受热。  

“04”———LDPE(低密度聚乙烯)  

保鲜膜、塑料膜等都是这种材质。耐热性不强,通常,合格的PE保鲜膜在温度超过110℃时会出现热熔现象,会留下一些人体无法分解的塑料制剂。并且,用保鲜膜包裹食物加热,食物中的油脂很容易将保鲜膜中的有害物质溶解出来。因此,食物入微波炉,先要取下包裹着的保鲜膜。  

05”———PP(聚丙烯)  

微波炉餐盒采用这种材质制成,耐130℃高温,透明度差,这是唯一可以放进微波炉的塑料盒,在小心清洁后可重复使用。需要特别注意的是,一些微波炉餐盒,盒体以05号PP制造,但盒盖却以06号PS(聚苯乙烯))制造,PS透明度好,但不耐高温,所以不能与盒体一并放进微波炉。为保险起见,容器放入微波炉前,先把盖子取下。  

“06”———PS(聚苯乙烯)  

这是用于制造碗装泡面盒、发泡快餐盒的材质。又耐热又抗寒,但不能放进微波炉中,以免因温度过高而释出化学物。并且不能用于盛装强酸(如柳橙汁)、强碱性物质,因为会分解出对人体不好的聚苯乙烯。因此,您要尽量避免用快餐盒打包滚烫的食物。  

“07”———PC及其他类  

PC是被大量使用的一种材料,尤其多用于制造奶瓶、太空杯等。近年来,奶瓶因为含有双酚A而备受争议。专家指出,理论上,只要在制作PC的过程中,双酚A百分百转化成塑料结构,便表示制品完全没有双酚A,更谈不上释出。只是,若有小量双酚A没有转化成PC的塑料结构,则可能会释出而进入食物或饮品中。PC中残留的双酚A,温度愈高,释放愈多,速度也愈快。因此,不应以PC水瓶盛热水。如果容器有任何摔伤或破损,建议停止使用,因为塑料制品表面如果有细微的坑纹,容易藏细菌。避免反复使用已经老化的塑料器具。

如何准备MCITP考试

如何准备MCITP考试
微软的数据库认证数据库考试分为三个方向:数据库开发、数据库管理、商务智能。
http://www.microsoft.com/learning/mcp/mcitp/sql/2008/default.mspx

虽然SQL 2005出来都有四年了,但是针对认证的书籍到现在都没有出中文版,也没有正式引进英文版,能够见到的就是英文原版进口,按美元计算的,折合人民币500元以上。网上书店打折完了有160元左右。

纸制书籍携带不方便,上班时间也不能光明正大摊在桌子上看,所以我直接看电子版了。

目前市面上和网络上都没有2005升级到2008的考试教材70-453,看来升级到2008的考试只好等等再考了。

言归正传,准备考试一定要能坚持。

见缝插针
工作以后最大的问题就是时间的不连续性,每天可以连续支配的时间很短,这就要求我们能随时插空看书,随时记录学习进度,这样步步为营的做法,可以增加备考的信心。我就在电脑上写了个文本文件,每次作笔记的时候,都会打上时间戳,而且会经常翻看以前的记录,在巩固的旧知识的同时,可以总结学习时间的密度,如果中断的时间较长,就回顾一下原因,提高下面的学习密度。

学而时习之。
技术方面的学习都要理论结合实践,对于微软教材中的课中实践,一定要搭建环境,实际验证,这样印象会非常深刻。在准备70-443的考试过程中,我们正在把全站数据库从SQL2000升级到2008,从书中学到的冗余方案提示的升级步骤,在实际升级中起了指导作用。
我在实践了镜像数据库(Mirror DB)之后,把升级换下的机器进行了规划,指导其他同事将原来使用日志传送(Log Shipping)实现的技术支持部门使用的只读数据库成功升级成了使用镜像数据库结合快照(SnapShot)的只读系统,在满足需要的同时,提高了网站数据库的容灾等级。

每课后面的Review问题一定要作,这样可以检验对当课的掌握情况。要把自己作的答案记录到笔记里,以便日后复习。教材后面答案非常详细,为什么错,为什么对,都有详细描述,作题之后要对答案,这样可以加深印象。
对于每章的场景练习也要认真思考,里面的案例在实际工作中也会遇到,可以把这些当做演习。

不放过任何细节
微软的认证教材里有些例子很好,有些就是考试题目,比如这次就遇到了一个问题,为用户设计Truncate Table权限问题,教材里提示说用EXECUTE AS实现,当时觉得很新颖,印象也比较深,而考试也出了这个题目。

温故而知新
每章节后面都有Summary,用来总结该章节的内容。在复习的时候,即使时间再紧,也要把这段精华好好看看,可以起到提纲挈领的作用。

种花得柳
在准备考试的这段时间里,我的电脑一般会有三个进程同时开着,一个是Foxit reader,一个是金山词霸,还有一个是gvim。

因为看的是英文版的pdf文件,所以开Foxit作为浏览器,词霸用来查单词,同时将生词加入生词本,开gvim是用来作笔记的,这个工具是Windows平台上对应unix平台的vi的编辑器,功能非常强大。
通过了这个考试,不光多了两个证书,增加了词汇量,还掌握了一样新编辑软件的基本使用方法(基本用法见博客里的其他帖子)。可谓是有心种花花满园,顺带载柳柳成荫……

2009年4月12日星期日

终于考过了微软数据库认证MCITP:DBA SQL2005


今天(2009.4.10)是个值得庆祝的日子,历时7个月,终于把MCITP:DBA SQL2005的认证考试通过了。

虽然只有三门,但是工作的原因,考试时间一拖再拖,不管怎样,终于过了!

说说考认证的意义吧,主要有两点:

第一,考认证可以相对全面的掌握SQL Server

虽然现在所处的公司有200多台SQL Server DB服务器,业务模块有几十个,SQL的各种特性也有很多应用,但是,对SQL Server的功能的覆盖也仅有70%左右。而通过考数据库认证的方式,可以比较全面的了解SQL Server特性,也可以获得很多微软推荐的标准做法,这样对于掌握SQL Server体系结构和提高工作效率,相对于日常应用中撞到哪里,研究哪里,以及用摸石头过河解决问题要有效的多!

第二,考认证可以作为敲门砖

对于没有相应工作经验的求职者来说,虽然过了认证还会有很多公司不录用,这个跟公司的实际情况有关,但是,只要是认真准备考试,凭真才实学通过认证的人,在任何一次应聘都会胸有成竹!
对于已经有丰富经验的DBA来说,通过考试同样可以作为身份的认定,可以成为比较有说服力的依据!

2009年4月7日星期二

关于菜百的以旧换新--款式限制

去年结婚的时候在菜百买了一对结婚对戒,是铂金协会推荐的光圈款式,当时了解到菜百有以旧换新的业务,就放心的购买了。

现在国际金价下跌了很多,国内首饰价格也随之下跌,从菜百网站上查得铂金只有338元/克(2009.4.6),于是跟老婆商量去换对新一点的对戒。

在菜百柜台上得知,不能更换对戒,要换只能换单戒,自己去配对,要换对戒必须换非当年的旧款,因为他们的对戒只有铂金协会推荐的品种。
当时只是被告知换的时候分量只能重不能轻,要按克收一定比例的加工费(20元)。如今才知道还有这样的规则。

买的不如卖的精啊,我们看好的一对扁形的光圈,那是他们的主推款式,象其他所有光圈一样,每年都是关注焦点,而我们只能望戒兴叹了,因为这款永远不会成为旧款,我们也永远不能以旧换新的购买它!

郁闷~

2009年4月6日星期一

Linux文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述

来自:LinuxSir.Org
整理:北南南北
摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;

目录

版权声明
前言:关于find命令

一、find 命令格式
1、find命令的一般形式为;
2、find命令的参数;
3、find命令选项;
4、使用exec或ok来执行shell命令;

二、find命令的例子;

1、查找当前用户主目录下的所有文件;
2、为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
5、为了查找系统中所有属于root组的文件;
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件
7、为了查找当前文件系统中的所有目录并排序;
8、为了查找系统中所有的rmt磁带设备;
三、xargs
四、find 命令的参数;

1、使用name选项
2、用perm选项
3、忽略某个目录
4、使用find查找文件的时候怎么避开某个文件目录
5、使用user和nouser选项
6、使用group和nogroup选项
7、按照更改时间或访问时间等查找文件
8、查找比某个文件新或旧的文件
9、使用type选项
10、使用size选项
11、使用depth选项
12、使用mount选项
五、关于本文
六、相关文档


+++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++



版权声明


本文是zhyfly兄贴在LinuxSir.Org 的一个帖子而整理出来的,如果您对版权有疑问,请在本帖后面跟帖。谢谢;本文的HTML版本由北南南北整理;修改了整篇文档的全角及说明文字中的单词中每个字母空格的问题;为标题加了编号,方便大家阅读;

前言:关于find命令

由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。

在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。


一、find 命令格式



1、find命令的一般形式为;



find pathname -options [-print -exec -ok ...]


2、find命令的参数;



pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


3、find命令选项


-name
按照文件名查找文件。
-perm
按照文件权限来查找文件。
-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user
按照文件属主来查找文件。
-group
按照文件所属的组来查找文件。
-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变文件状态的文件
-ctime n
查找系统中最后n*24小时被改变文件状态的文件
 -mmin n
查找系统中最后N分钟被改变文件数据的文件
-mtime n
查找系统中最后n*24小时被改变文件数据的文件


4、使用exec或ok来执行shell命令


使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的

在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中


# find . -type f -exec ls -l { } \;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README

上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:


$ find logs -type f -mtime +5 -exec rm { } \;

记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。


$ find . -name "*.conf" -mtime +5 -ok rm { } \;
< rm ... ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除。

任何形式的命令都可以在-exec选项中使用。

在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。


# find /etc -name "passwd*" -exec grep "sam" { } \;
sam:x:501:501::/usr/sam:/bin/bash


二、find命令的例子;



1、查找当前用户主目录下的所有文件:


下面两种方法都可以使用


$ find $HOME -print
$ find ~ -print

2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;



$ find . -type f -perm 644 -exec ls -l { } \;


3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;



$ find / -type f -size 0 -exec ls -l { } \;


4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;



$ find /var/logs -type f -mtime +7 -ok rm { } \;


5、为了查找系统中所有属于root组的文件;



$find . -group root -exec ls -l { } \;
-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1


6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。


该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令


$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok
rm { } \;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n


7、为了查找当前文件系统中的所有目录并排序;



$ find . -type d | sort


8、为了查找系统中所有的rmt磁带设备;



$ find /dev/rmt -print


三、xargs


xargs - build and execute command lines from standard input

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。

下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件


#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text\
......

在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:


$ find / -name "core" -print | xargs echo "" >/tmp/core.log

上面这个执行太慢,我改成在当前目录下查找


#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6

在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:


# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf

用grep命令在所有的普通文件中搜索hostname这个词:


# find . -type f -print | xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

用grep命令在当前目录下的所有普通文件中搜索hostnames这个词:


# find . -name \* -type f -print | xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。

find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。


四、find 命令的参数


下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册


1、使用name选项


文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。

可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。

不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。


$ find ~ -name "*.txt" -print

想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:


$ find . -name "*.txt" -print

想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:


$ find . -name "[A-Z]*" -print

想要在/etc目录中查找文件名以host开头的文件,可以用:


$ find /etc -name "host*" -print

想要查找$HOME目录中的文件,可以用:


$ find ~ -name "*" -print 或find . -print

要想让系统高负荷运行,就从根目录开始查找所有的文件。


$ find / -name "*" -print

如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件:


$find . -name "[a-z][a-z][0--9][0--9].txt" -print


2、用perm选项


按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:


$ find . -perm 755 -print

还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666


# ls -l
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam
-rw-rw-rw- 1 root root 2792 10月 31 20:19 temp
# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp

-perm mode:文件许可正好符合mode

-perm +mode:文件许可部分符合mode

-perm -mode: 文件许可完全符合mode


3、忽略某个目录


如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。

如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:


$ find /apps -path "/apps/bin" -prune -o -print


4、使用find查找文件的时候怎么避开某个文件目录


比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件


find /usr/sam -path "/usr/sam/dir1" -prune -o -print


find [-path ..] [expression] 在路径列表的后面的是表达式

-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。

这个表达式组合特例可以用伪码写为


if -path "/usr/sam" then
-prune
else
-print

避开多个文件夹


find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print

圆括号表示表达式的结合。

\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

查找某一确定文件,-name等选项加在-o 之后


#find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print


5、使用user和nouser选项


按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用:


$ find ~ -user sam -print

在/etc目录下查找文件属主为uucp的文件:


$ find /etc -user uucp -print

为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。

例如,希望在/home目录下查找所有的这类文件,可以用:

$ find /home -nouser -print


6、使用group和nogroup选项


就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:


$ find /apps -group gem -print

要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件


$ find / -nogroup-print


7、按照更改时间或访问时间等查找文件


如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。

用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。

希望在系统根目录下查找更改时间在5日以内的文件,可以用:


$ find / -mtime -5 -print

为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:


$ find /var/adm -mtime +3 -print


8、查找比某个文件新或旧的文件


如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。它的一般形式为:


newest_file_name ! oldest_file_name

其中,!是逻辑非符号。

查找更改时间比文件sam新但比文件temp旧的文件:

例:有两个文件


-rw-r--r-- 1 sam adm 0 10月 31 01:07 fiel
-rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf
drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam
-rw-rw-rw- 1 root root 2792 10月 31 20:19 temp
# find -newer httpd1.conf ! -newer temp -ls
1077669 0 -rwxrwxr-x 2 sam adm 0 10月 31 01:01 ./httpd.conf
1077671 4 -rw-rw-rw- 1 root root 2792 10月 31 20:19 ./temp
1077673 0 -rw-r--r-- 1 sam adm 0 10月 31 01:07 ./fiel

查找更改时间在比temp文件新的文件:


$ find . -newer temp -print

9、使用type选项


在/etc目录下查找所有的目录,可以用:


$ find /etc -type d -print

在当前目录下查找除目录以外的所有类型的文件,可以用:

$ find . ! -type d -print

在/etc目录下查找所有的符号链接文件,可以用

$ find /etc -type l -print


10、使用size选项


可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。

在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:

$ find . -size +1000000c -print

在/home/apache目录下查找文件长度恰好为100字节的文件:


$ find /home/apache -size 100c -print

在当前目录下查找长度超过10块的文件(一块等于512字节):


$ find . -size +10 -print


11、使用depth选项


在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。

它将首先匹配所有的文件然后再进入子目录中查找。


$ find / -name "CON.FILE" -depth -print


12、使用mount选项


在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。

从当前目录开始查找位于本文件系统中文件名以XC结尾的文件:


$ find . -name "*.XC" -mount -print



五、关于本文

本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhy2111314兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读; ── 北南南北

六、相关文档

2009年4月4日星期六

重新注册系统所有DLL文件

重新注册系统所有DLL文件

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

vim中缩进与空格的设置

vim中缩进与空格的设置

shiftwidth:这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观,和下面的参数最好一致。同时它也是>>或者《符号移位长度的制定者。

2 tabstop:定义tab所等同的空格长度,一般来说最好设置成8,因为如果是其它值的话,可能引起文件在打印之类的场合中看起来很别扭。除非你设置了 expandtab模式,也就是把tabs转换成空格,这样的话就不会一起混淆,不过毕竟制表符为8是最常用最普遍的设置,所以一般还是不要改。

3 softtabstop 如果我们希望改变程序中的缩进怎么办?shiftwidth和tabstop不一样的话,你会发现程序比较难看的。这时候,softtabstop就起作 用了。可以从vim的说明中看到,一旦设置了softtabstop的值时,你按下tab键,插入的是空格和tab制表符的混合,具体如何混合取决于你设 定的softtabstop,举个例子,如果设定softtabstop=8,那么按下tab键,插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符;如果softtabstop=12,那么插入的就是一个制表符加上4个空格;如果 softtabstop=4呢?那么一开始,插入的就是4个空格,此时一旦你再按下一次tab,这次的四个空格就会和上次的四个空格组合起来变成一个制表 符。换句话说,softtabstop是“逢8空格进1制表符”,前提是你tabstop=8。

灵活操作 Vim 中的 Tabs

灵活操作 Vim 中的 Tabs

iuVim 支持 Tabs,也就是标签页编辑,很爽~
操作标签页的基本命令如下:
:tabnew : 打开一个新的标签页。
:tabprevious : 回到上一个标签页。
:tabnext : 到下一个标签页。
但是每次新建或者切换标签,都要打上这么一长串的命令,实在是麻烦,我们可以在配置文件中设置一下快捷键,如下:
:map :tabprevious
:map :tabnext
:map ^T :tabnew
:imap :tabpreviousi
:imap :tabnexti
:imap ^T :tabnewi
这样 F5 是向前,F6 是向后,Ctrl+t 是打开新的标签页,在插入模式下,也管用~ 当然你可以把上面的设置换成你习惯的键位~
不过,打开新标签页,每次都打开一个空白的标签页,然后再去选择文件,似乎有点折腾,如果新打开的标签页中显示当前目录下的文件,可以从中选择,那就好了~
实现很简单,在 :tabnew 后面给出目录名就可以了,当前目录的话,是 .:
:map :tabprevious
:map :tabnext
:map ^T :tabnew .
:imap :tabpreviousi
:imap :tabnexti
:imap ^T :tabnew .i
你也可以把 '.' 替换成你常用的目录~
这样做个小的改动,标签页比原来方便了不少~

2009年4月3日星期五

创建以当前日期命名的目录

md "D:\%date:~0,-4%"

比如今天创建的目录就是 D:\2009-04-03

2009年3月28日星期六

肚包肉

在美丽的枣林前街上,临近牛街的路北,牛街西里一栋居民楼底层,有一家小小的餐厅,叫“雅伊斋清真食品”店。这里,潜藏着号称北京独此一家的清真熟食品种——“肚包肉”。

“肚包肉”这名字,相当容易顾名思义——就是外面一层羊肚,里面密密实实地裹压着羊肉和羊杂,成品是那么一坨子,吃的时候,切成薄片,口感略略有些筋道。

好吃。

来自洛阳的店家说,家里自己做着吃了几十年,在朋友的建议下在京尝试商业化。

有空的时候去尝尝……




2009年3月26日星期四

SQL Server 2008导出数据到Access Excel2007的简单方法

SQL2008提供了强大的SSIS功能,但是操作起来比较复杂,而且避免不了需要数据驱动的问题
本文给出一种简单方法,可以简化操作过程。

SQL2008支持Office2007的数据格式,但是需要安装驱动,要么就要安装Office2007,这个动作从成本角度来说,是费时费钱的,(安装和正版Office授权)。
微软提供了访问驱动包
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

安装了该包以后,从SQL2008导出到Office2007的操作就很容易了。

在SSMS的数据库节点上选中导出数据,指定office格式即可。

2009年3月21日星期六

Internet Explorer 8 的键盘快捷键

Internet Explorer 8 的键盘快捷键

可以使用 Internet Explorer 快捷键快速执行许多不同任务,或在不使用鼠标的情况下正常操作。

查看和浏览网页
下表描述了用于查看和浏览网页的快捷方式。


操作
按键名称

显示帮助
F1

在全屏幕和常规浏览器窗口之间进行切换
F11

在网页、地址栏或收藏夹栏中的项目中向前移动
Tab

在网页、地址栏或收藏夹栏中的项目中向后移动
Shift+Tab

开始插入光标浏览
F7

进入您的主页
Alt+Home

转到下一页
Alt+向右键

返回前一页
Alt+向左键或 Backspace

显示某个链接的快捷菜单
Shift+F10

向前移动边框和浏览器元素(仅在禁用选项卡式浏览时有效)
Ctrl+Tab 或 F6

在边框之间向后移动(仅在禁用选项卡式浏览时有效)
Ctrl+Shift+Tab

向文档起始处滚动
向上键

向文档结尾处滚动
向下键

以较大跨度向文档起始处翻页
Page Up

以较大跨度向文档结尾处翻页
Page Down

移动到文档的开头
Home

移动到文档的结尾
End

在网页中查找
Ctrl+F

刷新当前网页
F5

即使 Web 上的页面与本机存储的网页时间戳相同,仍然 刷新当前网页
Ctrl+F5

停止下载网页
Esc

打开新网站或页面
Ctrl+O

打开新窗口
Ctrl+N

打开一个新的 InPrivate 浏览窗口
Ctrl+Alt+P

复制选项卡(在一个新选项卡中打开当前选项卡)
Ctrl+K

关闭当前窗口(如果仅打开了一个选项卡)
Ctrl+W

保存当前页
Ctrl+S

打印当前页或当前框架
Ctrl+P

激活选定的链接
Enter

打开收藏夹
Ctrl+I

打开历史记录
Ctrl+H

打开源
Ctrl+J

打开“页面”菜单
Alt+P

打开“工具”菜单
ALT+T

打开“帮助”菜单
ALT+H


使用选项卡
下表描述了使用选项卡时所使用的快捷方式。

操作
按键名称

在后台打开新选项卡中的链接
Ctrl+单击

在前台打开新选项卡中的链接
Ctrl+Shift+单击

在前台打开新选项卡
Ctrl+T

切换选项卡
Ctrl+Tab 或 Ctrl+Shift+Tab

关闭当前选项卡(或当前窗口,如果禁用了选项卡式浏览)
Ctrl+W

在前台从地址栏中打开新选项卡
Alt+Enter

切换到特定的选项卡号
CTRL+n(其中,n 是 1 到 8 之间的数字)

切换到上一个选项卡
Ctrl+9

关闭其他选项卡
Ctrl+Alt+F4

切换快速选项卡(缩略图视图)开关状态
Ctrl+Q


使用缩放功能
下表描述了用于缩放功能的快捷方式


操作
按键名称

放大 (+ 10%)
Ctrl+加号

缩小 (- 10%)
Ctrl+减号

缩放到 100%
Ctrl+0


使用搜索
下表描述了用于搜索功能的快捷方式


操作
按键名称

转到搜索框
Ctrl+E

在新选项卡中打开搜索查询
Alt+Enter

打开搜索提供程序菜单
CTRL+向下键


使用打印预览
下表描述了用于预览和打印网页的快捷方式。


操作
按键名称

设置打印选项并打印页面
Alt+P

更改纸张、页眉和页脚、方向和页面的页边距
Alt+U

显示要打印的第一页
Alt+Home

显示要打印的上一页
Alt+向左键

键入希望显示的页面的页码
Alt+A

显示要打印的下一页
Alt+向右键

显示要打印的最后一页
Alt+End

指定要如何打印边框(只有在打印使用边框的网页时 此选项才可用)
Alt+F

关闭打印预览
Alt+C


使用地址栏
下表描述了在地址栏上使用的快捷方式。


操作
按键名称

选择地址栏中的文本
Alt+D

显示已键入的地址的列表
F4

在地址栏中时,将光标向左移动到地址中的下一个逻辑断点(句点或 正斜杠)
Ctrl+向左箭头

在地址栏中时,将光标向右移动到地址中的下一个逻辑断点(句点或 正斜杠)
Ctrl+向右箭头

在地址栏中将“www.”添加到所键入文本的前面,将“.com”添加到所键入文本的 后面
Ctrl+Enter

在“自动完成”匹配项的列表中向前移动
向上键

在“自动完成”匹配项的列表中向后移动
向下键


打开 Internet Explorer 工具栏菜单
下表描述了用于打开 Internet Explorer 工具栏和命令栏菜单的快捷方式。


操作
按键名称

打开主页菜单
Alt+M

打开“打印”菜单
Alt+R

打开 RSS 菜单
Alt+J

打开“工具”菜单
Alt+O

打开“安全”菜单
Alt+S

打开“帮助”菜单
Alt+L


使用源、历史记录和收藏夹
下表描述了使用源、历史记录和收藏夹时所描述的快捷方式。


操作
按键名称

将当前网页添加到收藏夹中(或在源预览中订阅源)
Ctrl+D

删除浏览历史记录
Ctrl+Shift+Del

打开 InPrivate 浏览窗口
Ctrl+Shift+P

打开“整理收藏夹”对话框
Ctrl+B

在“整理收藏夹”对话框的收藏夹列表中向上移动所选项目
Alt+向上键

在“整理收藏夹”对话框的收藏夹列表中向下移动所选项目
Alt+向下键

打开“收藏中心”并显示收藏夹
Alt+C

打开“收藏中心”并显示历史记录
Ctrl+H

打开“收藏中心”并显示源
Ctrl+J

打开与插接“收藏中心”并显示源
Ctrl+Shift+J

打开“添加到收藏夹”菜单(或在源预览中订阅源)
Alt+Z

在菜单栏打开“收藏夹”菜单
Alt+A

显示所有源(当在源视图中时)
Alt+I

将源标记为可读(当在源视图中时)
Alt+M

将光标放到源视图的“搜索”框内
Alt+S


编辑
下表描述了在编辑网页时使用的快捷方式


操作
按键名称

删除所选项目并将其复制到剪贴板中
Ctrl+X

将所选项目复制到剪贴板
Ctrl+C

将剪贴板中的内容插入到所选位置
Ctrl+V

选中当前网页中的所有项目
Ctrl+A

打开 Internet Explorer Developer Tool
F12


使用信息栏
下表描述了使用信息栏时所使用的快捷方式。


操作
按键名称

将焦点移到信息栏
Alt+N

单击信息栏
空格键

Internet Explorer的前世今生

Internet Explorer最初是从早期一款商业性的专利网页浏览器Spyglass Mosaic衍生出来的产品。在1996年,微软透过给予季度费用和部分收入从Spyglass中取得了Spyglass Mosaic的授权。虽然Spyglass Mosaic的名字与NCSA Mosaic(首款应用得最广泛的网页浏览器)甚为相似,但Spyglass Mosaic则相对地较不出名以及使用了NCSA Mosaic少量的源代码。

Internet Explorer 3.0及之前版本

1995年8月,Internet Explorer第一个版本发布,但其最初几个版本并不受到广泛的使用,直到3.0版本的发行则开始改写了这个局面。3.0版本于1996年8月13日发布,是首个脱离Spyglass源代码发展的版本(但仍使用Spyglass的“技术”,所以程序的文件记录仍保留了Spyglass的版权资讯),它亦是首个支持CSS技术的主流浏览器。它引进了ActiveX控件、Java Applet、内联网页多媒体以及因特网内容选择平台系统对内容元数据的支持。对比于当时它的主要竞争对手Netscape Navigator,这些改进算是十分具代表性的。3.0版本亦捆绑了Internet Mail and News(为Outlook Express的前身)、NetMeeting及Windows Address Book,它亦缺省在Windows 95 OSR 2中。3.0版本被认为是Internet Explorer首个最受到欢迎的版本,但在发行后的数个月后亦被黑客发现了数个安全性和隐私漏洞。



Internet Explorer 4.0版本

4.0版本于1997年9月发布,它深化了浏览器和操作系统的整合层面,在Windows 95或Windows NT 4上安装4.0版本及选择视窗桌面更新功能可将传统式的Windows Explorer更新成与网页浏览器界面相似的新版Windows Explorer,用户亦可透过Active Desktop将网页浏览功能嵌入于视窗桌面上,可是这样的整合行为亦受到不少的批评(参见United States v. Microsoft案例),这个功能已在后期的版本安装中移除(但预先安装此功能的系统不会受到移除)。4.0版本引进了群组原则,允许公司设定和锁上浏览器的参数设置。Internet Mail and News被Outlook Express取代,Microsoft Chat和经改良的NetMeeting亦被捆绑在IE中。Windows 98 第一版亦包含了这个版本。



Internet Explorer 5.0及5.5版本

Windows 3.2简体中文版上的Internet Explorer 5.0版本于1999年3月18日发布,随后亦被捆绑在Windows 98 Second Edition和Windows 2000中(Windows 2000捆绑了5.01版本)。这个版本亦是另一个具代表性的发布,它引进了双向文字、旁注标记、XML、XSL及将网页储存成MHTML格式的功能。 5.5版本随后在2000年7月中发布,它改善了打印预览的功能、CSS及HTML标准的支持和应用程序编程接口。这个版本被捆绑在Windows Me中。



Internet Explorer 6.0版本

6.0版本于2001年8月27日发布,距Windows XP正式发布日的数星期前发布。这版本包含增强版DHTML、内联网页框架的内容限制和部分支持CSS level 1、DOM level 1和SMIL 2.0。MSXML引擎会更新到3.0版本。其他新的特征包含一个新版本的IEAK、媒体列和Windows Messenger综合版、错误收集、自动化重整图片大小、P3P和一个新的外观,能配合Windows XP的"Luna"界面。于2002年,Gopher的功能被禁用,7.0版本更取消了对Gopher的支持。



Internet Explorer 7.0版本

Windows Vista Beta 1上的Internet Explorer 7.0 Beta 1在2005年2月15日,微软主席比尔·盖茨于旧金山的RSA讨论会中,宣布新版本浏览器将会发布。推出新浏览器的原因是Internet Explorer的市场估有率逐渐被Mozilla Firefox侵蚀。此外,微软宣布7.0版本只可以用于Windows XP SP2和之后的操作系统中,包括Windows Server 2003 SP1和Windows Vista。Internet Explorer的第一个预览版本于2005年7月27日推出,主要用于技术测试。而第一个向大众的测试版本于2006年1月31日推出,版本是Beta 2 preview。最后的公开测试版本于2006年10月18日推出。7.0版本预期可以保护用户于钓鱼式攻击和其他的恶意软件。用户可以完全控制 ActiveX和更佳的保安架构,包括与Windows系统分开,不像以往般紧密融合,从而提高安全性。另外,新版本包括收复了一些程序中的错误,加强对各网际标准的支持,增进支持HTML 4.01/CSS 2,新加入分页浏览,还有一个支持各搜索引擎的搜寻方块,一个Web-feed阅览器,支持国际化域名,和反钓鱼式攻击过滤器。它甚至可以挡掉一些程序类型,例如Flash电影和Java。



2008年2月12日,微软以“安全原因”将通过Windows Server Update Services把所有Windows系统的浏览器强制升级到7.0版本。

Internet Explorer 8.0版本

北京时间2009年3月20日凌晨,微软向公众正式发布了Internet Explorer 8(IE8)浏览器。涉及包括中文简体、繁体等二十多种语言的版本。IE8浏览器中了最新的加速器、网页快讯、可视化搜索以及隐私浏览模式等新颖功能,而且IE8浏览器中还包含一个IE8百宝箱,为你的IE8浏览器提供了丰富的资源,不仅可以利用这些插件增强自己的IE8浏览器,有兴趣和能力的网友还能自己开发IE8插件与全球网民共同分享。