UNIX和WINDOWS2000上的ORACLE的差异 PartII


Ian Adam ,SAIC Ltd
David Stien,SAIC Ltd

翻译:Fenng
PartII

数据库启动与关闭

在Windows 2000上数据库可以通过启动相关的服务打开。通过控制面板的服务选项或者是通过命令行模式,如:

net start OracleServiceatei就可以打开相关服务。这依赖于一些注册表参数,我们在后面讨论。停止相关的服务,例如:net stop OracleServiceatei可以关闭一个数据库。

在所有的平台上,ORACLE8i实例都可以从服务管理器(或者SQL*Plus!)中通过startup命令启动。在Unix中,这个命令启动后台进程并且打开数据库。它还生成了一个Unix特定文件,叫做$ORACLE_HOME/dbs/lk

  1<dbname>,这是个MOUNT锁文件[6 Metalink, 2000]。这会阻止两个实例mount在同一数据库上,当不使用并行服务器的模式下,要使用不同的ORACLE_SID。原来这是个0长度文件,不过现在包含文本'DO NOT DELETE THIS FILE!'。不要试图通过查看这个文件来得知是否数据库是可用的,它不是很准确的。在Windows 2000中,startup命令并不启动ORACLE服务,不过,如果服务已经运行的话,这将打开数据库。   
  2  
  3类似的,服务管理器Server Manager的shutdown命令在任何平台上都会关掉数据库,不过在Windows 2000上它并不停掉服务。很有可能的情况就是ORACLE服务被启动但是数据库却关掉了。   
  4  
  5  
  6UNIX上的数据库的自动启动与关闭   
  7  
  8在 Unix上,ORACLE 提供了dbstart和dbshut 脚本以供使用。在Linux   
  9中ORACLE检测文件/etc/oratab 来决定哪个数据库自动的启动/关闭。在 Solaris (和一些其他版本的Unix)中,检查/var/opt/oracle/oratab文件。要注意:8.1.6 版本的dbstart有个bug,在8.1.7中已经被修复,察看[7 Metalink, 2000]有详细说明。   
 10  
 11在Linux上,作为root用户,在/etc/rc.d/init.d目录中创建一个一个名为dbora的文件。这个文件将会检查参数是否是 'start' 或者 'stop' 并且适当的执行 dbstart/dbshut;通常也从这个脚本启动listener 。再生成两个符号联接   
 12/etc/rc.d/rc2.d/S99dbora 和   
 13/etc/rc.d/rc0.d/K10dbora。数据库在运行级2(多用户)时通过/etc/rc.d/rc2.d/S99dbora   
 14启动,在系统关闭到运行级0的时候通过/etc/rc.d/rc0.d/K10dbora关闭数据库   
 15。在Solaris上,这个脚本的在/etc/init.d中而不是在/etc/rc.d/init.d.   
 16  
 17要注意默认的dbshut执行了一个正常(normal)的关闭操作。在Unix 中可以通过编辑$ORACLE_HOME/bin/dbshut中的这一行来改变数据库的关闭模式。   
 18  
 19 20shutdown   
 21修改成   
 22shutdown immediate   
 23  
 24如果启动一个已经运行的实例,dbstart 还会执行一个 shutdown abort 。在dbstart script脚本的顶部警告说 'It should ONLY be executed as part of the system boot procedure'。这个脚本要常被复制、修改,这样在其它的时候使用才能足够安全。   
 25  
 26  
 27WINDOWS 2000上的数据库自动的启动与关闭   
 28  
 29在以前的版本(8i)中,当oracle的启动被一个额外的服务ORACLEStartSID处理,服务器的启动和关闭的时候ORACLE不能被自动的干净的关掉。从ORACLE8i开始,stop/start功能成为了主要的ORACLE服务,并通过注册表控制。注意当ORADIM用于创建或者修改实例的时候,自动的在注册表中设定这些值。这些设置在HKEY_LOCAL_MACHINE OFTWARE\ORACLE\HOMEID键值下。   
 30  
 31ID 号从0开始,每有一个额外的ORACLE home递增。   
 32  
 33\-----------------------------------------------------------------   
 34参数 描述   
 35\-----------------------------------------------------------------   
 36ORA_SID_AUTOSTART 设定为TRUE的时候   
 37(默认值),ORACLEServiceSID启动的时候启动数据   
 38库。   
 39ORA_SID_PFILE 设定INIT.ORA参数文件的全路径。   
 40ORA_SHUTDOWN 当设定为TRUE的时候,在当前任何ORACLE   
 41home下的任何数据库将shutdown。   
 42ORA_SID_SHUTDOWN 设定为TRUE的时候,关闭标记SID值的ORACLE8i数据库。   
 43\-----------------------------------------------------------------   
 44如果   
 45SHUTDOWN参数设定为FALSE,停掉ORACLEServiceSID将会abort的方式关闭实例,下次启动的   
 46时候要进行实例恢复。   
 47  
 48  
 49下面的可选参数可以在注册表中设为合适的值   
 50  
 51\-----------------------------------------------------------------   
 52参数 描述   
 53\-----------------------------------------------------------------ORA_SID_SHUTDOWNTYPE 指明数据库关闭模式Aabort),   
 54  
 55I (immediate), N (normal)。   
 56如果你不设定这个参数的话,   
 57默认的模式是 I (immediate)。   
 58ORA_SID_SHUTDOWN_TIMEOUT 在一个SID停止前等待的最大时间。   
 59\-----------------------------------------------------------------   
 60  
 61  
 62  
 63操作系统认证   
 64  
 65OS认证在两个平台间是相似的,参数文件中设定os_authent_prefix   
 66参数,创建用户都标记为externally。在Windows2000中创建用户要指定大写的域名并且用户名要在 "" 中,否则不起作用。如果你在注册表中把 OSAUTH_PREFIX_DOMAIN 设定成FALSE的话,你可以忽略掉域。客户机和服务器的机器还需要在sqlnet.ora中包含sql net.authentication_services=(nts)这一行。   
 67  
 68在 Windows 2000 中,可以允许一个域用户登陆到一个远程pc上,无需提供额外的密码就可以连接到数据库中。参见[2 K elly III,2000]可以得到详细内容。   
 69  
 70  
 71LISTENER   
 72  
 73在 Windows 2000上面 listener作为一个服务实现的,所以listener可以通过启动 ORACLETNSListener 服务来启动。两种平台上listener都可以从lsnrctl命令控制。在Unix上lsnrctl start启动 listener 进程;在 Windows   
 742000启动 ORACLETNSListener 服务就可以。 如果listener第一次启动的时候没有ORACLETNSListener服务将创建它。如果从你的计算机中删除ORACLE的话,listener 服务要手工从注册表中删除。   
 75  
 76在两个平台上的listener都可以监听不同版本的数据库。在win2000中,   
 77在LISTENER.ORA中不需要ORACLE_HOME参数(在UNIX中要使用到的),因为每个SID在SERVER中是唯一的。listener可以从注册表中得到正确的ORACLE_HOME。   
 78  
 79ORACLE8i 有个特性叫服务器注册,pmon自动对listener注册信息。这意味着Net8 listener可以无需在listener.ora文件中设置就可以监听一个数据库。不过这样做的话,Enterprise Manager要直到启动后才可以连接到数据库。所以这个例子不能用来启动一个远程的实例。通常最好在listener.ora中设置所有的实例以避免冲突,尤其在一个有多位DBA的站点中,,可以避免我们提到的 Enterprise Manager 问题。   
 80  
 81  
 82加长的SID名字   
 83  
 84Windows NT上的ORACLE 7 实例名字有着4个字符长的限制,这可能会产生很晦涩的实例名--庆幸的是在8i中SID名字已经加长了。不过在包括命名服务的几个场合中使用太长的实例名字也不总是很有用。在Windows 2000上面有个bug,限制了实例名字最长15个字符。   
 85  
 86\----------------------------------------------------------------   
 87Unix NT   
 88\----------------------------------------------------------------   
 89数据库名 实例名 数据库名 实例名   
 90\----------------------------------------------------------------   
 91ORACLE7 8 8 8 4   
 92ORACLE8 8 8 8 4   
 93ORACLE8i 8 64 8 64   
 94\----------------------------------------------------------------   
 95  
 96  
 97数据库的创建   
 98  
 99当你在安装过程中的时候选择创建ORACLE 8i数据库,数据库生成助手就会通过ORACLE Universal Installer   
100自动运行。在安装后它也可以作为一个单独的工具手工运行。用它还可以手工的输入SID代替默认的ORCL,默认的情况下,不在ORACLE_HOME下面创建数据库,完全遵循OFA的意图。   
101  
102建议你运行Database Creation Assistant,不过在最后一页选择Save information to a batch file(保存信息到一个批处理文件中),再点击"完成"按钮。这会产生几个脚本。从不同的平台对比它们的内容很有趣的。在Unix 和   
103Windows上的内容很相似,除了windows上对oradim的调用不同。第一次对它的调用产生了一个与ORACLE 数据库相关联的ORACLE服务:   
104  
105D:\ORACLE\Ora817\bin\oradim -new -sid ATEI -intpwd man -startmode manual -pfile   
106"D:\ORACLE\admin\atei\pfile\initatei.ora"   
107  
108第二次对oradim的调用把服务更改为自动启动:   
109  
110D:\ORACLE\Ora817\bin\oradim -edit -sid atei -startmode auto   
111  
112可以用这些文件作为创建其它数据库的模版。若你不使用上面建议的方式创建数据库的话,Database Creation Assistant 生成的这些文件和目录没什么大用处。在使用这些脚本创建额外的数据库之前,这些文件和目录不得实现创建。特别注明一下,脚本假定一个密码文件已经存在,密码文件可以用orapwd命令预创建[2 H Kelly III, 2000]。   
113  
114  
115  
116  
117Database Creation Assistant创建的目录:   
118  
119Windows 2000   
120  
121ORACLE_BASE = D:\oracle   
122  
123Unix   
124  
125ORACLE_BASE = /db01/app/oracle   
126  
127ORACLE_BASE\oradata\atei   
128  
129$ORACLE_BASE/oradata/eighti   
130  
131ORACLE_BASE\oradata\atei\archive   
132  
133$ORACLE_BASE/oradata/eighti/archive   
134  
135ORACLE_BASE\admin\atei   
136  
137$ORACLE_BASE/admin/eighti   
138  
139还有这些子文件夹   
140  
141sadhoc bdump cdump create exp pfile udump   
142  
143  
144  
145  
146通过Database Creation Assistant创建/改动的文件:   
147  
148Windows 2000   
149  
150ORACLE_HOME = D:\oracle\ora817   
151  
152Unix   
153  
154ORACLE_HOME = /db01/app/oracle/product/8.1.7   
155  
156ORACLE_HOME\database\PWDatei.ora   
157  
158$ORACLE_HOME/dbs/orapweighti.ora   
159  
160ORACLE_BASE\admin\atei\pfile\initatei.ora   
161  
162$ORACLE_BASE/admin/eighti/pfile/initeighti.ora   
163  
164ORACLE_HOME\database\initatei.ora   
165  
166包含一行   
167  
168IFILE='d:\oracle\admin\atei\pfile\initatei.ora‘   
169  
170$ORACLE_HOME/dbs/initeighti.ora   
171  
172符号链接到:   
173  
174/db01/app/oracle/admin/eighti/pfile/initeighti.ora   
175  
176添加到 tnsnames.ora的条目   
177  
178添加到 tnsnames.ora的条目   
179  
180添加到 listener.ora的条目   
181  
182添加到 listener.ora的条目   
183  
184windows没有相关的操作   
185  
186添加项目到oratab   
187  
188通过Database Creation Assistant创建的脚本:   
189  
190Windows 2000   
191  
192Unix   
193  
194注释   
195  
196atei.bat   
197  
198eighti   
199  
200调用其它脚本,在Windows上还可以调用ORADIM   
201  
202ateirun.sql   
203  
204eightirun.sh   
205  
206包含创建数据库的语句   
207  
208ateirun1.sql   
209  
210eightirun1.sh   
211  
212创建表空间/ 创建回滚段   
213  
214不创建系统中的第二个回滚段   
215  
216N/a   
217  
218eightirun2.sh   
219  
220额外的脚本(如,catproc),   
221这些在Windows上从ateirun1.sql中运行   
222  
223ateisqlplus.sql   
224  
225eightisqlplus.sh   
226  
227添加 SQL*Plus 帮助   
228  
229@c:\oracle\ora817 qlplus\admin\help\helpbld.sql helpus.sql   
230  
231ateialterTablespace.sql   
232  
233eightialterTablespace.sh   
234  
235为SYSTEM用户更改默认的和临时的表空间   
236  
237  
238  
239ateireplicate.sql   
240  
241ateijava.sql   
242  
243ateiordinst.sql   
244  
245ateiiMedia.sql   
246  
247ateidrsys.sql   
248  
249ateicontext.sql   
250  
251ateispatial1.sql   
252  
253ateitimeseries.sql   
254  
255ateivirage.sql   
256  
257eightireplicate.sh   
258  
259eightijava.sh   
260  
261eightiordinst.sh   
262  
263eightiiMedia.sh   
264  
265eightidrsys.sh   
266  
267eighticontext.sh   
268  
269eightispatial1.sh   
270  
271eightitimeseries.sh   
272  
273eightivirage.sh   
274  
275各种脚本,只有在你选择相应的选项的时候才会生成。   
276  
277  
278远程挂接的文件系统,如UNIX上的NFS和Windows 2000上UNC,在两个平台上都不支持。</dbname>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus