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>