| « | 三月 2010 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
在分布环境中的ORA-2049错误
问题描述:
可能在分布环境中发生这种错误,或者在多个主服务器之间的复制,快照,分布式数据库,甚至远程更新数据,都可能发生这个错误:
02049, 00000, "timeout: distributed transaction waiting for lock"
// *Cause: exceeded init.ora distributed_lock_timeout seconds waiting for lock
问题分析:
这个错误是由于,复制事务中不能在远端节点获得适当的DML锁来执行远端的过程所导致的超时。
解决方案:
按照下面的步骤来排除和解决问题:
1) 远端的站点可能已经关闭。
尝试ping远端主机:
ping remotehostname <return>
检查sys.dba_jobs这个视图,看中断了的作业(BROKEN=Y),并手工重新执行这些作业。
sqlplus repadmin/repadmin
sql> exec dbms_job.run(1);
2) 增加参数文件init.ora中的DISTRIBUTED_LOCK_TIMEOUT参数值(缺省是60秒)
增加后,要重启所有复制的实例数据库
在分布式环境中,300秒是一个常用的值
由于网络环境的不同,这个值可能需要更高一些。
3) 检查远端数据库是否在表上有任何的EXCLUSIVE模式的锁。
查询V$LOCK视图。
如果客户在做ANALYZE TABLE TABLENAME COMPUTE STATISTICS,或者SELECT FOR UPDATE这种操作的时候,会一直在对象上保持一个EXCLUSIVE模式的锁,这将妨碍其他事务的完成。
检查V$LOCK中,对象是TM类型的锁
确认没有EXCLUSIVE模式的锁后,再重新执行事务
注意:
只是增加DISTRIBUTED_LOCK_TIMEOUT参数,并不总是有效。如果增加后无效,说明远端站点上有锁。
ORA-02049错误以及Oracle8i中的Distributed_lock_timeout参数
环境:
Oracle Server - Enterprise Edition 8.1
现象:
ORA-02049: timeout: distributed transaction waiting for lock
原因: 当分布式事务处理超时等待(缺省60秒)一个锁住的资源的时候,就会发生这个错误。
修正方法:
如果想增加分布式事务等待时间(缺省60秒),可以在参数文件INIT.ORA中设置这个隐含参数:_distributed_lock_timeout
参数的单位是以秒计算的。
注意: 尽管在Oracle8i的文档中,说明init.ora中的distributed_lock_timeout已经在8i以及后续版本中废弃,但是仍然可以通过隐含参数来进行调整。
NET命令基本用法
综合了WINDOWS 98,WINDOWS WORKSTATION和WINDOWS SERVER三个操作系统关于NET命令的解释,希望可以全面一些。
先说一些:
(1)NET命令是一个命令行命令。
(2)管理网络环境、服务、用户、登陆。。。。等本地信息
(3)WIN 98,WIN WORKSTATION和WIN NT都内置了NET命令。
(4)但WIN 98的NET命令和WORKSTATION、NT的NET命令不同。
(5)WORKSTATION和SERVER中的NET命令基本相同。
(6)获得HELP
(1)在NT下可以用图形的方式,开始-》帮助-》索引-》输入NET
(2)在COMMAND下可以用字符方式,NET /?或NET或NET HELP得到一些方法,相应的方法的帮助NET COMMAND /HELP或NET HELP COMMAND 或NET COMMAND /? 另对于错误NET HELPMSG MESSAGE#是4位数
(7)强制参数 所有net命令接受选项/yes和/no(可缩写为/y和/n)。[简单的说就是预先给系统的提问一个答案]
(8)有一些命令是马上产生作用并永久保存的,使用的时候要慎重
(9)对于NET命令的功能都可以找到相应的图形工具的解决方案
(10)命令的组成 命令 参数 选项 | 参数 选项 | 参数 选项 |。。。。。。
还要注意:
(1)在NT的NET命令中有一些参数是只有在SERVER环境中才能使用的
(2)在WIN98的NET命令中有一些参数不能在DOS-WIN中使用,只能在DOS环境中使用
下面对NET命令的不同参数的基本用法做一些初步的介绍:
(一)NET VIEW
作用:
显示域、计算机或由指定计算机共享资源的列表。如果在没有参数的情况下使用,则 net view 显示当前域中的计算机列表。
语法:
net view [ComputerName] [/domain[:DomainName]]
net view /network:nw [ComputerName]
参数:
键入不带参数的net view显示当前域的计算机列表。
Computername
指定包含要查看共享资源的计算机。
/domain[:domainname]
指定要查看其可用计算机的域。如果省略 DomainName,/domain 将显示网络上的所有域。
/network:nw
显示 NetWare 网络上所有可用的服务器。如果指定计算机名,/network:nw 将通过 NetWare 网络显示该计算机上的可用资源。也可以指定添加到系统中的其他网络。
net help command
显示指定 net 命令的帮助。
范例:
使用 net view 命令显示计算机列表。输出内容与以下相似:
服务器名称 注释
-------------------------------------------------
Production Production file server
Print1 Printer room, first floor
Print2 Printer room, second floor
要查看由 Production 计算机共享的资源列表,请键入:
net view production
要查看 NetWare 服务器 Marketing 上的可用资源,请键入:
net view /network:nw marketing
要查看sales域或工作组中的计算机列表,请键入:
net view /domain:sales
要查看 NetWare 网络中的所有服务器,请键入:
net view /network:nw
(二)NET USER
作用:
添加或更改用户帐号或显示用户帐号信息。该命令也可以写为net users。
语法:
net user [UserName [Password | *] [options]] [/domain]
net user [UserName {Password | *} /add [options] [/domain]]
net user [UserName [/delete] [/domain]]
参数:
键入不带参数的net user查看计算机上的用户帐号列表。
UserName
指定要添加、删除、修改或查看的用户帐户名。用户帐户名最多可有 20 个字符。
Password
为用户帐户指派或更改密码。输入星号(*)产生一个密码提示在密码提示行处键入密码时不显示密码。
/domain
在计算机主域的主域控制器执行操作。
options
指定命令行选项。下表列出了可以使用的有效命令行选项。
/active:{no | yes}
启用或禁用用户帐户。如果用户帐户不活动,该用户就无法访问计算机中的资源。默认设置为 yes (即活动状态)。
/comment:"text"
提供关于用户账户的描述性说明。该注释最多可以有 48 个字符。给文本加上引号。
/countrycode:nnn
使用操作系统“国家(地区)”代码为用户帮助和错误消息实现指定的语言文件。数值 0 代表默认的“国家(地区)”代码。
/expires:{{mm/dd/yyyy | dd/mm/yyyy | mmm,dd ,yyyy} | never}
使用户帐户根据指定的 date 过期。过期日期可以是 [mm/dd/yyyy], [dd/mm/yyyy] 或 [mmm,dd ,yyyy] 格式。它取决于国家(地区)代码。注意,帐户在指定日期开始时到期。对于月份值,可以使用数字、全称或三个字母的缩写(即 Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec)。对于年份值,可以使用两位数或四位数。使用逗号和斜杠分隔日期的各部分。不要使用空格。如果省略了 yyyy,将假定为下一次出现的日期(根据计算机的日期和时间而定)。例如,如果输入的日期在 1994 年 1 月 10 日到 1995 年 1 月 8 日之间,则下列日期项相等:jan,9,1/9/95,january,9,1995,1/9
/fullname:"name"
指定用户的全名而不是用户名。将名称用引号括起来。
/homedir:Path
设置用户主目录的路径。该路径必须存在。
/passwordchg:{yes | no}
指定用户是否可以更改自己的密码。默认设置为 yes。
/passwordreq:{yes | no}
指定用户帐户是否必须有密码。默认设置为 yes。
/profilepath:[Path]
设置用户登录配置文件的路径。该路径指向注册表配置文件。
/scriptpath:Path
设置用户登录脚本的路径。Path 不能是绝对路径。Path 是 %systemroot%System32ReplImportScripts 的相对路径。
/times:{day[-day][,day[-day]] ,time[-time][,time[-time]] [;匽 | all}
指定用户可以使用计算机的时间。Time 的增加值限制为 1 小时。对于 day 值,可以用全称或缩写(即 M、T、W、Th、F、Sa、Su)。可以使用 12 小时或 24 小时时间表示法。对于 12 小时表示法,请使用 AM、PM 或 A.M.、P.M.。all 值表示用户始终可以登录。空值(空白)意味着用户永远不能登录。用逗号分隔日期和时间,用分号分隔日期和时间单元(例如,M,4AM-5PM;T,1PM-3PM)。指定时间时不要使用空格。
/usercomment:"text"
指定管理员添加或更改帐户的“用户注释”。给文本加上引号。
/workstations:{ComputerName[,...] | *}
最多列出 8 个用户可以登录到网络的工作站。用逗号分隔列表中的多个项。如果 /workstations 没有列表,或列表为星号 *,则该用户可以从任何计算机登录。
net help command
显示指定 net 命令的帮助。
范例:
如果在没有参数的情况下使用,则 net user 将显示计算机上用户帐户的列表。也可以键入 net users 。
密码必须满足 net accounts /minpwlen 中设定的最小长度要求。最多可有 127 个字符。但是,如果运行 Windows 2000 或 Windows XP 的计算机所在的网络上另有运行 Windows 95 或 Windows 98 的计算机,则请考虑使用不超过 14 个字符的密码。Windows 95 和 Windows 98 最多支持 14 个字符的密码。如果密码过长,则可能无法从那些计算机登录网络。
要显示本地计算机上所有用户帐户的列表,请键入:
net user
要查看用户帐户 jimmyh 的信息,请键入:
net user jimmyh
要添加 Jay Jamison 的用户帐户,登录权限从星期一到星期五的早晨 8 点到下午 5 点(时间指定中没有间隔),且使用强制密码 (jayj) 和用户全名,请键入:
net user jayj /add /passwordreq:yes /times:monday-friday,8am-5pm/fullname:"Jay Jamison"
要使用 24 小时制表示法设置 johnsw 的登录时间(早晨 8 点到下午 5 点),请键入:
net user johnsw /time:M-F,08:00-17:00
要使用 12 小时制表示法设置 johnsw 的登录时间(早晨 8 点到下午 5 点),请键入:
net user johnsw /time:M-F,8am-5pm
要指定 marysl 的登录时间为星期一的早晨 4 点到下午 5 点、星期二的下午 1 点到 3 点以及星期三到星期五的上午 8 点到下午 5 点,请键入:
net user marysl /time:M,4am-5pm;T,1pm-3pm;W-F,8:00-17:00
(三)NET USE
作用:
将计算机与共享资源连接或断开,或者显示关于计算机连接的信息。该命令还控制持久网络连接。如果在没有参数的情况下使用,则 net use 检索网络连接列表。
语法:
net use [{DeviceName | *}] [ComputerNameShareName[volume]] [{Password | *}]] [/user:[DomainName]UserName] [/user:[DottedDomainName]UserName] [/user:[UserName@DottedDomainName] [/savecred] [/smartcard] [{/delete | /persistent:{yes | no}}]
net use [DeviceName [/home[{Password | *}] [/delete:{yes | no}]]
net use [/persistent:{yes | no}]
参数:
键入不带参数的net use列出网络连接。
DeviceName
指派名称以便连接到资源或指定断开的设备。有两种类型的设备名: 磁盘驱动器(即 D: 到 Z:} 和打印机(即 LPT1:到 LPT3:}。键入星号而不是特定设备名,指派下一个可用的设备名。
ComputerNameShareName
指定服务器和共享资源的名称。如果 ComputerName 包含有空格,请使用引号将从双反斜线符号 () 到计算机名尾的整个计算机命名引起来(例如,"Computer NameShare Name")。计算机名长度可以是 1 到 15 个字符。
volume
指定服务器上的 NetWare 卷。必须安装并运行 Client Service for NetWare(NetWare 客户服务)才能连接 NetWare 服务器。
Password
指定访问共享资源所需的密码。输入星号 (*) 产生一个密码提示在密码提示行处键入密码时不显示密码。
/user
指定建立连接的不同用户名。
DomainName
指定其他域。如果省略 DomainName, net use 将使用当前登录的域。
UserName
指定登录时使用的用户名。
DottedDomainName
指定用户帐户所在域完全合格的域名。
/savecred
存储为重新使用提供的凭据。
/smartcard
指定网络连接将使用的智能卡凭据。如果有多个智能卡可用,则需要指定凭据。
/delete
取消指定的网络连接。如果用户使用星号 (*) 指定连接,则所有网络连接均将取消。
/persistent:{yes | no}
控制持久网络连接的使用。默认值为最后一次使用的设置。非设备连接不会持久。Yes 将按其建立时的原样保存所有连接,并在下次登录时还原它们。No 则不保存已建立的连接或后续连接。现存的连接在下一次登录时还原。使用 /delete 删除持久连接。
/home
将用户连到主目录。
net help command
显示指定 net 命令的帮助。
范例:
连接和断开网路资源
使用 net use 命令连接或断开网络资源,并查看当前与网络资源的连接。如果将共享目录作为当前驱动器或者某个活动进程正在使用共享目录,则无法断开与该共享目录的连接。
查看连接信息
要查看有关连接的信息,请执行以下某项操作:
键入 net use DeviceName 获得有关特定连接的信息。
键入 net use 获得所有计算机连接的列表。
使用非设备连接
非设备连接不会持久。
连接到 NetWare 服务器
安装并运行 Client Service for NetWare(NetWare 客户服务)后,可以在 Novell 网络上连接 NetWare 服务器。除非必须包含要连接的卷,否则请使用与连接 Windows Networking 服务器相同的语法。
使用引号
如果提供的 ServerName 包含空格,请使用引号将文本引起来(例如,"Server Name")。如果省略该引号,则会出现错误消息。
要将磁盘驱动器设备名 E:分配给 Financial 服务器上的 Letters 共享目录,请键入:
net use E:financialletters
要将磁盘驱动器设备名 M:指派(映射)给 NetWare 服务器 Financial 上 Letters 卷中的目录 Mike,请键入:
net use m:financiallettersmike
要连接用户标识符 Dan 就好像是通过 Accounts 域创建的连接,请键入:
net use d:servershare /user:AccountsDan
要断开 FinancialPublic 目录,请键入:
net use f:financialpublic /delete
要连接 Financial 2 服务器上的共享资源备忘录,请键入:
net use k:"financial 2" memos
要在每次登录时还原当前连接而不考虑将来的更改,请键入:
net use /persistent:yes
(四)NET TIME
作用:
使计算机的时钟与另一个计算机或域的时钟同步。使用不带参数的 net time 显示另一台计算机或域的时间。
语法:
net time [{ComputerName | /domain[:DomainName] | /rtsdomain[:DomainName]}] [/set]
net time [ComputerName] [/querysntp] [/setsntp[:NTPServerList]]
参数:
computername
指定要检查或与之同步的服务器的名称。
/domain[:domainname]
指定要同步时钟的域。
/rtsdomain[:domainname]
指定要与之同步时钟的“可信时间服务器”所在的域。
/set
使计算机的时钟与指定的计算机或域的时间同步。
/querysntp
显示当前为本地计算机或 computername 所指定的计算机配置的网络时间协议 (NTP) 服务器的名称。
/setsntp[:NTPServerList]
指定本地计算机所使用的 NTP 时间服务器的列表。该列表可以包含 IP 地址 或 DNS 名称,并用空格分开。如果使用多个时间服务器,则必须使用引号引住该列表。
net help command
显示指定 net 命令的帮助。
(五)Net Start
作用:
启动一项服务。使用不带参数的 net start 显示当前工作的服务列表。
语法:
net start [service]
参数:
service
启动指定的服务。下表列出了 service 的值。
alerter
启动“警报器”服务。
启动“警报器”服务将警报消息发送到连上服务器的指定用户。警报消息提醒用户安全、访问和用户对话问题。
使用“服务器管理器”(即 systemrootSystem32Srvmgr.exe)来指定想要接受管理报警的管理员。只有 Windows Server 2000 的计算机才提供“服务器管理器”。
警报告信息作为普通消息从服务器发送到用户计算机。用户计算机上,必须运行信使服务,这样才能够接到警报信息。
brower
启动“计算机浏览器”服务。
“计算机浏览”服务维持最新的网络上计算机的列表,并且向该列表提供其所需要的程序。
"client service for netware"
启动“NetWare 客户服务”。
只有为 NetWare 安装了“客户服务”后,该命令才可用。
clipbook
启动“剪贴簿”服务。
剪贴簿允许在网络上剪切和粘帖文本与图形。
剪贴簿服务支持“剪贴簿查看器”,它允许通过远程“剪贴簿”查看页面。
dhcp client
启动“DHCP 客户”服务。
只有安装了“TCP/IP 协议”后,该命令才可用。
DHCP 客户服务通过注册和更新 IP 地址以及 DNS 名称来管理网络配置。DHCP 客户服务支持从 DHCP 服务获取 IP 地址。
不能停止或暂停“DHCP 客户”服务。
eventlog
启动事件日志服务。
“事件日志”服务可以记录由程序和 Windows XP 发出的事件消息。“事件日志”报告可用于诊断故障的信息。可通过“事件查看器”查看报告。必须在使用“事件查看器”查看记录的事件之前启动“事件日志”服务。
不能停止或暂停“事件日志”服务。
file replication
启动“文件复制”服务
messenger
启动“信使”服务。
“信使”服务允许计算机接收邮件。
使用作为身份验证分配到计算机的名称将信息发送到计算机。
netlogon
启动“网络登录”服务。
“网络登录”服务验证登录请求并控制复制用户帐户数据库域宽。
在使用域用户帐户数据库副本的域中的所有服务器上,启动网络登录服务。
"nt lm security support provider"
启动“NT LM 安全支持提供商”服务
只有安装了“NT LM 安全支持提供程序”后,该命令才可用。
"plug and play"
启动“即插即用”服务。
"remote access connection manager"
启动“远程访问连接管理器”服务。
只有安装了“远程访问服务”后,该命令才可用。
"routing and remote access"
启动“路由和远程访问”服务。
rpclocator
启动“远程过程调用 (RPC) 定位器”服务。
允许分布式应用程序使用 Microsoft RPC 命名服务。
“远程过程调用 (RPC) 定位器”是 Microsoft Windows XP 的 RPC 名称服务。“RPC 定位器”管理 RPC 名称服务数据库。
分布式应用程序的服务器一方使用“RPC 定位器”服务注册其可用性。分布式应用程序的客户一方查询“RPC 定位器”服务,以查找可用的兼容服务器应用程序。
rpcss
启动“远程过程调用 (RPC)”服务。
“远程过程调用 (RPC)”服务是用于 Windows XP 的 RPC 子系统。RPC 子系统包括结点映射表和其他杂项 RPC 服务。Net start rpcss 启动“远程过程调用 (RPC)”服务从而允许分布式的应用程序使用动态终结点。“远程过程调用 (RPC)”服务管理终结点映射数据库。
分布式应用程序的服务器端使用“远程过程调用 (RPC)”服务注册其终结点。客户运行时库代表分布式应用程序的客户端查询“远程过程调用 (RPC)”服务,以获取终结点信息。要确定分布式应用程序是否使用终结点映射器服务,请参阅该分布式应用程序的文档。
schedule
启动“任务计划程序”服务。
使用“任务计划程序”,可以在通过 at 命令指定的时间启动程序。在运行预定的命令之前,您可能需要运行其它服务。
“任务计划程序”被初始配置用来运行本地计算机上的系统帐户。当使用该帐户运行“任务计划程序”时,能使用的“任务计划程序”的作业没有限制。但是,因为本地计算机的“系统”帐户不被其他计算机识别,所以这些作业的网络访问将受限制。
要克服网络访问限制,可以将“任务计划程序”配置为在用户帐户中运行。如果做了该操作,由“任务计划程序”执行的作业就被用户帐户网络访问所管理。然而,因为“任务计划程序”在这种情况下不使用本地系统帐户,所以只有不需要窗口的作业才能成功运行。
server
启动“服务器”服务。
使用“服务器”服务,与网络上的用户分享服务器资源。
spooler
启动“后台打印程序”服务。
“后台打印程序”服务将文件装载到内存以用来打印。
tcp/ip netbios helper
启动 TCP 服务上的 NetBIOS 帮助器,它可以启用 TCP/IP (NetBT) 服务上的 NetBIOS。
NetBT 服务提供 NetBIOS 数据图表,NetBIOS 会话,对使用 TCP/IP 协议的 NetBIOS 应用程序的 NetBIOS 名称管理(如名称注册和解析)。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
ups
启动“不间断电源”服务。
“不间断电源”(UPS)服务管理连接到计算机上的不间断电源。
通过“控制面板”中的“电源选项”来配置“不间断电源”。如果您配置“不间断电源”服务要执行到某个命令文件中,则该命令文件必须在运行 30 秒内才能完成。超过 30 秒的运行时间将威胁到 Windows XP 完成系统关闭的功能。
workstation
启动“工作站”服务。
“工作站”服务使计算机可以连接并使用网络资源。
net help command
显示指定 net 命令的帮助。
范例:
服务和应用程序的设置可能根据您在安装或配置过程中所做的选项而变化。
有关服务的详细信息,请参阅 Microsoft 网站中的“系统基础指南”。(http://www.microsoft.com/)
某些服务依赖于其他的服务。
可以使用服务管理单元将服务配置为自动启动和自动停止。可以使用该管理单元手动停止、启动、暂停和恢复网络服务。
可以使用 Net start 启动不是由 Windows XP 提供的服务。
如果服务名包含空格,请使用引号将文本引起来(例如,"Service Name")。
要列出当前正在运行的服务,请键入:
Net start
要启动 Client Service for Netware 服务,请键入:
net start "client service for netware"
服务概览:
(1)alerter(警报)
(2)client service for netware(Netware 客户端服务)
(3)clipbook server(剪贴簿服务器)
(4)computer browser(计算机浏览器)
(5)directory replicator(目录复制器)
(6)ftp publishing service (ftp )(ftp 发行服务)
(7)lpdsvc
(8)net logon(网络登录)
(9)network dde(网络 dde)
(10)network dde dsdm(网络 dde dsdm)
(11)network monitor agent(网络监控代理)
(12)nt lm security support provider(NT LM 安全性支持提供)
(13)ole(对象链接与嵌入)
(14)remote access connection manager(远程访问连接管理器)
(15)remote access isnsap service(远程访问 isnsap 服务)
(16)remote access server(远程访问服务器)
(17)remote procedure call (rpc) locator(远程过程调用定位器)
(18)remote procedure call (rpc) service(远程过程调用服务)
(19)schedule(调度)
(20)server(服务器)
(21)simple tcp/ip services(简单 TCP/IP 服务)
(22)snmp
(23)spooler(后台打印程序)
(24)tcp/ip netbios helper(TCP/IP NETBIOS 辅助工具)
(25)ups
(26)workstation(工作站)
(27)messenger(信使)
(28)dhcp client
(29)eventlog
以下这些SERVICE只能在NT SERVER上使用
(1)file server for macintosh
(2)gateway service for netware
(3)microsoft dhcp server
(4)print server for macintosh
(5)remoteboot
(6)windows internet name service
(六)Net Pause
作用:
暂停当前运行的服务。
语法:
net pause service
参数:
service
必需。指定要暂停的计算机。下表列出了 service 的部分值。
netlogon
暂停“网络登录”服务。
"nt lm security support provider"
暂停“NT LM 安全支持提供商”服务。
schedule
暂停“任务调度程序”服务。
server
暂停“服务器”服务。
workstation
暂停“工作站”服务。
net help command
显示指定 net 命令的帮助。
范例:
在服务器上,在停止服务以便让用户完成工作或从资源断开连接前请使用 net pause 命令。暂停服务只是使该服务处于等待状态,而不从内存中删除软件。已经连接资源的用户可以完成自己的任务,但不允许建立到资源的新连接。
如果要停止影响共享资源的服务,则应先暂停服务。使用 net send 发送要停止服务的消息。在让用户花足够的时间完成使用资源后,可以使用 net stop 停止服务。
要重新激活暂停的服务,请使用 net continue 。
不能暂停所有服务。暂停操作将在以下几个方面对服务造成影响:
暂停“网络登录”服务将阻止计算机处理登录请求。如果域还有其他登录服务器,则用户仍可以登录到网络。
暂停“服务器”服务将阻止用户建立到服务器共享资源的新连接。如果网络上没有其他登录服务器,则用户将无法登录到网络。现有连接将不受影响。在暂停服务器期间,管理员仍可以建立该服务器的连接。
暂停“工作站”服务将使用户无法定义用户名、密码和连接,但会将对打印机设备的请求导向连接到计算机,而不是连接到网络打印机。
如果服务名包含空格,请使用引号将文本引起来(例如,"Service Name")。
要暂停“服务器”服务,请键入:
net pause server
如果服务器名由两个或多个单词组成,必须用引号把该服务器名圈起来。例如,要暂停“NT LM 安全支持提供商”服务,请键入:
net pause"nt lm security support provider"
(七)Net Continue
作用:
继续由 net pause 暂停的服务。
语法:
net continue service
参数:
service
必需。指定要继续的计算机。下表列出了所有 service 的部分值。
netlogon
继续“网络登录”服务。
"nt lm security support provider"
继续“NT LM 安全支持提供商”服务
schedule
继续“任务计划程序”服务。
server
继续“服务器”服务。
workstation
继续“工作站”服务。
net help command
显示指定 net 命令的帮助。
范例:
要对资源作轻微更正,请暂停服务。然后使用 net continue 命令重新激活服务或打印机,而不用中断用户连接。
暂停和继续服务的效果随每种服务而变化。
如果服务名包含空格,请使用引号将文本引起来(例如,"Service Name")。
如下命令将继续工作站服务:
net continue workstation
如果服务器名由两个或多个单词组成,必须用引号把该服务器名圈起来。例如,要继续 NT LM 安全支持提供商服务,请键入:
net continue "nt lm security support provider"
(八)NET STOP
作用:
停止正在运行的服务。
语法:
net stop service
参数:
service
停止指定的服务。下表列出了 service 的值。
alerter
停止“警报器”服务。
启动“警报器”服务将警报消息发送到连上服务器的指定用户。警报消息提醒用户安全、访问和用户对话问题。
使用“服务器管理器”(就是 systemrootSystem32Srvmgr.exe)来指定您想要接受管理报警的管理员。Server Manager is available on Windows 2000 Server computers only.
警报告信息作为普通消息从服务器发送到用户计算机。用户计算机上,必须运行信使服务,这样才能够接到警报信息。
brower
停止“计算机浏览器”服务。
“计算机浏览”服务维持最新的网络上计算机的列表,并且向该列表提供其所需要的程序。
"client service for netware"
停止“NetWare 客户服务”服务。
只有为 NetWare 安装了“客户服务”后,该命令才可用。
clipbook
停止“剪贴簿”服务。
剪贴簿允许在网络上剪切和粘帖文本与图形。
剪贴簿服务支持“剪贴簿查看器”,它允许通过远程“剪贴簿”查看页面。
dhcp client
不能停止或暂停“DHCP 客户”服务。
DHCP 客户服务通过注册和更改 IP 地址以及 DNS 名称来管理网络配置。DHCP 客户服务支持从 DHCP 服务获取 IP 地址。
file replication
启动“文件复制”服务
messenger
停止“信使”服务。
“信使”服务允许计算机接收邮件。
使用作为身份验证分配到计算机的名称将信息发送到计算机。
netlogon
停止“网络登录”服务。
“网络登录”服务验证登录请求并控制复制用户帐户数据库域宽。
在使用域用户帐户数据库副本的域中的所有服务器上,停止“网络登录”服务。
"nt lm security support provider"
停止“NT LM 安全支持提供商”服务。
只有安装了“NT LM 安全支持提供程序”后,该命令才可用。
"remote access connection manager"
停止“远程访问连接管理器”服务。
只有安装了“远程访问服务”后,该命令才可用。
"routing and remote access"
停止“路由和远程访问”服务。
rpclocator
停止“远程过程调用 (RPC) 定位器”服务。
允许分布式应用程序使用 Microsoft RPC 命名服务。
“远程过程调用 (RPC) 定位器”是用于 Microsoft Windows XP 的 RPC 名称服务。“RPC 定位器”管理 RPC 名称服务数据库。
分布式应用程序的服务器一方使用“RPC 定位器”服务注册其可用性。分布式应用程序的客户一方查询“RPC 定位器”服务,以查找可用的兼容服务器应用程序。
schedule
停止“任务计划程序”服务。
使用“任务计划程序”,可以在通过“at”命令指定的时间启动程序。在运行预定的命令之前,您可能需要运行其它服务。
“任务计划程序”被初始配置用来运行本地计算机上的系统帐户。当使用该帐户运行“任务计划程序”时,能使用的“任务计划程序”的作业没有限制。但是,因为本地计算机的“系统”帐户不被其他计算机识别,所以这些作业的网络访问将受限制。
要克服网络访问限制,可以将“任务计划程序”配置为在用户帐户中运行。如果做了该操作,由“任务计划程序”执行的作业就被用户帐户网络访问所管理。然而,因为“任务计划程序”在这种情况下不使用本地系统帐户,所以只有不需要窗口的作业才能成功运行。
server
停止“服务器”服务。
使用“服务器”服务,与网络上的用户分享服务器资源。
spooler
“后台打印程序”服务。
“打印后台处理程序”服务将文件装载到内存以用来打印。
tcp/ip netbios helper
停止 TCP 服务上的 NetBIOS 帮助器,它可以启用 TCP/IP (NetBT) 服务上的 NetBIOS。
NetBT 服务提供 NetBIOS 数据图表,NetBIOS 会话,对使用 TCP/IP 协议的 NetBIOS 应用程序的 NetBIOS 名称管理(如名称注册和解析)。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
ups
停止“不间断电源”服务。
“不间断电源” (UPS) 服务管理连接到计算机上的不间断电源。
通过“控制面板”中的“电源选项”来配置“不间断电源”。如果您配置“不间断电源”服务要执行到某个命令文件中,则该命令文件必须在运行 30 秒内才能完成。大于 30 秒的运行时间将威胁会系统正常关闭的能力。
workstation
停止“工作站”服务。
“工作站”服务使计算机可以连接并使用网络资源。
net help command
显示指定 net 命令的帮助。
范例:
服务和应用程序的设置可能根据您在安装或配置过程中所做的选项而变化。
某些服务依赖于其他的服务。
使用 net stop 停止服务并从内存中删除软件。
停止“服务器”服务可以阻止用户访问计算机的共享资源。如果用户使用服务器资源时停止“服务器”服务,会出现警告消息。y(代表 yes)响应将取消与该计算机的所有连接。在停止“服务器”服务之前,可以进行以下操作:
使用 net pause 暂停服务,从而阻止新连接。
使用 net send 发送提示用户断开服务器资源的消息。
如果服务名包含空格,请使用引号将文本引起来(例如, "Service Name")。
Net stop 也可以停止不是由 Windows XP 提供的服务。
如下命令可以停止“服务器”服务:
net stop server
在引号中包含使用一个或两个字的服务名称。例如,下面的命令可以停止“Netware 客户服务”服务:
net stop "client service for netware"
(九)Net Statistics
作用:
显示本地“工作站”或“服务器”服务或正在运行的可以使用统计的服务的统计日志。使用不带参数的 net statistics,列出正在运行的可以使用统计的服务。
语法:
net statistics [{workstation | server}]
参数:
键入不带参数的net statistics列出其统计信息可用的运行服务。
workstation
显示本地“工作站”服务的统计。
server
显示本地“服务器”服务的统计。
net help command
显示指定 net 命令的帮助。
范例:
也可以键入 net stats 。
对于工作站服务,Windows XP 报告计算机名、最后更新统计的日期和时间以及下列信息:
所接收和传输的字节数和服务器消息块 (SMB)
成功或失败地读取和写入操作次数
网络错误数目
失败、断开或重新连接的会话数
与共享资源连接成功或失败的次数
对于服务器服务,Windows XP 报告计算机名、最后更新统计的日期和时间以及下列信息:
启动、自动断开和因为错误断开的会话数
发送和接收的千字节数以及平均的服务器响应时间
密码和权限限制的错误和侵犯次数
共享文件、打印机和通讯设备使用的次数
超出内存缓冲区大小的次数
要显示服务器服务的统计并禁止输出滚动,请键入:
net statistics server | more
(十)Net Share
作用:
管理共享资源。使用不带参数的 net share 显示本地计算机上所有共享资源的信息。
语法:
net share [ShareName]
net share [ShareName=Drive:Path [{/users:number|/unlimited}] [/remark:"text"] [/cache: {manual|automatic|no}]]
net share [ShareName [{/users:number|unlimited}] [/remark:"text"] [/cache: {manual|automatic|no}]] net share [{ShareName|Drive:Path} /delete]
参数:
键入不带参数的net share显示本地计算机上所有共享资源的信息。
ShareName
指定共享资源的网络名称。键入带参数 ShareName 的 net share 命令仅显示有关该共享的信息。
drive:path
指定要共享目录的绝对路径。
/users:number
设置可以同时访问共享资源的最多用户数。
/unlimited
指定可以同时访问共享资源的、数量不受限制的用户。
/remark:"text"
添加关于资源的描述注释。给文本加上引号。
/cache:automatic
启用带自动重新集成的脱机客户缓存。
/cache:manual
启用带手动重新集成的脱机客户缓存。
/cache:no
提醒客户脱机缓存不合适。
/delete
停止共享资源。
net help command
显示指定 net 命令的帮助。
范例:
要共享带有包含空格字符路径的目录,请使用引号将目录的驱动器和路径引起来(例如, "C:Path Name")。
当显示计算机上的所有共享资源时,将显示资源的共享名、与资源相关的设备名或路径,以及与资源有关的描述性注释。输出内容与以下相似:
share name resource remark
------------------------------------------------------
ADMIN$ C:WINNT Remote Admin
C$ C: Default Share for Internal Use
print$ C:WINNTSYSTEMSPOOL
IPC$ Remote IPC
LASER LPT1 Spooled Laser printer
在服务器上创建共享时,这些共享将被保存。在停止 Server 服务时,所有共享都断开,但是在下一次启动 Server 服务或者重新启动计算机时将自动重新连接它们。有关服务的详细信息,请参阅服务。
当从远程计算机浏览本地计算机时,将不显示以字符 $ 结尾的共享资源名。
要显示有关计算机上共享资源的信息,请键入:
net share
要使用共享名 DataShare 共享计算机的 C:Data 目录并包括注释,请键入:
net share DataShare=c:Data /remark:"For department 123."
要停止上例中创建的 DataShare 文件夹共享,请键入:
net share DataShare /delete
要使用共享名 List 共享计算机的 C:Art Lst 目录,请键入:
net share list="c:art lst"
(十一)Net Session
作用:
管理服务器计算机连接。使用不带参数的 net session 命令显示有关本地计算机所有会话的信息。
语法:
net session [ComputerName] [/delete]
参数:
键入不带参数的net session显示所有与本地计算机的会话的信息。
computername
标识您要列出或断开其会话的计算机。
/delete
结束计算机与 computername 的会话并关闭计算机中所有为该会话打开的文件。如果省略 computername,所有在本地计算机上的会话将被取消。
net help command
显示指定 net 命令的帮助。
小心:
使用 net session 有可能造成数据丢失。在断开会话之前可能需要警告用户。
范例:
也可以使用 net sessions 或 net sess 运行 net session 。
使用 net session 命令查看服务器上用户的用户名和计算机名、用户是否打开了文件以及各个用户的已空闲会话时间。
信息将以类似下面的格式显示:
Computer User name Client type Opens Idle time
------------------------------------------------------------------------
BASSETT CHRISDR Windows 2000 1 00:00:13
SHARONCA Administrator DOS LM 2.1 0 01:05:13
要显示用户会话,请在命令中使用 computername。单个用户的信息包括用户所连接的共享资源的列表。
当客户端的用户成功连接到服务器后,会话将被记录下来。相同的网络上的两个计算机可以成功会话,且用户具有一个被服务器接受的用户名和密码。客户端的用户在使用服务器资源之前必须与服务器进行一次会话,只有当客户端的用户连接到资源时才建立该会话。客户与服务器之间只有一个会话,但它们与资源之间可能有多个入口点或连接。
要设置自动断开连接之前会话空闲的时间,请使用 net config server/autodisconnect 命令设置 autodisconnect 功能。有关 net config server 命令的详细信息,请参阅 相关主题 。自动断开连接对用户是透明的,因为当用户再次访问资源时将自动重新建立会话。
要中止与服务器的会话,请使用 net session ComputerName /delete。
要显示本地服务器的会话信息列表,请键入:
net session
要显示计算机名为 Shepherd 的客户端会话信息,请键入:
net session shepherd
要结束服务器与连接到服务器的客户端的所有会话,请键入:
net session /delete
(十二)Net Send
作用:
将消息发送到网络上的其它用户、计算机或者消息名称。
语法:
net send {name | * | /domain[:name] | /users} message
参数:
name
指定用于发送消息的用户名、计算机名或消息发送名。如果提供的信息包含空格,请使用引号将文本引起来(例如,"Computer Name")。当将长用户名用作 NetBIOS 名称时有可能出现问题。NetBIOS 名称被限制为 16 个字符,第 16 个字符将被保留。
*
将消息发送给在您域或工作组中的所有名称。
/domain:name
将消息发送给计算机域中的所有名称。可以指定发送消息到指定域或工作组中所有名称的 name。
/users
将消息发送给所有连接服务器的用户。
message
必需。指定消息的文本。
net help command
显示指定 net 命令的帮助。
范例:
可以只将邮件发送给一个在网络上活动的名字。如果发送消息到用户名,该用户必须登录并运行“信使”服务才能接收消息。
可以向计算机所在的域(使用 * 或 /domain),或者其他域 (/domain:domainname) 中的所有名字广播消息。广播消息最多包含 128 个字符。把信息发送到多个用户时使用判断力。
/users 选项允许您向所有参与服务器会话的用户发送消息。把信息发送到多个用户时使用判断力。
必须运行“信使”服务接收邮件。有关如何启动服务的详细信息,请参阅“相关主题”。
要将消息 Meeting changed to 3 P.M. Same place. 发送到用户 robertf,请键入:
net send robertf Meeting changed to 3 P.M. Same place.
要将邮件发送到与服务器连接的所有用户,请键入:
net send /users This server will shut down in 5 minutes.
要发送包含斜线 (/) 的邮件,请键入:
net send robertf "Format your disk with FORMAT /4"
(十三)Net Print
作用:
显示有关指定打印队列、指定打印服务器上的所有打印队列和指定打印作业的信息,或者控制指定的打印作业。使用不带参数的 net print 显示该命令的命令行帮助。
语法:
net print ComputerName[QueueName]
显示指定打印服务器上的指定打印队列或所有打印队列的信息
参数:
computername
必需。通过名称指定要显示其上的打印队列的计算机。
QueueName
通过名称指定要显示的打印队列。如果指定了计算机但没有指定打印队列,将显示指定计算机上所有打印队列的信息。
net help net print
显示 net print 命令的的帮助。
范例:
Net print 将显示有关打印队列的几种类型的信息。下面是服务器 Production 上所有打印队列的报告的示例:
Printer queues at PRODUCTION
Name Job # Size Status
---------------------------------------------------------
LASER Queue 1 jobs *Queue Active*
USER1 84 0 Spooling
要列出 PRODUCTION 计算机上 Dotmatrix 打印队列的内容,请键入:
net print productiondotmatrix
语法:
net print [ComputerName] JobNumber [{/hold | /release | /delete}]
显示关于某指定打印作业的信息或控制该指定打印作业
参数:
computername
通过名称指定要控制其上打印作业的计算机。如果没有指定计算机,则使用本地计算机。
JobNumber
必需。指定要控制的打印作业的编号。该编号由接受打印作业并主持该打印作业的计算机分配。计算机分配编号给打印作业后,该号码将不会分配给该计算机所主持的任何打印队列中的任何其他打印作业。
{/hold | /release | /delete}
指定对打印作业执行的操作。/hold 参数可以延缓当前打印作业,允许其他打印作业忽略该打印,直到将其重新释放。/release 参数可以释放被延缓的打印作业。/delete 参数可以删除打印队列中的打印作业。如果指定了打印作业编号但没有指定操作,将显示该打印作业的信息。
net help net print
显示 net print 命令的帮助。
范例:
下面是一个打印作业的报告示例:
Job # 35
Status waiting
Size 3096
Remark
Submitting user USER2
Notify USER2
Job data type
Job parameters
Additional info
要显示有关 PRODUCTION 计算机上作业号为 35 的信息,请键入:
net print production 35
要延缓 PRODUCTION 计算机上的作业号 263,请键入:
net print production 263 /hold
要释放 PRODUCTION 计算机上的作业号 263,请键入:
net print production 263 /release
(十四)Net Name
作用:
添加或删除消息名称(即别名),或显示计算机可接受消息的名称列表。使用不带参数的 net name 显示当前使用的名称列表。
语法:
net name [name {/add|/delete}]
参数:
键入不带参数的net name列出当前使用的名称。
name
指定接收消息的名称。名称可有 15 个字符。
/add
给计算机添加名称。
/delete
从计算机中删除名称。
范例:
使用 net name 命令指定接收消息的名称。使用 net name 之前必须启动信使服务。每个消息传递名称在网络中必须是唯一的。通过 net name 创建的名称严格用于发送消息,而不用于组名称。Windows XP 使用下面三种类型的名称:
任何发送消息的名称(通过 net name 添加)
计算机机器名称(启动工作站服务时添加)
用户名(在登录时添加,条件是在网络上其他地方没有将它用作消息名称)
/add 是可选项。Net name name 和 net name name add 的效果相同。可以使用其中任何一个命令给计算机添加名称。
不能删除计算机的机器名。可以删除用户名。
查看计算机上名称的列表,请键入:
net name
要将名称 rsvp 添加到计算机,请键入:
net name rsvp
要从计算机删除名称 rsvp,请键入:
net name rsvp /delete
(十五)Net Localgroup
作用:
添加、显示或修改本地组。使用不带参数的 net localgroup 命令显示计算机上服务器和本地组的名称。
语法:
net localgroup [GroupName [/comment:"text"]] [/domain]
net localgroup [GroupName {/add [/comment:"text"] | /delete} [/domain]]
net localgroup [GroupName name [ ...]{/add | /delete} [/domain]]
参数:
GroupName
指定要添加、扩展或删除的本地组的名称。使用不带其他参数的 net localgroup GroupName 显示本地组中的用户列表或全局组。
/comment:"text"
为新建或已经存在的组添加注释。评注最多可以包含 48个字符。给文本加上引号。
/domain
对当前域的主域控制器执行操作。否则,操作将在本地计算机上执行。
name [ ...]
列出一个或多个用户名或组名以添加或从本地组中删除。
/add
添加全局组名称或者向本地组中添加用户名称。必须在使用此命令将用户或全局组添加到本地组之前先为其建立帐户。
/delete
从本地组中删除组名称或用户名。
net help command
显示指定 net 命令的帮助。
范例:
使用/domain
/domain 仅适用于成为域成员的 Windows XP Professional 计算机。默认情况下,服务器计算机将在主域控制器上执行操作。
使用name
用空格分隔多项。名称可以是本地用户、其他域的用户或全局组,但不能是其他本地组。如果用户来自另一个域,请在用户名的开头添加域名(例如 SALESRALPHR)。
用户分组
使用 net localgroup 命令以相同或相似方式将使用计算机或网络的用户分组。在对本地组指定权限时,本地组的每个成员都自动获得相同的权限。
要显示本地服务器上所有本地组的列表,请键入:
net localgroup
要将本地组 exec 添加到本地用户帐户数据库,请键入:
net localgroup exec /add
要将本地组 exec 添加到域用户帐户数据库,请键入:
net localgroup exec /add /domain
要将现有用户帐户 stevev、ralphr(来自 SALES 域)和 jennyt 添加到本地计算机上的 exec 本地组,请键入:
net localgroup exec stevev salesralphr jennyt /add
要将现有用户帐户 stevev、ralphr 和 jennyt 添加到域中的 exec 本地组,请键入:
net localgroup exec stevev ralphr jennyt /add /domain
要显示 exec 本地组中的用户,请键入:
net localgroup exec
要将注释添加到 exec 本地组记录,请键入:
net localgroup exec /comment:"The executive staff."
(十六)Net Group
作用:
添加、显示或修改域中的全局组。
语法
net group [groupname [/comment:"text"]] [/domain]
net group [groupname {/add [/comment:"text"] | /delete} [/domain]]
net group [groupname username[ ...]{/add | /delete} [/domain]]
参数:
键入不带参数的net group显示服务器名称及服务器的组名称。
groupname
指定要添加、扩展或删除的组的名称。仅指定组名以查看组中的用户列表。
/comment:"text"
为新建或已经存在的组添加注释。注释可以包含多达 48 个字符。给文本加上引号。
/domain
在当前域的主域控制器上执行操作。否则,操作将在本地计算机上执行。
/add
添加组,或向组中添加用户名称。必须使用该命令为要添加到组中的用户创建帐户。
/delete
删除组,或从组中删除用户。
UserName[ ...]
列出一个或多个用户名以添加到组或从组中删除。用空格分隔多个用户名项。
net help command
显示指定 net 命令的帮助。
范例:
使用不带参数的 net group 命令显示服务器名和服务器上组的名称。
也可以键入 net groups 。
使用 net group 命令,并以相同或相似方式对使用网络的用户分组。在对组指定权限时,组的每个成员都自动获得这些权限。在输出中, net group 将优先输出包含带有星号的 (*) 用户和组的组。
服务器上组的 net group 输出类似下面的形式:
Group Accounts for PRODUCTION
----------------------------------------------
*Domain Admins *Domain Users
要显示本地服务器上所有组的列表,请键入:
net group
要将组 Exec 添加到本地用户帐户数据库,请键入:
net group exec /add
要将组 Exec 添加到域数据库,请键入:
net group exec /add /domain
要将现有用户帐户 stevev、ralphr 和 jennyt 添加到本地计算机上的 Exec 组,请键入:
net group exec stevev ralphr jennyt /add
要将现有用户帐户 stevev、ralphr 和 jennyt 添加到域数据库中的 Exec 组,请键入:
net group exec stevev ralphr jennyt /add /domain
要显示 exec 组中的用户,请键入:
net group exec
要将备注添加到 exec 组记录,请键入:
net group exec /comment:"The executive staff."
(十七)Net File
作用:
显示服务器上所有打开的共享文件名称以及每个文件的文件锁定码(如果有的话)。该命令也关闭单独的共享文件并删除文件锁定。使用不带参数的 net file 命令显示服务器上打开文件的列表。
语法:
net file [ID [/close]]
参数:
键入不带参数的net file获得服务器上打开文件的列表。
ID
指定文件的标识号。
/close
关闭打开的文件并释放锁定的记录。通过共享文件的服务器命令提示符键入该命令。
net help command
显示指定 net 命令的帮助。
范例:
也可以键入 net files 运行该命令。
使用 net file 查看并控制网络上共享的文件。有时,用户会错误地打开或锁定了共享文件。这时,网络上的其他用户将不能访问文件的锁定部分。可以使用 net file /close 删除锁定并关闭该文件。Net file 的输出类似下面的形式:
File Path Username #locks
---------------------------------------------
0 C:A_FILE.TXT MARYSL 0
1 C:DATABASE DEBBIET 2
要查看共享文件的信息,请键入:
net file
要关闭标识号码为 1 的文件,请键入:
net file 1 /close
(十八)Net Config
作用:
显示正在运行的可配置服务,或显示和更改服务器服务或工作站服务。使用不带参数的 net config 命令显示可配置服务的列表。
语法
net config [{server|workstation}]
参数:
键入不带参数的net config显示可配置服务的列表。
server
在运行服务器服务时,显示服务设置并允许更改该设置。
workstation
在运行工作站服务时,显示服务设置并允许更改该设置。
/?
在命令提示符显示帮助。
范例:
使用 net config server 命令更改可配置服务器服务设置。更改立即生效,并且永久保持。
不能利用 net config server 更改服务器服务的所有设置。net config server 可以显示不能配置的下列信息:
服务器计算机名
服务器注释
服务器版本(即软件版本号)
服务器处于活动状态(即网络描述)
服务器处于隐藏状态(即 /hidden 设置)
最大登录用户数(即可使用服务器共享资源的最大用户数)
每个会话打开文件的最大数(即用户可在一个会话中打开服务器文件的最大数)
空闲会话时间(最小值)
使用 net config workstation 更改可配置工作站服务设置。
net config workstation 将显示下列信息:
计算机名
完整的计算机名称
用户名
工作站处于活动状态(即网络描述)
软件版本(即软件版本号)
工作站域
工作站域的 DNS 名称
登录域
COM 打开时间超时(秒)
COM 发送量(字节)
COM 发送超时 (msec)
(十九)Net Computer
作用:
从域数据库中添加或删除计算机。
语法:
net computer ComputerName {/add | /del}
参数:
computername
指定要从域中添加或删除的计算机。
{/add | /del}
从域中添加或删除指定的计算机。
net help command
显示指定 net 命令的帮助。
范例:
Net computer 将所有添加和删除的计算机转发到域控制器。
要将计算机 Grizzlybear 添加到域中,请键入:
net computer grizzlybear /add
(二十)Net Accounts
作用:
将用户帐户数据库升级并修改所有帐户的密码和登录请求。
语法:
net accounts [/forcelogoff:{minutes | no}] [/minpwlen:length] [/maxpwage:{days | unlimited}] [/minpwage:days] [/uniquepw:number] [/domain]
参数:
键入不带参数的net accounts显示当前密码设置、登录时限及域信息。
/forcelogoff:{minutes | no}
设置当用户帐户或有效登录时间到期时在结束用户与服务器的会话前要等待的分钟数。默认值 no 可以防止强制注销用户。
/minpwlen:length
设置用户帐户密码的最少字符数。字符数目范围是 0 到 127,默认值为 6 个字符。
/maxpwage:{days | unlimited}
设置用户帐户密码有效天数的最大值。数值 unlimited 的设置为无时间限制。/maxpwage 命令行选项必须大于 /minpwage 。天数范围是 1 到 49,710(即 unlimited 的值等于 49,710 天),默认值为 90 天。
/minpwage:days
设置在用户可以更改新密码前的最小天数。默认值为 0 天,从而不设置最短时间。该范围是 0 到 49,710 天。
/uniquepw::number
要求用户不要为更改密码时指定的 number 重复相同的密码。密码更改的范围是 0 到 24,默认值是 five password。
/domain
对当前域的主域控制器执行操作。否则,操作将在本地计算机上执行。
net help command
显示指定 net 命令的帮助。
范例:
Net Logon 服务必须运行在要更改帐户参数的计算机上。使用不带参数的 net accounts 显示密码、登录限制和域信息的当前配置。
使用 net accounts 之前必须执行以下操作:
创建用户帐户。使用用户管理器或 net user 创建用户帐户。
在所有可验证域中登录的服务器上运行 Net Logon 服务。系统启动时将自动启动 Net Logon。
使用 /forcelogoff:minutes 时,在强制用户从网络注销之前几分钟将发送警告。如果打开了某些文件,系统也将通知用户。如果 minutes 少于 2,系统将警告用户立即从网络注销。
要显示当前设置、密码要求以及服务器的服务器角色,请键入:
net accounts
要设置不少于 7 个字符的用户帐户密码,请键入:
net accounts /minpwlen:7
要指定用户只有在五次更改密码后才可以重新使用密码,请键入:
net accounts /uniquepw:5
要防止用户在 7 天内更改密码,而且强制用户每 30 天才能更改一次密码,并在登录时间到期后用 5 分钟警告强制用户注销,请键入:
net accounts /minpwage:7 /maxpwage:30 /forcelogoff:5
要确保先前的设置只有在计算机登录到域后才生效,请键入:
net accounts /minpwage:7 /maxpwage:30 /domain
(二十一)Net helpmsg
作用:
解释错误出现的原因,同时提供解决问题的信息。
语法:
net helpmsg message#
参数:
message#
必需。指定要获得详细信息的消息的 4 位号码。
net help command
显示指定 net 命令的帮助。
范例:
当网络操作失败时,可以看到类似于下面的消息:
2182: The requested service has already been started.
要获得错误消息 NET 2182 的详细信息,请键入:
net helpmsg 2182
(二十二)Net help
作用:
提供可以获得帮助的网络命令和主题列表,或关于特定命令的信息。使用不带参数的 net help 命令显示命令和可获得帮助的主题的列表。
语法:
net help [command]
参数:
command
/help
显示命令的正确语法和帮助。
指定要获得帮助的命令。
要显示 net use 命令的帮助,请键入:
net help use
或键入:
net use /help
要查看 net use 命令的语法,请键入:
Net help /?
----------------------上面介绍的是NET命令在WINNT下的基本用法
----------------------下面我们看看NET命令在WIN98下的基本用法
在WIN98中NET命令也有一些参数的名字和功能及简单的使用方法和WINNT下的相应的参数的用法相同
其中有
(1)NET TIME命令
(2)NET PRINT命令
(3)NET USE命令
(4)NET VIEW命令
在WIN98中NET命令有一些参数的名字和WINNT下的相应的参数的名字相同,但其用法却有些不同
其中有
(1)NET START
作 用:启动相应的服务。(不能在DOS-WIN中用)
命令格式:NET START [BASIC | NWREDIR | WORKSTATION | NETBIND | NETBEUI | NWLINK] [/LIST] [/YES] [/VERBOSE]
(2)NET STOP
作 用:停止相应的服务.(不能在DOS-WIN中用)
命令格式:NET STOP [BASIC | NWREDIR | WORKSTATION | NETBEUI | NWLINK] [/YES]
在WIN98中NET命令还有一些参数是在98下才有的
其中有
(1)NET DIAG
作 用:运行MS的DIAGNOSTICS程序显示网络的DIAGNOSTIC信息
命令格式:NET DIAGNOSTICS [/NAMES | /STATUS]
(2)NET INIT
作 用:不通过绑定来加载协议或网卡驱动(不能在DOS-WIN中用)
命令格式:NET INITIALIZE [/DYNAMIC]
(3)NET LOGOFF
作 用:断开连接的共享资源(不能在DOS-WIN中用)
(4)NET LOGON
作 用:在WORKGROUP中登陆(不能在DOS-WIN中用)
命令格式:NET LOGON [user [password | ?} [/DOMAIN:name] [/YES] [/SAVEPW:NO]
(5)NET PASSWORD
作 用:更改你的网络登陆口令(不能在DOS-WIN中用)
命令格式:NET PASSWORD computer | /DOMAIN:name [user [oldpassword [newpassword>
Oracle错误信息简介
错误信息的格式是这样的:
"OERR: PFX-NNNNN Error message"
它包含一个简单的错误描述
"PFX-NNNNNN"中:PFX是错误的前缀,NNNNNN是前导为0的错误编号
对错误的描述包含下面的信息:
Error: Oracle的错误前缀和编号
Text: 错误信息的实际文本
-------
Cause: 错误信息文件中的导致错误的原因。
Action: 错误信息文件中的处理错误的方法。
Comment: 错误信息文件中的对错误的解释(可选项)。
少数错误会包含额外的帮助信息。
额外的信息会在错误的文本和描述中
额外的信息可能会显示成这样:
Explanation: 'Support' 错误的解释。
Diagnosis: 'Support' 诊断的步骤。
Articles: 'Support' 列出跟踪错误的相关文档。
通常这些额外的信息都是非常简单的,只能帮助来指示错误,不能完全的解释错误。
注意:
错误信息可能不都是最新的
只会提取该部分的错误信息
装载的错误包括:
ORA Oracle 7 RDBMS错误
DBA SQL*DBA错误
LCC 参数解析错误
IMP Import错误
EXP Export错误
PLS PL/SQL 2.1错误
DBV DB Verify 错误
OBK Oracle Backup/Restore工具
RMAN RMAN错误信息
TNS SQL*Net V2错误
OSD OSD level错误
SQL SQLLIB runtime错误
FRM Oracle Forms错误
REP Oracle Reports错误
CDI Oracle Case Dictionary错误
CGEN Oracle Case Generator(Forms and Reports)
PCC Precompiler错误
思念里的流浪狗
那天晚上跟女朋友分手,从她家里跑出来的时候,他看到一头流浪狗瑟缩在天桥下
面。它全身湿透,样子很可怜。他把它抱了回家。从此以后,他跟狗相依为命。
没有女人的日子,他把他的爱全都放在那头狗身上。它是他唯一的依伴。幸好有它,
他才没有那么孤单。他刚从女朋友家里走出来就碰到它,他深信这是命运的安排。
他把狗照顾得很好。狗健康成长,毛色光亮,活泼俏皮,每个朋友都说他的狗很可
爱,没有人相信它曾经是一头流浪狗。
可是,他自己却没有胖起来。离开女朋友之后,他瘦了整整十二磅。那天晚上,他
和狗一起照镜子,狗愈来愈胖,他愈来愈瘦。为什么会这样?
忽然之间,他明白了。
狗不会瘦,因为它不会思念。
人会瘦,因为他思念别人。
离开那个女人一年多了,他还没有忘记她。睡觉的时候、洗澡的时候、吃饭的时候,
他还是会想起从前的日子。他以为可以不再想她,但是他做不到。他从她家里走了出来,
却没有从她的阴影走出来。
人总是被思念折磨,在思念里做一头可怜的流浪狗。
exp的时候发生"internal heap error 17113"错误
问题描述:
当执行导出的时候,进程dump出一个核心转储文件,并抛出一个错误,记录在日志文件中.
. . exporting table T_ACCT_ENT kgefec: fatal error 0
********** Internal heap ERROR 17113 addr=0x0 *********
or
HEAP DUMP heap name="" desc=0x0
extent sz=0x0 alt=0 het=0 rec=0 flg=0 opc=0
parent=0 owner=0 nex=0 xsz=0x0
Hla: 0
**** Recursive heap error: 17113 addr=0x0, ds=0
./export_tables.sh: 4478 Bus error(coredump)
解决方法:
减少exp命令中设置的缓冲区参数的大小,并重新exp.
另一种方法是在exp中使用直接路径模式,象这样:DIRECT=Y.
分析:
这个错误信息提示导出的时候,写入的数据已经超出了缓冲区.
一些因素会影响这种情况,如行的大小(很大的行可能会引起这种错误)
当缓冲区填满,而数据是作为一个整体单元来写入磁盘的,缓冲区溢出前,这时候就没有足够的I/O空间来执行操作.
缓冲区填满的时候,不会马上溢出缓冲区写数据或减小缓冲区使用空间,只会dump成一个数组,并在完成dump前不会清除.
减少缓冲区大小可以在缓冲区溢出前,写入数组,减少系统负荷.
大型exp操作的时候,发生错误kgefec: fatal error Internal heap ERROR 17113
现象:
导出的时候发生如下错误:
kgefec: fatal error 0
********** Internal heap ERROR 17113 addr=0x0 *********
******************************************************
HEAP DUMP heap name="" desc=0x0
extent sz=0x0 alt=0 het=0 rec=0 flg=0 opc=0
parent=0 owner=0 nex=0 xsz=0x0
Hla: 0
**** Recursive heap error: 17113 addr=0x0, ds=0
Bus error
并且没有日志产生或者0长度日志
原因:
操作系统不能保持Oracle进程
解决方法:
检查操作系统的日志错误.可能是物理内存的问题.
尝试减少exp命令中的缓冲区大小,防止Oracle一次性传送过多的数据.
在某些环境下,增大缓冲区大小,可以让oracle在把数据传送给操作系统前,在缓冲区中保持更多的数据.
尝试在exp命令中使用DIRECT=Y.这个会绕过缓冲区.
如果你运行exp的客户端和数据库端的位长不一样,例如,一个是32位,一个是64位,可能遇到一个bug#2298968.
请你不要太快放弃我
“请你再给我几个月时间,不要太快放弃我。”
听到这句说话,你以为是一个小职员向上司求情,请求上司不要辞退他,又或者是
一个运动员向教练求情。两样都错了,这是一个女人向男朋友求情。
他提出分手,说大家合不来,她哀求他暂时不要放弃她,他始终还是放弃了她。
她很辛苦才度过那段日子,很多年后,她跟另一个男人过着安稳的生活。一天,她
说:“虽然我们当年分开了,但是我知道他会一辈子怀念我。”
她有什么证据证明那个男人会一辈子怀念她?
那就是我和你也有的,愚蠢而天真的自恋。
我们总以为自己会在旧情人的回忆里占着一个位置。即使那段情十分短暂或者不堪
回首,又或者那个人对我们不好,若干年后,我们还是会相信自己在对方的生命里是有
点与别不同的。
我们不一定怀念他,但是他有时候一定会怀念我,而且有些遗憾。
我们能够狠心放弃一个情人,我们永远不能狠下心肠放弃的,是对自己的恭维。
端口号
(更新日期 2006-10-05)
端口号被划分为三个区域:知名端口(Well Known Ports),注册端口(Registered Ports),动态/私有端口(Dynamic and/or Private Ports).
知名端口(Well Known Ports)是从0到1023.
DCCP的知名端口只能在IANA注册之后使用.
注册的过程在[RFC4340],Section 19.9中定义.
注册端口(Registered Ports)从1024到49151
DCCP的注册端口只能在IANA注册之后使用.
注册的过程在[RFC4340],Section 19.9中定义.
动态/私有端口(Dynamic and/or Private Ports)从49152到65535
详细列表在:http://www.iana.org/assignments/port-numbers中是最新版本
Oracle 缺省端口列表
下表包含了Oracle不同产品的缺省端口,例如Oracle Database,Oracle Application Server的默认端口。
更改这些默认端口可以防止简单的数据库攻击,除了端口扫描。在Oracle中经常会发生不能改变默认端口的情况,因为Oracle的端口是硬编码进代码中的。
查看IANA规定的默认端口:http://www.iana.org/assignments/port-numbers
Service | Port | Product | How to change |
| Oracle HTTP Server listen port / Oracle HTTP Server port | 80 | Oracle Application Server | Edit httpd.conf and restart OHS |
| Oracle Internet Directory(non-SSL) | 389 | Oracle Application Server | |
| Oracle HTTP Server SSL port | 443 | Oracle Application Server | Edit httpd.conf and restart OHS |
| Oracle Internet Directory(SSL) | 636 | Oracle Application Server | |
| Oracle Net Listener / Enterprise Manager Repository port | 1521 | Oracle Application Server / Oracle Database | Edit listener.ora and restart listener |
| Oracle Net Listener | 1526 | Oracle Database | Edit listener.ora and restart listener |
| Oracle Names | 1575 | Oracle Database | Edit names.ora and restart names server |
| Oracle Connection Manager (CMAN) | 1630 | Oracle Connection Manager | Edit cman.ora and restart Connection Manager |
| Oracle JDBC for Rdb Thin Server | 1701 | Oracle Rdb | |
| Oracle Intelligent Agent | 1748 | Oracle Application Server | snmp_rw.ora |
| Oracle Intelligent Agent | 1754 | Oracle Application Server | snmp_rw.ora |
| Oracle Intelligent Agent | 1808 | Oracle Application Server | snmp_rw.ora |
| Oracle Intelligent Agent | 1809 | Oracle Application Server | snmp_rw.ora |
| Enterprise Manager Servlet port SSL | 1810 | Oracle Enterprise Manager | |
| Oracle Connection Manager Admin (CMAN) | 1830 | Oracle Connection Manager (CMAN) | Edit cman.ora and restart Connection Manager |
| Enterprise ManagerAgent port | 1831 | Oracle Enterprise Manager | |
| Enterprise Manager RMI port | 1850 | Oracle Enterprise Manager | |
| Oracle XMLDB FTP Port | 2100 | Oracle Database | change dbms_xdb.cfg_update |
| Oracle GIOP IIOP | 2481 | Oracle Database | Edit listener.ora/init.ora and restart listener/database |
| Oracle GIOP IIOP for SSL | 2482 | Oracle Database | Edit listener.ora/init.ora and restart listener/database |
| Oracle OC4J RMI | 3201 | Oracle Application Server |
|
| Oracle OC4J AJP | 3301 | Oracle Application Server |
|
| Enterprise Manager Reporting port | 3339 | Oracle Application Server | Edit oem_webstage/oem.conf and restart OHS |
| Oracle OC4J IIOP | 3401 | Oracle Application Server |
|
| Oracle OC4J IIOPS1 | 3501 | Oracle Application Server |
|
| Oracle OC4J IIOPS2 | 3601 | Oracle Application Server |
|
| Oracle OC4J JMS | 3701 | Oracle Application Server |
|
| Oracle9iAS Web Cache Admin port | 4000 | Oracle Application Server | Webcache Admin GUI or webcache.xml |
| Oracle9iAS Web Cache Invalidation port | 4001 | Oracle Application Server | Webcache Admin GUI or webcache.xml |
| Oracle9iAS Web Cache Statistics port | 4002 | Oracle Application Server | Webcache Admin GUI or webcache.xml |
| Oracle Internet Directory(SSL) | 4031 | Oracle Application Server | |
| Oracle Internet Directory(non-SSL) | 4032 | Oracle Application Server | |
| OracleAS Certificate Authority (OCA) - Server Authentication | 4400 | Oracle Application Server | |
| OracleAS Certificate Authority (OCA) - Mutual Authentication | 4401 | Oracle Application Server | |
| Oracle HTTP Server SSL port | 4443 | Oracle Application Server | Edit httpd.conf and restart OHS |
| Oracle9iAS Web Cache HTTP Listen(SSL) port | 4444 | Oracle Application Server | Webcache Admin GUI or webcache.xml |
| Oracle TimesTen | 4662 | Oracle TimesTen | |
| Oracle TimesTen | 4758 | Oracle TimesTen | |
| Oracle TimesTen | 4759 | Oracle TimesTen | |
| Oracle TimesTen | 4761 | Oracle TimesTen | |
| Oracle TimesTen | 4764 | Oracle TimesTen | |
| Oracle TimesTen | 4766 | Oracle TimesTen | |
| Oracle TimesTen | 4767 | Oracle TimesTen | |
| Oracle Enterprise Manager Web Console | 5500 | Oracle Enterprise Manager Web | |
| iSQLPlus 10g | 5560 | Oracle i*SQLPlus | |
| iSQLPlus 10g | 5580 | Oracle i*SQLPlus RMI Port | |
| Oracle Notification Service request port | 6003 | Oracle Application Server | |
| Oracle Notification Service local port | 6100 | Oracle Application Server | |
| Oracle Notification Service remote port | 6200 | Oracle Application Server | |
| Oracle9iAS Clickstream Collector Agent | 6668 | Oracle Application Server | |
| Java Object Cache port | 7000 | Oracle Application Server | |
| DCM Java Object Cache port | 7100 | Oracle Application Server | |
| Oracle HTTP Server Diagnostic Port | 7200 | Oracle Application Server | |
| Oracle HTTP Server Port Tunneling | 7501 | Oracle Application Server | |
| Oracle HTTP Server listen port / Oracle HTTP Server port | 7777 | Oracle Application Server | Edit httpd.conf and restart OHS |
| Oracle9iAS Web Cache HTTP Listen(non-SSL) port | 7779 | Oracle Application Server | Webcache Admin GUI or webcache.xml |
| Oracle HTTP Server Jserv port | 8007 | Oracle Application Server | |
| Oracle XMLDB HTTP port | 8080 | Oracle Database | change dbms_xdb.cfg_update |
| OC4J Forms / Reports Instance | 8888 | Oracle Developer Suite | |
| OC4J Forms / Reports Instance | 8889 | Oracle Developer Suite | |
| Oracle Forms Server 6 / 6i | 9000 | Oracle Application Server | |
| Oracle SOAP Server | 9998 | Oracle Application Server | |
| OS Agent | 14000 | Oracle Application Server | |
| Oracle Times Ten | 15000 | Oracle Times Ten | |
| Oracle Times Ten | 15002 | Oracle Times Ten | |
| Oracle Times Ten | 15004 | Oracle Times Ten | |
| Log Loader | 44000 | Oracle Enterprise Manager |
oracle常用端口号
Port Number Component
21 Oracle Files - FTP (default value)
110 Oracle Email - POP
119 Oracle Email - NNTP
139 Oracle Files - SMB
389 LDAP (Oracle Internet Directory)
548 Oracle Files - AFP
563 Oracle Email NNTP- SSL
636 Oracle Internet Directory- SSL
995 Oracle Email POP- SSL
1521 Oracle Workflow - TNS
1748 Oracle Enterprise Manager Intelligent Agent
1754 Oracle Enterprise Manager Intelligent Agent
1808 Oracle Enterprise Manager Intelligent Agent
1809 Oracle Enterprise Manager Intelligent Agent
1810 Oracle Enterprise Manager Application Server Service
1811 Oracle Enterprise Manager Application Server Service
1950 Oracle9iAS Reports Services SQL*Net
2049 Oracle Files - NFS (default value)
2070 Oracle9iAS Syndication Server (OSS); To access OSS
3001 Oracle9iAS Containers for J2EE - AJP
3101 Oracle9iAS Containers for J2EE - RMI
3201 Oracle9iAS Containers for J2EE - JMS
3301 Oracle9iAS Containers for J2EE HTTP Listener
4000 Oracle9iAS Web Cache Administration Port
4001 Oracle9iAS Web Cache Invalidation Port
4002 Oracle9iAS Web Cache Statistics
4031 Oracle Internet Directory SSL
4032 Oracle Internet Directory non-SSL
4443 Oracle HTTP Server- SSL, Oracle HTTP Server Listen- SSL, Oracle9iAS Web Cache Listen- SSL
4444 Oracle HTTP Server Listen- SSL if Oracle9iAS Web Cache is installed and configured
5000 Oracle9iAS Single Sign-On
5100 Oracle Email
5730 Oracle Calendar
5731 Oracle Calendar
5732 Oracle Calendar
6003 Oracle HTTP Server- Oracle Notification Service Request Port
6100 Oracle HTTP Server- Oracle Notification Service Local Port
6200 Oracle HTTP Server- Oracle Notification Service Remote Port
6666 Oracle9iAS Clickstream Collector Agent
6675 Oracle9iAS Clickstream Collector Server
6676 Oracle9iAS Clickstream Execution Engine
7000 Oracle HTTP Server Java Object Cache
7771 Oracle Management Server
7772 Oracle Management Server
7773 Oracle Management Server
7777 Oracle HTTP Server- non-SSL, Oracle HTTP Server Listen- non-SSL, Oracle9iAS Web Cache Listen- non-SSL
7778 Oracle HTTP Server Listen- non-SSL if Oracle9iAS Web Cache is installed and configured
8007 Oracle HTTP Server JServ Servlet Engine
9000 Oracle9iAS Wireless PIM Notification Dispatcher
14000 Oracle9iAS Reports Services Visigenics - CORBA
16001 IIOP
53000 range Oracle Files Domain Controller and Nodes
53000 range Oracle Files Main Node
53000 range Oracle Files HTTP Node
利用iptables防火墙保护Oracle数据库
使用如下脚本可以保护运行oracle数据库的linux主机
测试环境:服务器 RHEL AS3u3 +Oracle 10g, 客户端Windows 2000 sp4+Oracle 9i
################oraclefirewall.sh##############################
#!/bin/bash
LC_ADDR=192.168.152.128
LO_ADDR=127.0.0.1
iptables -F
#清除现有的规
iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#设置INPUT和OUTPUT链的默认规则为DROP,既不允许任何包到达本机,也不允许本机向外发包
iptables -A INPUT -p ALL -s $LC_ADDR -d $LC_ADDR -j ACCEPT
iptables -A OUTPUT -p ALL -s $LC_ADDR -d $LC_ADDR -j ACCEPT
iptables -A INPUT -p ALL -s $LO_ADDR -d $LO_ADDR -j ACCEPT
iptables -A OUTPUT -p ALL -s $LO_ADDR -d $LO_ADDR -j ACCEPT
#允许本机和本机联系,必须打开,否则listener无法正常启动
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
#添加规则,允许入站的ssh连接
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1521 -j ACCEPT
#添加规则,允许入站的1521端口的连接,也就是允许其他主机通过监听器访问本机的数据库。
#如果listener监听的不是1521端口,则要做相应的修改
iptables -A INPUT -p tcp --dport 5560 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 5560 -j ACCEPT
#添加规则,允许入站的5560端口的连接,也就是允许其他主机访问本机的isqlplus
iptables -A INPUT -p tcp --dport 5500 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 5500 -j ACCEPT
#添加规则,允许入站的55600端口的连接,也就是允许其他主机访问本机的em
################end of here##############################
人与人的相处,
本来就是这么荒谬
就算两个人在开始时可以很投契
日子久了,本来是一起走在路上
两个人都会变成是有先有后
就算你及时发觉,想停下来等对方
可能他已经拐个弯走了
就因为大家已经有了自己想走的路
人就是这样.............
其实,我多么依恋……
有时候,我们故意装着很冷漠,只是不想让对方知道我们依恋着他。
电话铃声响起,我们明知道是他打来,也故意在心里数十下才拿起电话筒。我不要
他知道我一直坐在电话机旁边等候。拿起电话筒,我们只是装着很平淡的说:
“你找我有事吗?”
其实,我多么依恋你的声音。
见不到你的时候,我整天想着你,好想扑在你怀里。见到面的时候,我只是把两只
手放在身后,规规矩矩的站在你面前。你一定觉得我是个没什么感情的人。
其实,我多么依恋你。
约会之后,分手的时候到了。你送我回家,我根本不想回去。我好想你陪我散步,
也许,散步到天亮也不错。我好想听你说话,好想知道更多关于你的事。然而,当你送
我回来,当你还没说再见的时候,我却抢先跟你说:
“再见。”
没等你转身,我就走了。其实你知不知道当你转身离开的时候,我总会回过头来看
着你的背影?
我多么依恋你的背影。
下一次,当你觉得我很冷漠的时候,你会否明白那是因为我在乎?
男人为什么害怕承诺
男人害怕承诺,是因为他不是太爱那个女人,也是因为他太爱那个女人。
他不是很爱她,所以他吝啬承诺。她说:“答应我,你永远不会爱上别人。”
他不答应,因为他还没爱她爱到那个地步。为她而放弃其他机会,他还舍不得。他
爱她没有深到把她当作生命里最重要的人。男人的承诺是珍贵的,他不会轻易付出。
对着一个他不太爱的女人,他不愿意承诺,对着他深爱的女人,他却无法承诺。
他太爱她了,他很想承诺,却又害怕被束缚。一旦被束缚,也许他不会再像以前那
么爱她。
他太爱她了,他很想承诺,却害怕做不到的时候会让她伤心。
他太爱她了,他很想承诺,但是一旦承诺了,就代表他要放弃其他幻想,也代表他
要改变自己的生活。他不禁怀疑,她是爱他这个人还是爱他的承诺。如果他不肯承诺,
也许她就不爱他。
如果他深爱一个女人,有没有承诺根本是没有分别的。即使没有承诺,他过的日子
也像跟她有承诺一般。男人骗女人容易,骗自己难。他是一个有责任感的人。才会害怕
承诺,他知道人要为自己的承诺负责。有些男人随便承诺,因为他们没想过要负责。
承诺本来就是男人与女人的一场角力,有时皆大欢喜,大部分情况却是两败俱伤。
pins/gets的区别
当对象位于library cache中的时候,会话维护在对象上的一个null模式的lock来记住对象的位置.
当会话需要使用对象的时候,对象上已经有了一个library cache lock,这时候就会继续申请一个pin请求.
如果对象上没有锁,就会在pin之前施加一个lock.
这里可以了解到library cache对象的句柄和library cache对象内存堆的不同.Locks保护对象句柄.Pins保护对象内存堆.
当需要装载对象的时候,对象内存堆是对象的"身体",0号内存堆(也就是句柄)包含了识别对象的信息.当我们说对象aged out,然后重装载,它的实际意义是除了0号内存堆以外的堆.当会话在对象的句柄上占有锁的时候,0号堆是不会aged out的.
get会尝试定位一个在library cache中的对象.如果没有找到,就装载.
对象的定义也会从数据字典中装载到dictionary cache.
游标也在分析语句的时候装载.
pin会尝试定位以前在library cache中已经装载的对象.如果已经aged out,就重装载.
检查对象依赖性的脚本
这个脚本列出了某个对象是如何依赖于其他对象的,并可以列出是否递归的依赖于其他对象
Oracle提供了一个脚本$ORACLE_HOMErdbmsadminutldtree.sql,这个脚本既可以递归的列出该对象所依赖的其他对象,也可以列出依赖于该对象的其他对象
这个工具的用法在脚本中有描述,下面说一个简单的应用实例
先连上你需要分析依赖性的用户下
SQL> connect test/test
第一次运行这个会产生一些过程,视图和表
SQL> @rdeptree.sql
然后你必须调用一个过程rdeptree_fill,使依赖于该对象的其他对象的信息写入到一个临时表.
rdeptree_fill这个过程有三个参数 :
type - 需要分析的对象的类型(和dba_objects视图中的object_type类型一致)
schema - 需要分析的对象所属的schema
name - 需要分析的对象的名称
下面是一个存储一个过程TEST.P1的案例:
SQL> exec rdeptree_fill('PROCEDURE', 'TEST', 'P1');
PL/SQL procedure successfully completed.
下面用一个查询得到依赖关系
SQL> select * from irdeptree;
DEPENDENCIES
--------------------------------------------------------------------------------
PROCEDURE TEST.P1
PACKAGE SYS.STANDARD
VIEW TEST.V1
TABLE TEST.T1
PACKAGE SYS.STANDARD
PACKAGE SYS.SYS_STUB_FOR_PURITY_ANALYSIS
6 rows selected.
你现在可以看到所有依赖于TEST.P1的对象.
TEST.P1依赖于视图TEST.V1. 这个视图依赖于表TEST.T1.
只要下面所属的对象失效,那么TEST.P1也会失效.
当然你也可能看见输出中有<no permission>.这个代表你在依赖的对象上没有权限,所以你不能获得依赖对象的名字
然后可以继续用rdeptree_fill来存储其他对象的依赖关系
$ORACLE_HOMErdbmsadminutldtree.sql脚本示例
Rem
Rem NAME
Rem rdeptree.sql - Show objects which a given object is recursively
Rem dependent on
Rem DESCRIPTION
Rem This procedure, view and temp table will allow you to see all
Rem objects that a given object recursively depends on.
Rem Note: you will only see objects for which you have permission.
Rem Examples:
Rem execute rdeptree_fill('procedure', 'scott', 'billing');
Rem select * from rdeptree order by seq#;
Rem
Rem execute rdeptree_fill('table', 'scott', 'emp');
Rem select * from rdeptree order by seq#;
Rem
Rem execute rdeptree_fill('package body', 'scott', 'accts_payable');
Rem select * from rdeptree order by seq#;
Rem
Rem A better way to display this information than:
Rem select * from rdeptree order by seq#;
Rem is
Rem select * from irdeptree;
Rem
Rem This shows the dependency relationship via indenting. Notice
Rem that no order by clause is needed with ideptree.
Rem RETURNS
Rem
Rem NOTES
Rem Run this script once for each schema that needs this utility.
drop sequence rdeptree_seq
/
create sequence rdeptree_seq cache 200 /* cache 200 to make sequence faster */
/
drop table rdeptree_temptab
/
create table rdeptree_temptab
(
object_id number,
referenced_object_id number,
nest_level number,
seq# number
)
/
create or replace procedure rdeptree_fill (type char, schema char, name char) is
obj_id number;
begin
delete from rdeptree_temptab;
commit;
select object_id into obj_id from all_objects
where owner = upper(rdeptree_fill.schema)
and object_name = upper(rdeptree_fill.name)
and object_type = upper(rdeptree_fill.type);
insert into rdeptree_temptab
values(0, obj_id, 0, 0);
insert into rdeptree_temptab
select object_id, referenced_object_id,
level, rdeptree_seq.nextval
from public_dependency
connect by object_id = prior referenced_object_id
start with object_id = rdeptree_fill.obj_id;
exception
when no_data_found then
raise_application_error(-20000, 'ORU-10013: ' ||
type || ' ' || schema || '.' || name || ' was not found.');
end;
/
drop view rdeptree
/
set echo on
set echo off
create view rdeptree
(nested_level, type, schema, name, seq#)
as
select d.nest_level, o.object_type, o.owner, o.object_name, d.seq#
from rdeptree_temptab d, all_objects o
where d.referenced_object_id = o.object_id (+)
/
drop view irdeptree
/
create view irdeptree (dependencies)
as
select lpad(' ',3*(max(nested_level))) || max(nvl(type, '<no permission>')
|| ' ' || schema || decode(type, NULL, '', '.') || name)
from rdeptree
group by seq# /* So user can omit sort-by when selecting from ideptree */
/
如何找到引起LIBRARY CACHE LOCK的会话
当你的会话挂起,等待'Library cache lock'这个事件的时候,需要找到是哪个会话锁住了你等待的对象
通常情况:
* 一个DML操作会挂起,因为表结构正在被修改(ALTER TABLE),这可能会需要很长时间,时间取决于表的大小以及修改的类型(如: ALTER TABLE x MODIFY (col1 CHAR(200) on thousands of records).
* 编译一个包的时候也可能被挂起,等待Library Cache Lock或Library Cache Pin事件.如果一些用户正在使用一些包里的过程或函数就可能出现这种情况.
第一种情况中,V$LOCK视图中会显示使用'ALTER TABLE'的会话在对象上所产生的锁.等待的会话不会在V$LOCK视图中出现,所以对于很多并发会话的环境中V$LOCK不能提供足够的信息来判断是谁阻碍了你的操作.
方法1: 系统状态分析
------------------------------
一种找到使你会话挂起的方法是分析系统dump出来的文件.
用系统状态事件可以创建一个trace文件包括了系统每个进程的信息.这些信息包括了所有占用资源,和请求资源的进程.
当操作挂起的时候,打开一个新的会话,使用下面的语句:
ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 10';
Oracle现在将会建立一个系统状态的trace文件,默认在你的USER_DUMP_DEST目录下.
得到挂起进程的PID (ProcessID),从V$PROCESS中查询PADDR等于V$SESSION中的ADDR:
SELECT PID FROM V$PROCESS WHERE ADDR=
(SELECT PADDR FROM V$SESSION WHERE SID=sid_of_hanging_session);
这个dump文件中,每个进程都是单独的一个部分.
打开trace文件,搜索'PROCESS pid_from_select_stmt'.
在这个进程部分,搜索'waiting for',看等待事件.
如:
PROCESS 8:
----------------------------------------
SO: 50050b08, type: 1, owner: 0, flag: INIT/-/-/0x00
(process) Oracle pid=8, calls cur/top: 5007bf6c/5007bf6c, flag: (0) -
int error: 0, call error: 0, sess error: 0, txn error 0
(post info) last post received: 82 0 4
last post received-location: kslpsr
last process to post me: 5004ff08 1 2
last post sent: 0 0 13
last post sent-location: ksasnd
last process posted by me: 5004ff08 1 2
(latch info) wait_event=0 bits=0
Process Group: DEFAULT, pseudo proc: 50058ac4
O/S info: user: daemon, term: pts/1, ospid: 15161
OSD pid info: 15161
----------------------------------------
SO: 5005f294, type: 3, owner: 50050b08, flag: INIT/-/-/0x00
(session) trans: 0, creator: 50050b08, flag: (41) USR/- BSY/-/-/-/-/-
DID: 0001-0008-00000002, short-term DID: 0000-0000-00000000
txn branch: 0
oct: 6, prv: 0, user: 41/LC
O/S info: user: daemon, term: pts/1, ospid: 15160, machine: goblin.forgotten.realms
program: sqlplus@goblin.forgotten.realms (TNS V1-V3)
application name: SQL*Plus, hash value=3669949024
waiting for 'library cache lock' blocking sess=0x0 seq=253 wait_time=0
!看这里>> handle address=5023ef9c, lock address=5019cad4, 10*mode+namespace=15
使用'handle address'你可以找到一直占用你资源的进程.
然后还是在这个文件中搜索这个这个address.
如:
PROCESS 9:
----------------------------------------
SO: 50050e08, type: 1, owner: 0, flag: INIT/-/-/0x00
(process) Oracle pid=9, calls cur/top: 5007bbac/5007bbfc, flag: (0) -
int error: 0, call error: 0, sess error: 0, txn error 0
<cut> ....
----------------------------------------
SO: 5019d5e4, type: 34, owner: 5015f65c, flag: INIT/-/-/0x00
!看这里>> LIBRARY OBJECT PIN: pin=5019d5e4 handle=5023ef9c mode=X lock=0
user=5005fad4 session=5005fad4 count=1 mask=0511 savepoint=118218 flags=[00]
从这里我们可以看到,是PID为9的oracle进程在我们需要的对象上有个独占锁.
使用V$PROCESS和V$SESSION我们就可以得到这个进程的sid,user,terminal,program,...
这个会话使用的语句也会在trace文件中得到.(语句和其他library cache的对象在'name='之前可以找到).
方法2: 检查X$KGLLK表
-----------------------------------
X$KGLLK表 (只能由SYS/INTERNAL来访问)包括了所有会话在library中对象上锁(包括正占用的,以及在请求的),这个比V$LOCK更完全详细,但是这个的列名通常很难明白其含义.
你可以检查等待的会话中正在请求的锁(或已经占用的锁),当然你要先得到会话的地址,V$SESSION中的SADDR,然后用这个查询:
select * from x$kgllk where KGLLKSES = 'saddr_from_v$session'
这将会显示这个会话中所占用的所有锁.
KGLNAOBJ这个字段包含了对象的名称的前80个字符.
KGLLKHDL字段和方法1中对象的'handle address'是一致的.
你可以看到这个会话中至少有一个锁的KGLLKREQ > 0
这个字段代表是这个锁的请求(所以,这个会话是一直在等待的状态).
如果我们匹配KGLLKHDL字段到X$KGLLK表中其他会话
我们可以得到一个KGLLKREQ=0的会话,代表这个会话正占用这个锁
SELECT * FROM X$KGLLK LOCK_A
WHERE KGLLKREQ = 0
AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
WHERE KGLLKSES = 'saddr_from_v$session' /* 被阻止的会话*/
AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
AND KGLLKREQ > 0);
进一步,我们可以匹配KGLLKSES字段和v$session中的SADDR字段,得到被阻止的会话的更多的信息:
SELECT SID,USERNAME,TERMINAL,PROGRAM FROM V$SESSION
WHERE SADDR in
(SELECT KGLLKSES FROM X$KGLLK LOCK_A
WHERE KGLLKREQ = 0
AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
WHERE KGLLKSES = 'saddr_from_v$session' /*被阻止的会话 */
AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
AND KGLLKREQ > 0)
);
用同样的方法,我们可以得到所有被阻止的会话:
SELECT SID,USERNAME,TERMINAL,PROGRAM FROM V$SESSION
WHERE SADDR in
(SELECT KGLLKSES FROM X$KGLLK LOCK_A
WHERE KGLLKREQ > 0
AND EXISTS (SELECT LOCK_B.KGLLKHDL FROM X$KGLLK LOCK_B
WHERE KGLLKSES = 'saddr_from_v$session' /* BLOCKING SESSION */
AND LOCK_A.KGLLKHDL = LOCK_B.KGLLKHDL
AND KGLLKREQ = 0)
);
Library cache pins
Library cache pins是用来管理library cache并发性的
Pin中一个对象会引起分配内存堆并载入(如果没有装载的话).
PINS能得到NULL,SHARE或EXCLUSIVE模式的锁
一个等待"library cache pin"的事件,意味着其他的会话正以非兼容模式占用这个PIN
P1 = Handle地址
P2 = Pin地址
P3 = 编码模式和命名空间
·Handle地址
建议使用P1RAW而不用P1
等待的会话中所想获得pin的library cache对象的handle地址.
查找library cache对象
用这个查询得到等待的对象
SELECT kglnaown "Owner", kglnaobj "Object"
FROM x$kglob
WHERE kglhdadr='&P1RAW'
;
·Pin地址
建议使用P2RAW而不用P2
这个是PIN本身的地址
·编码模式和命名空间
在Oracle 7.0 - 8.1.7中包含的值是10*Mode+Namespace.
在Oracle 9.0 - 9.2中包含的值是100*Mode+Namespace.
Where:
Mode是pin所需要的模式
2 - Share mode
3 - Exclusive mode
Namespace是library cache中对象在命名空间的编号
0 SQL Area
1 Table / Procedure / Function / Package Header
2 Package Body
3 Trigger
4 Index
5 Cluster
6 Object
7 Pipe
13 Java Source
14 Java Resource
32 Java Data
不常见的library cache lock问题
a. 当share pool太小的时候,可能会报ORA-4021错误
b. 使用dbms_utility.compile_schema的时候出现ORA-4021错误.如果一个或多个要编译的对象,被前一个compile_schema中同一个PLSQL块调用执行,会出现ORA-4021错误
c. 当修改PL/SQL对象的时候,如果客户有个'library cache pin'的锁在同一个对象上,会发生ORA-4021错误
library cache lock的通常情况
如果使用DBMS_SQL中的'execute immediate'来执行DDL操作,必须确认你DDL操作不会影响到当前使用的或直接依赖的对象.
如:对一个正在执行的过程授权会引起死锁
在一个正在使用的对象上使用DDL也会出错
如:长时间运行一个包的时候,你来重建这个包,就会引起超时
不同类型的操作所需要的不同类型的lock/pin
所有的DDL操作都会在需要处理的对象上放一个Exclusive(排他)类型的Lock和Pin
如:重编译,截断表,给对象授权,等等
所有对对象的使用都需要一个null类型lock和shared类型的pin:
如:使用视图,执行过程,等等
这也应用于对象所有依赖的对象
如:一个依赖于其他视图的视图,一个依赖于其他包的包
DDL游标需要一个null类型的lock(用来在library cache中定位作业)和一个exclusive类型的pin(仅仅当执行的时候加上)
查询和DML游标需要一个null类型的lock和一个shared类型的pin(仅仅当执行的时候加上)
locks/pins会在SQL语句期间一直保持,直到结束才释放.
你会否不再需要我?
男人问:“你会不会有一天不再需要我?”
这个问题谁能老实地回答呢?
沉溺在恋爱中的人总是害怕有一天不再被需要;被需要的总比需要对方的那一个更
有选择权,他可以随时随地说:
“我不再需要你了。”
那么需要另一个人,其实是可怜的。有一个永恒的真理这样说——没有任何人是不
可以被取代的。你曾经很需要一个人,他走了,伤尽了你的心,最后,你还是要独自爬
起来,因为有很多人需要你,譬如你的家人。
太需要对方,你就变成被动,时刻等待他的慰藉,其至有一天爱到失仪,不停的追
问:
“什么时候可以见面?”
被需要的那个,反而可以潇洒地说。
“今天不行,明天也不行,你别这样嘛,你也应该有你自己的生活。”
被需要的那一个,高高在上。只是,有一天,她也许不再被需要。他变了,他需要
的东西不同了,也不再像以前那么需要她,他不再失仪。这一次,轮到她担心,问他:
“你是不是不再需要我?”
哪个男人能老实地回答这个问题呢?
想起自己曾经那样沉溺地需要一个人,我们毕竟有点惭愧。
什么样的对象会lock在dictionary cache中呢?
下面这些对象都可能被lock在library cache中
(Oracle8i).
- CURSOR
- INDEX
- TABLE
- CLUSTER
- VIEW
- SYNONYM
- SEQUENCE
- PROCEDURE
- FUNCTION
- PACKAGE
- PACKAGE BODY
- TRIGGER
- TYPE
- TYPE BODY
- OBJECT
- USER
- DBLINK
- PIPE
- TABLE PARTITION
- INDEX PARTITION
- LOB
- LIBRARY
- DIRECTORY
- QUEUE
- INDEX-ORGANIZED TABLE
- REPLICATION OBJECT GROUP
- REPLICATION PROPAGATOR
发生ORA-4021的分析
当语句发生ORA-4021的时候,会有5分钟的超时时间,我们利用这时间来诊断错误:
先要运行这个脚本"catblock.sql" .
$ORACLE_HOME/rdbms/admin/catblock.sql
再运行这个
select /*+ ordered */ w1.sid waiting_session,
h1.sid holding_session,
w.kgllktype lock_or_pin,
w.kgllkhdl address,
decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
'Unknown') mode_held,
decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
'Unknown') mode_requested
from dba_kgllock w, dba_kgllock h, v$session w1, v$session h1
where
(((h.kgllkmod != 0) and (h.kgllkmod != 1)
and ((h.kgllkreq = 0) or (h.kgllkreq = 1)))
and
(((w.kgllkmod = 0) or (w.kgllkmod= 1))
and ((w.kgllkreq != 0) and (w.kgllkreq != 1))))
and w.kgllktype = h.kgllktype
and w.kgllkhdl = h.kgllkhdl
and w.kgllkuse = w1.saddr
and h.kgllkuse = h1.saddr
/
结果是象这样的:
WAITING_SESSION HOLDING_SESSION LOCK ADDRESS MODE_HELD MODE_REQU
--------------- --------------- ---- ------- --------- ---------
16 12 Pin 03FA2270 Share Exclusive
被锁的对象我们可以在v$object_dependency中找到,或者在ORA-4021的错误信息中找到
就象这样
select to_name from v$object_dependency where to_address = '03FA2270';
结果是:
TO_NAME
-------------
DBMS_PIPE
你可以找到某个library中的对象是被哪些会话用到的用下面的查询:
a. 查询某个已经被阻止使用资源(由于已经被占用)的会话下的:
select distinct kglnaobj from x$kgllk where
kgllkuse in (select saddr from v$session where sid = 16);
这里的16是从上面查询中的WAITING_SESSION得到的
b. 查询某个正在占用资源的会话下的
select distinct kglnaobj from x$kgllk where
kgllkuse in (select saddr from v$session where sid = 12);
这里的12是从上面查询中的HOLDING_SESSION得到的
这些返回的对象可以为每个会话的游标或者是语句
你也要使用$ORACLE_HOME/rdbms/admin/utldtree.sql这个脚本工具来查找依赖树,来获得是依赖于哪些对象的.例如:DBMS_PIPE,会话中会有语句用到它.
这里有几个视图可以检测pin/locks
DBA_KGLLOCK : 实例中每个lock/pin
-KGLLKUSE 会话地址
-KGLLKHDL Pin/Lock的handle
-KGLLKMOD/KGLLKREQ Holding/Requested模式(可以查看请求数)
0 没有lock/pin
1 null模式
2 share模式
3 exclusive模式
-KGLLKTYPE Pin/Lock类型
(通过这个脚本创建 $ORACLE_HOME/rdbms/admin/catblock.sql)
V$ACCESS : 由用户锁住的对象
-SID 会话的sid
-OWNER 用户名
-OBJECT 对象名
-TYPE 对象类型
V$DB_OBJECT_CACHE : 在library cache中的对象
-OWNER 对象的模式名
-NAME 对象名称或游标文本
-TYPE 对象类型
-LOCKS 这个对象有多少个lock
-PINS 这个对象有多少个pins
DBA_DDL_LOCKS : 被locked的对象(游标除外)
-SESSION_ID 会话ID
-OWNER 用户名
-NAME 对象名
-TYPE 类型
-MODE_HELD
-MODE_REQUESTED
V$SESSION_WAIT : 某个会话等待哪些会话的lock/pin
-p1 = 对象地址
-p2 = lock/pin的地址
library cache的锁机制
这里我们讨论一下library cache locks和library cache pins以及如何分析
Oracle使用两种数据结构来进行shared pool的并发控制:Lock和Pin
Lock比pin具有更高的级别
Lock在handle上获得,在Pin一个对象之前,必须首先获得该handle的Lock
Lock主要有三种模式:Null,Share,Exclusive
在读取访问对象时,通常需要获取Null(空)模式以及Share(共享)模式的Lock
在修改对象时,需要获得Exclusive(排他)Lock
在Lock了Library Cache的对象以后,一个进程在访问之前必须Pin该对象
同样Pin有三种模式,Null,Shared和Exclusive
只读模式时获得共享Pin
修改模式获得排他Pin
一个实例中的Library Cache包括了不同类型对象的描述,如:游标,索引,表,视图,过程,等等.
这些对象不能在他们被使用的时候改变,他们在被使用的时候会被一种library locks and pins的机制锁住.
一个会话中,需要使用一个对象,会在该对象上先得到一个library lock(null, shared or exclusive模式的),这是为了,防止其他会话也访问这个对象(例如:重编译一个包或视图的时候,会加上exclusive类型的锁)或更改对象的定义.
如果会话想更改或查看对象,那么就必须在加lock后加上pin(null, shared or exclusive模式的)
locks/pins会在SQL语句期间一直保持,在结束的时候才释放
每个被SQL语句使用/修改的对象会一直保持locked或pinned,其他的请求会等待'library cache pin'或'library cache lock'事件,直到超时.
超时,通常发生在5分钟后,然后SQL语句会出现ORA-4021的错误.如果发现死锁,则会出现ORA-4020错误
ORA-04021 timeout occurred while waiting to lock object %s%s%s%s%s".
Cause: While trying to lock a library object, a time-out occurred.
Action: Retry the operation later.
ORA-04020 deadlock detected while trying to lock object %s%s%s%s%s
Cause: While trying to lock a library object, a deadlock is detected.
Action: Retry the operation later.
在对象失效后,第一次访问对象的时候会重编译对象.当其他会话已经pinned这个对象到library cache中就可能会产生问题.这种情况在有多个活跃的用户和有复杂的依赖关系下出现.
编译PACKAGE的时候挂起,查找占用对象的脚本
编译PACKAGE的时候挂起,等待LIBRARY CACHE LOCK 或 LIBRARY CACHE PIN事件
运行这个脚本之前,必须确认你的编辑器,对空格,tab,回车等等字符的转义正确,否则创建的过程不能正确运行
Oracle在语法分析和编译,包/过程/函数/视图的时候需要Library Cache Lock以及Library Cache Pin,来保正没有人在语法分析和编译的时候使用对象.
如我们在改变对象定义,删除对象,重建对象,的时候都会需要锁.但此时其他用户正在使用,就会造成会话挂起.
这里有一个脚本,查看那些用户在使用对象,以便kill掉后再编译
使用示例:
SQL> Connect SYS
password:
SQL> set serveroutput on
SQl> exec who_is_using('my_funct%');
(14) - WEBUSER
PL/SQL procedure successfully completed.
'my_funct%' 是一个存储过程的名字.这个参数可以接受象LIKE子句那样的查询.
(14) 是会话的ID.在v$session中的SID字段可查到
WEBUSER 是正在使用这个存储过程的用户
源代码:
这个过程必须在SYS schema中创建
create or replace procedure who_is_using wrapped
0
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
200f000
1
4
0
1e
c WHO_IS_USING:
8 OBJ_NAME:
8 VARCHAR2:
b DBMS_OUTPUT:
6 ENABLE:
7 1000000:
1 I:
1 B:
8 USERNAME:
3 SID:
3 SYS:
7 X$KGLPN:
1 A:
9 V$SESSION:
7 X$KGLOB:
1 C:
8 KGLPNUSE:
1 =:
5 SADDR:
5 UPPER:
8 KGLNAOBJ:
4 LIKE:
8 KGLPNHDL:
8 KGLHDADR:
4 LOOP:
8 PUT_LINE:
1 (:
2 ||:
7 TO_CHAR:
4 ) - :
0
0
0
74
2
0 1d 9a 8f a0 b0 3d b4
55 6a :2 a0 6b 51 a5 57 91
:2 a0 6b :2 a0 6b ac :2 a0 6b a0
b9 :2 a0 b9 :2 a0 6b a0 b9 b2
ee :2 a0 6b a0 7e a0 6b b4
2e :3 a0 6b a5 b 7e :2 a0 a5
b b4 2e a 10 :2 a0 6b a0
7e a0 6b b4 2e a 10 ac
d0 e5 e9 37 :3 a0 6b 6e 7e
:3 a0 6b a5 b b4 2e 7e 6e
b4 2e 7e :2 a0 6b b4 2e a5
57 b7 a0 47 b7 a4 b1 11
68 4f 17 b5
74
2
0 3 4 19 15 14 20 13
25 29 2d 31 35 38 3b 3c
41 45 49 4d 50 54 58 5b
5c 60 64 67 11 6b 6f 73
75 79 7d 80 84 86 87 8e
92 96 99 9d a0 a4 a7 a8
ad b1 b5 b9 bc bd bf c2
c6 ca cb cd ce 1 d3 d8
dc e0 e3 e7 ea ee f1 f2
1 f7 fc fd 101 106 10b 10d
111 115 119 11c 120 123 127 12b
12f 132 133 135 136 13b 13e 142
143 148 14b 14f 153 156 157 15c
15d 162 164 168 16f 171 175 177
182 186 188 18f
74
2
0 1 b 18 21 :2 18 17 :2 1
2 :2 e 15 :2 2 6 1c :2 1e 27
:2 29 1c 11 15 11 1d 11 1f
29 1f 2b 2f 2b 37 2b c
11 12 :2 14 1f 1d :2 21 :2 1d 12
18 :2 1a :3 12 2a 30 :2 2a :5 12 :2 14
1f 1d :2 21 :2 1d :2 12 :4 c 2 2b
3 :2 f 18 1b 1d 25 :2 27 :2 1d
:2 18 2b 2d :2 18 33 35 :2 37 :2 18
:2 3 2b 6 2 :8 1
74
2
0 :9 1 :6 3 :8 4 :f 5 :9 6 :d 7 :2 6
:9 8 :2 6 5 :4 4 8 :19 9 8 a
4 :2 2 :6 1
191
2
:4 0 1 :a 0 70 1 1a 1b 5
:2 3 :3 0 2 :6 0 5 4 :3 0 7
:2 0 70 2 8 :2 0 4 :3 0 5
:3 0 a b 0 6 :2 0 7 c
e :2 0 6c 7 :3 0 8 :3 0 9
:3 0 11 12 0 8 :3 0 a :3 0
14 15 0 9 b :3 0 c :3 0
18 19 0 d :3 0 e :3 0 8
:3 0 1d 1e b :3 0 f :3 0 20
21 0 10 :3 0 22 23 c 25
49 0 4a :3 0 d :3 0 11 :3 0
27 28 0 8 :3 0 12 :2 0 13
:3 0 2a 2c 0 12 2b 2e :3 0
14 :3 0 10 :3 0 15 :3 0 31 32
0 10 30 34 16 :2 0 14 :3 0
2 :3 0 15 37 39 17 36 3b
:3 0 2f 3d 3c :2 0 d :3 0 17
:3 0 3f 40 0 10 :3 0 12 :2 0
18 :3 0 42 44 0 1c 43 46
:3 0 3e 48 47 :3 0 2 17 26
0 4b :5 0 4c :2 0 4e 10 4d
19 :3 0 4 :3 0 1a :3 0 50 51
0 1b :3 0 1c :2 0 1d :3 0 7
:3 0 a :3 0 56 57 0 1a 55
59 1f 54 5b :3 0 1c :2 0 1e
:3 0 22 5d 5f :3 0 1c :2 0 7
:3 0 9 :3 0 62 63 0 25 61
65 :3 0 28 52 67 :2 0 69 2a
6b 19 :3 0 4e 69 :4 0 6c 2c
6f :3 0 6f 0 6f 6e 6c 6d
:6 0 70 0 2 8 6f 72 :2 0
1 70 73 :6 0
2f
2
:3 0 1 3 1 6 1 d 2
13 16 3 1c 1f 24 1 33
2 29 2d 1 38 2 35 3a
1 58 2 41 45 2 53 5a
2 5c 5e 2 60 64 1 66
1 68 2 f 6b
1
4
0
72
0
1
14
2
3
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0
2 0 1
3 1 0
10 2 0
0
/
你会爱我多久?
女人问男人:“你会爱我多久?”
男人说:“永远。”
什么是永远?已经愈来愈少人说永远了。我们能够爱一个人比他的生命更长久,却
不可能比自己的生命更长久。我们爱的人死了,我们仍然能够永远爱他,但是只能够爱
到我们自己生命终结的时候。
世上当然有所谓永远,科学家说,世界末日会在六十亿年后来临,那个时候。太阳
进入晚年期,它里面的氢氦核燃料用尽,太阳就会膨胀成一颗巨大的红星,外围的火焰
延伸至地球轨迹的边缘,太阳系内的水星、金星和地球将会葬身于一片火海之中,地面
上一切的生命亦随之灰飞湮灭。
我会爱你多久,如果我说永远,那是骗你的,永远即是六十亿年后,我和你都不可
能待到那一天。
什么都有用完的一天,太阳会用完,空气会用完,燃料会用完,精力会用完。耐性
会用完,斗志会用完,爱情又凭什么不会用完?
当爱情用完了,一切也会随之灰飞湮灭,半点不留痕。那个时候,你还会不会记得
你曾经问我:“你会爱我多久?”
我会爱你比你的生命长久,但无法爱你比我自己的生命长久一些。
ORACLE 9I FOR AIX 5L 的安装文档
第一节:安装
注意:因为ORACLE 9I为64位,所以安装的AIX平台也必须是64位。如果不是必须要重新安装或使用连接库函数将其改为64位
To change to 64 bit multi-processor mode:
# ln -sf /usr/lib/boot/unix_64 /unix
# ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
# bosboot -ad /dev/ipldevice
# shutdown -r
一、确认系统环境
1、主机环境
机型:IBM P630
CPU :1000MHz
MEM :1G (MIN 512M)
$ /usr/sbin/lsattr -E -l sys0 -a realmem
realmem 12582912 Amount of usable physical memory in Kbytes False
/tmp:1000M (MIN 500M)
$df -k /tmp
Filesystem 1024-blocks Free %Used Iused %Iused Mounted on
/dev/hd3 655360 603088 8% 69 1% /tmp
SWAP:6G (一般是2倍于MEM,但因为我们的内存已经很大了,所以没有按一般规则)
$ /usr/sbin/lsps -a
Page Space Physical Volume Volume
Group Size %Used Active Auto Type
hd6 hdisk0 rootvg 6144MB 1 yes yes
lv
/oracle:38G (MIN 3.5G,本目录用于安装软件、存放source以及oracle9用户的根目录所在)
$ df -k /oracle
Filesystem 1024-blocks Free %Used Iused %Iused Mounted on
/dev/oracle 38010880 28495268 26% 64272 1% /oracle
2、操作系统环境
OS情况:AIX 5L 64bit and 64-bit kernel mode,主机名ERP01
$ uname -a
AIX hawk3 1 5 000BD81A4C00
查看cup位数
hawk3:/#bootinfo -y
64
查看内核位数
hawk3:/#bootinfo -K
64
OS PATCH:
Oracle要求PATCH:IY22854,IY26778,IY28766,IY28949,IY29965,IY30150等俱全.
可以使用下面的命令来检查所需PATCH,如:
#/usr/sbin/instfix -a -ivk IY22854
有X-window,单独安装的32bit JAVA Version1.3.1,你可以从这里download:
http://www.ibm.com/developerworks/java/jdk/aix/index.html
3、Oracle版本
Oracle Version 9.2.0.1.0,如果你没有oracle介质,也可以从这里download:
http://otn.oracle.com/software/products/oracle9i/htdocs/aix5lsoft.html
通常的习惯都是将文件复制到硬盘上,使用gunzip和cpio –idcmv 解压解包。
1。到ibm网站下载jdk1.3.1 for aix ,同时注意要下载jdk1.3.1的liences,用tar命令解包将两个文件放在同一目录下。
http://www.ibm.com/developerworks/java/jdk/index.html
2。使用smitty installp 安装,选择jdk1.3.1和jdk1.3.1 license两个文件包
注意 Preview new LICENSE agreements? 要选择 yes 否则安装时会有错误
3。由于在安装过程中提示 bos.rte.libc 版本需要update 到ibm网站下载更新包 https://techsupport.services.ibm.com/server/aix.fixsearch51
其他更新包也可下载.
4.安装下载的5个更新包,重新安装jdk
5.修改/etc/environment path 改为 /usr/jdk13 重新login
java -version 查看目前的java版本
二、具体安装步骤:
1、用root用户完成下面的操作
添加oracle用户和组:
你可以使用命令或smit来完成,我一般都是只创建dba组。
创建相关目录,并更改相应权限等。
2、设置环境变量
设置以下环境变量到oracle用户的.profile中:
# Oracle Environment
ORACLE_BASE=/oracle/app; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.0; export ORACLE_HOME
ORACLE_SID=ora9; export ORACLE_SID
ORACLE_TERM=vt100; export ORACLE_TERM
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
NLS_LANG=american_america.zhs16cgb231280; export NLS_LANG
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH
LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib ;export LIBPATH
ORA_DB=$ORACLE_HOME/dbs;export ORA_DB
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:
$ORACLE_HOME/rdbms/jlib; export CLASSPATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
手工设置DISPLAY到本地:
export DISPLAY=10.16.98.16:0.0
3、开始安装
在运行runInstaller后会提示以root运行rootpre.sh,之后选y,进行正常安装;
建议“Installation Types”选择custom方式,这样可以选择安装组件;
安装过程一般不选择创建数据库,这个可以等安装完成后单独完成;
之后会有提示运行orainstRoot.sh脚本,到link要结束的时候会提示运行root.sh,按要求完成即可。
第二节:建库
建库过程很简单,不再赘述。下面是手工建库的几个脚本:
run1.sh
=====================================================================
#!/bin/sh
ORACLE_SID=ora9
export ORACLE_SID
/oracle/app/oracle/product/9.2.0/bin/sqlplus '/as sysdba' << EOF
spool /oracle/oracle9/crdb1/run1.log
startup nomount pfile="/oracle/app/oracle/product/9.2.0/dbs/initora9.ora"
CREATE DATABASE ora9
CONTROLFILE REUSE
MAXDATAFILES 254
MAXINSTANCES 8
MAXLOGHISTORY 100
MAXLOGMEMBERS 3
MAXLOGFILES 16
DATAFILE '/dev/rsystem' SIZE 1190M
REUSE AUTOEXTEND OFF
default temporary tablespace temp tempfile
'/dev/rtemp' size 20400M reuse autoextend off
UNDO TABLESPACE "UNDOTBS1" DATAFILE
'/dev/rundo1' SIZE 10200M REUSE AUTOEXTEND OFF
CHARACTER SET ZHS16CGB231280
LOGFILE GROUP 1 ('/dev/rredo11') SIZE 150M REUSE,
GROUP 2 ('/dev/rredo12') SIZE 150M REUSE;
disconnect
spool off
exit
EOF
=====================================================================
run2.sql
=====================================================================
CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE
'/dev/rundo2' SIZE 10350M REUSE
CREATE TABLESPACE "DEFAULT" LOGGING DATAFILE
'/dev/rdefault' SIZE 10230M REUSE
EXTENT MANAGEMENT LOCAL;
alter database ora9 add
LOGFILE GROUP 3 ('/dev/rredo13') SIZE 150M REUSE;
alter database ora9 add
LOGFILE GROUP 4 ('/dev/rredo14') SIZE 150M REUSE;
alter database ora9 add
LOGFILE GROUP 5 ('/dev/rredo15') SIZE 150M REUSE;
alter database ora9 add
LOGFILE GROUP 6 ('/dev/rredo16') SIZE 150M REUSE;
=====================================================================
后面接着运行
@/oracle/oracle9/app/oracle/product/9.2.0/rdbms/admin/catproc.sql
@/oracle/oracle9/app/oracle/product/9.2.0/rdbms/admin/caths.sql
@/oracle/oracle9/app/oracle/product/9.2.0/rdbms/admin/otrcsvr.sql
connect system/manager
@/oracle/oracle9/app/oracle/product/9.2.0/sqlplus/admin/pupbld.sql
第三节:升级Oracle 9.2.0.1.0 到Oracle 9.2.0.3.0
Oracle 9.2.0.3.0 PATCH是本月3号才出来的,是最新的了,所以在升级过程中比升9.2.0.2要复杂很多。9203的PATCH NUMBER是2761332,可以在METALINK里下载,选择“IBM AIX Based System (64-bit) 5L”。总大小660M,文件名为:p2761332_9203_AIX64-5L.zip。下在后使用unzip解压,然后tar 开。
以前升9.2.02时,从这里就可以直接运行runInstaller来安装了,但现在不行,为了顺利完成我们的升级工作,下面的工作也是必需的。
1、shutdown数据库,停止listener。
2、调整AIX 5L系统的Memory和Data 限制,我们可以设成无限制。调整方法就是编辑/etc/security/limits,将memory和data的值改成-l。
3.1、升级Universal Installer,因为9.2.0.3要求必须使用2.2.0.18.0版本的Universal Installer来安装,而这个PATCH也就是本月1 号才出来,估计就是为了升级9.2.0.3才设计的。PATCH NUMBER是2878462,注意哦,这个在9.2.0.3自带的README上写的是BUG NUMBER,一个明显的错误。文件名为:p2878462_220_AIX64-5L.zip,大小27.5M。
3.2、下载完成后,同样使用unzip 解压,生成aix目录,里面有README.txt和oui220180_aix.jar,使用jar -xvf oui220180_aix.jar解包,然后cd cd/Disk1/install/aix,运行runInstaller进行安装。
好了,安装前的工作就这么多了,后面还有其他事要做。
现在可以执行runInstaller来安装9.2.0.3的PATCH了,要安装实会提示用root运行root.sh。
在启动数据库进行升级前,我们需要调整以下初始化参数:
shared_pool_size = 1024000000 #add at 20030426 (最低要求150M)
java_pool_size=217440512 #changed larger at 20030427 (如果安装了JAVA,最低要求150M)
现在执行如下操作:
startup migrate pfile='/oracle/app/oracle/admin/ora9/pfile/initora9.ora'
spool patch.log
@/oracle/app/oracle/product/9.2.0/rdbms/admin/catpatch.sql
spool off
查看log 看有没有错,其中有些错误是可以忽略的。之后:
create spfile from
pfile='/oracle/app/oracle/admin/ora9/pfile/initora9.ora';
shutdown
startup
@/oracle/app/oracle/product/9.2.0/rdbms/admin/utlrp.sql
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production
PL/SQL Release 9.2.0.3.0 - Production
CORE 9.2.0.3.0 Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.3.0 - Production
NLSRTL Version 9.2.0.3.0 - Production
附录1 系统安装最小配置检查表
以下文档是针对ORACLE9.2.0在AIX5L 上的检查项目 。
系统安装最小配置检查表 备注
要求 辅助命令 完成
硬件要求 64bite 64bite
最小256MB 内存 $ /usr/bin/lsattr -E -l sys0 -a realmem
不小于2倍内存或400M的Swap Space或 $ /usr/bin/Lsps -a
CD-ROM
操作系统软件要求
操作系统:AIX 5
$ usr/bin/oslevel
操作系统补丁,见附录2 查看所有补丁
$ /usr/sbin/instfix –a
查看某种补丁
$ /usr/sbin/instfix -ik Maintenance_level
or
$ /usr/sbin/instfix -a -ivk APAR_number 查看某种补丁例子
/usr/sbin/instfix -ik 4330-07_AIX_ML
或者
/usr/sbin/instfix -a -ivk IY15138
3GB以上的磁盘空间 数据库软件(2.5G)
基础(seed)数据库(1G)
Shell File的文件限制 $ ulimit –f 此应该在建立文件系统时更改
1000M以上的临时磁盘空间位于/tmp目录
$ /usr/bin/df -k /tmp
这是Oracle Universal Installer要求的,如果不足,可以在另外的文件系统上建立/tmp,设置TEMP及TMPDIR环境变量,例子:
$ mkdir /u03/tmp
$ TEMP=/u03/tmp ; export TEMP
$ TMPDIR=/u03/tmp ; export TMPDIR
JRE Patches $ jre Oracle 要求版本至少为 JRE 1.1.8.5.
JDK Patches $ java –version Oracle HTTP Server 需要使用JDK,版本至少1.3.1,安装此项的过程中会提示
保证以下两个文件对于oracle用户可写
/etc/oraInst.loc
/etc/oratab 以下命令可以保证此项
以oracle用户登录,执行
touch /etc/oraInst.loc /etc/oratab
然后再删除这两个文件 这两个文件是由oracle在安装时自动创立
操作系统文件集(Filesets) 查看所有Filesets
$ lslpp –l
查看某个filesets
$ lslpp -l [fileset_name]
查看X-Window
$ xclock 所有需要的文件集见附录3
服务器信息
主机名
IP地址
域名
附录2 AIX 5 L 操作系统补丁要求状态
补丁名称 备注
IY01050 Required
IY03478 Required for Oracle Parallel Server
IY04109 Required for Oracle Parallel Server
IY04109 Required for Oracle Parallel Server
IY04149 Required for Oracle Parallel Server
IY04767 Required for Oracle Parallel Server
IY07276 Required
IY6749 Required for Oracle Parallel Server
附录3 操作系统文件集要求
补丁名称 备注
Filesets bos.adt.base
bos.adt.lib
bos.adt.libm
X11.apps.rte
X11.apps.xterm
X11.base.rte
X11.motif.lib
X11.motif.mwm
Required Executables 以下可执行文件make, ar, ld, nm
必须位于/usr/ccs/bin 目录