2008年11月30日星期日

[转载]修改CID

常用于虚拟机复制的时候MSDTC同步错误的CID相同问题

Use Add Windows Components, and remove Network DTC.
Go to the command line and run: MSDTC -uninstall
Go to the registry and delete the MSDTC keys in HKLM/Software/Microsoft/Software/MSDTC, HKLM/System/CurrentControlSet/Services/MSDTC, and HKEY_CLASSES_ROOT\CID (if they're still there).
Reboot
Go to the command line and run: MSDTC -install
Use Add Windows Components, and add Network DTC.
Go to the command line and run: net start msdtc


After running this on both servers I was able to confirm that the CID values were unique.

[转载]SQL Server DBA自学之道

DBA自学之道

--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com
--原帖地址

你不可能上大学去成为一个DBA。当然,你可能在那里学到一些数据库理论和设计的基本课程,甚至可能还有一两节特定数据库的课程,但没有能成为DBA的全面的大学课程。

当然,许多培训中心提供SQLServer的一周的课程,但正如你可能知道的那样,他们仅提供一些基础,不能真正教你你想知道的一切。此外,这需要付钱,如果你是自费的话,或在你的城市没有培训中心的话,这不可能是一个实际的选择。

那么,如果象你这样想成为一个DBA的人(或成为一个高级DBA,如果你已经是一个初级DBA的话),该有什么样的选择呢?如果你没能从课堂得到你真正需要的培训,你将转向哪儿呢?

如果你象我知道的大多数DBA一样,走的是自学的路的话,这不是一条容易的路,但如果你真正想成为一个DBA而成就你自己的职业生涯的话,我认为你会发现亲自去实现它是最可能走的路。

你需要学什么

如果你是一个数据库新手的话,你也许不了解这个,但实际上有很多不同的数据库工作方向。主要包括下面几个:

DBA (数据库管理员): 通常负责SQLServer和数据库的日常管理工作。
数据库模型/设计师:模型和设计数据库
数据库(T-SQL)开发人员:编写T-SQL应用程序,通常写一些脚本和存储过程。
数据仓库专家:管理也许还有开发基于数据仓库的应用程序。
本文着重于DBA。在很多方面,DBA必须是一个对SQLServer知识最全面的人(相比其他而言)。要想成为一个成功的DBA,你不仅必须知道怎样管理SQLServer,还需要熟悉SQLServer的方方面面,包括数据库设计、开发和数据仓库。你不必精通每一个数据库工作方向,但你知道得越多,你就越能更好得完成你得工作。你真正需要成为SQLServer万事通。正如你所想象的,这可能是一项庞大的事业。

那么我该从哪里开始?

幸运的是,有很多好的SQLServer书籍,所以在你成为高级DBA的路上最佳开始的地方就是开始建立顶级书籍的图书馆,当然,要从头到尾的阅读他们。在某些情况下,我发现某些书自己读了一遍又一遍,每次读他们都得到了更多的信息。

这里有一些我推荐的书,建议你按照顺序去读他们。当然你可以按照你想要的顺序去阅读,你也可以跳过一些不怎么感兴趣的主题。


对所有未来的DBA推荐的书

Microsoft SQL Server 2000 DBA Survival Guide: 开始DBA最好的一本书。从SQLServer6.5就有了,每个新版本都有所改善。
Beginning SQL Server 2000 Programming: 精通T-SQL开发基础很好的书。
Professional SQL Server 2000 Database Design: 可能是在SQLServer数据库设计方面曾经写得最好的书。
Admin 911: SQL Server 2000: 考虑这本书是因为它可能是你从其他书里找不到的一个真实世界技巧和提示的一个汇总。
Inside Microsoft SQL Server 2000: SQLServer如何工作最权威的书。它相当于SQLServer研究生级别。
Microsoft SQL Server 2000 Performance Tuning Technical Reference: 对DBA来说,性能调优是持续的工作,这本书也是必读的。
Microsoft SQL Server 2000 Analysis Services Step by Step: 即使你还不准备去做数据仓库,你也应该了解它的基础,这本书很好的包含了这些内容。

对那些真正想作为DBA而胜过他人的可选书籍

Professional SQL Server 2000 Programming: 我强烈推荐这本书给每一个想精通T-SQL开发的人。
Microsoft SQL Server 2000 Resource Kit: 很大的一本书,你将学到你以前从来没有想过的那些主题。
Beginning SQL Server 2000 for Visual Basic Developers: 如果你不得不支持那些用SQLServer作为他们数据库的VB开发者,那么你需要了解VB和SQLServer是怎么一起工作的。
MCSE Microsoft Windows 2000 Advanced Server Clustering Services Training Kit: 如果你需要做SQLServer群集,这是一本在这个非常难的主题上可用的少有的几本书之一。
Professional SQL Server 2000 DTS: 如果你需要在数据库间移动数据,或在做数据仓库,这本书是DTS的圣经。

为了了解每一本书的详细内容,单击该书的标题即可。

你可能已经注意到上面列出来的书主要着眼于SQLServer2000。那是因为它是SQLServer目前的版本,且有很多书可用。即使你使用的是SQLServer7.0,上面推荐的书将仍然很有用。在两个版本之间没有太多的不同。

读最先推荐的那一套书可能需要超过300个小时。这个数很大,但不要被它吓倒。如果你每天专门拿一个小时来读这些书的话,一年之内你就会读完它们。

SQLServer2000有很多可用的书,我认为上面我推荐的那些书是最好的。

其他的一些学习资源

虽然读书是学习你需要知道的大部分知识的最佳途径之一,但他仅是学习更多的SQLServer的一条途径而已。既然你正在读网站上的本文,你就已经知道了关于SQLServer的站点经常包括很多能助你成就高级DBA的内容。我的网页连接页面有很多连接到相关SQLServer的站点,其中我比较喜欢的有:

www.sqlservercentral.com
www.sqlteam.com
www.microsoft.com/sql
msdn.microsoft.com


我喜欢这些站点因为它们有很多你在其他网站上找不到的原创内容。正如你所想的,微软的站点有成千上万的关于SQLServer专门的网页。

如果你在大城市,你可以加入SQLServer用户组。大部分能至少一月一次的会面,提供程序去助你更好的精通SQLServer。可以在http://www.google.com上搜索离你最近的SQLServer用户组。

你也可以通过随意访问不同的SQLServer新闻组(你可以在这里找到)去学到更多的东西。如果在你自学时遇到你不能解决的问题,你可以去那儿问它们。

实践你所学的

尽管阅读关于SQLServer的资料是重要的,它不能代替你亲手去操作。那意味着你需要访问有SQLServer的计算机。幸运的是,上面推荐的几本数有一个SQLServer2000的120天的评估版,所以去访问它是没有问题的。

我建议你按照你读的书里的很多不同的例子去做。除此以外,为了获得更多的经验,我建议你试着去做一些自己能开发的实际项目,如根据你的书、CD、DVD或无论你收集到的什么去创建一个自己的数据库。或者如果你有一个做商业的朋友,自愿去为他们开发一个SQLServer数据库。

获得真实世界的经验

这是一个艰苦的部分,我不可能帮你太多。即使世界上最有学问的DBA不是在没有一些经验下去真正准备好了面对真实的世界。但如果没有人给你机会你怎么获得经验呢?

我知道的大多数DBA都没有计划要成为DBA,他们进入这一行是因为他们工作在相关的项目上。例如,也许他们是开发人员,NT或Windows2000管理员或者也许他们是微软Access的高手,然后决定成为DBA的。换句话说,他们没有从任何正式的培训或经验开始,但机缘巧合能使用SQLServer,他们抓住了机会去尽可能的获取经验,然后使其成为了全职的DBA。我就是那样。

如果你真对成为DBA感兴趣的话,无论什么原因,障碍不是不能逾越的。你所要的一切就是时间、毅力和学习的愿望

通过镜像任务为局域网内的McAfee升级

通过镜像任务为局域网内的McAfee升级
不能上网的机器如何更新咖啡病毒库及引擎,根据咖啡的升级原理总结如下---针对McAfee 8.0I:
镜像服务器:安装有Mcafee,可以到Mcafee网站下载升级包的服务器(本例采用192.168.0.2)。
哑巴服务器:安装有Mcafee,但不能到官方网站下载升级包的服务器。
1.先在镜像服务器建立一个文件夹,如“Mcafee.Mirror”(用于存储从官方下载的更新镜像--是自动下载的)。
2.在镜像服务器上打开McAfee VirusScan控制台,在控制台框内空白处右键选择“新建镜像任务”。在建立的“新建镜像任务”上右键选择“属性”,在弹出的窗口上点“镜像位置”,“浏览”定位到刚建立好的文件夹“Mcafee.Mirror”上,“确定”;然后点“计划”,在“任务”选项卡中的“计划设置”里钩上“启用”,再切换到“计划”选项卡,设置每天任务运行的时间,点“确定”之后设置完毕。
3.点击“立即镜像”,此时McAfee就自动地从其官网上下载更新的镜像了。第一次运行更新镜像可能会比较慢,因为要下载所有的更新(如果有引擎的更新的话也包括了引擎的更新),以后就只是增量的更新了,速度会快很多。
4.McAfee支持UNC、HTTP和FTP等多种方式的更新,将Mcafee.Mirror设置为共享,Mcafee.Mirror$,现在用于分发更新的“服务器”就做好了; 如果使用另外方式则需要相应配置服务端的文件访问。
5.在哑巴服务器上打开VirusScan控制台,在“工具”菜单中选“编辑AutoUpdate存储库列表...”,在“资料库”中点击“添加”,要升级的服务器和镜像服务器在同一个局域网里的一般选UNC方式,把镜像服务器的地址包括那个升级文件夹的名字添加进去,(如\\192.168.0.2\Mcafee.Mirror$),如果是想使用FTP或HTTP模式就需要指定相应的地址。
6.在哑巴服务器上选“立即更新”,可以看到升级包很快从镜像服务器上下载下来,重新查看病毒库,以验证更新与否。

[转载]Win2003全优化总体优化方案

2003全优化总体优化方案

Microsoft(R) Windows Server 2003 Enterprise Edition

在这里介绍一下,无人职守的安装2003的方法

打开2003的安装光盘,打开\SUPPORT\TOOLS目录下的DEPLOY.CAB文件(用winrar就能解压缩)将setupmgr.exe文件解压出来,运行,按照提示一步一步的执行就OK啦 呵呵

言规正传,我们从头开始,不愿看这部分的可直接看下面的优化步骤 :)

1,版本的识别已经windows 2003的激活(当然,如果你下载的就是免激活版本那......)

(1)windows server 2003 3790版本识别

RTM=release to manufacture (公开发行批量生产)是给硬件制造商的版本!是送去压盘的,不是拿去卖的。
OEM=Original Equipment Manufacturer只能全新安装, 和RTM差不多,只是称呼不同而已。
RTL=retail(零售)正式零售版,可以升级或者全新安装。
VLK=Volume License大量授权版,又称为企业版。

(2).windows server 2003 3790版的激活

现在流行的激活方式有以下几种:我还没找到好的算号器,目前的几个感觉速度非常慢,如果你机器配置号,耐心也不错可以去试试 :) 网上到处都有滴 :)

(1)Reset5.02,在安全模式下运行即可激活,把时间调整为2008年都没有问题,一切使用正常。可以升级。
缺点:激活程序被彻底屏蔽,表现为运行msoobe /a没有任何显示,并且在服务中有一项reset5,开机会自动运行此服务,C:\WINDOWS\system32\srvany.exe,此程序应该是reset5添加入系统的。

(2)俄罗斯破解,记得在xp时代,只要把setupreg.hiv在安装前替换,然后电话激活就可以达到完美的激活境界,可在2003下,这样子做之后,当前显示已激活,可如果你调整了时间再开机又会显示要

激活,甚至是不能使用。估计次次问题关键还是在那个setupreg.hiv文件。

(3)在论坛上有人贴出了一个Winxpactivation.exe的文件,号称可以激活,实际上这个还是假激活,暂时屏蔽了激活程序,是不能够修改时间的。

(4)用替换法做出来的伪VLK,安装使用都没有问题,只是不能升级。VLK是替换英文版的8个文件.但是SN已经被微软封掉了.所以不能升级。

结论:推荐大家用reset5.02激活!



O.K 优化开始



一,首先为这个庞然大物减肥(KAO,这家伙比XP还要大出多很) 确定你已经安装好硬件及软件!
1、删除系统备份文件吧:开始→运行→sfc.exe /purgecache 能减去几M的空间,积少成多嘛。
2、删除驱动备份: %windows%\driver cache\i386目录下的driver.cab文件,通常这个文件是70.3M。
3、刪除\windows\ime下不用的輸入法,8xM
4、如果你不看系统的帮助的话...删除%windows%\help目录下的所以文件,36M。
5、关闭系统还原,右健单击“我的电脑”,选择“属性”,找到“系统还原”,选择“在所有驱动器上关闭系统还原”。
6、如果你的系统区空间实在紧张,可以考虑把IE浏览器的临时文件夹移动到其它分区,方法:点击IE,工具》Internet 选项》Internet临时文件》设置》移动文件夹 就O.K了
7、如果空间再紧张的话,启用NTFS的压缩功能,建议不使用!
8、卸载不常用的组件,WIN2003和以前的WINDOWS版本不同,安装全部由系统自己负责,用户无法选择安装需要的组件。运行“添加-删除程序”,删除掉游戏,壁纸等不用的附件。还有记住删除

Internet Explorer 增强的安全配置,要不浏览网页时总会弹出警告!还可以用记事本修改\%windows%\inf\sysoc.inf,用查找/替换功能,在查找框中输入,hide,全部替换为空(注意,这行中的,hide不

能替换的"netfx=netfxocm.dll,UrtOcmProc,netfxocm.inf,hide,7")。这样,就把所有的,hide都去掉了,存盘退出,运行“添加-删除程序”,就会看见“添加/删除 Windows 组件”中多出不少选项,但

和XP下不同,改完后虽然隐藏的都出来了,但只有Windows自动更新一项可以删除,其它的是不允许删除滴~~



O.K瘦身结束!



二、为WIN2003提速,虽说他已经比XP快了,但谁会觉得自己钱多呢 呵呵
1、修改注册表的run键,删除多余的程序 。启用注册表管理器:开始→运行→Regedit→找到“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\” 右键→删除 如果你没安装软

件的话这么目录下的东西可全删除!(注意有的驱动是会在这里加入自己的键值的,要看好了,可先做备份,只要不带Kernel32/ system 什么的都可以删的了:)

2、减少预读取,减少进度条等待时间,效果是进度条跑一圈就进入登录画面了,开始→运行→regedit
启动注册表编辑器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Memory Management\PrefetchParameters, 有一个键值名为EnablePrefetcher,它的值是2(可能不一样,但没关系),把它改为“1”。
找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control,
将 WaitToKillServiceTimeout 设为:1000或更小。 ( 原设定值:20000 )
找到 HKEY_CURRENT_USER\Control Panel\Desktop 键,将右边视窗的WaitToKillAppTimeout 改为 1000, ( 原设定值:20000 )即关闭程序时仅等待1秒。
将 HungAppTimeout 值改为:200( 原设定值:5000 ), 表示程序出错时等待0.5秒。

3、让系统自动关闭停止回应的程式。
打开注册表 HKEY_CURRENT_USER\Control Panel\Desktop 键,
将 AutoEndTasks 值设为 1。 ( 原设定值:0 )

4、禁用错误报告
右键点击“我的电脑”-属性-高级-点击“错误报告”按钮,在出现的窗口中把“禁用错误报告”选上并复选“但在发生严重错误时通知我”

5、禁止Windows XP的压缩功能:
点击“开始”下的“运行”,在“运行”输入框中输入“regsvr32/u zipfldr.dll”,然后按回车出现zipfldr.dll中的Dll UnrgisterServer对话框,表示成功

6、禁用系统服务Qos
开始菜单→运行→键入 gpedit.msc ,出现“组策略”窗口, 展开 "管理模板”→“网络” , 展开 "QoS 数据包调度程序", 在右边窗右键单击“限制可保留带宽" ,在属性中的“设置”中有“限制

可保留带宽" ,选择“已禁用”,确定即可。当上述修改完成并应用后,用户在网络连接的属性对话框内的一般属性标签栏中如果能够看到"QoS Packet Scheduler(QoS 数据包调度程序)"。说明修改

成功,否则说明修改失败。

7、启用硬件和DirectX加速
硬件加速:桌面点击右键-属性 -设置-高级-疑难解答。把该页面的硬件加速滚动条拉到“完全”,最好点击“确定”保存退出。这期间可能出现一瞬的黑屏是完全正常。

DirectX加速:打开“开始” -> “运行”,键入“dxdiag”并回车打开“DirectX 诊断工具”,在“显示”页面,点击DirectDraw, Direct3D and AGP Texture 加速三个按钮启用加速。把“声音的硬

件加速级别”滚动条拉到“完全加速”

8、启动声音
2003默认是禁止声音的,点击->控制面板->声音 开启就行了!

9、禁用关机事件跟踪
开始 -> 运行 -> gpedit.msc->计算机配置 -> 管理模板 -> 系统 -> 显示关机事件跟踪 -> 禁用。

10、禁用配置服务器向导
禁止每次开机时“配置你的服务器”向导的出现:在控制面板 -> 管理员工具-> 管理你的服务器运行它,然后在窗口的左下角复选“登录时不要显示该页” 默认的开始菜单里的第一项就是“配置你的

服务器”

11、减少开机磁盘扫描等待时间,开始→运行,键入“chkntfs/t:0”

12、关闭自动更新:右键单击“我的电脑”,点击属性,点击“自动更新”,在“通知设置”一栏选择“关闭自动更新。我将手动更新计算机”一项。

13、性能优化
右键点击我的电脑,->属性->高兴->性能选项卡里的 设置->高级->然后将'处理器计划'和'内存使用'都调到程序选项上.

14、给鼠标右键增加个复制到.../移动到...功能
打开windows的记事本,将下面这些copy到记事本中,保存为mouse.reg,然后执行mouse.reg,这时随便找个文件,然后点击右键看看吧 :)


CODE:[Copy to clipboard]Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Copy To]
@="{C2FBB630-2971-11D1-A18C-00C04FD75D13}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\Move To]
@="{C2FBB631-2971-11D1-A18C-00C04FD75D13}"
三、关闭不用的系统服务(这些该S的服务,占去我多少宝贵的系统资源啊~~~默哀一分钟...)

系统默认运行的服务我也记不清了,在这把我机器上禁止了服务列出来,大家照着改一下吧:)
有些记得应该默认就是禁止或手动的服务我就不列出来啦~~ 太多了

1/Alerter 管理警报 禁止
2/Automatic Updates windows自动更新 手动
3/Background Intelligent Transfer Service 使用空闲的网络带宽传输数据 改为手动
4/clipbook 与远程电脑来共享剪贴板内容,一定要关 呵呵
5/Computer Browser 维护网络上计算机的更新列表 关!
6/DHCP client 为计算机注册并更新 IP 地址 对单机没用,不过现在都网络时代了,保留也可以!
7/Distributed link tracking client 保持局域网连接更新等信息,我不用局域网,这东西占用4M左右内存。
8/Distributed Transaction Coordinator 协调跨多个数据库、消息队列、文件系统等资源管理器的事务 和上面的差不多,关!
9/DNS Client DNS? 用不到,关了吧。
10/Error Reporting Service 错误报告,关!
11/Fast user switching compatibility 用户切换,关!
12/Help and Support 系统的帮助中心,刚才把帮助都删了,还开着它干嘛?
13/Logical Disk manager administrative service 配置磁盘 关
14/MS software shadow copy provider 卷复制备份的
15/Net Logon 关!
16/Netmeeting remote desktop sharing netmeeting,关
17/Network DDE  动态数据交换传输
18/Network DDE DSDM 和上面差不多
19/Network Location Awareness 关
20/NT LM Security Support Provider 关
21/NTLM Security support provider-telnet 关
22/Performance logs and alert 将系统状态写日志或发警告
23/Portable media serial number 关!
24/Print Spooler 打印机?我没有,关!
25/QoS RSVP 关!
26/Remote desktop help session manager 远程帮助服务,不需要
27/remote Procedure Call LOCATOR 管理RPC
28/remote registry 远程管理注册表,关
29/removable storage 
30/routing and remote access 我干脆禁用了它
31/Server 关,这样省的手动删除共享了,等需要时再开:)
32/security accounts manager 我的系统只是一个客户系统,不用iis。
33/smart card 默认应该是关的
34/SSDP Discovery service 我用不到这个
35/system event notification 如果是服务器肯定要记录的
36/system restore service 系统还原服务
37/task scheduler windows 计划服务
38/Telephony 拨号服务
39/telnet 远程登陆,默认应该是关着的
40/terminal services 终端服务
41/uninterruptible power supply UPS,我没有呀
42/upload manager 关了也能传输文件的
43/volume shadow copy 什么备份?关
44/webclient 关啦
45/Windows Installer MSI 服务
46/windows image acquisition (WIA) 数码设备,偶穷~~~
47/windows management instrumentation driver extensions 关
48/windows time 时间服务,关吧,有时连不上,而且也没必要那么准吧
49/wireless zero configuration 无线网络,关
50/WMI perfromance adapter 关
51/WinHTTP Web Proxy Auto-Discovery Service 没啥大用的,关吧
52/Workstation 嘿嘿,关,需要的时候再开

要是有啥漏掉了...自己看看吧,不知道的别瞎关,其实都是中文,系统要是说,关了会影响系统正常运行就不要关了:)

呵呵 终于优化完了,不足之处还请各位高手指点,本文参考了Killer《我的WinXP优化之路》

剩下的就是备份一下这个新优化的系统了:)如果你打算只在自己使用备份,那么可不必重新封装,直接GHOST即可。

在2003安装盘上找Deploy.cab中的sysprep.exe文件。
运行sysprep.exe,选择“重新封装”,下面的标记中可以选择“已提前激活”,还可以选择封装完成后是关机还是重新启动。封装完成后,我们再用带有Ghost的系统盘启动,用Ghost来生成备份*.gho

镜像文件,备份完成!


附小技巧

1.禁用配置服务器向导
禁止“配置你的服务器”(Manage Your Server)向导的出现:在控制面板(Control Panel) -> 管理员工具(Administrative Tools )-> 管理你的服务器(Manage Your Server)运行它,然后在窗

口的左下角复选“登录时不要显示该页”(Don't display this page at logon)。

2.禁用Internet Explorer Enhanced Security 和禁止安全询问框的出现在IE工具选项中自定义设置IE的安全级别。在”安全“(Security)选项卡上拉动滚动条把Internet区域安全设置为”中

“(Medium)或“中低”。自定义设置中将有关的选择“提示”修改为选择“禁止”或“启用”。

3.禁用关机事件跟踪
开始 -> 运行 -> gpedit.msc -> Computer configuration -> Administrative Templates -> System -> Display shutdown event tracker -> 设置为 Disable。如果是中文版,则:开始 -> 运行 ->

gpedit.msc->计算机配置 -> 管理模板 -> 系统 -> 显示关机事件跟踪 -> 禁用。

4. 禁用开机 CTRL+ALT+DEL和实现自动登陆
方法1:打开注册表(运行->“Regedit”),再打开:
HKEY_LOCAL_MACHIN|SOFTWARE|MicroSoft|Windows NT|CurrentVersion |Winlogon段,在此段中按右键,新建二个字符串段,AutoAdminLogon=“1”,DefaultPassword=“为超级用户Administrator所设

置的Password”。注意,一定要为Administrator设置一个密码,否则不能实现自启动。 然后,重新启动Windows即可实现自动登录。
方法2:管理工具 -> Local Security Settings(本地安全策略) -> 本地策略 -> 安全选项 -> interactive logon: Do not require CTRL+ALT+DEL,启用之。
方法3(自动登陆):使用Windows XP的Tweak UI来实现Server 2003自动登陆。
下载:Tweak UI http://www.ssite.org/uppic/sun_pic/...003/tweakui.exe
下载后直接执行tweakui.exe 在左边的面板中选择Logon -> Autologon -> 在右边勾选Log on automatically at system startup输入你的用户名和域名(如果没有就不写),点击下面的Set Password

,输入用户名的密码,然后点击OK。

5.启用硬件和DirectX加速
★硬件加速:桌面点击右键--属性(Properties) -> 设置(Settings )--高级( Advanced )--疑难解答(Troubleshoot)。把该页面的硬件加速滚动条拉到“完全”( Full),最好点击“

确定”(OK)保存退出。这期间可能出现一瞬的黑屏是完全正常。
★DirectX加速:打开“开始”(Start) -> “运行”(Run),键入“dxdiag”并回车打开“DirectX 诊断工具”(DirectX Tools),在“显示”(Display)页面,点击DirectDraw, Direct3D and

AGP Texture 加速三个按钮启用加速。把“声音的硬件加速级别”(Hardware Sound Acceleration Level)滚动条拉到“完全加速”( Full Acceleration)。

6.启用桌面主题和隐藏文件 
打开“开始”(Start) -> “运行”(Run),键入“Services.msc ”,选themes“主题”(默认是禁止的),然后改为“自动”,按“应用”,选“开启”。接着点“桌面”的属性,在“主题”里选

“windows xp”Windows Server 2003默认显示所有的文件夹,如果可以通过以下方法来隐藏:打开任意一个文件夹,选择“工具” -> “文件夹选项” -> “查看”,选择“不显示隐藏的文件和文件夹

”,点击“确定”。

7.允许内置的IMAPI CD-Burning服务和支持Windows影像设备服务
★启用Windows内置的IMAPI CD-Burning服务:打开“开始”(Start) -> “运行”(Run),键入“Services.msc ”,在出现的窗口中找到“IMAPI CD-Burning COM Service ”并双击它,然后在启动

模式(startup type )的下拉菜单选择“自动”(Automatic),并点击“应用”(Apply) ->“开始”(Start) -> “确定”(OK)
★假如你有如数码相机和扫描仪之类的影像设备,应该打开Windows Image Acquisition 服务。
打开“开始”(Start) -> “运行”(Run),键入“Services.msc ”,在出现的窗口中找到“Windows Image Acquisition (WIA) ”并双击它,然后在启动模式(startup type )的下拉菜单选择“

自动”(Automatic),并点击“应用”(Apply) ->“开始”(Start) -> “确定”(OK)

8.高级设置
★禁用错误报告
右键点击“我的电脑”(My Computer)--属性(Properties)--高级(Advanced)--点击“错误报告”(Error Reporting )按钮,在出现的窗口中把“禁用错误报告”(Disable Error

Reporting)选上并复选“但在发生严重错误时通知我”(But, notify me when critical errors occur.)
★调整虚拟内存
一些朋友经常会对关机和注销缓慢感到束手无策,解决办法就是禁用虚拟内存,这样你的注销和关机时间可能会加快很多。右键点击“我的电脑”(My Computer)--属性(Properties)--高级

(Advanced)--性能(Performance)--设置(Setting)--高级(Advanced),点击“虚拟内存”(Virtual memory)部分的“更改”(Change),然后在出现的窗口选择“无分页文件”。重启

系统即可。

9.加快启动和运行速度

**修改注册表,减少预读取,减少进度条等待时间:开始→运行→regedit启动注册表编辑器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Memory Management\PrefetchParameters, 有一个键值名为EnablePrefetcher,它的值是3,把它改为“1”或“5”。
找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control,
将 WaitToKillServiceTimeout 设为:1000或更小。 ( 原设定值:20000 )
找到 HKEY_CURRENT_USER\Control Panel\Desktop 键,将右边视窗的WaitToKillAppTimeout 改为 1000, ( 原设定值:20000 )即关闭程序时仅等待1秒。
将 HungAppTimeout 值改为:200( 原设定值:5000 ), 表示程序出错时等待0.5秒。

**让系统自动关闭停止回应的程式。
打开注册表 HKEY_CURRENT_USER\Control Panel\Desktop 键,
将 AutoEndTasks 值设为 1。 ( 原设定值:0 )

**禁用系统服务Qos
开始菜单→运行→键入 gpedit.msc ,出现“组策略”窗口, 展开 "管理模板”→“网络” , 展开 "QoS 数据包调度程序", 在右边窗右键单击“限制可保留带宽" ,在属性中的“设置”中有“限制

可保留带宽" ,选择“已禁用”,确定即可。当上述修改完成并应用后,用户在网络连接的属性对话框内的一般属性标签栏中如果能够看到"QoS Packet Scheduler(QoS 数据包调度程序)"。说明修改

成功,否则说明修改失败。

**改变窗口弹出的速度:
找到HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics子键分支,在右边的窗口中找到MinAniMate键值,其类型为REG_SZ,默认情况下此健值的值为1,表示打开窗口显示的动画,把它改为

0,则禁止动画显示,接下来从开始菜单中选择“注销”命令,激活刚才所作的修改。

**禁止Windows XP的压缩功能:
点击“开始”下的“运行”,在“运行”输入框中输入“regsvr32/u zipfldr.dll”,然后按回车键即可。

**设置个性的启动信息或警告信息:
个性化的Windows XP启动:打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon子键分支,双击LegalNoticeCaption健值,打开“编辑字符串

”对话框,在“数值数据”下的文本框中输入自己想要的信息标题,如“哥们儿,你好!”,然后点击“确定”,重新启动。
如果想要改变警告信息的话可以双击LegalNoticeText健值名称,在出现的“编辑字符串”窗口中输入想要显示的警告信息,单击“确定”,重新启动。

记得最后再来一次sfc.exe /purgecache

OK!大功告成

忘记mysql 密码的取回方法

如果 MySQL 正在运行,
首先杀之: killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之)
以安全模式启动 MySQL :
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
(windows 下 mysql安装所以盘/mysql/bin/safe_mysqld --skip-grant-tables )
就可以不需要密码就进入 MySQL 了。
/usr/local/mysql/bin/mysql
然后就是
>use mysql
>update user set password=password("******") where user="root";
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL 。

增加远程可以访问到mysql的方法

mysql> grant all privileges on *.* to 'root'@'192.168.11.98' identified by '******' with grant option;
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

[转载]MS SQL用ROWCOUNT解决TOP子句不支持变量的问题

据传SQL 2005有了RowID的东西,可以解决TOP排序的问题。可惜还没有机会体验。在SQL 2000中写存储过程,总会遇到需要TOP的地方,而一旦遇到TOP,因为没办法把TOP后面的数字作为变量写到预编译的语句中去,所以只能够使用构造SQL,使用Exec来执行。不说效率的问题,心里也总觉得这个办法很笨。
实际上,在SQL 2000中完全可以使用ROWCOUNT关键字解决这个问题。
ROWCOUNT关键字的用法在联机帮助中有比较详细的说明,这儿就不罗嗦了。谈谈体会。
1、使用ROWCOUNT查询前几行结果。
DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
SELECT * FROM Table_1
 这样,查询结果将等同于
SELECT TOP 100 FROM Table_1
2、同样的道理,使用INSERT INTO..SELECT的时候也有效。
DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
INSERT INTO Table_2 (colname1)
SELECT colname1=colname2 FROM Table_1
执行的结果将等同于
INSERT INTO Table_2(colname1)
SELECT TOP 1000 colname1 = colname2 FROM Table_1
3、执行UPDATE和DELETE。
因为UPDATE和DELETE无法直接使用ORDER BY语法,如果使用ROWCOUNT,将按照主键顺序从前往后操作。
DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
DELETE FROM Table_1
不过也有解决办法,只要能够使用ORDER BY关键字就可以了,比如说直接用含ORDER BY的子句,或者先使用ORDER BY语法把需要操作的标识列存为一个临时表或表变量,然后再操作语句中使用IN或EXISTS关键字。
DECLARE @n INT
SET @n = 1000
SET ROWCOUNT @n
DECLARE @t TABLE(ID INT)
INSERT INTO @t
SELECT ID FROM Table_1 ORDER BY colname [ASC/DESC]

DELETE FROM  Table_1 WHERE ID IN (SELECT ID FROM @t)
4、对于ROWCOUNT的设置是与Session有关的。如果占用了一个Session,那么对应的这个数据库Session将使用最近一次设置的ROWCOUNT,直到Session结束或者修改了ROWCOUNT。
5、在用户自定义函数中不能使用ROWCOUNT。
6、取消ROWCOUNT。
我不知道为什么在联机帮助中说,写存储过程的时候应该注意尽量避免使用ROWCOUNT,而建议使用TOP。难道MS不知道TOP关键后面的数字不能为变量吗?也许MS是出于担心开发者忘记了取消ROWCOUNT而影响正常的实现。
使用这样的语句即可取消ROWCOUNT了。
SET ROWCOUNT 0
8、总结
使用ROWCOUNT之后可以很方便的解决TOP关键字不能带变量的问题,这样,对于需要排序取值的问题就比较容易解决了。避免了使用EXEC来执行构造SQL语句,调试存储过程的时候也要方便很多。唯一不方便的是,没有找到获取当前ROWCOUNT值的办法,但仔细想来,得到这个值的用处也并不大。

[转载]Cron服务配置详解

/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置
刚做了一个备份的模块,后来师傅提示最好再加一个自动备份的功能,于是研究起来Cron这个服务来。Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

1.直接用crontab命令编辑

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron服务的详细内容

crontab -r //删除没个用户的cron服务

crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab -u root -l

再例如,root想删除fred的cron设置:crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

分钟 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)//0代表星期天

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

每天早上6点

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

2.编辑/etc/crontab 文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:


SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号HOME=/ //使用者运行的路径,这里是根目录# run-parts01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

Crontab 笔记
作者: Fenng
网址: http://www.dbanotes.net/techmemo/crontab_tips.html

关于 Crontab ,维基百科上的词条 Crontab非常好。可惜这个地址在国内不用代理访问不到。

虽然关于 Crontab 的介绍到处都是,详细读了一遍这个词条,收获还是有的。Crontab 这个名字来自 "chronos",一个古希腊语, “时间”的意思.

常见陷阱
每个SA、DBA 或者是普通的 Unix 用户,在第一次使用 Crontab 的时候都会遇到问题. 运行 Crontab 的常见错误包括如下几种:
1) 出于测试目的新创建了一条 Cron JOB, 时间间隔必须超过两分钟,否则 JOB 将调度不到。如果必须忽略这两分钟的载入配置时间差,可以通过重新启动 Cron Daemon 做到。

2) 从 Crontab 中启动 X Window 程序需要注意的事项:所以要么在程序前初始化 "DISPLAY=:0.0", 要么在应用程序后面追加参数 --display :0.0

3) 命令中的 % 必须做转义处理: \% .我个人的意见是不要在命令行里带这个参数,干脆写到脚本里,然后调度该脚本即可。

其实我倒是认为使用 Crontab 最常见的一个问题往往是因为环境变量不对。经常会看到论坛里有人问:为什么我的 Crontab 创建了不执行? 准备创建一条 Cron JOB 的时候,很多人都喜欢在命令行下运行一遍,因为这个时候环境变量是随着 Shell 自动带进来,在 Crontab 中则可能因为找不到正确的环境变量,JOB 就不能执行。这个小问题就像出天花,一次教训之后就都记得了。

必须使用的一则技巧
每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
附: Crontab 的格式说明如下:

* 逗号(',') 指定列表值。如: "1,3,4,7,8"
* 中横线('-') 指定范围值 如 "1-6", 代表 "1,2,3,4,5,6"
* 星号 ('*') 代表所有可能的值

Linux(开源系统似乎都可以)下还有个 "/" 可以用. 在 Minute 字段上,*/15 表示每 15 分钟执行一次. 而这个特性在商业 Unix ,比如 AIX 上就没有.

# Use the hash sign to prefix a comment
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

北京地区常用DNS列表

北京地区常用DNS列表
电信:
219.141.140.10
219.150.32.132
网通:
202.106.196.115
202.106.0.20

203.196.0.6
203.196.1.6

在线工具收集

DLL ocx sys下载

http://www.zhaodll.com/

Work Online
在线Office,Mail,Sheet,Show,Docs……
http://www.zoho.com/

Google 在线翻译

http://translate.google.com/translate_t#

网页截图

不需要专业截图软件也可以对长长的网页页面进行截图保存了
http://www.superscreenshot.com/

在线检查死链接

http://www.elsop.com/quick/

根据IP反查域名

http://www.myipneighbors.com/


域名信息查询

http://whois.domaintools.com/

IP查询
查看自己的外网IP、手机号码归属地、邮政编码、长途电话区号、身份证号码验证专业在线查询
http://www.ip138.com

Command Line Tools for win32
http://www.vkill.net/tools.html
http://live.sysinternals.com/

2008年11月27日星期四

Cacti添加监控节点傻瓜操作手册

Cacti添加监控节点傻瓜操作手册

注:因对blog操作不甚熟练,传图设置的模板是中号,好在可以点击链接查看大图,先将就一下,有空再调整~

创建监控过程:
在左边选择Devices


在右边的窗口选Add在打开的窗口按下面填写



选择Create


如果配置正常,则SNMP Information处会显示从目标机器上获取的信息。

点右上角的Create Graph

Mounted Partitions处选择所有磁盘
Get Process info :选择CPU0(多核CPU或超线程都会识别成多个CPU,这里只选择一个)
Interface Statistics: 选中代表该机器IP的行,然后修改Graph Type: In/Out Bytes(默认是In/Out Bits)



Create


Create,此时打开的页面上方有创建成功的信息


至此监控目标创建完成

在左侧菜单选择Graph Trees,打开计划添加图片的节点,Add

添加监控图到树上:
Tree Item Type选择Graph,Graph下拉框选择刚增加的图片

Round Robin Archive:选择Daily,如下图


Create,新添加的图形就会出现在列表上


重复上面的添加图片过程,依照下面的顺序:
CPU,Interface,各磁盘分区使用情况

过几分钟后,Admin账号可以在顶级菜单的Graph页发现图片已经加入


如果需要其他账号也能看到,必须到用户管理处增加查看权限,默认是看不到的。
如果图片摆放不合理,可以到Graph Trees处调整顺序,调整完成后保存。

2008年11月26日星期三

Cluster节点切换的监控方法--基于系统日志

对于MS cluster环境,有时候需要对Cluster状态进行监控,下面给出了针对系统日志监控的参考数据


Event Source: ClusSvc
非活动节点重起:
N1非活动节点,N2活动节点

1. Node Mgr N2节点心跳找不到N1 1123
2. Node Mgr N2节点公网找不到N1 1123
3. Node Mgr N1节点从cluster中去除 1135
4. Node Mgr N2节点确定心跳线连接丢失×3 1124
5. Node Mgr N2节点重新通过心跳连接到N1 1122
6. Node Mgr N2节点通过公网连接到N1 1122
7. Node Mgr 确定N1节点在公网可用 1125
8. Node Mgr 确定N1节点在内网可用 1125
9. Startup/Shutdown N1节点加入cluster 1062
10. Event Logger 节点间时间差量 1202


手工切换过程

场景假设:
N1非活动节点,N2活动节点

1. Failover Mgr N1节点尝试上线win cluster 1200
2. Failover Mgr N2节点尝试下线win cluster 1203
3. Failover Mgr N2节点下线win cluster成功 1204
4. Failover Mgr N1节点上线win cluster成功 1201
5. Failover Mgr N2节点尝试下线sql cluster 1203
6. Resource Monitor N2节点下线Sql失败 1117
7. Failover Mgr N2节点上下线sql group 失败 1205
8. Failover Mgr N1节点尝试上线sql group 1200
9. Failover Mgr N1节点上线sql group成功 1201
10. Event Logger 统计N1、N2节点差量 1202

砖头:
在系统日志里检索到
Event Source: ClusSvc
Event ID: 1135, 1203
=>Cluster节点下线

在系统日志里检索到
Event Source: ClusSvc
Event ID: 1062, 1201
=>Cluster节点上线

SQL 2005 修改实例名的方法

--SQL 2005 修改实例名的方法
--如果服务器实例是按默认实例名
select @@servername --原机器名

select convert(char(20),serverproperty('servername')) --新实例名


exec sp_dropserver '原机器名'
go

exec sp_addserver '新机器名','LOCAL'
GO

--修改机器名
--重起后可以保证实例名随机器名一并修改


--查看机器名和实例名
SP_HELPSERVER

2008年11月21日星期五

[转载]20个非常有用的微软技术网站

20个非常有用的微软技术网站


微软的专业技术人员会花费大量时间跟踪大量来自市场的意见,并想办法解决这些意见所反映的问题。我们在这里所列的20个最佳的微软技术网站也是为了帮助你找到你需要的解决问题的办法。这份名单既有专业技术网站、也有有价值的博客和有安全保障的资源,帮助你通过微软认证程序或培训程序。此外,我们还披露了一些值得信任的免费的微软软件资源和最佳网站。

1. WindowsNetworking.com

这个网站的名称就说明了一切。该网站汇集了很多技术文章,涉及Windows联网的所有方面,此外还有博客、教程、信息版。它最令人感兴趣的地方是它的知识数据库,有了这个数据库,查找所有存档的文章非常方便。



2. MSExchange.org

该网站和微软公司无关,但却存储了非常全面的有关微软Exchange的技术资料。它的特色是论坛和视频教程。



3. TechLog

这个网站是由一群独立的微软技术专家维持的,技术水准相当的高。它关注的是System Center,并上传了很多教程。浏览者会察觉到,TechLog秉持一种前微软哲学观。



4. GPAnswers.com

当Jeremy Moskowitz不在全国巡回授课时,他就在网上主持Webinars。只要他能有时间坐下来,他就会更新他的网站。他对Active Directory的群组策略非常精通,足以让任何一位想要提高技术水平的管理员获得他想要的知识。




5. Glen's Exchange Dev Blog

Glen Scales描写他的生活就是一个消息开发者,包括上载免费的脚本(特别是PowerShell的脚本)和代码样板。从Windows Mobile Devices到Exchange技巧,Scales可提供非常实用的技术建议。



6. ISAserver.org

ISAserver.org是个独立网站,专门面向微软互联网安全和加速服务器的用户及开发者(ISA是微软Windows防火墙)。但是对于不用这类产品的人来说,这里也会有一些很有意思的东西,比如Windows安全软件列表,还有一些专家博客的建议等。




7. Kim Cameron's Identity Weblog

Cameron是认证七法则的创始人,正在领导着微软的一个据说是构建开放平台的很不错的项目——在本例中是指认证平台。虽然他的工作技术性很高,但他的博客却与微软无关,而是关乎整个行业的投入和发展的。



8. WindowsNow

Robert McLaws承认自己是个微软粉丝,他说最令他难忘的事情就是他在去年的CES展会上和比尔·盖茨握了手。然而当需要他向雷德蒙的庞大机器挑战时,他也会很来劲。




9. MVPs.org
这个独立网站是专门为那些给微软MVP评分的博客及网站做索引的。所谓MVP(最有价值的专家),就是由微软宣布的具有高级技术知识并有时间志愿和微软技术专家一起帮助他人的人。这个网站收集了大批的MVP名单,并按所擅长的领域进行分类。



10. Microsoft TechNet
在任何一份最有用的技术网站名单中,都少不了TechNet。这是一个由微软为IT技术人员提供技术信息的最佳资源网站。该网站汇集了博客、教程、下载、资源列表。但既然这是个微软办的网站,它自然是需要注册的。



11. CertGuard braindump validation search tool
该网站能帮助你确保你的微软认证信息不会因疏忽大意而处于危险中被恶意组织所利用。它包含有各种恶意网站的名单,比如采用容易输错的字做网站名称,如MCMCSE.com,不安全的博客、论坛等也在其中。CertGuard网站同时还提供清白网站的列表。



12. ProProfs.com Academy

这是个免费而且开放的在线资源类网站,提供安全可靠的微软认证考试复习材料。




13. ExamForce

ExamForce主要提供测试软件、音频复习材料、闪存卡、电子书等,帮助学生准备进行微软认证考试。该网站被CertGuard评为清白的网站。



14. Microsoft Learning

微软支持所有跟培训有关的东西。填写“学习计划”,后者就会对你通过某项考试所需要的培训进行评估,然后给出如何进行培训的建议。




15. Cramsession.com

Cramsession.com是又一个研究微软认证(以及思科和安全认证)的很酷的网站。除了提供一些免费手册和白皮书以外,你还可以签约参与“一日一题”的活动。



16. The Road to Know Where

该网站提供来自各种可靠来源的微软软件。其中很多软件来自微软,也有些出自微软员工的推荐。




17. CodePlex

该网站汇集了微软的开源项目。虽然有人会认为“微软”和“开源”风马牛不相及,但是对使用微软技术的企业来说,CodePlex上还是有很多绝好的开源项目的。



18. Microsoft Download Center

这是提供微软免费的软件、插件、驱动程序和游戏的官方网站。填写“下载须知”,你就能每周收到你所关心的某类软件新的下载信息邮件。




19. ActiveWin.com
这是个新闻聚合网站,只发布网上和微软有关的新闻。但是新闻的虽然数量不少,却缺乏分析。



20. Microsoft Subnet

一家独立的新闻网站,还包含有很多有深度的博客、安全警示、很不错的免费赠品、搞笑的视频片段和有用的微软网站列表。而所有这一切你只需要有适度的谦恭和足够的幽默便可获得。

遍历数据库的未公开存储过程sp_MSforeachdb应用之Attach数据库

sp_MSforeachdb是SQL Server2k的Master库的未公开存储过程,其作用是遍历SQL实例下多个数据库,执行相应脚本。

比如想知道各数据库的物理文件存放路径和文件名,可以执行如下语句:

exec sp_msforeachdb 'select * from ?.dbo.sysfiles'

?就是该存储过程用来替换的DB名称

对于DBA来说,迁移数据库是很经常的事情,常用的方法是停服务后拷贝mdf和ldf到目标服务器,量少时还可以手工操作,量大了就只能使用脚本,有时候一台服务器上有几十个数据库,这时下面的脚本就有了用武之地。

--首先创建接受db信息的临时表

create table DBFileInfo
( dbName varchar(100) null,
fName varchar(255) null)

--将查询结果插入到表中
exec master.dbo.sp_MSforeachdb 'insert into DBFileInfo (dbName,fName) select N''?'',filename from ?.dbo.sysfiles'


--后期处理,比如生成Attach数据库脚本
--第一个语句的filename序号有问题
DECLARE @dbName varchar(100),@fName varchar(255), @dbName0 varchar(100),@fileCount as tinyint

DECLARE cur CURSOR
FOR SELECT dbname,fname FROM DBFileInfo order by 1


DECLARE @count smallint
SELECT @count = 1
SELECT @fileCount = 1

OPEN cur
FETCH NEXT FROM cur INTO @dbname,@fname

select @dbName0=@dbName
print 'EXEC sp_attach_db @dbname=''' +@dbname + ''''


WHILE (@@fetch_status <> -1)
BEGIN

if @dbName <> @dbname0

begin
SELECT @fileCount = 1
print 'go'
print 'EXEC sp_attach_db @dbname=''' +@dbname + ''''
print ',@filename'+ convert(varchar,@fileCount) +' = ''' +rtrim(@fname) + ''' '
SELECT @fileCount = @fileCount+1
end
else
begin
print ',@filename'+ convert(varchar,@fileCount) +' = ''' +rtrim(@fname) +''' '
end
select @dbName0=@dbName
FETCH NEXT FROM cur INTO @dbname,@fname
SELECT @count = @count + 1

END
print @count
CLOSE cur
DEALLOCATE cur

2008年11月20日星期四

系统维护常用网址

Dell 计算机详细配置及保修信息

Dell 驱动下载

Windows 2003 命令行参考

中华补天网

Windows Sysinternals

Windows脚本中心

[转载]HOW TO:在 Windows Server 2003 中使用 Netdom.exe 实用工具重命名计算机

本文介绍如何使用 Netdom.exe 实用工具(包含在 Windows Server 2003 支持工具中)来重命名作为 Microsoft Windows 2000 或 Windows Server 2003 域成员的计算机。本过程可在要重命名的计算机上本地或远程执行。此外,本过程无需您在域中重新设置或手动重新创建计算机帐户。

Netdom.exe 实用工具可以重命名作为 Windows Server 2003 域成员的计算机。但是,要重命名计算机,您必须指定具有本地管理权限的用户帐户和 Active Directory 中的计算机帐户的对象。

注意:要使用 netdom 命令重命名域控制器,必须将域功能级别设置为 Windows Server 2003。但是,该命令会重命名加入到域的计算机。还会重命名域中的计算机对象。某些服务(如证书颁发机构)依赖于固定机器名称。如果任何此类服务正在目标计算机上运行,更改计算机名称就会产生负面影响。因此,不要使用该命令重命名域控制器。而应使用 netdom 计算机名 命令。或者,要获得其他帮助,请在帮助文件中搜索 netdom,然后查看“重命名域控制器:Active Directory”主题。


如何重命名计算机
从 Windows Server 2003 安装光盘上的 Support\Tools 文件夹安装 Windows Server 2003 支持工具。(要安装这些工具,请右键单击 Support\Tools 文件夹中的 Suptools.msi 文件,然后单击安装。)
在命令提示符处,键入以下命令。注意:为便于阅读,下列命令行已进行了换行。请将该命令作为一行输入。
netdom renamecomputer 计算机名 /newname:新计算机名
/userd:域\用户名 /passwordd:password |* /usero:用户名
/passwordo:password |* /force /reboot:秒数
以下是该命令行的说明:


计算机名:要重命名的计算机的当前名称。


新计算机名:要将计算机重命名为的名称。域名系统 (DNS) 主机标签和 NetBIOS 名称都将更改为此新名称。如果新名称超过 15 个字符,NetBIOS 名称只取前 15 个字符。


/userd:域\用户名:要用于目标域的用户帐户。该帐户用于建立与计算机要加入的域的连接。该参数是必需的,并且如果未指定任何域,将采用该计算机所在的域。


/usero:用户名:将用于具有本地管理权限的起始域的用户帐户(可以与为 /userd: 指定的帐户相同)。该帐户用于建立与将要重命名的计算机的连接。如果忽略该帐户,则使用当前登录用户的帐户。可以将该用户的域指定为“/uo:domain\user”。如果忽略该域,将采用本地计算机帐户。


/passwordd:密码:/userd 指定的用户帐户的密码。


/passwordo:密码:/usero 指定的用户帐户的密码。

星号 (*):可以连接到 /passwordd 或 /passwordo 的值,它指示应提示用户输入密码。


force:该命令会对计算机上运行的某些服务产生负面影响。除非指定了 /force 开关,否则将提示用户予以确认。


Reboot:指定重命名操作完成后应关闭并自动重新启动计算机。还可以提供自动关机前的秒数。默认值为 30 秒。如果未指定该参数,必须手动重新启动计算机。
例如,假定您拥有一台名为“Mycomputer”的工作站,它是名为“Mydomain”的域的成员。要将该工作站的名称更改为“Yourcomputer”,然后在 60 秒之后自动重新启动工作站。可使用以下命令。

注意:为便于阅读,以下命令行语法已进行了换行。必须将该命令作为一行输入。
netdom renamecomputer mycomputer /newname:yourcomputer
/userD:mydomain\administrator /passwordd:*
/usero:administrator /passwordo:* /reboot:60
可能会出现以下警告消息,并且可能会提示您是否继续:
This operation will rename the computer "Mycomputer" to "Yourcomputer".Certain services, such as certification authority, rely on a fixed computer name.If any services of this type are running on "Mycomputer", a computer name change would have an adverse impact.
如果不希望提示是否继续,在输入 netdom 命令时,除包括其他参数外,还应包括 /force 开关。

--------------------------------------------------------------------------------

这篇文章中的信息适用于:
Microsoft Windows Server 2003 Datacenter Edition
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Standard Edition
Microsoft Windows Server 2003, 64-Bit Datacenter Edition
Microsoft Windows Server 2003, Enterprise x64 Edition

关键字: kbhowto kbhowtomaster kbactivedirectory kbofficexpsp1fix KB325354

http://support.microsoft.com/kb/325354/zh-cn

[转载]Cacti配置及维护简明指导手册

Cacti配置及维护指导手册
作者:Cocis
考虑到cacti配置较为复杂,建议直接下载cactiEZ系统进行安装,快捷、省时。
CactiEZ 0.3是一个专门用作运行cacti的linux发行版,该版本由Jimmy Conner制作发行,基于CentOS4.4。安装后只会在系统中安装cacti和webmin所必须的软件,整个系统非常小(安装光盘只有310M),并且已经安装好了一些cacti的插件,如BackUp,Discovery,Flowview,Haloe,MacTrack,Monitor,NTop,RRDClean,Reports,Thold,Tools,Update等,其中有些需要用户自己启用才可使用。整个操作系统一旦安装完成,配置好IP后即可使用Cacti,为大家节省了的安装配置时间,只不过需要占用一台服务器。

一、安装CactiEZ
1.先下载CactiEZ v0.3安装包,解压出ISO镜像文件。
官方下载地址:http://mirror.cactiusers.org/downloads/CactiEZ-v0.3.tar.gz
2.刻录光盘。从光盘启动后进入CactiEZ的安装界面,回车后自动安装整个操作系统。安装大概需要5-10分钟。
3.安装完成后重启,开始配置硬件向导,按回车键,全自动。。。
4.进入登陆界面,系统默认用户:root默认密码:CactiEZ
二、更改系统相关配置
1.更改系统帐户及密码

#passwd root然后输入两次密码即可。

2.配置IP地址
#vi /etc/sysconfig/network-scripts/ifcfg-eth0根据实际情况进行修改。
---------------------------
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:0C:29:31:5D:50
IPADDR=192.168.0.22
NETMASK=255.255.255.0
NETWORK=192.168.0.0
GATEWAY=192.168.0.1
ONBOOT=yes
TYPE=Ethernet
---------------------------
:wq保存退出
#service network restart 重新启动网络

3.配置DNS
CactiEZ默认没有设置DNS的界面,需手动进行配置。
#vi /etc/resolv.conf根据实际情况进行修改。
---------------------------
nameserver 192.168.0.36
nameserver 192.168.0.37
---------------------------

4.更改主机名称
#vi /etc/sysconfig/network
将hostname改名即可。
:wq保存退出。

完成如上步骤后,重新启动。

三、配置Cacti
1.检查cacti系统的时区、时间是否正确,避免后续生成的图像有误
[root@cacti/]# date
Fri Sep 12 14:23:49 CST 2008

若不正常则进行更改,方法有两种:
方法一:
登陆Cacti的Webmin管理界面:https://ip:10000
若提示安全警报,选择“是”。
然后输入username: root password: your_password
路径为:Hardware-System Time

方法二:
修改/etc/sysconfig/clock文件的内容为:
ZONE="Asia/Shanghai"
UTC=false
ARC=false

修改日期:
时间设定成2008年9月12日的命令如下:
#date -s09/12/2008

修改时间:
将系统时间设定成上午10点10分0秒的命令如下。
#date -s 10:10:00

同步BIOS时间:
同步BIOS时钟,强制把系统时间写入CMOS,命令如下:
#clock -w

注意:时间修改后建议重新启动,主要是考虑cacti图像的正确生成。

2.开启NTOP和NAGIOS服务
登陆Cacti的Webmin管理界面:https://ip:10000
若提示安全警报,选择“是”。
然后输入username: root password: your_password
在Webmin的最顶端选择“CactiEZ”-“CactiEZ Configuration”开启Ntop和Nagios服务,并保存。
备注:Ntop:监控网络流量 Nagios:网络监控软件
3.帐户修改
登录cacti界面:http://ip
User Name: admin默认
Password: admin默认
登录后更改admin的默认密码,删除guest帐户,并根据实际情况添加帐户和密码。
4.修改常规设置
Console-Configuration:Settings
General:
勾选“Web Events”中的"Web SNMP Messages";
修改“Poller Logging Level”的选项为“MEDIUM-Statistics,Errors and Results”,并勾选“Poller Syslog/Eventlog Selection”中的“Poller Statistics”、“Poller Warnings”、“Poller Errors”三个选项。图一
其它设置均默认即可。

四、创建监测点
参见http://blog.sina.com.cn/s/blog_4e424e2101000b6o.html中的《使用Cacti监控你的网络(三)--Cacti的使用》,记录的很详细,我就不多说了,这里只简单补充几点:
1.若该主机为Windows Server 2003系统,需首先安装SNMP服务,并进行相关设置(Windows Server 2003的SNMP服务默认是不允许直接访问的):
“服务”--“SNMP Service”,右键选择属性--安全选项,勾选“发送身份验证陷阱” ,添加“团体”为“public” ,权限为“只读”;在下方选择“接受来自这些主机的snmp数据包”,并添加上cacti的主机地址。

2.创建监测点只需要两个步骤:一是创建Devices,二是创建Graph,其它的都是自动生成的。

3.监测点创建完成后,不要立即打开graphs查看图像,需等待几分钟才能生成图像。

4.若需要删除当前错误监测点,重新创建,建议先删除对应的rrd文件,再创建监测点,避免重新创建后图像生成错误。
rrd文件的路径为:/var/www/html/rra

5.Cacti默认的自动备份路径为:/var/www/backups

centos linux 安全设置指南

centos linux 安全设置指南

1,最小化安全系统,删除不必要的软件,关闭不必要的服务.
# ntsysv
以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务再逐个打开.
atd
crond
irqbalance
microcode_ctl
network
sshd
syslog

2,删除finger程序,具体方法如下
#rpm –e finger

3,BOIS安全设置

4,帐号安全设置
修改/etc/login.def文件
PASS_MAX_DAYS 120 ?设置密码过期日期
PASS_MIN_DAYS 0 ?设置密码最少更改日期
PASS_MIN_LEN 10 ?设置密码最小长度
PASS_WARN_AGE 7 ?设置过期提前警告天数
确保/etc/shadow为root只读
确保/etc/passwd为root读写

定期用密码工具检测用户密码强度

5, /etc/exports
如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
建议最好不要使用NFS.

6,inetd.conf或xinetd.conf
如果是inetd.conf建议注释掉所有的r开头的程序,exec等
7,TCP_Wrappers
在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL

8,/etc/aliases文件
Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.
编辑aliases,删除或注释下面这些行:
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
运行/usr/bin/nesaliases重新加载.

9,防止sendmail被没有授权的用户滥用
编辑sendmail.cf
把PrivacyOptions=authwarnings
改为PrivacyOptions=authwarnings,noexpn,novrfy

10,不响应ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

11,使TCP SYN Cookie保护生效
Echo 1 > /proc/sys/net/ipv4/tcp_syncookies

12,删除不必要的用户和组用户
删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
可以设置不可更改位
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

13,防止任何人都可以用su命令成为root
编辑su文件(vi /etc/pam.d/su),加入如下两行
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
把能su为root的用户加入wheel组
usermod -G10 username

14,使Control+Alt+Delete关机键无效
编辑inittab文件,注释掉
Ca:ctrlaltdel:/sbin/shutdown –t3 –r now
运行/sbin/init q 使设置生效

15,创建所有重要的日志文件的硬拷贝
如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:
Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
执行/etc/rc.d/init.d/syslog restart
或者把日志发送到其它服务器保存

authpriv.* /var/log/secure
要把它发送到192.168.0.2,就可以这样修改
authpriv.* @192.168.0.2 /var/log/secure

16,改变/etc/rc.d/init.d目录下的脚本文件的访问许可
chmod –R 700 /etc/rc.d/init.d/*
注意:慎重修改此安全设置

17,/etc/rc.d/rc.local
把此文件中无关的信息全部注释,不让任何人看到任何有关主机的信息.
删除/etc下的issue和issue.net

18,带S位的程序
可以清除s位的程序包括但不限于:
? 从来不用的程序;
? 不希望非root用户运行的程序;
? 偶尔用用,但是不介意先用su命令变为root后再运行.
find / -type f \( -perm 04000 –o –perm -02000 \) -print
chmod a-s 程序名

19,查看系统隐藏文件
find / -name “.*” –print

20,查找任何人都有写权限的文件和目录
find / -type f \( -perm -2 -o perm -20 \) ls
find / -type f \( -perm -2 –o –perm -20 \) ls

21,查找系统中没有主人的文件
find / -nouser –o –nogroup

22,查找.rhosts文件
find /home -name “.rhosts”
如果有,请删除它.

23,收回系统编译器的权限或删除
如: chmod 700 /usr/bin/gcc

linux用户管理常用命令

1)管理用户(user)的工具或命令;


useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;


2)管理用户组(group)的工具或命令;


groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;

[转载]用户(user)和用户组(group)相关的配置文件

用户(user)和用户组(group)相关的配置文件

1.与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件

第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是 beinan 和linuxsir;
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID ;请参看本文的UID的解说;
第四字段:GID;请参看本文的GID的解说;
第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户是没有设置全称;
第六字段:用户的家目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;
第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是 bash ;所以设置为/bin/bash

/etc/shadow 注:用户(user)影子口令文件

第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段,目前为空,以备将来Linux发展之用;

2.与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;

第一字段:用户组名称;
第二字段:用户组密码;
第三字段:GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
/etc/gshadow 注:用户组(group)的影子文件;

第一字段:用户组
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第四字段:组成员,如果有多个成员,用,号分割;

3./etc/skel 目录; 命令:ls -la /etc/skel/
/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown 来改变新用户家目录的属主;

4./etc/login.defs 配置文件

/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;

5./etc/default/useradd 文件;

通过useradd 添加用户时的规则文件;

UID和GID

UID 是用户的ID 值,在系统中每个用户的UID的值是唯一的,UID 是确认用户权限的标识,用户登录系统所处的角色是通过UID 来实现的,而非用户名。系统用户的UID的值从0开始,是一个正整数,至于最大值可以在/etc/login.defs 可以查到,一般Linux发行版约定为60000; 在Linux 中,root的UID是0,拥有系统最高权限;

GID类似与UID

2008年11月19日星期三

An existing connection was forcibly closed by the remote host

问题描述:
========
前端WEB应用程序报错:
System.Data.SqlClient.SqlException: A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

原因描述:
========
一般情况下这个报错信息是由于您数据库服务器是Windows Server 2003 SP1之后的版本,由于在Windows Server 2003 SP1和SP2中添加了一个新的功能,通过将处理TCP/IP请求的任务下放给网卡,减少了并发TCP/IP连接服务器的队列大小。而这个功能可以在网络负载大的情况下,系统可能就会无法正确地识别有效的TCP/IP链接。

解决步骤:
========
所以我建议您尝试如下步骤,禁用掉Windows 2003的这个功能:

首先,请务必备份您的注册表。

步骤一:
1. 在装有SQL 的服务器上打开注册表
2. 找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3. 在右边查找注册表值SynAttackProtect,如果找到,请确认其值为0,如果不是,请改为0
4. 如果第3步中没有发现这个值,请手动新建一个DWORD值,取名为SynAttackProtect,修改值为0
5. 退出注册表,重新启动服务器

步骤二:
1. 在装有SQL 的服务器上打开注册表
2. 找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3. 在右边手动新建一个DWORD值,取名为EnableRSS,修改值为0
4. 退出注册表,重新启动服务器

步骤三:
1. 点击开始->运行->输入cmd->回车
2. 在命令行中输入"Netsh int ip set chimney DISABLED" (不包含引号),确认其成功完成
3. 观察问题是否还存在

相关文档:
========

http://support.microsoft.com/kb/945977


http://support.microsoft.com/default.aspx?scid=kb;en-us;912222


http://support.microsoft.com/kb/942861/en-us

ls常用方法

名称 : ls
使用权限 : 所有使用者
使用方式 : ls [-alrtAFR] [name...]
说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
参数 :
-a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
-r 将档案以相反次序显示(原定依英文字母次序)
-t 将档案依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出
范例:
列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
ls -ltr s*
将 /bin 目录以下所有目录及档案详细资料列出 :
ls -lR /bin
列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
ls -AF
-a:列出全部档案,如dos下的dir /a
-A:列出全部档案,但不包括.和..
-d:列出目录本身名称.ls -d /etc会显示/etc,而不是显示etc目录中的所由文件.
-f:不排序列出结果,默认是按照名称排序的.
-F:显示文件的类型,*代表可执行文件,/代表目录,=代表socket文件,|代表FIFO文件.
-h:以人类容易阅读方式列出,GB,KB.
-i:列出i节点.
-l:长列输出,包含文件的详悉属性.
-n:使用uid和gid来代替拥有者和拥有组的名程.
-r:将结果反向输出.
-R:递归模式,将子目录的文件一并列出.
-S:以文件大小排序.
-t:以时间排序.
--color=always:不同的文件显示不同的颜色
--color=never:与always相反
--color=auto:让系统自行判断是否给予颜色
--full-time:完整的时间格式
--time = ctime or atime or mtime:ctime为改变属性时间,atime为访问时间,mtime为修改时间.


-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。

[转载]VI常用命令整理

VI常用命令整理
★命令模式
移动光标
h 或 向左方向键(←) → 光标向左移动一个字元
j 或 向下方向鍵(↓) → 光标向下移动一个字元
k 或 向上方向鍵(↑) → 光标向上移动一个字元
l 或 向右方向鍵(→) → 光标向右移动一个字元
[Ctrl] + [f] → 屏幕『向下』移动一页,相当于 [Page Down]按键
[Ctrl] + [ b ] → 屏幕『向上』移动一页,相当于 [Page Up] 按键
n → n 表示『数字』。按下数字后再按空白鍵,光标会向右移动这一行的 n 个字元
0 → 数字『 0 』:移动到这一行的最前面字元处
$ → 移动到这一行的最后面字元处
G → 移动到这个文件的最后一行
nG → n 为数字。移动到这个文件的第 n 行(可配合 :set nu)
gg → 移动到这个文件的第一行,相当于 1G
n → n 为数字。光标向下移动 n 行

查找与替换
/word → 向光标之下查找一个名称为 word 的字符串。如想查找 eric4ever 字符串,输入 /eric4ever 即可
?word → 向光标之上查找一个名称为 word 的字符串
n → 『重复前一个查找的动作』
N → 与 n 刚好相反,为『反向』进行前一个查找动作
:n1,n2s/word1/word2/g → n1 与 n2 均为数字。在第 n1 与 n2 行之间查找 word1 字符串,并将该字符串替换为 word2。如:在 1 到 9 行之间查找 eric4ever 并替换为 ERIC4EVER 则:『:1,9s/eric4ever/ERIC4EVER/g』
:1,$s/word1/word2/g → 从第一行到最后一行查找 word1 字符串,并将该字符串替换为 word2
:1,$s/word1/word2/gc → 从第一行到最后一行查找 word1 字符串,并将该字符窗替换为 word2,替换前显示提示对话框是否确认替换

删除、复制与粘贴
x, X → 在一行字当中,x 为向后刪除一个字元 (相当于 [del] 按键), X 为向前刪除一个字元(相当于 [backspace] 按键)
dd → 刪除光标所在的那一整列
ndd → n 为数字。刪除光标所在的向下 n 列
yy → 复制光标所在的那一行
nyy → n 为数字。复制光标所在的向下 n 列
p, P → p 为将已复制的内容粘贴在光标下一行上,P 则为粘贴在光标的上一行
u → 还原前一个动作
[Ctrl]+r → 重做上一个动作
. → 小数点,意思是重复前一个动作

★编辑模式
i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一個非空白字元处开始插入』
a, A → a 为『从目前光标所在的下一个字元处开始插入』, A 为『从光标所在行的最后一个字元处开始插入』
o, O → o 为『在目前光标所在的下一行处插入新的一行』, O 为『在目前光标所在处的上一行插入新的一行』
r, R → r 为『取代光标所在的那一个字元』, R 为『一直取代光标所在的文字,直到按下 ESC 为止』
Esc → 退出编辑模式,回到一般模式中

★末行指令模式
:w → 将编辑的文件写入到硬盘上
:q → 退出 vi
:wq → 保存后退出,若为 :wq! 则为强制保存为退出
:set nu → 显示行号
:set nonu → 取消显示行号
补充
光标控制命令

命令 光标移动
h或^h 向左移一个字符
j或^j或^n 向下移一行
k或^p 向上移一行
l或空格 向右移一个字符
G 移到文件的最后一行
nG 移到文件的第n行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
0或| 移到当前行的第一列
n| 移到当前行的第n列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+或return 移到下一行的第一个字符
- 移到前一行的第一个非空字符

在vi中添加文本

命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
:r file 读入文件file内容,并插在当前行后
:nr file 读入文件file内容,并插在第n行后
escape 回到命令模式
^v char 插入时忽略char的指定意义,这是为了插入特殊字符

在vi中删除文本

命令 删除操作
x 删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
X 删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
dw 删至下一个字的开头
ndw 从当前光标处往后删除n个字
dG 删除行,直到文件结束
dd 删除整行
ndd 从当前行开始往后删除
db 删除光标前面的字
ndb 从当前行开始往前删除n字
:n,md 从第m行开始往前删除n行
d或d$ 从光标处删除到行尾
dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾
^h或backspace 插入时,删除前面的字符
^w 插入时,删除前面的字

修改vi文本

每个命令前面的数字表示该命令重复的次数
命令 替换操作
rchar 用char替换当前字符
R text escape 用text替换当前字符直到换下Esc键
stext escape 用text代替当前字符
S或cctext escape 用text代替整行
cwtext escape 将当前字改为text
Ctext escape 将当前行余下的改为text
cG escape 修改至文件的末尾
ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text

在vi中查找与替换

命令 查找与替换操作
/text 在文件中向前查找text
?text 在文件中向后查找text
n 在同一方向重复查找
N 在相反方向重复查找
ftext 在当前行向前查找text
Ftext 在当前行向后查找text
ttext 在当前行向前查找text,并将光标定位在text的第一个字符
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感
:s/oldtext/newtext 用newtext替换oldtext
:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
& 重复最后的:s命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令
:v/text/command 在所有不包含text的行运行command所表示的命令

在vi中复制文本

命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前

在vi中撤消与重复

命令 撤消操作
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
, 以相反的方向重复前面的f、F、t或T查找命令
; 重复前面的f、F、t或T查找命令
"np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)
n 重复前面的/或?查找命令
N 以相反方向重复前面的/或?命令

保存文本和退出vi

命令 保存和/或退出操作
:w 保存文件但不退出vi
:w file 将修改保存在file中但不退出vi
:wq或ZZ或:x 保存文件并退出vi
:q! 不保存文件,退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

vi中的选项

选项 作用
:set all 打印所有选项
:set nooption 关闭option选项
:set nu 每行前打印行号
:set showmode 显示是输入模式还是替换模式
:set noic 查找时忽略大小写
:set list 显示制表符(^I)和行尾符号
:set ts=8 为文本输入设置tab stops
:set window=n 设置文本窗口显示n行

vi的状态

选项 作用
:.= 打印当前行的行号
:= 打印文件中的行数
^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:l 使用字母"l"来显示许多的特殊字符,如制表符和换行符

在文本中定位段落和放置标记

选项 作用
{ 在第一列插入{来定义一个段落
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z
'(a-z) 将光标移动到指定的标记,如用'z表示移动到z

在vi中连接行

选项 作用
J 将下一行连接到当前行的末尾
nJ 连接后面n行

光标放置与屏幕调整

选项 作用
H 将光标移动到屏幕的顶行
nH 将光标移动到屏幕顶行下的第n行
M 将光标移动到屏幕的中间
L 将光标移动到屏幕的底行
nL 将光标移动到屏幕底行上的第n行
^e(ctrl+e) 将屏幕上滚一行
^y 将屏幕下滚一行
^u 将屏幕上滚半页
^d 将屏幕下滚半页
^b 将屏幕上滚一页
^f 将屏幕下滚一页
^l 重绘屏幕
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行

vi中的shell转义命令

选项 作用
:!command 执行shell的command命令,如:!ls
:!! 执行前一个shell命令
:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容
:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all
:cd directory 将当前工作目录更改为directory所表示的目录
:sh 将启动一个子shell,使用^d(ctrl+d)返回vi
:so file 在shell程序file中读入和执行命令

vi中的宏与缩写
(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)

选项 作用
:map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本
:map 在状态行显示所有已定义的宏
:umap key 删除该键的宏
:ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2
:ab 显示所有缩写
:una string 取消string的缩写

在vi中缩进文本

选项 作用
^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:set ai 打开自动缩进
:set sw=n 将移动宽度设置为n个字符
n<< 使n行都向左移动一个宽度
n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度

1.编辑模式: 插入/替换 (按INSERT键切换)

2.[ESC] 指令模式

3.输入模式 将在指令模式下输入 a
新增(a,A)
a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
A:从光标所在列最后面的地方开始新增资料。
插入(i,I)
i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
I:从光标所在列的第一个非空白字元前面开始插入资料。
开始(o,O)
o:在光标所在列下新增一列并进入输入模式。
O:在光标所在列上方新增一列并进入输入模式。

4.存盘/退出
[ESC] :wq //存盘退出
:w! //存盘继续
:q //退出 (源文件未被编辑过可用)
:q! //强制退出

5.删除与改修
[ESC] x //删除光标所在字符
dd //删除光标所在列。
r //修改光标所在字元,r后接着要修正的字符。
R //进入取替换状态。
s //删除光标所在字元,并进入输入模式。
S //删除光标所在的列,并进入输入模式。

6.恢复
[ESC] u //可以恢复被删除的文字。
U //可以恢复光标所在列的所有改变。

2008年11月18日星期二

CentOS 初始化root密码

在CactiEZ的使用中,忘记了服务器的root密码
因后台系统是CentOS,于是参考其他类unix系统的做法,进入单用户模式进行root密码重置
下面是操作过程:


在启动时通过上下键进入启动项选择窗口:



按e,进入下面页面




按e,进入grub编辑模式,在ro前面加single,在最后面加single,然后回车确认

返回前一个界面,启动参数也变成刚刚编辑的样子,按b,启动系统,则进入单用户模式

启动后可以使用passwd修改root密码

2008年11月17日星期一

[转载]大型网站运维探讨和心得

我在hiadmin.com网站上看到这篇文章,感觉非常有价值,原文据说引自chinaunix网站,但是我没有找到,在此一并说明来源~

看到一篇不错的心得体会;相信我们做技术的都会有或多或少的担忧自己的未来职业发展:

今天看到一篇心得体会,转过来和大家一起探讨一下:

一、什么是大型网站运维?
首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、服务器量级、pv量等考虑,其它因素不是重点;因此,我们先定义服务器规模大于1000台,pv每天至少上亿(至少国内排名前10),如sina、baidu、QQ,51.com等等;其它小型网站可能没有真正意义上的运维工程师,这与网站规范不够和成本因素有关,更多的是集合网络、系统、开发工作于一身的“复合性人才”,就如有些公司把一些合同采购都纳入了运维职责范围,还有如IDC网络规划也纳入运维职责。所以,非常重要一定需要明白:运维对其它关联工种必须非常了解熟悉:网络、系统、系统开发、存储,安全,DB等;我在这里所讲的运维工程师就是指专职运维工程师。
我们再来说说一般产品的“出生”流程:
1、首先公司管理层给出指导思想,PM定位市场需求(或copy成熟应用)进行调研、分析、最终给出详细设计。
2、架构师根据产品设计的需求,如pv大小预估、服务器规模、应用架构等因素完成网络规划,架构设计等(基本上对网络变动不大,除非大项目)
3、开发工程师将设计code实现出来、测试工程师对应用进行测试。
4、好,到运维工程师出马了,首先明确一点不是说前三步就与运维工作无关了,恰恰相反,前三步与运维关系很大:应用的前期架构设计、软/硬件资源评估申请采购、应用设计性能隐患及评估、IDC、服务性能\安全调优、服务器系统级优化(与特定应用有关)等都需运维全程参与,并主导整个应用上线项目;运维工程师负责产品服务器上架准备工作,服务器系统安装、网络、IP、通用工具集安装。运维工程师还需要对上线的应用系统架构是否合理、是否具备可扩展性、及安全隐患等因素负责,并负责最后将产品(程序)、网络、系统三者进行拼接并最优化的组合在一起,最终完成产品上线提供用户使用,并周而复使:需求->开发(升级)->测试->上线(性能、安全问题等之前预估外的问题随之慢慢就全出来了)在这里提一点:网站开发模式与传统软件开发完全不一样,网站一天开发上线1~5个升级版本是家常便饭,用户体验为王嘛,如果某个线上问题像M$ 需要1年解决,用户早跑光了;应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发工作:
a 、尽量将日常机械性手工工作通过工具实现(如服务监控、应用状态统计、服务上线等等),提高效率。
b、解决现实中服务存在的问题,如高可靠性、可扩展性问题等。
c、大规模集群管理工具的开发,如1万台机器如何在1分钟内完成密码修改、或运行指定任务?2000台服务器如何快速安装操作系统?各分布式IDC、存储集群中数PT级的数据如何快速的存储、共享、分析?等一系列挑战都需运维工程师的努力。
在此说明一下其它配合工种情况,在整个项目中,前端应用对于网络/系统工程师来说是黑匣子,同时开发工程师职责只是负责完成应用的功能性开发,并对应用本身性能、安全性等应用本身负责,它不负责或关心网络/系统架构方面事宜,当然软/硬件采购人员等事业部其它同事也不会关心这些问题,各司其职,但项目的核心是运维工程师~!所有其它部门的桥梁。
上面说了很多,我想大家应该对运维有一些概念了,在此打个比方吧,如果我们是一辆高速行驶在高速公路上的汽车,那运维工程师就是司机兼维修工,这个司机不简单,有时需要在高速行驶过程中换轮胎、并根据道路情况换档位、当汽车速度越来越快,汽车本身不能满足高速度时对汽车性能调优或零件升级、高速行进中解决汽车故障及性能问题、时刻关注前方安全问题,并先知先觉的采取规避手段。这就是运维工作~!
最后说一下运维工程师的职责:”确保线上稳定“,看似简单,但实属不容易,运维工程师必须在诸多不利因素中进行权衡:新产品模式对现有架构及技术的冲击、产品高频度的升级带来的线上BUG隐患、运维自动化管理承度不高导致的人为失误、IT行业追求的高效率导致流程执行上的缺失、用户增涨带来的性能及架构上的压力、IT行业宽松的技术管理文化、创新风险、互联网安全性问题等因素,都会是网站稳定的大敌,运维工程师必须把控好这最后一关,需具体高度的责任感、原则性及协调能力,如果能做到各因素的最佳平衡,那就是一名优秀的运维工程师了。
另外在此聊点题外话,我在这里看到有很多人要sina、QQ、baidu,51.com等聊自已的运维方面的经验,其实这对于它们有点免为其难:
a、各公司自已网络架构、规模、或多或少还算是公司的核心秘密,要保密,另外,对于大家所熟知的通用软件、架构,由于很多公司会根据自已实际业务需要,同时因为原版性能、安全性、已知bug、功能等原因,进行过二次开发(如apache,php,mysql),操作系统内核也会根据不同业务类型进行定制的,如某些应用属于运算型、某些是高IO型、或大存储大内存型。根据这些特点进行内核优化定制,如sina就在memcache上进行过二次开发,搞出了一个MemcacheDB,具体做得如何我们不谈,但开源了,是值得称赞的,国内公司对于开源基本上是索取,没有贡献;另外,服务器也不是大家所熟知的型号,根据业务特点,大部份都是找DELL/HP/ibm进行过定制;另外,在分布式储存方面都有自已解决方案,要不就是使用现成开源hadoop等解决方案,或自已开发。但90%都是借鉴google GFS的思想:分布式存储、计算、大表。
b、各公司业务方向不一样,会导致运维模式或方法都不一样,如51.com和baidu运维肯定区别很大,因为他们业务模式决定了其架构、服务器量级、IDC分布、网络结构、通用技术都会不一样,主打新闻门户的sina与主打sns的51.com运维模式差异就非常大,甚至职责都不大一样;但有一点,通用技术及大致架构上都大同小异,大家不要太神化,更多的公司只是玩垒积木的游戏罢了,没什么技术含量。
c、如上面所讲,目前大型网站运维还处于幼年时期理念和经验都比较零散,没有成熟的知识体系,可能具体什么是运维,大家都要先思索一番,或压根没想过,真正讨论也只是运维工作的冰山一角,局限于具体技术细节,或某某著名网站大的框架,真正运维体系化东西没有,这也许是目前网上运维相关资料比较少的原故吧。或者也是国内运维人员比较难招,比较牛的运维工程师比较少见的原因之一吧。

二、运维工作师需要什么样的技能及素质
做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统(基本操作系统的熟悉使用,*nix,windows..)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server、db、中间件、存储等)、网络,IDC拓朴架构;
技能方面总结以下几点:
1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:c/c++(必备其中之一)、perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有过实际开发经验,否则工作会非常痛苦。
2、通用应用方面需要了解:操作系统(目前国内主要是linux、bsd)、webserver相关(nginx,apahe,php,lighttpd,java。。。)、数据库(mysql,oralce)、其它杂七八拉的东东。。。系统优化,高可靠性。。。这些只是加分项,不需必备,可以边工作边慢慢学,这些东西都不难。当然在运维中,有些是有分工偏重点不一样。
3、系统、网络、安全,存储,CDN,DB等需要相当了解,知道其相关原理。
个人素质方面:
1、 沟通能力、团队协作:运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;这应该是现代企业的基本素质要求了,不多说。
2、工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发展;心细,运维工程师是网站admin,最高线上权限者,一不小心就会遗憾终生或打入十八层地狱。
3、主动性、执行力、精力旺盛、抗压能力强:由于IT行业的特性,变化快;往往计划赶不上变化,运维工作就更突出了,比如国内各大公司服务器往往是全国各地,哪里便宜性价比高,就那往搬,进行大规模服务迁移(牵扯的服务器成百上千台),这是一个非常头痛的问题;往往时间非常紧迫,如限1周内完成,这种情况下,运维工程师的主动性及执行力就有很高的要求了:计划、方案、服务无缝迁移、机器搬迁上架、环境准备、安全评估、性能评估、基建、各关联部门扯皮,7X24小紧急事故响应等。
4、其它就是一些基本素质了:头脑要灵光、逻辑思维能力强、为人谦虚稳重、亲和力、乐于助人、有大局观。
5、最后一点,做网站运维需要有探索创新精神,通过创新型思维解决现实中的问题,因为这是一个处于幼年的职业(国外也一样,但比国内起步早点),没有成熟体系或方法论可以借鉴,只能靠大家自已摸索努力。

三、怎样才算是一个合格的运维工程师
1、保证服务达到要求的线上标准,如99.9%;保证线上稳定,这是运维工程师的基本责职所在。
2、不断的提升应用的可靠性与健壮性、性能优化、安全提升;这方面非常考验主动性、和创新思维。
3、网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。
4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手。
5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。
6、计划性和执行力;工作有计划,计划后想法设法达到目标,不找借口。
7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;让大家更多的时间用于思考、创新思维、做自已喜欢的事情。
以上只是技术上的一些层面,当然个人意识也是很重要的。

四、运维职业的迷惘、现状与发展前景
运维岗位不像其它岗位,如研发工程师、测试工程师等,有非常明确的职责定位及职业规划,比较有职业认同感与成就感;而运维工作可能给人的感觉是哪方面都了解一些,但又都比上专职工程师更精通、感觉平时被关注度比较低(除非线上出现故障),慢慢的大家就会迷惘,对职业发展产生困惑,为什么会有这种现象呢? 除了职业本身特点外,主要还是因为对运维了解不深入、做得不深入导致;其实这个问题其它岗位也会出现,但我发现运维更典型,更容易出现这个问题;

针对这个问题我谈一下网站运维的现状及发展前景(也在思考中,可能不太深入全面,也请大家斧正补充)

运维现状:
1、处于刚起步的初级阶段,各大公司有此专职,但重视或重要承度不高,可替代性强;小公司更多是由其它岗位来兼顾做这一块工作,没有专职,也不可能做得深入
2、技术层次比较低;主要处于技术探索、积累阶段,没有型成体系化的理念、技术。
3、体力劳动偏大;这个问题主要与第二点有关系,很多事情还是依靠人力进行,没有完成好的提练,对于大规模集群没有成熟的自动化管理方法,在此说明一下,大规模集群与运维工作是息息相关的如果只是百十来台机器,那就没有运维太大的生存空间了。
4、优秀运维人才的极度缺乏;目前各大公司基本上都靠自已培养,这个现状导致行业内运维人才的流动性非常低,非常多好的技术都局限在各大公司内部,如google 50万台机器科学的管理,或者国内互联公司top 10 的一些运维经验,这些经验是非常有价值的东西并决定了一个公司的核心竞争力;这些问题进而导致业内先进运维技术的流通、贯通、与借签,并最终将限制了运维发展。
5、很多优秀的运维经验都掌握在大公司手中;这不在于公司的技术实力,而在于大公司的技术规模、海量PV、硬件规模足够大,如baidu可怕的流量、51.com海量数据~~~~这些因素决定了他们遇到的问题都是其它中/小公司还没有遇到的,或即将遇到。但大公司可能已有很好的解决方案或系统。
发展前景:
1、从行业角度来看,随着中国互联网的高速发展(目前中国网民已跃升为全球第一)、网站规模越来越来大、架构越来越复杂;对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱;目前国内基本上都是选择毕业生培养(限于大公司),培养成本高,而且没有经验人才加入会导致公司技术更新缓慢、影响公司的技术发展;当然,毕业生也有好处:白纸一张,可塑性强,比较认同并容易融入企业文化。
2、从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人、越来越得到重视。
3、网站运维将成为一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给大家提供一个很好的个人能力与技术广度的发展空间。
4、运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,具备很好的各层面问题的解决能力及方案提供、全局思考能力等。
5、特长发控和兴趣的培养;由于运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。
6、如果真要以后不想做运维了,转到其它岗位也比较容易,不会有太大的局限性。当然了,你得真正用心去做。
7、技术发展方向、网站/系统架构师。

五、运维关键技术点解剖
1、 大规模集群管理问题
首先我们先要明确集群的概念,集群不是泛指各功能服务器的总合,而是指为了达到某一目的或功能的服务器、硬盘资源的整合(机器数大于两台),对于应用来说它就是一个整体,目前常规集群可分为:高可用性集群(HA),负载均衡集群(如lvs),分布式储、计算存储集群(DFS,如google gfs ,yahoo hadoop),特定应用集群(某一特定功能服务器组合、如db、cache层等),目前互联网行业主要基于这四种类型;对于前两种类似,如果业务简单、应用上post操作比较少,可以简单的采用四层交换机解决(如f5),达到服务高可用/负责均衡的作用,对于资源紧张的公司也有一些开源解决办法如lvs+ha,非常灵活;对于后两种,那就考验公司技术实力及应用特点了,第三种DFS主要应用于海量数据应用上,如邮件、搜索等应用,特别是搜索要求就更高了,除了简单海量存储,还包括数据挖掘、用户行为分析;如google、yahoo就能保存分析近一年的用户记录数据,而baidu应该少于30天、soguo就更少了。。。这些对于搜索准备性、及用户体验是至关重要的。
接下来,我们再谈谈如何科学的管理集群,有以下关键几点:
I、监控
主要包括故障监控和性能、流量、负载等状态监控,这些监控关系到集群的健康运行,及潜在问题的及时发现与干预;
a、服务故障、状态监控:主要是对服务器自身、上层应用、关联服务数据交互监控;例如针对前端web server,我们就可以有很多种类型的监控,包括应用端口状态监控,便于及时发现服务器或应用本身是否crash、通过icmp包探测服务器健康状态,更上层可能还包括应用各频道业务的监控,常用方法是采用面业特征码进行判断,或对重点页面进行签名,以网站被黑篡改(报警、并自动恢复被篡改数据)等等,这些只是一部份,还有N多监控方式,依应用特点而定,还有一些问题需解决,如集群过大,如何高性能的进行监控也是一个现实问题。
b、其它就是集群状态类的监控或统计,为我们合理管理调优集群提供数据参考、包括服务瓶颈、性能问题、异常流量、攻击等问题。
II、故障管理
a、硬件故障问题;对于成百上千或上万机器的N多集群,服务器死机、硬件故障概率是非常大的,几乎每时每刻都有服务硬件问题,死机、硬盘损坏、电源、内存、交换机。针对这种情况,我们在设计网站架构时需要充分考虑到这些问题,并将其视为常态;更多的依靠应用的冗余机制来规避这种风险,但给系统工程师足够宽裕的处理时间。(如google不是号称同时死800台机器,服务不会受到任何影响吗);这就是考验运维工程师及网站架构师功能的地方了,好的设计能达到google所描述自恢复能力,如gfs,糟糕的设计那就是一台服务器的死机可能会造成大面积服务的连锁故障反映,直接对用户拒绝响应。
b、应用故障问题;可能是某一bug被触发、或某一性能阀值被超越、攻击等情况不一而定,但重要的一点,是要有对这些问题的预防性措施,不能想当然,它不会出问题,如真出问题了,如何应对? 这需要运维工程师平时做足功夫,包括应急响应速度、故障处理的科学性、备用方案的有效等。

III、自动化
自动化:简而言之,就是将我们日常手动进行的一些工作通过工具,系统自动来完成,解放我们的双手及枯燥的重复性劳动,例如:没有工具前,我们安装系统需要一台一台裸机安装,如2000台,可能需要10人/10天,搞烂N张光盘,人力成本更大。。。而现在通过自动化工具,只需几个简单命令就能搞定、还有如机器人类程序,自动完成以往每天人工干预的工作,使其自动完成、汇报结果,并具备一定的专家系统能力,能做一些简单的是/非判断、优化选择等。。。这些好处非常明显不再多说。。。应该说,自动化运维是运维工程师职业化的一个追求,利已利公,虽然这是一个异常艰巨的任务:不断变更的业务、不规范化的应用设计、开发模式、网络架构变更、IDC变更、规范变动等因素,都可能会对现有自动化系统产生影响,所以需要模块化、接口化、变因参数化等因此,自动化相关工作,是运维工程师的核心重点工作之一,也是价值的体现。
五、运维中关键技术点解剖(比较实际,现实中的案例,今天先想出这几条,如大家有其它感觉兴趣的,可以提出,一起交流~)

1 大量高并发网站的设计方案
2 高可靠、高可伸缩性网络架构设计
3 网站安全问题,如何避免被黑?
4 南北互联问题,动态CDN解决方案
5 海量数据存储架构

转自chinaunix

监控数据库运行情况的一种解决方案

监控数据库运行情况的一种解决方案

1 首先使用系统的Performance建立定时刷新的计数器,随时导出系统运行情况的数据

2 利用DTS读入计数器数据

3 用服务器间的发布订阅,将各服务器的数据信息汇集到一台服务器上

4 使用报表工具,比如SQL Server2k自带的ReportServer对收集到的数据进行展现

5 利用作业机制扫描影响数据库运行的敏感数据,借助SQL Server的预警机制传递信息给相关人,比如Email,或者使用扩展存储过程xp_cmdShell执行net send命令.

另外一种:
基本思路是指定一台数据库服务器用作监控服务器,将要监控的目标机器计数器设置好(可以指定多台),然后直接保存到本机的数据库里,再使用的时候可以直接从表里将数据展现出来。
如果借助Cacti的RRD模式,对服务器的监控信息将全面而有效,耗费的资源也非常经济。

快速获取当前数据库中每个表中的记录数目

select name,rows from sysindexes
where indid = 0 or indid= 255

2008年11月14日星期五

手工处理数据库中的发布订阅垃圾

使用Detach、Attach建成的DB有时候受到残留的发布订阅的垃圾侵扰,造成更新脚本无法执行,这种情况在系统上线前的内部测试时经常遇到,下面的几个语句就是用来处理此类情况发生的。

--涉及到发布订阅的字段
select * from syscolumns
where colstat=4096


--涉及到发布订阅的表名
select * from sysobjects
where replinfo>0


将上述记录的检索值改成0就可以了


--allow update system tables
sp_configure 'allow update','1'
go

--reload SQL using new set value
reconfigure with override
go

--更新完成之后,要把允许修改系统表改回来。
--forbid update system tables
sp_configure 'allow update','0'
go

--reload SQL using new set value
reconfigure with override
go

linux环境下挂载(mount)USB设备

目前新版linux基本实现了外置usb设备连接自动识别的功能,但是如果想直接获取设备(比如光驱、U盘) 的内容,还需要费些周折。

下面介绍两步法实现挂载外置USB设备的具体做法:

1.查看USB设备被识别为什么设备了
使用 cat /etc/fstab 命令查看文件系统列表里对该设备的命名情况,一般新增加的设备出现在后面,比如光驱会被认为是/dev/cdrom2 (原来已经有光驱),列表会出现多列,只关注前两列即可:/dev/cdrom2 /mnt/cdrom2 。。。

2. 使用mount命令挂载设备
使用 mount /dev/cdrom2 /mnt/cdrom2 命令即可。然后就可以用ls /mnt/cdrom2来看光盘里有什么了。同理,U盘也可以照章办理。

SQL Server检测是不是数字类型的函数(非ISNUMERIC)

微软的SQL Server 2k/2k5 中对数字类型的判断函数如下:

ISNUMERIC
确定表达式是否为一个有效的数字类型。
语法
ISNUMERIC ( expression )
参数
expression
要计算的表达式。
返回类型
int
注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。
但是此函数存在Bug,就是'234a2342'同样会认为是数字类型
可以替代的写法是
PATINDEX('%[^0-9]%', @s)
如果返回值等于0,则是纯数字型(没有0~9之外的字符)。
对于支持小数点和正负数写法是
PATINDEX('%[^0-9.-+]%',@s)
……

命令行修改网络设置ip地址、dns、网关的方法(windows)

修改ip,子网掩码,网关,dns。“网络连接名”是你机器上网络属性里看到的连接名,把下面改成自己的连接名。

netsh interface ip set address "网络连接名" static 192.168.0.88 255.255.255.0 192.168.0.1 1

netsh interface ip set dns "网络连接名" static 202.216.224.66

netsh interface ip add dns "网络连接名" 202.216.224.67


如果要改成动态分配ip和自动获得dns使用下面命令。

netsh interface ip set address "网络连接名" dhcp

netsh interface ip set dns "网络连接名" dhcp

使用PsEXEC远程批量更新msdtc使用无安全认证方式

psexec @d:\msdtclist.txt -s regedit /s \\10.132.0.15\d$\msdtc.noAuthrity.reg
psexec @d:\msdtclist.txt -s net stop msdtc
psexec @d:\msdtclist.txt -s net start msdtc


msdtclist.txt为IP列表。

msdtc.noAuthrity.reg :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC]"AllowOnlySecureRpcCalls"=dword:00000000"
TurnOffRpcSecurity"=dword:00000001

2008年11月13日星期四

SQL Server 数据库管理常用的SQL和T-SQL语句

SQL Server 数据库管理常用的SQL和T-SQL语句
1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver
3. 查看数据库启动的参数 sp_configure
4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看数据库服务器名和实例名 print 'Server Name...............: ' + convert(varchar(30),@@SERVERNAME) print 'Instance..................: ' + convert(varchar(30),@@SERVICENAME) 5. 查看所有数据库名称及大小 sp_helpdb
重命名数据库用的SQL sp_renamedb 'old_dbname', 'new_dbname'
6. 查看所有数据库用户登录信息 sp_helplogins
查看所有数据库用户所属的角色信息 sp_helpsrvrolemember
修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
更改某个数据对象的用户属主 sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
7. 查看链接服务器 sp_helplinkedsrvlogin
查看远端数据库用户登录信息 sp_helpremotelogin
8.查看某数据库下某个数据对象的大小 sp_spaceused @objname
还可以用sp_toptables过程看最大的N(默认为50)个表
查看某数据库下某个数据对象的索引信息 sp_helpindex @objname
还可以用SP_NChelpindex过程查看更详细的索引情况 SP_NChelpindex @objname
clustered索引是把记录按物理顺序排列的,索引占的空间比较少。
对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。
查看某数据库下某个数据对象的的约束信息 sp_helpconstraint @objname
9.查看数据库里所有的存储过程和函数 use @database_name sp_stored_procedures 查看存储过程和函数的源代码 sp_helptext '@procedure_name'
查看包含某个字符串@str的数据对象名称 select distinct object_name(id) from syscomments where text like '%@str%'
创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数
解密加密过的存储过程和函数可以用sp_decrypt过程
10.查看数据库里用户和进程的信息 sp_who 查看SQL Server数据库里的活动用户和进程的信息 sp_who 'active' 查看SQL Server数据库里的锁的情况 sp_lock
进程号1--50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
spid是进程编号,dbid是数据库编号,objid是数据对象编号
查看进程正在执行的SQL语句 dbcc inputbuffer ()
推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句
sp_who3
检查死锁用sp_who_lock过程 sp_who_lock
11.收缩数据库日志文件的方法 收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M
backup log @database_name with no_log dbcc shrinkfile (@database_name_log, 5) 12.分析SQL Server SQL 语句的方法:
set statistics time {on off} set statistics io {on off} 图形方式显示查询执行计划
在查询分析器->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形
文本方式显示查询执行计划 set showplan_all {on off}
set showplan_text { on off } set statistics profile { on off }
13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
alter database [@error_database_name] set single_user
修复出现不一致错误的表
dbcc checktable('@error_table_name',repair_allow_data_loss)
或者可惜选择修复出现不一致错误的小型数据库名
dbcc checkdb('@error_database_name',repair_allow_data_loss) alter database [@error_database_name] set multi_user CHECKDB 有3个参数: repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
修复操作可以在用户事务下完成以允许用户回滚所做的更改。
如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
修复完成后,请备份数据库。 repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
这些修复可以很快完成,并且不会有丢失数据的危险。
repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
执行这些修复时不会有丢失数据的危险。

如何使用SQL Server 2005 DAC 登录到服务器

如何使用SQL Server 2005 DAC 登录到服务器

一 什么是DAC

SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL Server,以便执行诊断查询并解决问题。命令行界面 (sqlcmd) 通过使用特殊的管理员开关 (-A),提供并支持这种专用管理员连接 (DAC)。

二 如何使用DAC登录到服务器

1 本机DAC登录

命令行方式下执行 sqlcmd -A -S sql服务器名

2 远程DAC登录

  1) 打开远程DAC选项

'程序'->'Sql Server2005'-> '配置工具'-> 'Sql Server 外围应用配置器'-> '功能的外围应用配置器'-> 'DataBase Engine'-> 'DAC' -> '启用远程DAC'

2) 登录到远程服务器

sqlcmd -A -S 127.0.0.1

  3) 登录后, 可以通过查询动态管理视图来诊断问题

3 程序使用DAC连接Provider=SQLNCLI.1;Password=password;Persist Security Info=True;User ID=sa;Initial Catalog=Database;Data Source=admin:HostName

4 使用Management Studio登录数据库引擎,在实例名文本框输入:admin:hostname

附:sqlcmd另外两个常用参数:
-E 使用信任连接登录
-o 指定输出文件,可以把所有在命令行里交互的反馈信息存储进文件

注意:sqlcmd的参数是区分大小写的

2008年11月12日星期三

CentOS调整防火墙设置

CentOS:调整防火墙设置
首先编辑iptablesvi /etc/sysconfig/iptables注意规则的顺序,最后一条语句是禁止所有的,放行的规则要放在它前面插入:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

即打开3306端口然后重起防火墙服务,使配置文件生效
# cd /etc/rc.d/init.d
# ./iptables
Usage: ./iptables {start stop restart condrestart status panic save}