如何实现类似regedit中的搜索功能?

Qcj 2000-08-12 11:28:00
...全文
74 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
meijg 2000-08-12
  • 打赏
  • 举报
回复
使用RegEnumKeyEx函数遍历注册表,返回键名
LONG RegEnumKeyEx(
HKEY hKey, // handle to key to enumerate
DWORD dwIndex, // index of subkey to enumerate
LPTSTR lpName, // address of buffer for subkey name
LPDWORD lpcbName, // address for size of subkey buffer
LPDWORD lpReserved, // reserved
LPTSTR lpClass, // address of buffer for class string
LPDWORD lpcbClass, // address for size of class buffer
PFILETIME lpftLastWriteTime
// address for time key last written to
);
灵者编辑器这是一款轻量级、多标签的文本编辑器,除了支持常规的纯文本编辑功能外,还支持文档密钥存储、正则查找替换、文档格式转换、一键排版处理等等,另还有自动打字、批量加解密外部文档、内附正则调试器、即时执行所选文本等特色功能,是代替系统记事本的绝佳工具。   灵者编辑器详细信息: 多标签页:允许同时打开多个文档进行编辑,可以通过菜单【新建-打开】命令(或Ctrl O快捷键)、系统资源管理器的右键菜单【发送到】里的【灵者编辑】项目、直接拖放等方式打开多个文档。 正则功能:使用正则进行替换文本,基于正则的强大功能,使要求复杂的替换工作变得轻松许多安全存储:您可以将重要文档进行加密保护,如此便可确保文档的真实内容只有您自己才可查阅。 格式转换:提供多达 31 个项目的格式转换,如字母大小写互转、全半角互转、繁简体互转、大陆的GBK编码和台湾的Big5编码互转、汉字转为拼音、URL编解码(支持UTF-8)、Base64编解码(邮件标准)、RTF丰富文本(码)到纯文本、获取数据摘要(md5、md4、crc32、md2、sha1)、十六进制和字串的互转、字符和字符代码的互转等等一键排版:支持行处理如去除空行、插入空行、间隔空行、打乱行序,支持行首缩进、删除空格等等另外还有: ● 自动打字,可以把文档逐个字显示出来,类似于人工打字的效果。 ● 批量加解密外部文档,可以同时对任意个任意格式的文件进行加密和解密,确保数据安全。 ● 强大完善的正则调试环境,提供正则搜索和替换以及语法学习和教程。 ● 即时对所选文本调用系统定义执行(F5键),如: 所选为网址,即打开浏览器访问该网址。 所选为本地文件或文件夹路径,则调用系统资源管理器打开查看。 所选为纯命令如“RegEdit”,则启动系统注册表编辑器。 ● 悬浮窗多功能拖放,实现个性化粘贴。
官方主页:http://cres.s28.xrea.com/ MDIE(多文档界面资源管理器)是一个MDI类型的文件管理软件,是代替资源管理器的一个无比强悍的文件管理器 。他支持VBS和JS插件扩展,提供了无限可能。他支持鼠标手势,支持多标签浏览,具有类似浏览器收藏夹功能,具有丰富的搜索模式:在新标签显示搜索结果,搜索模式有:搜索子文件夹、搜索所有分页、选择通配符,搜索最符合,选择文件(可以输入文件的部分名字来自动选),在工具-MDIE 选项里,勾选“添加至文件的右键菜单”和“替换资源管理器”两项后,可以真正替换掉资源管理器。有详细的个性化选项设置。超赞。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 温馨提示:如果选择了“添加至文件的右键菜单”和“替换资源管理器”两项来替代资源管理器,卸载MDIE之前必须把这两项勾掉,否则双击文件夹默认打开方式是MDIE导致无法打开文件夹!如果已经卸载,可以重装后在勾掉这两项,然后卸载! ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ MDIE的所有设置均保存在注册表[HKEY_CURRENT_USER\software\MDIE2]主键之下。 安装时根据提示确认导入注册表文件,下面的设置就会生效。如果注册表被锁定了,运行程序组里面的接触注册表编辑限制就行了。 mdie设置说明:工具→mdie选项→ 1、常规标签: √记住窗口位置 √添加至文件的右键菜单 √替代资源管理器 √关闭时,最小化到系统托盘 2、列表窗口: 默认样式→列表,文字宽度222,列表宽度444 3、分页标签: 右键点击→选择关闭(这个选项很好用) shift+右键点击→右键功能菜单 ctrl+右键点击→右键功能菜单 滚轮点击→分页操作菜单 双击→关闭 4、窗口动作: 点击收藏夹:打开→shift,新分页→无,这样可以保证单击收藏夹时打开新标签。 点击链接:打开→shift,新分页→无,这样可以保证单击链接时打开新标签。 点击地址栏:打开→shift,新分页→无,这样可以保证在地址栏输入的时候打开新标签。 滚轮点击列表窗口→新标签。 5、启动时: √恢复上次结束时的分页 6、在搜索结果栏目右击搜索到的项目没有右击关联菜单,不能右击→打开所在的文件夹。但是我们可以通过鼠标手势来实现,具体办法是:工具→鼠标手势→工具→其他命令→在新分页打开→场所选择搜索栏→动作选择R→即可。那么我们就可以在搜索的结果右击后向右拖动来实现在我的电脑右击打开所在文件夹那种效果。MDIE鼠标手势真的无所不能无比强大,慢慢研究吧! 7、建议把硬盘CDEF等及桌面、我的电脑放到链接栏,例如打开F盘→收藏→添加到链接。 删除的方法是:按CTRL+I或者单击查看→侧边栏→链接栏→选择F→删除。 8、已有的鼠标手势:后退R←,前进R→,搜索在新分页打开R→,向上一级R↑或双击空白处,刷新R↓↑,下一分页Rwheel↓,上一分页Rwheel↑,关闭标签R↓→,恢复最后关闭的标签R→←,显示隐藏文件R↓,关闭全部分页R↓←,隐藏已知文件类型的扩展名R→↓,在当前文件夹打开CMD窗口R↑→,高级更名R↑↓,复制选文件路径并弹出对话框↑←。 几个MDIE的插件: 单击MDIE工具→扩展功能→添加脚本→MDIE隐藏已知文件类型的扩展名.vbs→确定之后,你可以为他设定一个鼠标手势,我设置的是R→↓。 //MDIE隐藏已知文件类型的扩展名.vbs //Dim WSHShell WSHShell=new ActiveXObject("WScript.Shell") MDIE.Command(5100) //WSHShell.SendKeys ("%TF") //MDIE.Sleep(600) WSHShell.SendKeys ("^{TAB}{TAB}{DOWN 14}") WSHShell.SendKeys (" {TAB}{TAB} ") MDIE.Sleep(300) WSHShell.SendKeys ("{BACKSPACE}") MDIE.Sleep(300) WSHShell.SendKeys ("%{LEFT}") //MDIE.Command(5207) //FolderView.refresh(0) //MDIE显示隐藏文件.vbs,这个不用VBS也行,直接把工具→快速选项设置→显示隐藏文件→用鼠标手势设置为R↓就行了。 MDIE.Command(5105) //在当前文件夹打开cmd窗口.js,这个网友发布的,然后把它设置为鼠标手势R↑→,看个人爱好。 var shell = new ActiveXObject("WScript.Shell"); shell.Run('cmd /K @cd /d '+FolderView.Path +'"'); //备份MDIE注册表项目.js var d = new Date(); var s = d.getFullYear() + "-"; s += (d.getMonth() + 1) + "-"; s += d.getDate() + "-"; s += d.getHours() + "-"; s += d.getMinutes() + ".reg"; var WshShell = new ActiveXObject("WScript.Shell"); WshShell.Exec("Regedit /E "+ s +" HKEY_CURRENT_USER\\software\\MDIE2"); //查找目标.js var WshShell = new ActiveXObject("WScript.Shell"); var oShellLink = WshShell.CreateShortcut(FolderView.FocusItem.Path); FolderView.open(oShellLink.TargetPath); //复制选文件路径.vbs MDIE.Clipboard(FolderView.FocusItem.Path); //复制选文件路径并弹出对话框.js MDIE.Clipboard(FolderView.FocusItem.Path); MDIE.echo(MDIE.Clipboard); //新建txt文件.js objFso = new ActiveXObject( "Scripting.FileSystemObject" ); objWsh = new ActiveXObject( "WScript.Shell" ); strDTxtReg = objWsh.RegRead( "HKCR\\.txt\\" ); strTxtReg = objWsh.RegRead( "HKCR\\" + strDTxtReg + "\\" ); strFileName = FolderView.Path + "\\新建" + strTxtReg + "\.txt"; for ( i = 2 ; objFso.FileExists( strFileName ) ; i++ ) { strFileName = FolderView.Path + "\\新建" + strTxtReg + " (" + i + ")\.txt"; } objFso.CreateTextFile( strFileName ); FolderView.Refresh(2); MDIE.Command( 5226 ); MDIE.Command( 5206 ); //用资源管理器打开当前窗口.js var viewerPath = "C:\\WINDOWS\\explorer.exe"; var shell = new ActiveXObject("WScript.Shell"); shell.Run('"' + viewerPath + '" "' + FolderView.Path+ '"', 1, false); 运行js提示库没有注册错误8002801d的解决办法: 这个错误主要是因为windows scripts版本较低,在微软官网搜索windows scripts,选择scr56chs.exe下载后安装即可。 http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=376d98b6-67cf-4473-9b7d-f635292a286f&displaylang=zh-cn http://download.microsoft.com/download/winscript56/Install/5.6/W982KMe/CN/scr56chs.exe
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表已有的条目。   bootcfg /disableredirect 在启动引导程序禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)找到该文件,将试着在 Windows 安装 CD 找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot
在基于Windows 2000网络,活动目录(Active Directory)是它的核心。活动目录是一个分布式的目录服务。网络信息可以分散在多台不同的计算机上,保证快速访问和容错;同时不管用户从何处访问或信息处在何处,对用户都提供统一的视图。可以这样说:没有活动目录,就没有Windows 2000。7 E9 e* I* K; J 8 F# j3 ^7 j$ j一、活动目录基础 6 z) K" V O6 _, k$ m$ F0 D(一)活动目录概览( X# G1 c6 B+ z* g$ f9 w! ]& I 1.什么是活动目录" D1 N0 ~3 _ J$ B0 p 8 m s, [* {) i) n6 f4 s 活动目录是Windows 2000网络的目录服务。目录服务是一种网络服务,它存储关于网络资源的信息,并使用户或应用程序可以访问这些资源。活动目录使用同样的方法命名、描述、查找、访问、管理和保护这些资源的信息。/ h( T2 t7 ~5 X0 ^4 p - u- i! w* d# O4 d' Y* E( v(1)活动目录的功能: 6 Y4 }' M# y) {5 K. V3 m! R7 S; v 活动目录提供的服务功能,包括一种集组织、管理和控制网络资源访问的方法。它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集式管理: * [. Y& e' Q6 @, z7 u& O$ X4 V0 m1 |4 n) K! a% Y 一个运行Windows 2000的服务器在活动目录存储系统配置、用户简介和应用程序的信息。与组策略相结合,活动目录可以使管理者使用同样的管理界面管理分布式桌面、网络服务和来自心位置的应用程序。活动目录同时提供对网络资源集控制,允许用户只登录一次就可以访问整个活动目录的资源。/ [) F0 b& {- Z' Y : Q8 }* B' c% \$ Z# w0 q- x- @ 2.活动目录对象% i& Q! Q* t' M4 {7 }' n- K$ y * Z2 j) M0 E4 [) U* P, j. {活动目录存储网络对象的信息。活动目录对象代表网络资源。如用户、组、计算机和打印机。而且,网络所有的服务器、域和站点都作为对象。因为活动目录代表了所有网络资源,只需要一个管理员就可以管理这些资源。+ e7 X" A; h1 H+ ?2 z8 p ) ~( _. I6 _% C( D' ?+ z3.轻型目录访问协议 + Y; _% K9 n+ K/ F i6 G/ _: x4 y# X% d 轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)是用于访问活动目录的协议。2 ?: L1 z$ `1 l1 g$ G r6 S 2 G/ r( M+ |) R) R" j" ^* [. [LDAP是用于查询和更新活动目录的目录服务协议。LDAP协议规范表明,一个活动目录对象可以由一系列域组件、OU和普通名字来代表,它们组成了活动目录的命名路径。LDAP命名的路径是用来访问活动目录对象的,它包括了下面的两类:% T* B4 E: k( {8 ^ 9 U& n1 d0 J; Q: q, w1 O. t+ k1 z (1)标识名(Distinguished Name): ; n! e# H# Q; X' J 7 k& D: |( n5 V! b+ v+ T d/ R在活动目录每个对象都有一个标识名,标识名确定了对象所在的域和可以找到对象的完整路径。比如,典型的标识名包括: ) v( ^# h2 Q% P ) k( @' h3 e4 k* G+ s" i7 `CN=TOM,OU=Manager,DC=Tech,DC=COM$ s" t. g: e" ^6 q) _ . W, `* `$ G+ l& }7 O/ ^$ Z) G" R(^60090102a^) , ]4 n* g, \5 M2 B7 ?% y( N5 T& w7 s8 Y4 C (2)相对标识名(Relative Distinguished Name):$ Q4 y( i A" B! J2 f, } ) Q' A. Z% l8 F5 K LDAP相对标识名是LDAP标识名的一部分,它用来标识容器的对象,它的组成随客户建立的现场搜索内容的大小而变化。搜索内容的范围可以是域组件,也可以是普通名字的对象。 1 N6 f7 Q+ p: _0 L: e0 n2 n5 o7 g1 y 下表给出了标识名,客户建立的搜索内容和相对标识名的具体的例子。 ( `/ b$ c$ Q: f5 G1 h5 j6 t4 x' X! J& K/ L (^60090102b^) - o; a/ R( W" Q( H+ w7 W' e$ n# [' z7 S (二)活动目录结构 / R1 e, {5 F6 l7 `2 g1.活动目录的逻辑结构 ; {! I/ m% N1 x; b! v: i : g: W2 s% o% A6 {4 x0 B(1)域: ' }' }5 v" y7 @9 K! G _5 Q- _+ f( P0 ] 域(Doamin)是活动目录逻辑结构的核心单元,一个域包含许多台计算机,它们由管理员设定,共用一个目录数据库。一个域有一个唯一的名字,给那些由域管理员集管理的用户账号和组账号提供访问通道。 " t9 D5 }8 f9 S0 v/ d8 o- M V1 D2 k2 ~+ N6 [2 v7 C. _ 要创建域,用户必须将一个或更多的运行Windows 2000 Server的计算机升级为域控制器。每个域至少必须包含一个域控制器。$ p8 r1 I2 U0 K0 _3 s, @4 ~1 S ( d; ]% ]2 v0 V. k1 P0 ?# C(2)组织单元:" f, N4 i; A9 D1 h+ _ 1 p* g8 H, B, x$ p, h5 p& o 组织单元(Organizational Units,OU)是一个起组织作用的单位。它可将用户、组、计算机和其他单位放入其的活动目录容器。组织单元不能包括来自其他域的对象。组织单元是可以指派组策略设置或委派管理权限的最小作用域或单位。使用组织单元,用户可在组织单元代表逻辑层次结构的域创建容器。这样用户就可以根据用户的组织模型管理账户和资源的配置和使用。 1 e+ }# `! n6 {& h9 ~6 T) \* O0 q 8 V0 D0 S) [( v5 \$ [% R(3)目录树和目录林:4 t+ Q+ o8 q7 X: }% K 0 K+ g; |# ^; h3 S% y1 B 活动目录的每个域利用DNS(Domain Name Server,域名服务)域名加以标识,并且需要一个或多个域控制器。如果用户的网络需要一个以上的域,则用户可以创建多个域。共享相同的公用架构和全局目录的一个或多个域称为域林。如果树林的多个域有连续的DNS域名,则该结构称为域树。如^60090102c^所示。 ' C, [0 _7 o0 Q0 w, S" v+ z( D* t7 N 如果相关域树共享相同的活动架构以及目录配置和复制信息,但不共享连续的DNS名称空间,则称之为域林。$ h, Z8 p5 k( h# f0 W - v# E$ N5 i/ @域树和域林的组合为用户提供了灵活的域命名选项。连续和非连续的DNS名称空间都可加入到用户的目录。 $ b2 D1 h Z5 S& O# P/ A- n; [7 S 2 O" c5 Z' v+ z3 W# r5 `/ X. d(4)全局目录:. C- m/ F* a4 T5 e ' r! o0 C5 N1 @$ j/ Q% H0 V7 w$ r一个域的活动目录类似于一本书的目录,那么全局目录就好像是一系列书的总目录。在全局目录包含一个已有活动目录对象属性的子集。默认情况下,存储在全局目录的对象属性是那些经常用到的内容,而非全部属性。 - g' B e* Q1 b' N! @ 4 k9 H# a7 L4 C" C全局目录服务器是一个域控制器,活动目录建立的第一个域控制器自动成为全局目录服务器。全局目录就放在全局目录服务器上。 5 E4 E: a& _- c% ~1 X 4 Z z8 n. F8 D8 @1 `% A/ p% x4 s2.活动目录的物理结构& i* E3 v! U0 s+ ]5 ? , D* g0 V# `" `) g(1)域控制器: _1 {% O: y' ]+ W/ [ 8 c6 p0 N( J1 o域控制器就是存储活动目录的地方,一个域可以有一个或几个域控制器。在域,各域控制器相互复制活动目录的改变,在目录林,各域控制器相互之间也把信息自动复制给对方。 $ j D* X9 F, S$ @ X1 Q+ i. m2 x' M % H; [# e9 \& q- B# f. `(2)站点:+ G! K. R5 I* ~: k6 g1 B$ @4 Z- j' B ( y: ] o$ r9 C( \/ x5 b @: a站点(Site)是由一个或多个IP子网的一组计算机,确保目录信息的有效交换,站点的计算机需要很好地连接,尤其是子网内的计算机。站点和域名称空间之间没有必要的连接。站点反映网络的物理结构,而域通常反映用户单位的逻辑结构。逻辑结构和物理结构相互独立,所以网络的物理结构及其域结构之间没有必要的相关性,活动目录允许单个站点有多个域,单个域有多个站点。 2 p h5 x$ E8 O, \0 s( d" q+ l; n. t6 E0 z4 F/ R1 ?$ F 如果配置方案未组织成站点,则域和客户之间的信息交换可能非常混乱。站点能提高网络使用的效率。 ; K( `+ F8 I2 b4 t 7 q6 g1 \( i9 c1 B( S9 X( G二、安装活动目录* O! ~# |* Y1 x4 ]: E; X$ _4 ?. } (一)安装活动目录的要点 3 t; E1 N, f& V* e4 p3 S首先,也是最重要的一点,就是你必须有安装活动目录的管理员权限,否则无法安装。' E/ P8 R' x% B$ f( q7 h5 i 3 ^7 w8 h% q+ a) v" n$ D0 K; C在安装活动目录之前,要确保计算机满足基本系统要求:* Z& t: _9 N6 A1 c" C - B7 H( D6 e+ q- W9 x(1)计算机运行Windows 2000 Server版本,且系统盘是NTFS分区。0 O0 F/ N" {4 M2 A* V6 X$ g; f/ Z9 g & t' m4 Y7 \: g+ c* T3 A (2)用于活动目录数据库的最小磁盘空间为200MB,另外还要有50MB的空间用于活动目录数据库的日志文件。% N, l3 [) D1 u9 r- R" {: `( U6 K - S P; `* |# m( E* Q$ E& U2 u (3)已做好了DNS服务器的解析。1 C. \( h3 k) `6 q2 A1 @! P " v" N0 w: a& ~: e- I DNS(Domain Name Server, 域名服务器)是活动目录的基础,没有DNS就不会有活动目录。DNS也叫域名服务,它的作用是将某个域名与IP地址对应,从而将人易于理解的域名转达化为易于计算机寻址的IP地址。而如果活动目录的资源对应的是LDAP标识,那么只需要DNS有这个标识的定位记录就可以很方便地供用户查找资源,并寻址到相应的位置上。' u* [+ L2 m- \ j: h: L. r7 u 有关DNS服务器的配置,读者可以参考《电脑报2001年合订本》下册附录《ⅡS 5.0网络建站完全手册》一文。 4 ^; U6 a4 c4 _+ F. @& i* y2 M 9 X, c" R4 J. `7 w: z(二)安装活动目录 3 |" ]' a: f6 V# D$ W运行活动目录安装向导将Windows 2000 Server升级为域控制器以创建一个新域,或者向现有的域添加其他域控制器。2 E5 K. u' s+ W: ?7 g7 L # u) H2 p, | f 1.安装域里的第一台域控制器 4 w9 {' z: n+ Q: ]3 Y 0 `) M, t8 y9 `- K在安装活动目录前首先确定DNS服务正常工作,下面我们来安装根域为lanyi.com的第一台域控制器。! l. {% A- D& a# l : A5 u: R, v0 f5 \' Z9 o m(1)运行位于C:\Winnt\System32目录下的dcpromo.exe文件,以启动活动目录安装向导。点击“下一步”按钮。 4 a/ ~1 x* @2 z7 m5 G6 m3 y; D! M0 t! t. R (2)由于用户所建立的是域的第一台域控制器,所以在“域控制器类型”对话框选择“新域的域控制器”选项,然后点击“下一步”按钮。 , ^: j- [0 {3 Z& m2 B1 l9 Z) p5 p! _; \+ c (3)在“创建目录树和子域”对话框选择“创建一个新域的域目录树”,点击“下一步”按钮。; ]1 h& I- K! @3 h/ J5 g 3 A. q3 r6 `' g+ S(4)在“创建或加入目录林”对话框选择“创建新的域目录林”,点击“下一步”按钮。 # [2 D" E4 o; N. j, d- g; H! U! k" ~. |+ m (5)在“新的域名”对话框的“新域的DNS全名”框输入需要创建的域名,这里是lanyi.com。点击“下一步”按钮。& M: O; I8 X% Z3 k0 K+ m8 G0 g9 { 2 G/ b7 t( E" {9 y8 G2 S" _. l(6)在“NetBIOS域名”对话框,安装向导自动将域控制器的NetBIOS名设置为“LANYI”,点击“下一步”按钮。9 P* U& U; P' P; [! D* E) ? + S& e$ Y$ N# _' q(7)在“数据库和日志文件位置”对话框,将显示数据库、日志文件的保存位置,一般不必作修改。点击“下一步”按钮。, @! c5 p) @* R' C" d! h ( V" p$ a2 X4 G t7 k; L6 Z! ?) V (8)在“共享的系统卷”,指定作为系统卷共享的文件夹。Sysvol文件夹存放域的公用文件的服务器副本。Sysvol广播的内容被复制到域的所有域控制器。其文件夹位置一般不必作修改。点击“下一步”按钮。* t% T! ?5 X- E- U) b N5 o: I4 c) ^) U0 O(9)在“配置DNS”对话框,点击“下一步”按钮(如果在安装活动目录之前未配置DNS服务器,可以在此让安装向导配置DNS,推荐使用这种方法)。 7 j6 ^* x& Z4 D* U. p$ g : ^4 V; D- D1 }0 ?5 T(10)在“权限”对话框为用户和组选择默认权限,考虑到现在大多数单位仍然需要使用Windows 2000的以前版本,所以选择“与Windows 2000服务器之前版本相兼容的权限”选项,点击“下一步”按钮。 ; u. j1 k. B `+ Z; w+ a, |1 {9 x) U" y1 [5 l/ U+ M% A9 u0 t1 N; V (11)在“目录服务恢复模式的管理员密码”对话框输入以目录恢复模式下的管理员密码。点击“下一步”按钮。 / i: @, K$ g# u. |# d ' n% K7 [9 X: @3 ^(12)此时,安装向导将显示安装摘要信息。点击“下一步”按钮即可开始安装,安装完成之后,重新启动计算机即可。 9 X2 l( n" a% K, ~/ r. }+ x* z5 n8 u% ?8 e" a 2.检验安装结果* S0 C) w1 I$ \; ^' ?* W+ z- H : Y: s& ?. U3 s# X& P7 N& f 安装完成后,可以通过以下方法检验活动目录安装是否正确,在安装过程一项最重要的工作是在DNS数据库添加服务记录(即SRV记录)。; G F! |; z( Z3 n& }- d: ? % e* |8 R( Z% e+ s9 N! X# X (1)检查DNS文件的SRV记录:用文本编辑器打开%systemroot%\system32\config\的Netlogon.dns文件,查看LDAP服务记录,在本例为_ldap._tcp.lanyi.com.600 IN SRV 0 100 389 n2k_server.lanyi.com. ! f9 |9 r l& ?6 { & {) K* E8 T$ j0 R/ S, T(2)验证SRV记录在NSLOOKUP命令工具运行正常:在命令提示行下,输入“nslookup”命令;输入“set type=srv”命令;然后输入_ldap._tcp.lanyi.com。此时如果返回了服务器名和IP地址,说明SRV记录工作正常。! o9 K; o8 q' _( ]" C/ ~% ^ & Q: Q: d0 j8 C 另外,当安装完毕后,在管理工具提供了三个工具:Active Directory用户和计算机、Active Directory域和信任关系、Active Directory站点和服务。同时系统还提供了Active DirectorySchema和ADSI,主要用于Active Direttory开发的工具。: T5 J9 f/ E# Y! h& @ 6 W* V, Z6 w( E+ l% q0 d0 @Active Directory用户和计算机工具是配置互动目录最常用的工具,在后面我们将详细介绍它的使用方法。1 g1 F, _* x7 u1 r/ g - M* U6 n% G! G. S6 Y6 u 3.删除活动目录- h8 h, m3 j3 R 1 I$ |: u& {4 p2 t9 R( d 与安装活动目录一样,运行dcpromo.exe文件即可。 # z0 Q5 R: y5 G8 v: Z, T- D3 U& R- B/ q3 t 三、设置管理用户和组 0 L6 n8 Y" v2 L: D( e! p在网络为用户开设账户的工作即是一项基本功能,又是一项非常重要的工作,因为账户与权限有关。% \0 v- A+ ^# k Q' l( `+ n* } S3 Q' X% s: F9 q用户账号保存在活动目录,为该用户账号启动唯一登录的对象。唯一登录是指从工作站登录获得网络资源的访问过程,用户只能输入一次名字和密码。域用户账号可以登录到域访问网络资源,或是登录到个人计算机上访问本机上的资源。 ( ?0 I4 }. [. |9 G( m0 P% z! b O/ O- f/ H% S (一)用户登录名 & @2 Z6 [; S2 `+ N1.用户主名2 N. Z0 Y& W. Y: t& l" L : L) ?! [! {& t 在活动目录,每个用户都有一个用户登录名,和一个pre-Windows 2000用户登录名。用户账户信息用来验证和认可目录林任何地方的用户,这就导致了唯一登录。( U& g/ t$ ?% z% k; S2 l 3 b/ g1 x" j6 h. I5 P) n 用户主名是只用于登录Windows 2000网络上的登录名。也可将此名看作是用户登录名。一个用户主名有两个部分,它们用@符号隔开。如apple@lanyi.com。一个用户登录名有以下两个组成部分: ' L: V$ y2 ~* p3 a6 K, X 6 T6 D6 P' H& ~# `用户主名前缀:在apple@lanyi.com是apple。 0 u) c2 E/ S( |. Z; o5 y( L9 |: \9 Q" j& D. b% d 用户主名后缀:在apple@lanyi.com是lanyi.com。默认情况下,后缀是网络根域的名字。用户可以使用网络的其他域来为用户配置其他的后缀。( t6 A8 k+ D& S0 D3 `8 V( { 0 k( `$ Y; e7 I' d 2.创建用户主名后缀* m& H& Y6 p/ X% f. E 0 ^ y! P+ P# }1 u) |% q0 u (1)点击“开始→程序→管理工具→Active Directory域和信任关系”选项,右击“Active Directory域和信任关系”选项,选择“属性”命令。; E( e# [* m2 j9 U" ~6 v" Q 7 B0 n* e$ H7 e(2)在打开的对话框的“UPN后缀”选项卡输入一个可供选择的后缀名,如lanyi.com,然后点击“添加”按钮。 3 h% A* [7 t' R, S/ w 4 q7 Q) m; L2 M8 z; J(二)管理用户账号 " h9 V5 h& W5 j1.创建一个用户账号 ! u7 L6 X$ o" Q! v . c; O" M7 `; k8 ? `1 Y(1)点击“开始→程序→管理工具→Active Directory用户和计算机”选项,在打开的窗口的左侧栏右击“user”容器,选择“新建对象”命令。 3 f, W' g6 i7 c: {' b) e G; Z 1 O( A) J- d2 a* D(2)在打开的“新建对象”对话框,输入姓名和用户登录名。点击“下一步”按钮,输入用户密码。其:4 \9 R1 x1 R5 @8 Y$ Z1 ~. V: ?5 s+ k4 j / T! K9 J+ B+ q, ~$ h用户下次登录时需要更改密码:如选此项,用户下次登录时将提示用户重新输入新密码。 ; Q; M) E$ S4 y0 F: N! C E# Q( U. _1 `用户不能更改密码:这一选项保证用户密码不能被修改。 ' m* c& e' A' c* c( T$ F : p: d2 C$ }% a密码永不过期:如选此项,密码将永不过期。因为过期的密码将不能使用,过期时间在账户安全策略设置,或在账户属性对话框修改。. `" F5 P2 W6 S: Z: S: t + |* h9 m5 G% K+ u6 | q 账户已停用:表明此账户已被停止使用,如想让账户解锁,必须由管理员在用户属性对话框设置。- A1 D( b% H' Q! [# [9 {6 j. u . Q6 W) |: D+ V: `2.执行公共管理任务 4 K f9 h# w# \3 \: ~, y7 o3 T" C5 M9 M (1)禁用和启用用户账号: 2 m" s' |% M v2 I+ |1 ` : O+ x' s( u2 x% n J当用户一段时间内不需要他们的账号,但一段时间后需要使用它们时,管理员可将此用户账号禁用。 $ U+ ?9 B; o. H- a3 T ! e( R% O7 ?4 e0 F9 U在“Active Directory用户和计算机”窗口,右击相应的用户账号,然后根据该账号的当前状态点击“停用账户”或“启用账户”命令即可。 ! e" R' K/ b! e4 Q3 U& C0 w. k* h& ` / R" x) y( Y; G(2)重设密码: / Z3 t& P! }3 V; j* m: }; e2 x9 p# b 0 `. ?4 X. p- a: f当在用户改变密码前密码期满或是用户忘记密码的情况下,管理员需要重新设置密码。 8 S& B+ s- b' }( q) i* u+ r. m5 h7 R0 a! m" l9 | 在“Active Directory用户和计算机”窗口,右击相应的用户账号,然后点击“重设密码”命令即可。 # Q, H) ^& x; w3 I! L' w5 L- [9 w: p! u3 z (3)在一个域内移动用户账号: 7 d/ F3 v- e9 D. p + x5 t: O$ d! U3 g% B1 l必要时,管理员可能需要在同一个域内的OU之间移动用户账号。例如一个职员从一个部门调到另一个部门,这样将由另一个管理员管理该职员的用户账号。8 o( q0 V0 B) ?1 Z/ P$ I9 \ 4 z) [! H9 N* W5 k8 [& [% B* \在“Active Directory用户和计算机”窗口,右击相应的用户账号,点击“移动”命令。在打开的“移动”对话框,双击域目录树,点击对象要移入的OU,然后点击“确定”按钮即可。 ' v: [: s8 A( w* c7 t6 D* K- c5 G* K/ k + Q% u; V. T) D- C(4)删除用户账号: ) c( ]( I- \6 R$ E" |5 J3 A9 @7 |( K w, x 在活动目录存在有无用的账号,如果一个授权用户能够使用一个无用的账号登录可能会引起网络安全的风险,所以对无用的账号应当删除。6 m' e$ F3 p: H / G9 ]) J, d9 S在“Active Directory用户和计算机”窗口,右击相应的用户账号,然后点击“删除”命令即可。; X" b& R. l* ^" u6 C & L* z8 |8 Z& w0 K. L. ?1 k (5)重命名用户账号:* h& U+ a: o+ u8 W! G5 X7 S0 D' L # `' C* @2 M$ n4 ?$ x: n: n如果管理员想保留以前某个账户所指定的各种属性和权限给一个新的用户时,可以将以前的账户重命名。, _# {' X6 K2 g1 f6 ~ c" \/ b2 x % u( B' @7 S! j 在“Active Directory用户和计算机”窗口,右击相应的用户账号,然后点击“重命名”命令即可。 - X% f2 j5 D4 E. V: \6 j* i* q* D8 \3 Z% z 3.为域用户账号设置属性 8 }6 @" E& N6 i6 t+ \4 W8 y& O% \+ ~9 g4 X/ x( b. C) y (1)设置个人属性:* K$ G3 ?$ X3 E+ Y $ s8 n) l; @# W 在“Active Directory用户和计算机”窗口,右击相应的用户账号,点击“属性”命令即可打开相应的属性对话框。在该对话框,各个选项卡对应于不同的用户设置,你可以根据具体的情况尽可能的详尽填写。这样做的好处是利于以后的账户查找。) B2 M8 V Z e0 H, ^" u % ^" \3 ^2 @ V' P" ~ f (2)设置账户属性: 9 M7 V/ V+ }/ j6 [" y! b + Q, B! A1 M2 C: S6 {4 y* A在“账户”选项卡管理员可以指定用户的登录名称,设置账户选项,指定账号失效日期。5 [* {* q' z3 q+ W% I 7 r7 T; X7 m$ o你可以在该选项卡下配置当你创建该账户时指定的设置值,如用户登录名和登录选项。可以修改密码需求条件,为此,在“账户选项”选项组下选择相应的复选框即可。2 _$ n% Z$ }# \8 P0 i& U9 g 3 ^. r C3 {& Y$ x除此之外,还可以在该选项卡下设置用户账户的失效日期。到达这一日期后,Windows 2000将自动禁用相应的账户。默认情况下,用户账号永不失效。为此,你只需要在“账户过期”选项组,点击“在这之后”选项,然后从列表选择一个失效日期,点击“确定”按钮。 2 j3 |( X! h+ L4 j) f$ s' V 0 M7 _/ M$ w- ?1 Z(3)指定登录选项:7 f4 ^' h9 O, w2 B+ @1 D, H 2 [6 N' L- \- J; D _ 你可以通过设置用户的登录时段,控制用户可以在哪些时段登录到指定的域,你也可以通过设置登录工作站,来控制用户可以从哪个计算机登录到指定的域。 ) L1 S$ F6 B1 x7 K 0 ^! I0 @2 V0 B. G- b在默认情况下,用户可以每周七天,每天24小时连接到服务器。在高安全性网络,你可能想限制用户可以登录到网络的时段。为了设置登录的时段,你可以按照下面的步骤进行:" j5 V& [0 t% j3 y3 a8 S : [6 b5 Z( ^/ C' j 在“账户”选项卡点击“登录时间”按钮,打开相应的对话框。其蓝色指示该用户可以登录到的时段,而白色框指示该用户不能登录到的时段。 ( i/ | Y, e+ q( B5 \4 [- n$ D% ? 在“天”和“时”框,选择你想拒绝访问的时段框,并点击开始时间,然后向终止时间拖动,再点击“拒绝登录”或“允许登录”选项即可。5 F8 V c7 e; B ' `' y6 K5 z/ E% `$ x, w1 \ M同样的,你也可以指定用户从哪个计算机登录,在默认情况下,具有合法账号的任何用户都可以在运行Windows 2000的任何计算机登录到网络。 / j/ A& v2 x& W! y! K! c 9 u! x4 Z% ^- n+ C在“账户”选项卡点击“登录到”按钮,然后在打开的对话框点击“下列计算机”选项,添加用户可以进行登录的计算机。为此,在“计算机名称”框输入计算机的名称,点击“添加”按钮即可。' k2 l. Q8 l8 c3 L& `; D/ Q 9 l% x& d1 ^* p: T' F+ m2 U2 s 4.用户配置文件/ F, F+ s4 A. r( e( w / r+ e+ r7 _1 C% q% u, f* q% r. O在Windows 2000,用户的工作环境主要由用户配置文件定义的。为了安全性的目的,Windows 2000要求每一个访问系统的用户账号都有一个用户配置文件。用户配置文件包含所有必要的设置值,这些设置值包括显示器、区域设置、鼠标和声音设置等,除此之外还包括网络和打印机连接。- O# o0 t3 ?. k# j3 F2 S( V " e- ]; ~% b4 P) ]+ X f (1)用户配置文件的类型: ; f r- L: Y& L" w! s4 y8 Q 0 J- C: u' U) ?4 R" o/ U用户配置文件在用户第一次登录到计算机时创建。所有针对具体用户的设置值都自动保存在该用户的文件夹,即C:\Documents and Settings\用户名。 , f: [ {, X9 p0 g ) ? z+ Z' P, w! E默认的用户配置文件:用作所有用户配置文件的基础。每个用户配置文件都开始于默认的用户配置文件的一个复制件。8 H& Q) X, R5 q7 Y . M+ F Y) @& A1 w$ C本地用户配置文件:在用户第一次登录到计算机时创建,并被存储在本地计算机。每个计算机上可以有多个这样的配置文件。+ P1 R; O7 i4 q6 B N 9 N5 u7 U; L2 ]9 J$ q漫游用户配置文件:由系统管理员创建,并存储在某个服务器上。在任何时候,用户登录到网络的任何计算机时,这一配置文件都是可用的。如果某个用户修改了他的桌面设置值,在该用户撤销登录时,这一用户配置文件即在服务器上更新。6 U y* J5 O# x ) ~3 D/ b3 \' {% Q3 [" k7 _9 O强制性用户配置文件:由管理员创建,用于为某个或某些用户指定特定的设置值。强制性用户配置文件可以是本地的或是漫游的用户配置文件。它不保存对用户桌面设置值的任何修改,用户可以修改他所登录的计算机的桌面设置值,但是当他们退出登录时,这些修改不被保存。 0 K* N" Q+ g$ k2 `9 @1 v3 b$ t! K% o1 t3 _; _7 X4 `, z" X (2)创建漫游的和强制性漫游的用户配置文件: 4 P) |" z& g) ^8 R$ o ; Z5 L1 a7 \$ i+ ~) J5 J让我们来创建漫游的用户配置文件:9 u) h) l1 s8 q i$ ^ H 5 j( @; W T) J7 y7 P8 X! c4 [6 n在某个服务器上创建一个共享的文件夹,并为用户提供对于该文件夹的“完全控制”的权限。$ L6 z! R2 B7 t 0 d3 K. M' [( j' q在用户账号属性对话框,点击“配置文件”选项卡,在“配置文件路径”框输入相应的路径信息,用以指定共享文件夹。键入的路径信息应该是\\server_name\shared_folder_name\user_name。可以采用变量%user_name%,而不键入具体的用户名称,此时,Windows 2000将自动用漫游用户配置文件的用户账号名称替代%user_name%。/ C, s% K _& |; ~, G3 P 6 z4 G* |1 i b: z 下面再让我们来创建一个强制性的漫游用户配置文件:8 u5 c& K+ W0 M4 @' {( h6 } - j0 S: R9 W F- l首先在某个服务器上创建一个共享文件夹,其包含一个配置文件夹,创建的用户配置文件将被置于该文件夹。为用户提供对于这一配置文件夹的“完全控制”权限。例如创建一个名称为“Profiles”文件夹,然后在该文件夹创建一个名为“User1”的文件夹。 # k2 o" h( \. v3 ?7 c3 s5 K1 R 6 }1 Q. q0 |2 h建立一个已经配置的漫游用户配置文件。在“Active Directory用户和计算机”窗口创建一个新的用户,指定该用户的配置文件夹作为路径信息,然后配置该配置文件。如创建一个名称为User1的用户,并指定配置文件的路径为\\server_name\Profiles\user1。为了配置该配置文件,以User1作为用户名称登录到域,必要的时候修改桌面设置值,然后退出登录。 0 \* A6 M O3 s5 d! E8 n# @' K) I3 q: `: f. Y+ @% W/ x 将配置文件Ntuser.dat重命名为Ntuser.man。这样做将使配置文件成为只读的,并因此而成为强制性的。& W3 p" Q5 k! z& V- L d/ s* I 5 F9 v3 C7 s/ B+ V (三)活动目录的组& P* [9 k* Q3 X 组是可包含用户、联系人、计算机和其他组的Active Directory或本机对象。使用组可以简化管理。' Q, F. G2 b" L6 c6 g0 S ) P$ _/ W T8 n) a, c; Q& r1.从组的类型分类# P% ? K# B7 S: P! G0 K- I1 E& i 1 V, O9 H& U" d& Q( m(1)安全组:用于将用户、计算机和其他组收集到可管理的单位。为资源(文件共享、打印机等)指派权限时,管理员应将那些权限指派给安全组而非个别用户。权限可一次分配给这个组,而不是多次分配给单独的用户。 . e/ c9 f) G* d& E7 L# d ( N" o. l6 D, ~) b1 S8 k+ O(2)分布组:只能用作电子邮件的组。不能用于筛选组策略设置。该组无安全功能。 - N3 ^8 H! |; B0 C+ E* }4 d; m6 A+ R1 G; r 上述两种组都支持域本地、全局或通用组范围的一种。1 ?3 m* I9 q7 ^: p2 @5 i0 G & F) l" I3 {0 ~3 Z; ?7 t 2.域模式5 _5 S' V5 q" A3 [6 n+ x0 I $ L3 U1 v4 a; n% y2 g& l) T在学习本地、全局或通用组之前,我们需要先讲述一下域的模式。域模式共有两种,混合模式和本机模式。计算机刚升级为Windows 2000域控制器时,默认情况下为混合模式,如果你想更改为本机模式,可以按照下面的步骤进行:( J1 F1 I% X ^ i9 T3 Y& p ( E* d1 C4 q8 {# E# I在“Active Directory用户和计算机”窗口,右击域名,选择“属性”命令。此时,你可以在打开的对话框的“常规”选项卡“域模式”选项组,点击“更改模式”按钮,在打开的对话框点击“是”按钮,即可将域模式改为本机模式。 + l' e9 H. R; k, G0 i 6 X9 @4 `+ E& I$ T7 p3.全局组2 h- g( M9 X' q2 g5 ^4 e+ V ( w- }, ~2 D U 利用这一组作用域,来组织那此具有类似的网络访问需求的用户。你可以利用全局组授予访问任何域上的资源的权限( i6 F2 n3 H/ F% N6 d ' r; e" J, F% ~# q (1)成员资格。混合模式可以包含来自同一域的用户账号。本机模式可以包含来自同一域的用户账号和全局组。4 j/ x0 u8 A( ~+ T " o8 k5 M E6 w) \(2)成员范围。在混合模式,全局组可以是域本地组的一个成员。在本机模式,全局组可以是任何一个域的通用和域局部组,以及同一域的全局组的成员。 d, r1 {5 \2 N0 l8 @ 3 c' J5 Y; x* s+ V( K0 E# ^+ C. x% D(3)作用范围。全局组在它的域及包括目录林的所有域的所有信任域都是可见的。 ) p8 i8 g! o- ^) e9 u# l! U / c X/ r' r2 B4 y; ^* v* P(4)权限范围。目录林的所有域。 3 w- x+ w8 `% n2 Z, g" E% _$ e0 y1 n) G8 J2 v4 c. ?% r 4.域本地组. l5 l6 ?! s/ [- @' e 8 c& ^( @6 c& {# ~ 利用这一组作用域,可以授予访问域资源的权限。这些权限要位于创建该域本地组的域,但是不必驻留在某个域控制器上。 " E! Y/ f5 H4 t$ E7 j ) {3 k. D( a; x(1)成员资格。混合模式可以包含任何域的用户和全局组。本机模式可以包含目录林的任何域的用户账号、全局组和通用组以及同一域的域本地组。, ~8 \" D! [' A* ~; f4 e- q, P 9 {. @" i' j0 q/ c (2)成员范围。在混合模式,域本地组不能是任何组的成员。在本机模式,域本地组可以同一域的域本地组的成员。 * E" ^$ g9 `( k6 a3 R0 R0 } . N; R3 h8 }8 \1 W% q0 O+ b(3)作用范围。域本地组只在它自己的域可见。' W9 l' o; H; r ( d6 \0 l& j( u9 b5 ~- N" e(4)权限范围。域本地组位于其的域。1 ]; E5 O) Q3 L! s0 O 4 x4 s j% O0 R 5.通用组 + r# o$ @/ o0 A S& J/ L9 i! s" U! v4 _ 利用通用组可以为多个域的相关资源授权。利用通用组可以授予访问任何域上资源的权限。 5 o) E1 |1 f9 h: u! b % ^, x& M9 f4 a" F: ~* N! l+ B7 D(1)成员资格。在混合模式不能创建通用组。本机模式可以包含来自目录林的任何域的用户账号、全局组和其他通用组。 & W% e" F$ B$ v, T / b2 z6 y4 v7 z1 k$ p(2)成员范围。通用组在混合模式不适用。在本机模式,通用组可以是任何域的域本地和通用组的成员。 * C& S* i! {' n( Z; g4 N9 f9 }5 [7 l$ H2 b; l$ A (3)作用范围。通用组在目录林的所有域都是可见的。, _$ ^$ D @7 j$ m5 g; ]" E' [ # U' M3 R b4 d(4)权限范围。目录林的所有域。* X% z$ y. P Y" H ; B+ J/ I7 T9 K" v4 T1 P& W 6.在域使用组的管理思想 - a: d h% G6 g& y" G. o6 j a O" s# v4 f7 h1 k6 L2 i 经过上面的介绍,相信大家知道组是可以嵌套的,而且有了组,对于多个相同权限的用户,再也不用分别给每个用户赋权了,只需给一个组赋权就可以了。那么在Windows 2000域使用组应遵循什么原则呢?+ k; [# {6 r8 _5 }: u7 B g( L+ Q0 P1 Q4 V; U8 e% j+ `; l* {/ F 这个原则其实很简单,那就是:将用户加入全局组;将全局组加入域本地组;给本地组赋权。 : N# u6 b$ [) Z1 \1 u8 I7 U# O* D( a& m; j0 X. v, v+ B 这也就是AGDLP,其A(User Account,用户账号)G(Globle Group,全局组)DL(Domain Local Group,域本地组)P(Permissions,权限)策略。这个策略是一种管理思想的体现,它提供了最大的灵活性;同时又降低了给网络分配权限的复杂性,尤其在有多个域时,这个策略就更加具有优势,如果只有一个域,那么这个策略就可以更简化了。 ! t6 T6 P% y' E& w1 \; X# [% t" \+ {$ g4 X! L+ ] 四、在活动目录上发布资源 9 o3 S) a5 R; R8 j- R" x! _% d发布的意思可以简单地理解为在活动目录可见。在活动目录发布资源要注意发布相对静态的、很少改变的资源。( H6 r( `" M9 e l$ i / p8 n* `- Z; e: P1. 资源的发布! C+ t- `. J1 ]5 b0 C6 F: \ (1)公布共享文件夹: & }& W1 k4 w% P7 v- d$ {, x# h8 n* y 要想将共享文件夹发布在活动目录上,就必须手工加入,而不会自动产生。 3 b( Q" k5 f0 _& d$ h- n1 G2 [$ T; u 首先在“Active Directory用户和计算机”窗口双击域节点。然后右击想在其添加共享文件夹的文件夹,选择“新建→共享文件夹”命令,打开共享文件夹对话框,键入文件夹的名称,键入用户想在目录公布的UNC名称即可。% B6 H9 O/ D4 m% s G ) g5 B/ H6 t- u( P" o& @(2)公布Windows NT打印机: + X/ R0 M0 P* P4 t! ` 9 D( N. V9 h; H; b9 o! a域的Windows 2000计算机上的打印机都将自动发布在活动目录,下面我们讲述非Windows 2000计算机上的打印机。 ) y. j) Z( Q1 f# z6 ~9 O9 i. C1 K+ }- G v; N* d 首先在“Active Directory用户和计算机”窗口双击域节点。然后右击想在其公布打印机的文件夹,选择“新建→打印机”命令,打开相应的对话框,在其键入用户想在目录公布的UNC名称即可。 5 s! F! z# h3 @3 @1 b2 v8 d6 t& U/ N Q& V) p3 R$ u, t2.资源的查找 * T& F$ `; ]0 [3 o0 w9 O E/ K在“Active Directory用户和计算机”窗口,右击域节点,点击“查找”命令,打开“查找”对话框,点击“自定义搜索”按钮。 % V. y: l D* s) Q, l l0 S0 \- y5 P i, W 点击“字段”,指向要搜索的对象种类,然后点击要为其指定搜索值的对象的属性;在“条件”,点击搜索的条件;在“值”,键入要应用搜索条件的属性值。点击“添加”按钮,将该搜索条件添加至自定义搜索。点击“开始查找”按钮即可开始搜索。 " \& `8 B* I% e. y( E; P " `& [: s; I: [重复上面的步骤可以添加所需的全部搜索条件。/ {; D8 Z3 p. J( o" @7 I 1 q& M; j7 [* X5 n7 ?五、实现组策略, ^; Q8 p' W0 Z, @7 c3 P0 P 组策略(GPO)为网络提供了比用户和计算机更多的管理控制能力。通过使用组策略,一旦定义了用户的工作环境,就可以依赖Windows 2000来连续推行定义好的组策略设置。可以将组策略应用到整个网络,也可以仅将它应用到某个特定的用户或计算机组上。! P: Z. w2 m) A 9 Z# g" p: t/ r(一)组策略基础 % u; R7 y" S& t- B1.组策略的作用 1 W+ p) h6 B- A / d9 ?/ _. ?$ O% W4 e, ?+ n0 K使用组策略可以:- ~) a' e, c" i# `( m' \ ; p4 g7 r7 u' E2 |! X(1)通过站点或域的级别,为整个组织设置组策略的集化策略,或者在组织单元的级别,为每个部门设置组策略的分散式策略。 % L3 }: \2 z* X+ D# o 9 _3 |, G% ~7 a6 y* _; \9 t(2)确保用户有适合完成他们工作的环境。' H& {& P+ a- Z2 T5 E3 \, Z/ C 2 W" |3 }: i9 f) s% Z! E0 G' B4 J(3)降低控制用户和计算机的总费用。) w7 ^+ f, z) l7 _ z* z. }5 ~* `$ R+ o 2.组策略类型 . A1 f- y, }3 S8 G* r% I5 P1 c, S& O0 F# y$ v7 Y* D& I 管理员模板:即基于注册的设定应用设置和桌面环境的设置。( p6 H' z! B! B) ^& ]& u: B; L 5 k3 I# ~0 Z3 |6 z o* ? 安全性:即配置本地计算机、域及网络安全性设置的设置。1 n8 k! H) z5 I5 I! c& X: w$ X 3 V8 i9 m) @8 D4 q9 f. m) \, C1 z 软件安装:即软件安装、升级、卸载的集化管理的设置。. @+ N. q4 `. E+ A + @( f! Z n. P- u& ]2 M7 N- N命令:即当Windows 2000运行特定命令时的指定设置。% c2 W7 l3 v0 A5 q% s3 q4 S ( O' u+ f; _8 A. ?- G8 h u5 v远程安装服务:即当运行远程安装服务(RIS)的远程安装向导时控制用户可能的选项设置。 . {6 L+ J3 W! K" h 5 @5 z) D w+ f1 WInternet Explorer维护:即管理和定制基于Windows 2000计算机的Internet Explorer的设置。 5 X/ i3 {( J5 }, C. d% ` ! ~4 v7 ?. H; A3 ]! S文件夹再定向:即在网络服务器上存储用户个性化文件夹的设置。 - [6 y; i0 g; m6 }$ |, Q( L# o( [! M 3.计算机组策略和用户组策略! u+ M9 j7 @! Y' t( c/ |) R- A0 d: I% s6 M : g9 Z; s9 i; y5 m0 p% j: c 组策略有计算机组策略和用户组策略设置。! R( }- X p/ {" A+ w* P ! {3 d& Z& E$ A. F5 I# J计算机组策略设置有:操作系统行为、桌面行为、安全性设置、计算机的启动和关机命令、计算机赋予的应用程序选项以及应用程序设置。& s8 B+ s( O5 T: I9 h. g 4 H1 `$ X4 p U) N用户组策略设置有:操作系统行为、桌面行为、安全性设置、赋予的和分布的应用程序选项、应用程序设置、文件夹的重定向选项以及用户登录和退出登录命令。# j* R2 o1 b' U ! |+ Z( L6 G+ q2 O" c注意:通常计算机组策略在和用户组策略冲突时,计算机组策略有优先权。 8 A- B" \8 T6 }3 Z7 Y 2 Z4 Z2 s8 T' Z8 S0 O2 ^将组策略和站点、域或组织单位链接后。组策略的设置将应用在站点、域或组织单位的用户和计算机上。管理员不能将组策略和默认的活动目录容器──计算机、用户和Builtin相连,因为它们不是OU(组织单元)。 * I2 g8 I6 J6 f' F! t% I; R6 `& M$ E" H+ {1 T (二)创建组策略和组策略的继承 % s2 X, E9 G/ ^) N1.创建组策略 ' A# v6 Q7 }) @! G. y9 _1 N& w* K % w6 I$ }2 x6 ^ ^8 @: H0 c( ]通过使用活动目录用户和计算机来为域和OU创建组策略,执行下面步骤:- b% H$ @& d3 z9 S) ]. v 3 b" q8 I9 E7 ~(1)在“Active Directory用户和计算机”窗口右击想创建组策略的域或OU,然后点击“属性”命令。" X2 v% b* x( [, U 3 E/ a: N9 o, Z% e7 C (2)在打开的“组策略”对话框点击“新建”按钮,然后为新的组策略输入名称,默认为“新建组策略对象”。8 S, Z$ _& d3 H0 b" V + A, [ M" l$ D* o" k: H+ d2.连接组策略0 o! M# \. K$ E( p( } 2 ^% h8 d9 |& Z9 C) z: T5 r连接一个已存在的组策略到域和OU上,执行下面步骤:4 d0 h3 b: l) u: t- ~6 p ] & Y8 ~, c7 c" P9 A! T$ n (1)在“Active Directory用户和计算机”窗口右击想创建组策略的域或OU,然后点击“属性”命令。  8 l1 u3 `' X8 {3 Q0 z- T . T1 `+ l L# T6 Z (2)在“组策略”对话框点击“添加”按钮。) @* j c3 _- x* d3 o% H0 x; U- W ) w0 a- C5 a& B2 T/ J8 e (3)在打开的“添加组策略对象属性”对话框的“域/OUs”、“站点”或“所有”选项卡,点击确认要连接的组策略即可。 / J& I+ ?1 k+ p, m' y) Y8 b; y K$ u8 U, z, F 注意:任何一个拥有该组策略的读写权限的人都可以对它做出修改。 $ A$ i9 y1 e/ e+ t4 X3 m% m! t$ F- S# I8 n' r8 [4 G 3.组策略继承 7 T2 c& l. t- }) t( d/ l- W& `: S, n. M2 J8 P. `+ z 组策略的继承性包括Windows 2000在活动目录处理组策略的顺序,以及在连接到母容器的组策略的继承性。其继承流程是:8 k( [2 t. V; Z; ?" S- @ 8 |, \* n4 K, i% v/ r) E6 { 默认组策略被继承。子容器从父容器那里继承组策略,意味着子容器可能拥有多个用于用户和计算机的组策略设置。不止一个组策略与它连接。如果一个站点包含一个域以上计算机,连接到该站点的组策略定义的组策略设置将应用到所有登录到该站点的计算机设置用户上,不管计算机和用户账号是否存在该域。 ) K, V9 F! d7 q7 M# `" e# B! V# Q " Y+ P+ L1 G+ e域控制器每5分钟刷新一次组策略,重要的组策略设置将在危急的服务器快速发挥作用。Windows 2000首先处理计算机设置,然后处理用户设置。 ; A8 t+ C9 Z. n: x$ ?( ? , v$ }: v" t0 G8 `6 V下表列出了客户端扩展和对应组策略设置类型(位于C:\Winnt\System32目录):(^60090102d^) # y& T" a x! s- X' ]+ v& ~$ H g7 w' j! a! j5 t3 {: t7 T 4.解决组策略的冲突 , N! h& a9 D4 y& h) D& j9 O' d! {1 v9 t5 j 如果发生冲突,默认的是执行最新的设置;除非用户设置和计算机设置冲突。而在大多数场合下,计算机设置高于用户设置。组策略是累积的,除非两个或多个设置冲突,否则所有组策略设置都将被执行;当冲突发生时确定执行哪个组。 4 E# i; w* r6 f# |0 V+ ?% _( @ , d3 m- r \+ B5 Q, z% f策略设置的原则是:& S& l, P" L5 B 1 G F' ]4 q" T# _7 o( W(1)来自母容器的组策略设置,和来自子容器的组策略设置冲突,子容器的设置后执行并发挥作用。/ }$ B7 k% C; ?! Y* t 7 @. u% @2 ^, f, k, m) \(2)连接到同一容器上的,不同的组策略的设置发生冲突,在容器属性对话框,组策略列表最高位置的组策略设置后执行并发挥作用。组策略累积处理的例外是IP安全性设置和用户权限设置。当执行IP安全性设置和用户权限设置时,最新执行的组策略将改变以前组策略。 ( w D6 x3 h# @3 }: P4 y1 {9 `* C5 ]* O* _ a; X 5.修改组策略的继承性, C" _& h! ?! b ^$ I* g' p l7 P* R 阻止继承,将不允许子容器从母容器那里继承组策略设置。允许在一个子容器阻止继承,将阻止容器所有的组策略设置而不是单个设置。当活动目录的容器需要唯一的组策略设置,和需要确保设置不被继承时,这一功能将是很有用的。+ S& v- X- P$ C% O ! w& ~( ? u. e2 H 阻止子容器的组策略容器继承,执行下列步骤: ; b) F, \5 M; v( G 2 N- `9 F% d% J4 Z! e(1)在“Active Directory用户和计算机”窗口打开想阻止继承的域或OU的“属性”对话框。/ J9 {( k) F% r ! s3 q/ _; u4 x) t* K. ^ (2)在“组策略”对话框,点击“阻止组策略继承”项即可。 8 ?* w# K4 u/ X8 ~- a * Y6 m O1 D* T) V" Y注意:阻止组策略继承的两个局限。即你无法选择阻止哪个组策略;不能阻止连接在母容器设置为不重写(禁止代替)的组策略。& z3 C! E7 c% ?1 R o9 t " h! s, Z! D; I0 a" }$ [" M( p' b 6.监控组策略 U* T# Z' D" C/ s5 Q2 n& ?5 \5 C & {' r) A# X4 m F# ^2 C7 C(1)启用诊断记录:" i) N0 B) B/ {0 u8 R2 b $ D! [6 Z& A2 v" G7 y- m) W启用组策略的诊断记录,促成组策略在事件日志产生具体事件。这些具体事件,能够通过返回事件以及提供附加信息,在诊断组策略执行相关问题时提供帮助。 : I- y8 l/ _6 z1 H5 j, z $ P. B3 l% Y9 p1 {, `9 ~以本地管理员的身份登录,然后点击“开始→运行”,在“打开”对话框输入Regedit,打开注册表的编辑器。定位至HKEYLOCALMACHINE\Software\Microsoft\WindowsNT\Current\Version,然后点击“编辑→新建→项”命令,输入Diagnostics后按回车。! l0 @- @8 y1 O% S * v- w( M1 t+ s- ^! A 选择上面建立的Diagnostics项,点击“编辑→新建→双字节值”命令,输入RunDiagnosticsLoggingGlobal后按回车。 - W$ D/ k' n7 n. W3 @5 ]9 c( b3 t& ~, l6 S& d 最后双击RunDiagnosticsLoggingGlobal,输入1即可。 2 Q: i2 @' u' M& J% {3 F9 r2 C. s" ?- X& m/ q (2)启用详细记录:. u$ u; I3 b* @1 d9 r% g & o: ^! Z5 p( I详细记录将记录所有的变更和应用到本地计算机和登录计算机的用户的设置。日志文件位于Systemroot\Debug\Usermode文件夹下,命名为Userenv.log。启用详细记录将涉及添加详细记录的注册关键词。; |4 W( C0 i- {! [! I! x 2 ]$ X; X l: o K8 F为了允许详细记录,添加名为UserEnvDebugLevel值为30002双字节记录值到注删表的HKEYLOCALMACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon下。2 T+ `8 m6 \ s" q2 [ # w b2 k. `: q) y" d注意:30002的值允许详细记录,30001仅允许错误和警告记录,30000不记录任何事件。 ! C- G+ Z7 u4 B- o, Y1 I6 K h$ O' @, L; Y/ \2 b (三)利用组策略$ \$ b) f2 Z- c( W' S 1.组策略管理用户环境/ K. ~" \7 U0 D2 [ 0 ], j: J5 D& [9 D4 J4 Z 管理用户环境意味着用户在登录网络时,控制用户有哪些权力。可以通过控制用户的桌面、网络连接和用户界面来控制用户权力。控制用户环境可以确保用户有执行他们工作所需要的权力,但不能破坏或不恰当地配置他们的环境。( _) X# }( B7 v' l1 m 3 S# C, P9 f% ]用来管理用户环境的四种典型组策略设置类型是,管理模板设置、脚本设置、文件夹重定向和用户界面。% z% ~5 k+ F+ N4 R& S , X/ Z- h7 i3 A ?' d组策略管理模板是用来管理用户环境的,基于注册的设置。该设置将修改存放在两个注册表目录树下的设置。其:; Q3 @: L: D Q' t6 ] . K$ I/ u6 h$ D1 b" l计算机设置:在HKEYLOCALMACHINE\Software\Microsoft\Windows\CurrentVersion\Policies。 + Z# T; ?9 R6 X " p1 V; m' L0 G3 }% _4 Z2 ]/ w用户设置:在HKEYCURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Policies。 3 }8 W7 S# W: d1 ^- V" a. b) {6 f 2.管理模板设置的类型 . X, |1 E) ?, s- f' b/ W 5 i3 d! o6 g4 R5 [# P- J" W管理模板设置的类型分为七种,都是用户和计算机的设置: + ?, p8 e ?9 u0 k( x4 J 8 K i" V* x# E/ `, w' r \2 h(1)Windows组件:用户可以访问的Windows 2000及其工具和组件部分。计算机和用户为该设置类型的使用者。 ) C! M, u' G# d0 `4 a/ O3 Q0 b ! B/ A/ ]! Z8 t P: S3 @% {% \(2)系统:登录、退出过程。利用系统设置,可以管理组策略、更新区间、启用磁盘限额和实现回环处理。计算机和用户为该设置类型的使用者。; U- f+ X- y, k \ : {0 w' ]( n. p(3)网络:网络连接和拨号连接的属性。计算机和用户为该设置类型的使用者。 * M: D8 V B! J! i# e! v! Q+ e- o+ ^! |! y7 [0 p (4)打印机:打印机设置,可以是自动公布在活动目录的打印机,并使基于网络的打印无效。计算机为该设置类型的使用者。% n; l$ B( w) }$ d+ M% z % z; s1 H" @* |# ^! w. x (5)开始菜单和工具栏:用户可以从开始菜单访问的功能组件。用户为该设置类型的使用者。 : j7 M1 t/ H7 j4 H4 x$ J( v! I. F6 d& L+ L: a: u (6)桌面:活动桌面。通过隐藏某些桌面图标并控制用户对“我的文档”文件夹使用,可以控制用户对网络的访问。用户为该设置类型的使用者。 # ?9 W* S: T5 ~4 l2 f( k5 R% N1 U& K+ t, K6 s (7)控制面板:控制面板上的一些应用程序。用户为该设置类型的使用者。 2 {0 C7 v: b# x. S! C% F4 E5 i$ E+ X2 U2 X( E 禁用桌面的设置。如下表所示:(^60090102e^)( V5 \, e" q9 Z b0 U4 V $ c! \$ R+ k$ P `, h" g( l9 q3 d4 q 禁用用户访问网络资源的设置。如下表所示:(^60090102f^) 1 w7 {6 N1 h" Y+ s. L0 V# u& P! D- K" K( `2 v 禁用用户访问管理工具和应用程序的设置。如下表所示:(^60090102g^) 4 b& K; u$ \! O# |8 E2 S: Z4 X. i8 t8 B7 g* [# G 3.组策略的回送处理模式% }5 K4 _3 N/ [: Z% X, u6 t$ Z - I# f( z$ |% p9 b$ L, w组策略回送处理模式,可以把用户管理模板设置实现到计算机上。回送处理模式是实施应用于计算机的组策略的用户配置设置的组策略。对于指定具体任务的计算机或安装了特殊软件的计算机非常有效,按下列步骤启用回环处理模式: t2 S4 N ?6 J ( F& m6 s. T( L(1)打开组策略,展开“计算机配置→管理模板→系统”节点,点击“组策略”选项。 9 I; I) D) e$ \ 9 l. G* D' G" I(2)双击“用户组策略反向对应处理方式”选项。: z/ M6 [% s1 Q! c- s! b ; a; C! y/ a6 s3 b* P (3)点击“允许”按钮,然后在“模式”“替换模式”或“合并模式”。“替换模式”处理应用于计算机的组策略;“合并模式”首先处理应用于用户对象的组策略,然后处理应用于计算机对象的组策略。如果设置发生冲突,将实施组策略的计算机对象设置,因为这些组策略设置最后使用。" f; x2 B0 U! _/ N% y0 _ ) k8 A% q3 u' z# ]( [2 j 4.设计组策略模板3 u* `5 ~! Y6 n 6 f' W, w q# ^# o$ G 通过在组策略配置管理模板扩展名的设置,实现管理模板的设置。在组策略“属性”对话框的三个状态说明如下: Y7 g3 ?- p" r# i: n" C* u. K # Q- a1 k% Q& H; j' G6 I6 r" Y未配置:不对计算机产生任何变化。' C" }6 T ]* i! [$ T( W. Q + y q# G% o9 b, V6 o启用:把引起的变化添加到注册表。 3 D" I! y! \- Q3 o8 N/ i- x5 r; L4 p4 j( a' ]% q2 ?- k) \: h5 J4 | 禁用:防止引起的变化添加到注册表。0 @; V2 R! ?' H* _3 F! m! Q* b 0 V7 w( z6 D2 q/ | G* Y5 k 右击合适的站点、域或OU,点击“属性”命令,然后点击“组策略”选项卡,建立或选择现存的组策略,点击“编辑”按钮。 5 @7 o' ~, y6 T. ~: s ( ] w5 T: {: A在组策略,展开“计算机设置”或“用户设置”选项,然后展开“管理模板”直到确定需要修改的位置。最后在组策略属性面板,双击需要修改的组策略设置。 : Z- t* A# M, E+ I6 J/ f( L4 M3 S8 O; g' O 5.用组策略分配脚本 $ {3 C$ N4 B, {) r/ [3 R8 C) g( N; D 利用组策略脚本设置,可以把脚本设置成在指定的时间里自动运行。管理员可以利用策略的脚本扩展来运行批处理文件、可执行程序和支持脚本的Windows脚本主机。组策略脚本设置可集配置脚本,在计算机启动、关闭、用户登录、退出的时候自动运行。 4 k7 f- ?2 _" Q# j8 h + q& H* b: f* B! GWindows 2000按下列的顺序处理并运行指定脚本的组策略:# e* G3 O- [* K( V' i' L) U. ? 4 ~/ M: M! v% h: z( ]' p: ?$ X (1)当用户启动计算机、进行登录时,存在以下几种情况:启动脚本缺省情况下,隐藏、同步运行;登录脚本缺省情况下,隐藏、非同步运行。 4 O& R6 `$ V$ j: j, I/ Y1 g8 V' m" I! _1 C; | (2)当用户退出、关闭计算机时,存在以下几种情况:退出脚本运行;关闭脚本运行。 & n, y1 v& H! R6 v ) i3 Z0 M { z2 n( U/ z注意:处理脚本缺省超时时间是10分种,如要调整时间,可以配置Computer Configuration\Administrative Templates\System\Logon\Maximum wait time的组策略脚本的等待时间,改变后将影响所有运行脚本。 : l" F, Q- u+ O8 Q0 Q6 S1 P+ a, `* s 我们可以按下列步骤分配一个脚本:6 t1 w0 {( J) _% H0 t $ I. Z" W: A; b! @* |. W(1)打开组策略合适的组策略,展开“计算机配置”或“用户配置”,展开“Windows Setting”,点击“脚本”按钮。 ' L5 o: Q, h) @/ e9 ?' O5 U0 ^: Q& f7 Q/ v ?# ~ (2)在脚本的“属性”对话框,点击“添加”按钮,点击“浏览”按钮,选择需要分配的脚本后点击“打开”按钮,添加需要的脚本参数即可。8 {. d% W, j" ]' D% F , F! x2 D- f; I# R7 c. V, j6.利用组策略重定向文件夹 ) o+ ^; W! L. R& @6 V2 ^. L; H3 v0 ]! w: L4 U6 N! F 重定向文件夹,可以确保用户可以获得数据,不管他们在什么计算机上登录。 8 K R0 Y( n) t* W5 X9 T; A# _$ D! b. f% [ 可以重定向文件夹有:我的文档、应用程序数据、桌面和开始菜单,Windows 2000会自动建立这些文件夹。 ; R# ^. }' I: l* \$ F5 c3 @" ~ 5 @) d. I9 f7 I利用重定向文件夹,我们可以:不管用户从什么客户计算机上登录,都可以访问文件夹的数据;文件夹的数据集存储,因此文件夹的文件将更便于管理和备份;减少网络通信;重定向文件夹的文件,可以当用户登录到客户计算机上的时候,不使用存储空间存储这些文件。9 e0 }9 c; ], c+ Y! k5 V, o {& c & c/ j: x/ d: K 如果管理员在重定向文件夹的时候使用变量%Username%,那么Windows 2000将为每个用户在服务器上建立唯一的个人文件夹。按下列步骤重定向文件夹:8 _" j$ g8 W8 r2 C) E3 x $ d5 _; t+ P1 ~) A (1)在“组策略”对话框点击“编辑”按钮。: Z; t2 h7 U. d2 K" v, s 3 q ^; C2 D, A (2)展开“用户配置→Windows Settings→文件夹重定向”节点。然后右击要重定向的文件夹名字,点击“属性”命令,然后提供目标路径和位置路径即可。/ G% Z- J$ k% X. G" L; U* I : Q/ c% {" s" q8 \7 y% Z3 B 7.利用组策略确保用户环境安全; K2 \7 ^2 |) I* o# ^ " K L# w+ X. O, M* G& j( w L域用户策略成为域成员的、基于Windows 2000的工作站或服务器的预设用户策略,例外的是组织单元定义另一个用户策略的时候,组织单元的用户策略设置影响到组织单元任何计算机上的本地策略。而本地策略设置只在利用计算机本地用户登录时候应用。按下列步骤把安全模板引用到组策略:7 R4 x8 g$ {6 }& a/ m , |+ w: g: [' ]; h5 V/ Y展开组策略的“计算机配置→Windows Settings→安全设置”节点。右击“安全设置”,然后点击“引入策略”。选择需要引用的安全模板即可。 ' [' D# v, ]7 _, f! e, e+ n + P# F& ]% i ]/ m1 p6 m另一种应用安全策略的方式是为每台计算机配置安全设置,要配置安全设置,需要执行下列任务: 7 ^9 s0 \( `$ i, e# M3 z& w" }8 u& g; g 展开“计算机配置→Windows Settings→安全设置”节点。在策略属性对话框,双击需要配置的安全设置。在“策略”选项卡上,通过选择三种状态的一种来配置安全设置:启用、禁用、未配置。3 I3 x+ D( |/ W/ d" @9 ?9 Y6 m$ U5 S . D( B- z* p' }; ?! w六、使用组策略管理软件 6 ]1 d& T* h1 ? t2 ~' ^1 \(一).使用组策略管理软件' o, P t) L n 管理软件的过程包括: : P* U7 G6 T) y. x8 g/ k, T4 S E" \ 预备:准备一个文件,以便应用程序能使用组策略布置。7 [, Y' x3 s, k# Y; N2 R9 C) \$ Y & y8 _- ?& i* Z( {' C+ M布置:管理员创建一个在计算机上安装软件,并将组策略链接到相应的活动类别容器的组策略对象。 " z4 _; ~. J3 `* ] 9 A: h4 K4 \% z4 `( M# p9 F维护:用新版本的软件升级软件或用补丁来重新布置软件。2 x/ m/ t. _: n $ |' E% y8 H# \! I) n w 删除:为消除不再使用的软件,从开始布置软件的组策略删除软件包设置。 " d# _$ u$ R, O- ]# l# l5 H% m7 { b5 g 将软件分配给用户和计算机:9 j7 E& B; X. W) ^ 4 S" H" o, K3 j& t: ]. g% x在用户配置过程,在用户登录时应用程序被通告,安装不会自动开始。这样可以节省了硬盘空间和时间。, j# M9 a& B, Z$ y - r J/ W' l8 h. w 在计算机配置过程,当给计算机分配软件时,不会出现通告,软件被自动安装。可以确保相应的应用程序在那台计算机上总是可用的无论谁使用那台计算机。 ( h* {2 s; Y4 k/ w2 j0 @* B! E7 y & g4 x- Q' K1 s% @' f) u2.用户安装发布的软件0 e1 R4 ]* F0 X+ e7 i2 u, s 可以将软件分配给用户和计算机。分配软件包确保软件对于用户和计算机是可用的。分配软件确保用户需要的所有应用程序都安装到了他们的计算机上,用户下一次登录时,新安装的软件会出现在他们的桌面上。当软件出现后,应用程序的开始菜单快捷方式和桌面图标也出现了。0 b: m* y4 Y i " p) I3 o3 Y) a; X7 ` 用户可以采用下面两种方法之一来安装发布的软件:, Y& B% z9 b4 k : r! ?% ^1 j( ~ q& f1 f& Q (1)使用控制面板双击“添加/删除程序”,选择需要的应用程序,点击“安装”按钮。6 U% Z! ~% T# I3 ?0 p$ v ! N, r5 ]+ h" m+ I(2)使用文档激活的方法。当应用程序发布在活动类别时,它所支持的文档扩展文件名在活动类别注册了, 如果双击一个未知类型文件,计算机就会安装它。0 @# F' \& g. d, q1 H 7 C; V/ Q/ H2 U3.布置软件8 ~6 \7 f* m) u4 P 按下列步骤使用组策略布置软件:+ j1 m; R* |6 L: P/ [ * r" `- |1 u+ M(1)根据软件是分配给用户还是计算机,在“用户配置”或“计算机配置”创建或编辑一个组策略。4 k T% T/ [* s) q5 n$ k( ^4 i & C% R* U0 G; d; z* k$ O+ E (2)布置“软件设置”,右击“软件安装”,选择“新建→程序包”命令,当“文件打开”对话框出现时,选定包文件,点击“打开”按钮。; |$ T6 J& z( _- K1 U9 t( U / @* E7 ^5 E/ F (3)在“布置软件”对话框,选定一种布置方法即可。 / G1 S: C8 e9 S* o: n& |& \% ~; T/ Q. x2 \5 ]* ~* S* y 改变一个软件包的软件布置选项,执行下列步骤:& Z; h* [0 K. [$ P7 ^ 1 ?6 }( i1 n# E) G/ x (1)在软件安装,右击布置的包,然后点击“属性”命令。 " Y, V* c5 U4 m2 o$ w3 X2 _4 U( G8 r9 [$ N (2)在应用程序的“属性”对话框,点击“布置”选项卡,设置下表描述的选项的任意组合。(^60090102h^) n* {0 I9 v' h8 D6 t1 [+ Z& X+ [3 l% G9 G# M6 X 设置软件安装默认选项,请执行下列步骤: 0 V- p* r' ]" f' J5 x' s ( d9 `6 U9 \" N5 J$ ~$ J# |1 m(1)根据软件是要分配给用户还是计算机,或是发布,在“用户配置”或“计算机配置”创建或编辑一个组策略。, f/ u1 S8 v7 p7 W( [# | h ! l4 c2 ? Z, ^8 k(2)布置“软件设置”,右击“软件安装”,点击“属性”按钮。% ], D6 L* ?" ^: b3 m. n 7 W+ p' M) U( s. o+ J, s+ Q(3)在“软件安装属性”对话框,点击“常规”选项卡,设置下表描述的选项的任何组合。(^60090102i^)(^60090102j^) - Z; k) |* n) W: e' s ; p# Y/ k/ [ z+ x' i& n可以布置一个应用程序的几个不同配置并且控制如何分配或发布应用程序。使用软件修改,执行下面步骤: 2 C6 S+ ]8 c, ^, ?- n x0 m: L% k% z (1)在将一个新包添加到一个组策略或在此包布置前,打开应用程序包的“属性”对话框,点击“修改”选项卡。点击“增加”按钮。 / x, ?% L' z2 w- u4 B# Q# z h P( V" a( @. [8 F (3)在“打开”对话框,选择修改(.mst)文件的路径和文件名,点击“打开”按钮即可。: t. G* l2 Y/ r: j5 { 7 N% f* K! w- z& p 4.创建软件类别 # h0 f8 l1 f7 i. g6 O7 `创建软件类别,执行下面步骤: . i8 r8 I5 s/ h3 E- I$ L+ `# k 3 p. S: q# ]+ s# z7 _(1)根据软件是要分配给用户还是计算机,或是发布,在“用户配置”或“计算机配置”内创建或编辑一个组策略。 5 v" C$ Q% u8 U5 ?4 j% }5 g% n8 k2 h. W (2)布置“软件设置”,右击“软件安装”,然后点击“属性”按钮,在打开的对话框点击“类别”选项卡。 6 ]1 p# P* I9 Z* U7 Q; j: z1 Z7 \2 f (3)点击“增加”、“修改”或“删除”按钮创建并编辑类别名。 / q" c r2 w1 o / N+ ]0 C: Q- X5 M) n" j管理员还可以控制哪个应用程序首先和文件扩展名关联。修改文件扩展名优先权,执行下列步骤: : S, m( c! M& ^; F' x6 ?: C$ N- Z- S [& K (1)打开用于布置应用程序的组策略。布置“用户配置”,然后打开软件安装的“属性”对话框。 6 H+ ^. I7 o: j( A* t$ L% o; D7 |( b* w1 y2 U (3)在软件安装的“软件安装属性”对话框,点击“文件扩展”选项卡,单击(向上)或(向下)来设置优先次序。 / D* r! w% ~6 M6 r( _$ i6 V, N' U0 J! H* y 5.维护布置的软件3 a: v* p8 Y z3 l. ]! c 维护布置的软件在于:升级布置的软件、重新布置软件。升级布置的软件:可以进行强制升级或可选升级。强制升级用于强迫用户升级到当前最新的版本。可选升级用于允许用户同时使用一个程序的两个版本。为布置一个升级,执行下列步骤:: n1 g! m) U0 F- B; I, S - o% r& j% d6 I* D(1)布置高一级版本软件。. t% L' y1 K5 R+ ?; y# N1 X / ?" w; l: e9 H6 ~' b+ y. V; r# q (2)打开“软件安装”,右击高一级版本,然后点击“属性”按钮。在包文件的“属性”对话框,点击“升级”选项卡。在“Packages that this package will upgrade”部分,点击“增加”按钮,选定低版本应用程序。 : R. [" @# w0 H( U9 u3 A) N2 A- g4 @& h& r" W" f9 N8 H0 l (3)选择升级类型:为进行强制升级,选定“现存软件必须升级”复选框;为进行可选升级,取消选定“现存软件必须升级”复选框。0 ]$ I* C6 }* }6 a 5 j1 W4 X- ] w! b0 n6 j- ` |6.删除布置的软件 , j( u5 Z+ x+ L) _& F0 S N. R删除布置的软件,执行下列步骤: : A# q0 R: Z6 A6 U' T! ^+ C; _. @$ f6 b; @$ s1 Q) r (1)打开原来用于布置软件的组策略。在“软件安装”,右击包名,选择“所有任务→删除”命令。 ; r/ \7 o/ b) r# j * ~) s9 S% O! \& L(2)在“删除软件”对话框,选择下表描术的选项的一项,然后单击“确定”按钮。
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件的数据运行新增、截取、更新、删除等操作。 常见的数据模型 1. 层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS(Information Manage-mentSystem)是其典型代表。 2. 网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG(Data Base Task Group)。 3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。 型企业 Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向小企业 小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很好 大型企业 oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,国政府机构,大型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度。 其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 oracle的体系很庞大,要学习它,首先要了解oracle的框架。oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成  物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件  逻辑结构 功能:数据库如何使用物理空间 组成:表空间、段、区、块的组成层次 六、 oracle安装、卸载和启动  硬件要求 物理内存:1GB 可用物理内存:50M 交换空间大小:3.25GB 硬盘空间:10GB  安装 1. 安装程序成功下载,将会得到如下2个文件: 解压文件将得到database文件夹,文件组织如下: 点击setup.exe执行安装程序,开始安装。 2. 点击安装程序将会出现如下安装界面,步骤 1/9:配置安全更新 填写电子邮件地址(可以不填),去掉复选框,点击下一步 3. 步骤2/9:选择安装选项 勾选第一个,安装和配置数据库,点击下一步 4. 步骤3/8:选择系统类 勾选第一个:桌面类,点击下一步 5. 步骤4/8:配置数据库安装 选择安装路径,选择数据库版本(企业版),选择字符集(默认值) 填写全局数据库名,管理口令 6. 步骤5/8:先决条件检查 如果你的电脑满足要求但仍然显示检查失败,这时候直接忽略,勾选全部忽略 7. 步骤6/8:概要信息 核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装 8. 步骤7/8:安装产品 产品安装过程将会出现以上2个界面 9. 步骤8/8:完成安装  卸载Oracle 1. 在运行services.msc打开服务,停止Oracle的所有服务。 2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行regedit命令,打开注册表窗口。删除注册表与Oracle相关的内容,具体如下:  删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。  删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services所有以oracle或OraWeb为开头的键。  删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application所有以oracle开头的键。  删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。  删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs所有以oracle 开头的键。  删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。  删除环境变量的PATHT CLASSPATH包含Oracle的值。  删除“开始”/“程序”所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。 七、 oracle的数据库 八、 常用的工具  Sql Plus  Sql Developer  Oracle Enterprise Manager   第二章 用户和权限 一、 用户介绍 ORACLE用户是学习ORACLE数据库的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,登录时不能用normal。 2. system用户:超级用户,默认是SYSOPT(操作数据库的人),不过它也能以SYSDBA的权限登陆。拥有普通dba角色权限。 3. scott用户:是个演示用户,是让你学习Oracle用的。 二、 常用命令 学习oracle,首先我们必须要掌握常用的基本命令,oracle的命令比较多,常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 用法:sqlplus 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户登录时,必须带上sysdba或sysoper 例子: 普通用户登录 sys用户登录 操作系统的身份登录 2. 连接命令(conn) 说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 用法:disc 4. 显示用户名(show user) 说明:显示当前用户名 用法:show user 5. 退出(exit) 说明:断开与当前数据库的连接并会退出 用法:exit 6. 编辑脚本(edit/ed) 说明:编辑指定或缓冲区的sql脚本 用法:edit [文件名] 列子: 7. 运行脚本 (start/@) 说明:运行指定的sql脚本 用法:start/@ 文件名 列子: 8. 印刷屏幕 (spool) 说明:将sql*plus屏幕的内容输出到指定的文件 用法:开始印刷->spool 文件名 结束印刷->spool off 列子: 文件内容 9. 显示宽度 (linesize) 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 10. 显示页数 (pagesize) 说明:设置每页显示的行数,默认是14页 用法:set pagesize 20 三、 用户管理 1. 创建用户 说明:Oracle需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:修改用户密码一般有两种方式,一种是通过命令password修改,另一种是通过语句alter user实现,如果要修改他人的密码,必须要具有相关的权限才可以 用法: 方式一 password [用户名] 方式二 alert user 用户名 identified by 新密码 例子: 修改当前用户(方式一) 修改当前用户(方式二) 修改其他用户(方式一) 修改其他用户(方式二) 3. 用户禁用与启用 说明:Oracle想要禁用或启用一个账户也同样是使用alter user 命令来完成,只是语法和修改密码有所不同。 用法: 禁用 alert user 用户名 account lock 启用 alert user 用户名 account unlock 4. 删除用户 说明:Oracle要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle权限主要分为两种,系统权限和实体权限。  系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。  DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。  RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。  CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。  授予系统权限 说明:要实现授予系统权限只能由DBA用户授出。 用法:grant 系统权限1[,系统权限2]… to 用户名1[,用户名2]…. 例子:  系统权限回收: 说明:系统权限只能由DBA用户回收 用法:revoke 系统权限 from 用户名 例子:  实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。主要包括select, update, insert, alter, index, delete, all其all包括所有权限。  授予实体权限 用法:grant 实体权限1[,实体权限2]… on 表名 to用户名1[,用户名2]…. 例子:  实体权限回收 用法:revoke 实体权限 on 表名from 用户名 例子:  查询用户拥有哪里权限: SQL> select * from role_tab_privs;//查询授予角色的对象权限 SQL> select * from role_role_privs;//查询授予另一角色的角色 SQL> select * from DBA_tab_privs;//查询直接授予用户的对象权限 SQL> select * from dba_role_privs;//查询授予用户的角色 SQL> select * from dba_sys_privs;//查询授予用户的系统权限 SQL> select * from role_sys_privs;//查询授予角色的系统权限 SQL> Select * from session_privs;// 查询当前用户所拥有的权限 2. 角色 角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色的所有权限。  系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色:  CONNECT, RESOURCE, DBA这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本这些角色可能不会作为预定义角色。  DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包。  EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。  自定义角色 Oracle建议我们自定义自己的角色,使我们更加灵活方便去管理用户  创建角色 SQL> create role admin;  授权给角色 SQL> grant connect,resource to admin;  撤销角色的权限 SQL> revoke connect from admin;  删除角色 SQL> drop role admin;   第三章 Sql查询与函数 一、 SQL概述 SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL语言主要包含5个部分  数据定义语言Data Definition Language(DDL),用来建立数据库、数据对象和定义其列。例如:CREATE、DROP、ALTER等语句。  数据操作语言Data Manipulation Language(DML),用来插入、修改、删除、查询,可以修改数据库的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句  数据查询语言 (Data Query Language, DQL) 是SQL语言,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来控制数据库组件的存取允许、存取权限等。例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。  事务控制语言(Transactional Control Language,TCL),用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 二、 Oracle的数据类型 类型 参数 描述 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数,其,M表示精度,代表数字的总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) REFERENCES tablename(column1,column2,…..column_n) )  例子: create table student( stuNo char(32) primary key,--主键约束 stuName varchar2(20) not null,--非空约束 cardId char(20) unique,--唯一约束 sex char(2) check(sex='男' or sex='女'),--检查约束 address varchar2(100) default '地址不详'--默认约束 ) create table mark( mid int primary key,--主键约束 stuNo char(32) not null, courseName varchar2(20) not null,--非空约束 score number(3) not null check(score>=0 and scoreselect * from em--查询所有数据 SQL>select ename,job from em--查询指定的字段数据 SQL> select * from emp where sal>1000--加条件 2. 聚合函数 聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。不能在 WHERE 子句使用组函数。  AVG(expression): 返回集合各值的平均值 --查询所有人都的平均工资 select avg(sal) from emp  COUNT(expression): 以 Int32 形式返回集合的项数 --查询工资低于2000的人数 select count(*) from emp where sal2000 5. 连接查询 连接查询是关系数据库最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。  内连接 内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表删除与其他被连接表没有匹配行的所有行,所以内连接可能会丢失信息。  等值连接: select * from emp inner join dept on emp.deptno=dept.deptno select * from emp,dept where emp.deptno=dept.deptno  不等值连接: select * from emp inner join dept on emp.deptno!=dept.deptno  外连接 外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。  左外连接(left join): 是以左表的记录为基础的 select * from emp left join dept on emp.deptno=dept.deptno  右外连接(right join): 和left join的结果刚好相反,是以右表(BL)为基础的 select * from emp right join dept on emp.deptno=dept.deptno  全外连接(full join): 左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充 select * from emp full join dept on emp.deptno=dept.deptno  交叉连接 交叉连接即笛卡儿乘积,是指两个关系所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。 select * from cross full join dept 6. 常用查询  like模糊查询 --查询姓名首字母为S开始的员工信息 select * from emp where ename like 'S%' --查询姓名第三个字母为A的员工信息 select * from emp where ename like '__A%'  is null/is not null 查询 --查询没有奖金的雇员信息 select * from emp where comm is null --查询有奖金的雇员信息 select * from emp where comm is not null  in查询 --查询雇员编号为7566、7499、7844的雇员信息 select * from emp where empno in(7566,7499,7844)  exists/not exists查询(效率高于in) --查询有上级领导的雇员信息 select * from emp e where exists (select * from emp where empno=e.mgr) --查询没有上级领导的雇员信息 select * from emp e where not exists (select * from emp where empno=e.mgr)  all查询 --查询比部门编号为20的所有雇员工资都高的雇员信息 select * from emp where sal > all(select sal from emp where deptno=20)  union合并不重复 select * from emp where comm is not null union select * from emp where sal>3000  union all合并重复 select * from emp where comm is not null union all select * from emp where sal>3000 7. 子查询 当一个查询是另一个查询的条件时,称之为子查询。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询。  在CREATE TABLE语句使用子查询 --创建表并拷贝数据 create table temp(id,name,sal) as select empno,ename,sal from emp  在INSERT语句使用子查询 --当前表拷贝 insert into temp(id,name,sal) select * from temp --从其他表指定字段拷贝 insert into temp(id,name,sal) select empno,ename,sal from emp  在DELETE语句使用子查询 --删除SALES部门的所有雇员 delete from emp where deptno in (select deptno from dept where dname='SALES')  在UPDATE语句使用子查询 --修改scott用户的工资和smith的工资一致 update emp set sal=(select sal from emp where ename='SMITH') where ename='SCOTT' --修改black用户的工作,工资,奖金和scott一致 update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SCOTT') where ename='BLAKE'  在SELECT语句使用子查询 --查询和ALLEN同一部门的员工信息 select * from emp where deptno in (select deptno from emp where ename='ALLEN') --查询工资大于部门平均工资的雇员信息 select * from emp e (select avg(sal) asal,deptno from emp group by deptno) t where e.deptno=t.deptno and e.sal>t.asal 六、 TCL语言 1. COMMIT commit --提交事务 2. ROLLBACK rollback to p1 --回滚到指定的保存点 rollback --回滚所有的保存点 3. SAVEPOINT savepoint p1 --设置保存点 4. 只读事务 只读事务是指只允许执行查询的操作,而不允许执行任何其它dml操作的事务,它的作用是确保用户只能取得某时间点的数据。 set transaction read only 七、 oracle函数 1. 字符串函数 字符串函数是oracle比较常用的,下面我们就介绍些常用的字符串函数:  concat:字符串连接函数,也可以使用’||’ --将职位和雇员名称显示在一列 select concat(ename,concat('(',concat(job,')'))) from emp select ename || '(' || job || ')' from emp  length:返回字符串的长度 --查询雇员名字长度为5个字符的信息 select * from emp where length(ename)=5  lower:将字符串转换成小写 --以小写方式显示雇员名 select lower(ename) from emp  upper:将字符串转换成大写 --以大写方式显示雇员名 select upper (ename) from emp  substr:截取字符串 --只显示雇员名的前3个字母 select substr(ename,0,3) from emp  replace:替换字符串 --将雇员的金额显示为*号 select ename,replace(sal,sal,’*’) from emp  instr:查找字符串 --查找雇员名含有’LA’字符的信息 select * from emp where instr(ename,’LA’)>0 2. 日期函数  sysdate:返回当前session所在时区的默认时间 --获取当前系统时间 select sysdate from dual  add_months:返回指定日期月份+n之后的值,n可以为任何整数 --查询当前系统月份+2的时间 select add_months(sysdate,2) from dual --查询当前系统月份-2的时间 select add_months(sysdate,-2) from dual  last_day:返回指定时间所在月的最后一天 --获取当前系统月份的最后一天 select last_day(sysdate) from dual  months_between:返回月份差,结果可正可负,当然也有可能为0 --获取入职日期距离当前时间多少天 select months_between(sysdate, hiredate) from emp  trunc:为指定元素而截去的日期值 --获取当前系统年,其他默认 select trunc(sysdate,'yy') from dual --查询81年2月份入职的雇员 select * from emp where trunc(hiredate,'mm')=trunc(to_date('1981-02','yyyy-mm'),'mm') 3. 转换函数  to_char:将任意类型转换成字符串 --日期转换 select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual --数字转换 select to_char(-100.789999999999,'L99G999D999') from dual  数字格式控制符 符号 描述 9 代表一位数字,如果当前位有数字,显示数字,否则不显示(小数部分仍然会强制显示) 0 强制显示该位,如果当前位有数字,显示数字,否则显示0 $ 增加美元符号显示 L 增加本地货币符号显示 . 小数点符号显示 , 千分位符号显示  to_date:将字符串转换成日期对象 --字符转换成日期 select to_date('2011-11-11 11:11:11', 'yyyy-mm-dd hh24:mi:ss') from dual  to_number:将字符转换成数字对象 --字符转换成数字对象 select to_number('209.976')*5 from dual select to_number('209.976', '9G999D999')*5 from dual 4. 数学函数  abs:返回数字的绝对值 select abs(-1999) from dual  ceil:返回大于或等于n的最小的整数值 select ceil(2.48) from dual  floor:返回小于等于n的最大整数值 select floor(2.48) from dual  round:四舍五入 select round(2.48) from dual select round(2.485,2) from dual  bin_to_num:二进制转换成十进制 select bin_to_num(1,0,0,1,0) from dual   第四章 锁 一、 概述 锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:  DML锁(data locks,数据锁),用于保护数据的完整性  DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义  内部锁和闩(internal locks and latches),保护数据库的内部结构 二、 DML锁 DML锁的目的在于保证并发情况下的数据完整性,在Oracle数据库,DML锁主要包括TM锁和TX锁,其TM锁称为表级锁,TX锁称为事务锁或行级锁。 1. 行级锁 当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表操作行的排它锁 --不允许其他用户对雇员表的部门编号为20的数据进行修改 select * from emp where deptno=20 for update --不允许其他用户对雇员表的所有数据进行修改 select * from emp for update --如果已经被锁定,就不用等待 select * from emp for update nowait --如果已经被锁定,更新的时候等待5秒 select * from emp for update wait 5 2. 锁模式  0(none)  1(null)  2(rs):行共享  3(rx):行排他  4(s):共享  5(srx):共享行排他  6(x):排他 数字越大,锁级别越高 3. 表级锁 当事务获得行锁后,此事务也将自动获得该行的表锁(行排他),以防止其它事务进行DDL语句影响记录行的更新  行共享锁(RS锁):允许用户进行任何操作,禁止排他锁 lock table emp in row share mode  行排他锁(RX锁):允许用户进行任何操作,禁止共享锁 lock table emp in row exclusive mode  共享锁(R锁):其他用户只能看,不能修改 lock table emp in share mode  排他锁(X锁):其他用户只能看,不能修改,不能加其他锁 lock table emp in exclusive mode  共享行排他(SRX锁):比行排他和共享锁级别高,不能添加共享锁 lock table emp in share row exclusive mode 4. 锁兼容性 S X RS RX SRX N/A S Y N Y N N Y X N N N N N Y RS Y N Y Y Y Y RX N N Y Y N Y SRX N N Y N N Y N/Y Y Y Y Y Y Y 5. 死锁 当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。 1) 用户A修改A表,事务不提交 2) 用户B修改B表,事务不提交 3) 用户A修改B表,阻塞 4) 用户B修改A表,阻塞 Oracle系统能自动发现死锁,并会自动选择工作量最少的事务进行撤销和释放所有锁 6. 悲观锁和乐观锁 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁  悲观锁:就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。  乐观锁:就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。 三、 DDL锁 1. 排它DDL锁 创建、修改、删除一个数据库对象的DDL语句获得操作对象的排它锁。 2. 共享DDL锁 需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁 3. 分析锁 分析锁是一种独特的DDL锁类型,ORACLE使用它追踪共享池对象及它所引用数据库对象之间的依赖关系 四、 内部锁和闩 这是ORACLE的一种特殊锁,用于顺序访问内部系统结构。当事务需向缓冲区写入信息时,为了使用此块内存区域,ORACLE首先必须取得这块内存区域的闩锁,才能向此块内存写入信息。   第五章 数据库对象 一、 概述 ORACLE数据库主要有如下数据库对象:  tablespace and datafile(表空间和数据文件)  table(表)  constraints(约束)  index(索引)  view(试图)  sequence(序列)  synonyms(同义词)  DB-link(数据库链路) 二、 表空间和数据文件 表空间是数据库的逻辑组成部分,从物理上讲,数据库数据是存放在数据文件,从逻辑上讲数据库则是存放在表空间,表空间是由一个或多个数据文件组成。  表空间  某一时刻只能属于一个数据库  由一个或多个数据文件组成  可进一步划分为逻辑存储  表空间主要分为两种  System表空间  随数据库创建  包含数据字典  包含system还原段  非system表空间  用于分开存储段  易于空间管理  控制分配给用户的空间量  数据文件  只能属于一个表空间和一个数据库  是方案对象数据的资料档案库  创建表空间  语法 CREATE TABLESPACE tablespacename [DATAFILE clause] [MINIMUM EXTENT integer[k|m]] [BLOCKSIZE integer[k]] [LOGGING|NOLOGGING] [DEFAULT storage_clause] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [extent_management_clause] [segment_management_clause]  例子 --创建本地管理表空间 create tablespace firstSpance datafile 'e:/firstspance.dbf'size 100M extent management local uniform size 256k --修改文件大小 alter database datafile 'e:/firstspance.dbf' resize 110m --删除表空间 drop tablespace firstSpance INCLUDING CONTENTS and datafiles --使用数据库表空间 --创建用户指定表空间 create user guest identified by 123456 default tablespace firstSpance --表指定表空间 create table account( accountid number(4), accountName varchar2(20) )tablespace firstSpance --表空间脱机 alter tablespace firstSpance offline --表空间联机 alter tablespace firstSpance online --表空间只读,不能进行dml操作 alter tablespace firstSpance read only 三、 同义词 Oracle数据库提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。  公有同义词  语法 CREATE [OR REPLACE] PUBLIC SYNONYM sys_name FOR [SCHEMA.] object_name  创建(需拥有CREATE PUBLIC SYNONYM权限才可以创建) --创建同义词 create public synonym syn_emp for scott.emp --访问同义词 select * from syn_emp  删除 drop public synonym syn_emp  私有同义词  语法 CREATE [OR REPLACE] SYNONYM sys_name FOR [SCHEMA.] object_name  创建 --创建同义词 create synonym syn_pri_emp for emp --访问同义词 select * from syn_ pri _emp  删除 drop public synonym syn_emp 四、 表分区 当表的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。  优点:  改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。  增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;  维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;  均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。  使用场合  表的大小超过2GB  表包含历史数据,新的数据被增加都新的分区  常见分区方法:  范围 --- 8  Hash --- 8i  列表 --- 9i  组合 --- 8i 1. 范围分区 范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。  特点:  最早、最经典的分区算法  Range分区通过对分区字段值的范围进行分区  Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。  数据管理能力强(数据迁移、数据备份、数据交换)  范围分区的数据可能不均匀  范围分区与记录值相关,实施难度和可维护性相对较差  例子  按值划分 --创建 CREATE TABLE book ( bookid NUMBER(5), bookname VARCHAR2(30), price NUMBER(8) )PARTITION BY RANGE (price)--分区字段 ( PARTITION P1 VALUES LESS THAN (4) TABLESPACE system, PARTITION P2 VALUES LESS THAN (8) TABLESPACE system, PARTITION P3 VALUES LESS THAN (maxvalue) TABLESPACE system, ) --MAXVALUE代表了一个不确定的值,这个值高于其它分区的任何分区键的值  按日期划分 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date )PARTITION BY RANGE (birthday)--分区字段 ( PARTITION P1990 VALUES LESS THAN (to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system, PARTITION P1991 VALUES LESS THAN (to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ); 2. Hash分区(散列分区) 这类分区是在列值上使用散列算法,以确定将行放入哪个分区。当列的值没有合适的条件时,建议使用散列分区。散列分区为通过指定分区编号来均匀分布数据的一种分区类型。如果你要使用hash分区,只需指定分区的数量即可。建议分区的数量采用2的n次方,这样可以使得各个分区间数据分布更加均匀。  特点  基于分区字段的HASH值,自动将记录插入到指定分区。  分区数一般是2的幂  易于实施  总体性能最佳  适合于静态数据  HASH分区适合于数据的均匀存储  数据管理能力弱  HASH分区对数据值无法控制  例子 CREATE TABLE classes ( clsno NUMBER(5), clsname VARCHAR2(30) )PARTITION BY HASH(clsno)--分区字段 ( PARTITION ph1 tablespace system, PARTITION ph2 tablespace system ) 3. List分区(列表分区) 该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。  特点  List分区通过对分区字段的离散值进行分区  List分区是不排序的,而且分区之间也没有关联  List分区适合于对数据离散值进行控制  List分区只支持单个字段  List分区具有与range分区相似的优缺点  数据管理能力强  各分区的数据可能不均匀  例子 CREATE TABLE users ( userid NUMBER(5), username VARCHAR2(30), province char(5) )PARTITION BY list(province)--分区字段 ( PARTITION pl1 values('广东') tablespace system, PARTITION pl2 values('江西') tablespace system, PARTITION pl3 values('广西') tablespace system, PARTITION pl4 values('湖南') tablespace system ); 4. 组合分区 常见的组合分区主要有范围散列分区和范围列表分区  特点  既适合于历史数据,又适合于数据均匀分布  与范围分区一样提供高可用性和管理性  实现粒度更细的操作  组合范围列表分区 这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之的分区被称为子分区。  例子 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date, province char(5) )PARTITION BY RANGE (birthday) --主分区字段 subpartition BY LIST(province)--子分区字符 ( PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION pl1 values('广东') tablespace system, SUBPARTITION pl2 values('江西') tablespace system, SUBPARTITION pl3 values('广西') tablespace system, SUBPARTITION pl4 values('湖南') tablespace system ), PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION p21 values('广东') tablespace system, SUBPARTITION p22 values('江西') tablespace system, SUBPARTITION p23 values('广西') tablespace system, SUBPARTITION p24 values('湖南') tablespace system ) );  组合范围散列分区 这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。  例子 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), birthday date )PARTITION BY RANGE(birthday) --主分区字段 SUBPARTITION BY HASH(stuno)--子分区字符 ( PARTITION P1990 VALUES LESS THAN(to_date('1990-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION ph12 tablespace system, SUBPARTITION ph13 tablespace system ), PARTITION P1991 VALUES LESS THAN(to_date('1991-01-01','yyyy-mm-dd')) TABLESPACE system ( SUBPARTITION ph21 tablespace system, SUBPARTITION ph22 tablespace system ) ); 5. 表分区常用操作  添加分区 --添加主分区 alter table book add partition p4 values less than(maxvalue) tablespace system --添加子分区 ALTER TABLE student MODIFY PARTITION P1990 ADD SUBPARTITION pl5 values('福建')  删除分区 --删除主分区 ALTER TABLE student DROP PARTITION P1990 --删除子分区 ALTER TABLE student DROP SUBPARTITION p15  重命名表分区 ALTER TABLE student RENAME PARTITION P21 TO P2  显示数据库所有分区表的信息 select * from DBA_PART_TABLES  显示当前用户所有分区表的信息 select * from USER_PART_TABLES  查询指定表分区数据 select * from users partition(pl2)--主分区 select * from users subpartition(phl2)--子分区  删除分区表一个分区的数据 alter table book truncate partition p11   第六章 视图 一、 概述 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。  为什么使用视图  控制数据访问  简化查询  数据独立性  避免重复访问相同的数据  使用修改基表的最大好处是安全性,即保证那些能被任意人修改的列的安全性  Oracle视图分类  关系视图  内嵌视图  对象视图  物化视图 二、 关系视图 关系视图是作为数据库对象存在的,创建之后也可以通过工具或数据字典来查看视图的相关信息。关系视图是4种视图最简单,同时也最常用的视图。  语法 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 1. OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图 2. FORCE:不管基表是否存在ORACLE都会自动创建该视图 3. NOFORCE:只有基表都存在ORACLE才会创建该视图 4. Alias:为视图产生的列定义的别名 5. subquery:一条完整的SELECT语句,可以在该语句定义别名 6. WITH CHECK OPTION:插入或修改的数据行必须满足视图定义的约束 7. WITH READ ONLY:该视图上不能进行任何DML操作  例子 create or replace view view_Account_dept as select * from emp where deptno=10 --只读视图 create or replace view view_Account_dept as select * from emp where deptno=10 order by sal with read only --约束视图 create or replace view view_Account_dept as select * from emp where deptno=10 with check option  查询视图 select * from emp where view_Account_dept  修改视图 通过OR REPLACE 重新创建同名视图即可  删除视图 DROP VIEW VIEW_NAME语句删除视图  视图上的DML 操作原则 1. 简单视图可以执行DML操作; 2. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字时不能执行delete语句 3. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式时不能执行update语句 4. 在视图包含GROUP函数,GROUP BY子句,DISTINCT关键字,ROWNUM为例,列定义为表达式,表非空的列子视图定义未包括时不能执行insert语句 5. 可以使用WITH READ ONLY来屏蔽DML操作 三、 内嵌视图 内嵌视图是在from语句的可以把表改成一个子查询。内嵌视图不属于任何用户,也不是对象,内嵌视图是子查询的一种。  例子 Select * from (select * from emp where deptno=10) where sal>2000 四、 对象视图 对象类型在数据库编程有许多好处,但有时,应用程序已经开发完成。为了迎合对象类型而重建数据表是不现实的。对象视图正是解决这一问题的优秀策略。 五、 物化视图 常用于数据库的容灾,不是传统意义上虚拟视图,是实体化视图,和表一样可以存储数据、查询数据。主备数据库数据同步通过物化视图实现,主备数据库通过data link连接,在主备数据库物化视图进行数据复制。当主数据库垮掉时,备数据库接管,实现容灾。  语法 create materialized view materialized_view_name build [immediate|deferred] --1.创建方式 refresh [complete|fast|force|never] --2.物化视图刷新方式 on [commit|demand] --3.刷新触发方式 start with (start_date) --4.开始时间 next (interval_date) --5.间隔时间 with [primary key|rowid] --默认 primary key ENABLE QUERY REWRITE --7.是否启用查询重写 as --8.关键字 select statement; --9.基表选取数据的select语句 1. 创建方式  immediate(默认):立即  deferred:延迟,至第一次refresh时,才生效 2. 物化视图刷新方式  force(默认):如果可以快速刷新,就执行快速刷新,否则,执行完全刷新  complete:完全刷新,即刷新时更新全部数据,包括视图已经生成的原有数据  fast:快速刷新,只刷新增量部分。前提是,需要在基表上创建物化视图日志。该日志记录基表数据变化情况,所以才能实现增量刷新  never:从不刷新 3. 刷新触发方式  on commit:基表有commit动作时,刷新视图,不能跨库执行(因为不知道别的库的提交动作)  on demand,在需要时刷新,根据后面设定的起始时间和时间间隔进行刷新,或者手动调用dbms_mview包的过程刷新时再执行刷新。 4. 开始时间和间隔时间  4和5即开始刷新时间和下次刷新的时间间隔。如:start with sysdate next sysdate+1/1440表示马上开始,刷新间隔为1分钟。(与 on commit选项冲突) 5. 创建模式  primary key(默认):基于基表的主键创建  rowed:不能对基表执行分组函数、多表连结等需要把多个rowid合成一行的操作 6. 是否启用查询重写  如果设置了初始化参数query_rewrite_enabled=true则默认就会启用查询重写。但是,数据库默认该参数为false。并且,不是什么时候都应该启用查询重写。所以,该参数应该设置为false,而在创建特定物化视图时,根据需要开启该功能。 7. 注意  如果选择使用了上面第4,5选项,则不支持查询重写功能(原因很简单,所谓重写,就是将对基表的查询定位到了物化视图上,而4、5选项会造成物化视图上部分数据延迟,所以,不能重写)。  例子 --创建增量刷新的物化视图时应先创建存储的日志空间 --在scott.emp表创建物化视图日志 create materialized view log on emp tablespace users with rowid; --开始创建物化视图 --方式一 create materialized view mv_emp tablespace users --指定表空间 build immediate --创建视图时即生成数据 refresh fast --基于增量刷新 on commit --数据DML操作提交就刷新 with rowid --基于ROWID刷新 as select * from emp --方式二 create materialized view mv_emp2 tablespace users --指定表空间 refresh fast --基于增量刷新 start with sysdate --创建视图时即生成数据 next sysdate+1/1440 /*每隔一分钟刷新一次*/ with rowid --基于ROWID刷新 as select * from emp --删除物化视图日志 drop materialized view mv_emp   第七章 索引 一、 概述 索引是建立在表上的可选对象,设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担,进行影响系统的性能。 索引一旦建立后,当在表上进行DML操作时,Oracle会自动维护索引,并决定何时使用索引。 索引的使用对用户是透明的,用户不需要在执行SQL语句时指定使用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。  索引的原理 当在一个没有创建索引的表查询符合某个条件的记录时,DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。全表扫描方式需要遍历整个表,效率很低。  索引的类型 Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。  单列索引和复合索引  B树索引  位图索引  函数索引  创建索引 CREATE [UNIQUE] | [BITMAP] INDEX index_name ON table_name([column1 [ASC|DESC],column2 [ASC|DESC],…] | [express]) [TABLESPACE tablespace_name] [PCTFREE n1] [STORAGE (INITIAL n2)] [NOLOGGING] [NOLINE] [NOSORT]  UNIQUE:表示唯一索引,默认情况下,不使用该选项。  BITMAP:表示创建位图索引,默认情况下,不使用该选项。  PCTFREE:指定索引在数据块的空闲空间。对于经常插入数据的表,应该为表索引指定一个较大的空闲空间。  NOLOGGING:表示在创建索引的过程不产生任何重做日志信息。默认情况下,不使用该选项。  ONLINE:表示在创建或重建索引时,允许对表进行DML操作。默认情况下,不使用该选项。  NOSORT:默认情况下,不使用该选项。则Oracle在创建索引时对表记录进行排序。如果表数据已经是按该索引顺序排列的,则可以使用该选项。 二、 单列索引和复合索引 一个索引可以由一个或多个列组成。基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引。 三、 B树索引 B树索引是Oracle数据库最常用的一种索引。当使用CREATE INDEX语句创建索引时,默认创建的索引就是B树索引。B树索引就是一棵二叉树,它由根、分支节点和叶子节点三部分构成。叶子节点包含索引列和指向表每个匹配行的ROWID值。叶子节点是一个双向链表,因此可以对其进行任何方面的范围扫描。 B树索引所有叶子节点都具有相同的深度,所以不管查询条件如何,查询速度基本相同。另外,B树索引能够适应各种查询条件,包括精确查询、模糊查询和比较查询。  例子 --创建B树索引,属于单列索引 create index idx_emp_job on emp(job) --创建B树索引,属于复合索引 create index idx_emp_nameorsal on emp(ename,sal) --创建唯一的B树索引,属于单列索引 create unique index idx_emp_ename on emp(ename) --删除索引 drop index idx_emp_job drop index idx_emp_nameorsal drop index idx_emp_ename --如果表已存在大量的数据,需要规划索引段 create index idx_emp_nameorsal on emp(ename,sal) pctfree 30 tablespace system 四、 位图索引 在B树索引,保存的是经排序过的索引列及其对应的ROWID值。但是对于一些基数很小的列来说,这样做并不能显著提高查询的速度。所谓基数,是指某个列可能拥有的不重复值的个数。比如性别列的基数为2(只有男和女)。 因此,对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引,应该建立位图索引,而不是默认的B树索引。  例子 --创建位图索引,单列索引 create bitmap index idx_bm_job on emp(job) --创建位图索引,复合索引 create bitmap index idx_bm_jobordeptno on emp(job,deptno) --删除位图索引 drop index idx_bm_job drop index idx_bm_jobordeptno 五、 函数索引 函数索引既可以使用B树索引,也可以使用位图索引,可以根据函数或表达式的结果的基数大小来进行选择,当函数或表达式的结果不确定时采用B树索引,当函数或表达式的结果是固定的几个值时采用位图索引。  例子 --合并索引 alter index idx_emp_ename COALESCE 六、 并和重建索引 表在使用一段时间后,由于用户不断对其进行更新操作,而每次对表的更新必然伴随着索引的改变,因此,在索引会产生大量的碎片,从而降低索引的使用效率。有两种方法可以清理碎片:合并索引和重建索引。  合并索引就是将B树叶子节点的存储碎片合并在一起,从而提高存取效率,但这种合并并不会改变索引的物理组织结构。 --创建B树类型的函数索引 create index idx_fun_emp_hiredate on emp(to_char(hiredate,'yyyy-mm-dd')) --创建位图类型的函数索引 create index idx_fun_emp_job on emp(upper(job))  重建索引相当于删除原来的索引,然后再创建一个新的索引,因此,CREAT INDEX语句的选项同样适用于重建索引。如果在索引列上频繁进行UPDATE和DELETE操作,为了提高空间的利用率,应该定期重建索引。 七、 管理索引的原则 使用索引的目的是为了提高系统的效率,但同时它也会增加系统的负担,进行影响系统的性能,因为系统必须在进行DML操作后维护索引数据。 在新的SQL标准并不推荐使用索引,而是建议在创建表的时候用主键替代。因此,为了防止使用索引后反而降低系统的性能,应该遵循一些基本的原则: 1. 小表不需要建立索引。 2. 对于大表而言,如果经常查询的记录数目少于表总记录数目的15%时,可以创建索引。这个比例并不绝对,它与全表扫描速度成反比。 3. 对于大部分列值不重复的列可建立索引。 4. 对于基数大的列,适合建立B树索引,而对于基数小的列适合建立位图索引。 5. 对于列有许多空值,但经常查询所有的非空值记录的列,应该建立索引。 6. LONG和LONG RAW列不能创建索引。 7. 经常进行连接查询的列上应该创建索引。 8. 在使用CREATE INDEX语句创建查询时,将最常查询的列放在其他列前面。 9. 维护索引需要开销,特别时对表进行插入和删除操作时,因此要限制表索引的数量。对于主要用于读的表,则索引多就有好处,但是,一个表如果经常被更改,则索引应少点。 10. 在表插入数据后创建索引。如果在装载数据之前创建了索引,那么当插入每行时,Oracle都必须更改每个索引。 八、 ROWID和ROWNUM 1. ROWID rowid是一个伪列,是用来确保表行的唯一性,它并不能指示出行的物理位置,但可以用来定位行。rowid是存储在索引的一组既定的值(当行确定后)。我们可以像表普通的列一样将它选出来, 利用rowid是访问表一行的最快方式。rowid的是基于64位编码的18个字符显示(数据对象编号(6)+文件编号(3) +块编号(6)+行编号(3)=18位) select rowid from emp  ROWID的使用 --快速删除重复的记录 delete from temp t where rowid not in( select max(rowid) from temp where t.id=id and t.name=name and t.sal = sal ) 2. ROWNUM ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。 select rownum,emp.* from emp  ROWID的使用 --取前3条记录 select * from emp where rownum<=3--方式一 select * from emp where rownum!=4--方式二 --分页 select * from emp where empno not in( select empno from emp where rownum<5--方式一 ) and rownum <4   第八章 PL/SQL编程 一、 介绍 PL/SQL是oracle在标准sql语言上的扩展,PL/SQL不仅允许嵌入sql语言,还可以定义变量和常量,允许使用例外处理各种错误,这样使它的功能变得更加强大。 PL/SQL也是一种语言,叫做过程化sql语言(procedural language/sql),通过此语言可以实现复杂功能或者复杂的计算。  优点 1. 提高应用程序的运行性能 2. 模块化的设计思想 3. 减少网络传输量 4. 提高安全性  缺点 1. 可移植性差 2. 违反MVC设计模式 3. 无法进行面向对象编程 4. 无法做成通用的业务逻辑框架 5. 代码可读性差,相当难维护  分类 二、 PL/SQL基础 1. 编写规范 1) 注释 --单行注释 /*块注释*/ 2) 标识符的命名规范  定义变量:建议用v_作为前缀v_price  定义常量:建议用c_作为前缀c_pi  定义游标:建议用_cursor作为后缀emp_cursor  定义例外:建议用e_作为前缀e_error 2. 块结构 PL/SQL块由三个部分组成:定义部分、执行部分、例外处理部分 Declare /* 定义部分(可选):定义常量、变量、游标、例外,复杂数据类型 */ begin /* 执行部分(必须):要执行的PL/SQL语句和SQL语句 */ exception /*例外部分(可选):处理运行各种错误*/ end 案例一 :只定义执行部分 begin /* dbms_output是oracle提供的包(类似java开发包) 该包包含一些过程,put_line就是其一个过程 */ dbms_output.put_line('HELLO WORLD'); --控制台输出 end; 案例二 :定义声明部分和执行部分 declare --声明变量 v_name varchar2(20); v_sal number(7,2); begin --执行查询 select ename,sal into v_name,v_sal from emp where rownum=1; --控制台输出 dbms_output.put_line('用户名:' || v_name); dbms_output.put_line('工资:' || v_sal); end; 案例三 :定义声明部分、执行部分和例外部分 declare --声明变量 v_name varchar2(20); v_sal number(7,2); begin --执行查询,条件的&表示从控制接受数据 select ename,sal into v_name,v_sal from emp where empno=&no; --控制台输出 dbms_output.put_line('用户名:' || v_name); dbms_output.put_line('工资:' || v_sal); exception --例外处理(no_data_found) when no_data_found then dbms_output.put_line('执行查询没有结果'); end; 3. 预定义例外 1) case_not_found预定义例外 在开发pl/sql块编写case语句时,如果在when子句没有包含必须的条件分支,就会触发case_not_found例外。 2) cursor_already_open预定义例外 当重新打开已经打开的游标时,会隐含的触发cursor_already_open例外。 3) dup_val_on_index预定义例外 在唯一索引所对应的列上插入重复的值时,会隐含的触发例外 4) invalid_cursorn预定义例外 当试图在不合法的游标上执行操作时,会触发该例外 5) invalid_number预定义例外 当输入的数据有误时,会触发该例外 6) no_data_found预定义例外 当执行select into没有返回行,就会触发该例外 7) too_many_rows预定义例外 当执行select into语句时,如果返回超过了一行,则会触发该例外 8) zero_divide预定义例外 当执行2/0语句时,则会触发该例外 9) value_error预定义例外 当在执行赋值操作时,如果变量的长度不足以容纳实际数据,则会触发该例外value_error 10) others 4. 变量类型分类 在编写PL/SQL时,可以定义变量和常量,常用的类型主要有:  标量类型(scalar)  复合类型(composite)  参照类型(reference)  lob(large object) 5. 标量类型:常用类型 declare --定义一个变长字符串 v_name varchar2(20); --定义小数,并赋值 v_sal number(7,2) :=9.8; --定义整数 v_num number(4); --定义日期 v_birthday date; --定义布尔类型,不能为空,初始值为false v_flg boolean not null default false; --使用%type类型 v_job emp.job%type; begin v_flg := true; v_birthday :=sysdate; dbms_output.put_line('当前时间:' || v_birthday); end; 6. 复合类型:可以存放多个值。主要包括PL/SQL记录、PL/SQL表、嵌入表和varray这四种类型 记录类型:类似于c的结构体 declare --定义记录类型 type emp_record_type is record( empno emp.empno%type, ename emp.ename%type, sal emp.sal%type ); --定义变量引用记录类型 v_record emp_record_type; begin --使用记录类型 select empno,ename,sal into v_record from emp where rownum=1; --控制台输出 dbms_output.put_line('雇员编号:' || v_record.empno); dbms_output.put_line('雇员姓名:' || v_record.ename); dbms_output.put_line('雇员工资:' || v_record.sal); end; 表类型:类似于java语言的数组 declare --声明表类型 type emp_table_type is table of varchar2(20) index by PLS_INTEGER;--表示表按整数来排序 v_enames emp_table_type;--定义变量引用表类型 begin select ename into v_enames(0) from emp where rownum=1; select ename into v_enames(1) from emp where empno=7499; select ename into v_enames(2) from emp where empno=7698; --输出 dbms_output.put_line('下标0:' || v_enames(0)); dbms_output.put_line('下标1:' || v_enames(1)); dbms_output.put_line('下标2:' || v_enames(2)); end; varray类型:可变长数组 declare --定义varray类型 type varray_list is varray(20) of number(4); --定义变量引用varray类型 v_list varray_list:=varray_list(7369,7499,7566); begin --for i in v_list.first..v_list.last for i in 1..v_list.count loop dbms_output.put_line(v_list(i)); end loop; end; PL/SQL集合方法 1) exists():用于确定特定集合元素是否存在 2) count:用于返回集合变量的元素总个数 3) limit:用于返回varray变量所允许的最大元素个数 4) first:用于返回集合变量的一个元素的下标 5) last:用于返回集合变量最后一个元素的下标 6) prior():返回当前元素前一个元素的下标 7) next():返回当前元素后一个元素的下标 8) extend:为集合变量添加元素,此方法适合用于嵌套表和varray 9) trim:从集合变量尾部删除元素,此方法适用于嵌套表和varray 10) delete:从集合变量删除特定的元素,此方法适用于嵌套表和index-by表 7. 参照类型:类似c语言的指针,oracle的游标 三、 PL/SQL控制语句 1. 条件分支语句 1) if—then declare --声明变量 v_empno emp.empno%type; v_sal emp.sal%type; begin --根据雇员编号查询工资 select empno,sal into v_empno,v_sal from emp where empno=&no; --如果工资小于2000就加100 if v_sal<2000 then --工资加100 update emp set sal = sal+100 where empno=v_empno; --提交 commit; end if; end; 2) if—then—else declare --声明变量 v_loginname varchar2(10); v_password varchar2(10); begin --从控制台接收数据 v_loginname := '&ln'; v_password := '&pw'; if v_loginname = 'admin' and v_password = '123456' then dbms_output.put_line('用户登录成功!'); else dbms_output.put_line('用户登录失败!'); end if; end; 3) if—then—elsif—else declare --声明变量 v_empno emp.empno%type; v_job emp.job%type; begin --根据雇员编号查询职位 select empno,job into v_empno,v_job from emp where empno=&no; /*如果雇员所属职位是manager工资加1000 职位是salesman工资加500 其他职位加200 */ if v_job = 'MANAGER' then --MANAGER职位工资加1000 update emp set sal = sal+1000 where empno=v_empno; elsif v_job = 'SALESMAN' then --SALESMAN职位工资加500 update emp set sal = sal+500 where empno=v_empno; else --其他职位工资加200 update emp set sal = sal+200 where empno=v_empno; end if; --提交 commit; end; 4) case declare --声明变量 v_mark number(4); v_outstr varchar2(40); begin --从控制台接收成绩 v_mark := &m; case when v_mark=90 then v_outstr := '优秀'; when v_mark=80 then v_outstr := '良好'; when v_mark=70 then v_outstr := '等'; when v_mark=60 then v_outstr := '及格'; when v_mark=0 then v_outstr := '不及格'; else v_outstr := '成绩输入有误'; end case; --控制台输出 dbms_output.put_line(v_outstr); end; 2. 循环语句 1) loop LOOP 要执行的语句; EXIT WHEN /*条件满足,退出循环语句*/ END LOOP; 其:EXIT WHEN 子句是必须的,否则循环将无法停止。 declare v_num number(4):=1; begin --从控制台接收数据并插入到account表 loop insert into account values(v_num,'&name'); exit when v_num =10; v_num :=v_num+1; end loop; end; 2) while WHILE LOOP要执行的语句;END LOOP; 其:  循环语句执行的顺序是先判断的真假,如果为真则循环执行,否则退出循环  在WHILE循环语

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧