oracle(创建数据库对象)
阅读原文时间:2023年07月08日阅读:1

1 --创建数据库
2 --1.SYSDBA系统权限
3 startup:--启动数据库。
4 shutdown:--关闭数据库。
5 alter database[mount]|[open]|[backup]|[character set]:--修改数据库到加载状态、打开状态,备份数据库,修改数据库字符集。
6 create database:--创建数据库。
7 drop database:--删除数据库。
8 create spfile:--创建服务器初始化参数文件。
9 alter database archivelog:--修改数据库的归档模式。
10 alter database recover:--恢复数据库(完全恢复或者不完全恢复)。
11 --具有restricted session权限,可以在受限状态下连接数据库。
12 --2.SYSOPER系统权限
13 startup:--启动数据库。
14 shutdown:--关闭数据库。
15 create spfile:--创建服务器初始化参数文件。
16 alter database[mount]|[open]|[backup]:--修改数据库到加载状态、打开状态,备份数据库。
17 alter database archivelog:--修改数据库的归档模式。
18 alter database recover:--恢复数据库(只能进行完全恢复,不能进行不完全恢复)。
19 --具有restricted session权限,可以在受限状态下连接数据库。
20 --dba是一个角色
21 --%ORACLE_HOME%NETWORK\ADMIN\sqlnet.ora,
22 sqlnet.authentication_services=(nts)--不用密码认证
23 sqlnet.authentication_services=none--用密码认证
24 orapwd file=
25 filename--在Windows系统中口令文件默认名称为PWD<SID>.ora,默认存放位置为%ORACLE_HOME%\database
26 [password=password]--设置SYS用户口令。如果没有设定,执行时系统提示设置SYS用户口令。
27 [entries=numusers]--设定口令文件中可以保存的具有SYSDBA或SYSOPER权限的用户最大数量。
28 [force=y|n]--明如果指定的口令文件已经存在,是否覆盖。值为Y,则覆盖
29 [ignorecase=y|n]--指定存储在口令文件中的SYS用户口令是否对大小写敏感。
30 GRANT SYSDBA TO oe;--
31 select * from v$pwfile_users;
32 revoke sysdba from oe;--删除用户
33 --手动创建数据库
34 create database database_name
35 [user sys identified by password]--设置sys用户口令
36 [user system idnetified by password]--设置system用户口令
37 [controlfile reuse]--按初始化参数文件中的control_files的值创建控制文件
38 [maxinstances integer]--指定允许同时装载和打开的数据库实例个数
39 [maxdatafiles integer]--设置控制文件中允许创建最多数据文件数量
40 [maxloghistory integer]--可以自动归档的最大日志文件的数量,仅适用于RAC环境
41 [maxlogfiles integer]--数据库中最大日志文件的数量
42 [maxlogmembers integer]--设置每个日志文件组中最大成员日志文件数量
43 [archivelog|noarchivelog]--设置新建数据库处于归档模式
44 [force logging]--数据库中所有的变化信息(除了临时表空间)都写入日志文件
45 [character set charset]--设置数据库字符集
46 [national character set charset]--设置国家字符集
47 [set time_zone=time_zone_region]--设置数据库时区
48 [set default smallfile|--设置默认创建的表空间为小文件表空间
49 bigfile tablespace]--设置默认创建的表空间为大文件表空间
50 --设置重做日志文件
51 [logfile[[group integer]('filename1'[,…])[size integer[k|m|g|t][reuse]]],…]
52 --设置 system 表空间
53 [extent management local]--设置system表空间采用本地管理方式
54 [datafile 'filename'
55 [size integer[k|m][reuse]]
56 [autoextend off
57 [
58 on
59 [
60 next integer[k|m]
61 maxsize unlimited|[integer[k|m|g|t]]
62 ]
63 ]
64 ],…]
65 --设置 sysaux 表空间
66 [sysaux datafile 'filename'[size integer[k|m|g|t][reuse]][autoextend off
67 [on[next integer[k|m]maxsize[unlimited|integer[k|m|g|t]]]]],…]--为sysaux表空间创建数据文件
68 --设置数据库默认表空间
69 [default tablespace default_tablespace_name]--为数据库创建并指定默认表空间
70 [datafile 'filename' [size integer[k|m][reuse]][autoextend off--为system表空间创建数据文件
71 [on[next integer[k|m]maxsize unlimited|[integer[k|m|g|t]]]]],…]
72 [extent management dictionary|[local[autoallocate|[uniform size
73 integer[k|m|g|t]]]]]
74 --设置数据库默认临时表空间
75 [default temporary tablespace default_temp_tablespace_name]--为数据库创建并指定默认临时表空间
76 [tempfile 'filename' [size integer[k|m|g|t][reuse]][autoextend off
77 [on[next integer[k|m|g|t]maxsize unlimited|[integer[k|m|g|t]]]]],…]
78 [extent management[dictionary|[local uniform size integer[k|m|g|t]]]]
79 --设置数据库撤销表空间
80 [undo tablespace undo_tablespace_name]--为数据库创建并指定默认撤销表空间
81 [datafile 'filename' [size integer[k|m|g|t][resuse]][autoextend off
82 [on[next integer[k|m|g|t]maxsize unlimited|[integer[k|m|g|t]]]]],…]
83 ---------------------------------------------------------------------------------------------------------
84 --手动创建数据库实例
85 --1.确定数据库名称与数据库实例名称
86 --数据库名称(db_name),数据库实例名称(instance_name)。
87 --2.保证必需的环境变量的设置
88 --将ORACLE_HOME\bin路径信息写入PATH环境变量等。
89 --SET ORACLE_SID=MYNEWDB
90 --3.确定数据库管理员的认证方式
91 --操作系统认证方式,口令文件认证方式
92 orapwd--创建口令文件
93 file=d:\app\administrator\product\11.2.0\dbhome_1\database\pwdmynewdb.ora
94 password=mynewdb entries=10
95 --4.创建文本初始化参数文件
96 %ORACLE_HOME%\database\init<SID>.ora
97 --其内容为:
98 #设置全局数据库名
99 db_domain=''
100 db_name='MYNEWDB'
101 #设置快速恢复区
102 db_recovery_file_dest='d:\app\Administrator\flash_recovery_area'
103 db_recovery_file_dest_size=2G
104 #设置控制文件
105 control_files=(
106 'D:\app\Administrator\oradata\mynewdb\control01.ctl',
107 'D:\app\Administrator\oradata\mynewdb\control02.ctl',
108 'D:\app\Administrator\oradata\mynewdb\control03.ctl')
109 #设置标准数据块大小
110 db_block_size=8192
111 #设置内存管理
112 memory_target=1G
113 #设置最大进程数
114 processes=150
115 #设置撤销空间管理
116 undo_management=AUTO
117 undo_tablespace=UNDOTBS
118 #设置兼容性
119 compatible='11.2.0'
120 #设置共享服务器
121 dispatchers='(PROTOCOL=TCP)(SERVICE=MYNEWDBXDB)'
122 #设置安全与审计
123 audit_file_dest='D:\app\Administrator\admin\mynewdb\adump'
124 audit_trail='db'
125 #口令文件管理
126 remote_login_passwordfile=EXCLUSIVE
127 #设置游标
128 open_cursors=300
129 #设置诊断与跟踪信息
130 diagnostic_dest='D:\app\Administrator'
131 #设置作业队列
132 job_queue_processes=10
133 --注意 初始化参数文件中所涉及的目录需要预先手动创建。
134 --5.创建数据库实例
135 oradim-new-sid sid--表示新建一个数据库实例。SID,设置新建数据库实例的名称
136 [-syspwd password]--设置SYS用户口令。
137 [-startmode manual|auto]--设置数据库实例的启动模式。如果设置为AUTO,
138 --创建实例后将启动实例、加载数据库,由于此时数据库还不存在,
139 --将导致错误。因此,应设置此参数为MANUAL。
140 [
141 [-pfile pfile]--指定数据库实例启动时使用文本初始化参数文件。
142 |spfile--指定数据库启动时使用服务器初始化参数文件。
143 ]--
144 [-shutmode normal|immediate|abort]--设置数据库实例关闭方式。
145 --例
146 c:\>oradim-new-sid mynewdb-startmode manual
147 --6.连接到数据库实例
148 C:\>SQLPLUS/NOLOG
149 SQL>CONNECT sys/mynewdb AS SYSDBA
150 --其中,mynewdb是保存在口令文件中的SYS用户的口令。
151 --7.创建服务器初始化参数文件
152 SQL>CREATE SPFILE FROM PFILE;--为MYNEWDB数据库创建服务器初始化参数文件
153 --(建议用户使用数据库服务器初始化参数文件(spfile),
154 --而不是使用文本初始化参数文件(pfile))
155 --8.启动数据库实例
156 SQL>startup nomount
157 --9.执行CREATE DATABASE语句
158 --10.创建附加的表空间
159 --11.运行脚本创建数据字典视图
160 --在手动创建数据库时,需要手动运行脚本创建数据字典视图与同义词、创建PL/SQL包,
161 --以及提供对SQL*Plus工具的支持。
162 SQL>CONNECT sys/mynewdb AS SYSDBA
163 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catalog.sql;
164 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catproc.sql;
165 SQL>CONNECT system/mynewdb
166 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\pupbld.sql
167 --12.运行脚本安装其他组件
168 --13.备份数据库
169 --14.修改数据库实例的启动模式
170 oradim-edit-sid sid
171 [-startmode auto|manual]
172 [-srvcstart system|demand]
173 [-pfile file|-spfile]
174 [-shutmode normal|immediate|abort]
175 [-syspwd password]
176 -------------------------------------------------------------------------------------------------------------
177 --创建表空间
178 create
179 [bigfile|smallfile]--指定要创建大文件表空间,还是小文件表空间。如不指定,则由数据库属性DEFAULT_TBS_TYPE指定,默认为SMALLFILE。
180 [temporary|undo]tablespace tbs_name--指定要创建的表空间类型,默认为永久表空间
181 datafile|tempfile path/filename size integer[k|m][reuse]--指定表空间的数据文件的位置和名称。
182 [
183 autoextend[off|on]next integer[k|m]--指定数据文件是否可以自动扩展。如果可以自动扩展,需要设置NEXT值指明每次扩展的大小,
184 maxsize[unlimited|integer[k|m]] --设置MAXSIZE值指明文件的最终大小。默认值为OFF,不可扩展。
185 ]
186 [tablespace group tablespace_group_name]--只用于临时表空间,指定该临时表空间加入某个临时表空间组。
187 --如果指定的临时表空间组不存在,系统会自动创建该临时表空间组。
188 [extent management dictionary|local]--指定表空间的管理方式,默认为LOCAL,即本地管理。
189 [autoallocate|uniform size integer[k|m]]--本地管理表空间区采用自动分配方式,区的最小值为64KB。自动分配是本地管理表空间中区的默认分配方式
190 [segment space management auto|manual]--本地管理表空间中段的管理方式,默认为AUTO。
191 [retention guarantee|noguarantee]--用于撤销表空间,指明事务提交后,回退信息在回退段中保留时间仍然为UNDO_RETENTION,在这段时间内回退信息不会被覆盖。
192 [encryption[using encrypt_algorithm]--指定表空间的加密方法。
193 [identified by password][[no]salt]]--
194 [minimum extent integer[k|m]]--表空间中区的最小值。这是为了与早期版本的兼容而保留的子句。
195 [
196 default storage(
197 [initial integer[k|m]]--为第一个区的大小
198 [next integer[k|m]]--第二个区的大小
199 [pctincrease integer]--第三个区和以后扩展的区的增长百分率,
200 [minextents integer]--为段分配的区的最小数目
201 [maxextents integer|unlimited])--为段分配的区的最大数目。这是为了与早期版本的兼容而保留的子句。
202 ]
203 [online|offline]--新建表空间处于脱机状态还是联机状态。
204 [logging|--数据库对象的创建以及数据的DML操作信息都写入重做日志文件。
205 nologging]--数据库对象的创建以及数据的DML操作信息都写入重做日志文件,但是数据的加载操作不写入重做日志文件。
206 [force logging]--表空间中所有对象发生的变化信息(临时段的变化信息除外)都将被写入重做日志文件中,忽略NOLOGGING子句的作用。
207 [blocksize integer]--表空间所基于的数据块大小。
208 [flashback on|off]--是否支持表空间的闪回操作
209 --说明BLOCKSIZE:表空间所基于的数据块大小。若为非标准块表空间,需要配置初始化参数DB_nK_CACHE_SIZE参数,其中nKB就是BLOCKSIZE的值。
210 --默认为标准块表空间,BLOCKSIZE值为初始化参数DB_BLOCK_SIZE的值。
211 --------------------------------------------------------------------------------------------------------
212 --创建数据文件
213 create tablespace--创建表空间同时创建数据文件
214 create temporary tablespace --创建临时表空间的同时创建临时数据文件
215 alter tablespace…add datafile --向表空间添加数据文件
216 alter tablespace…add tempfile--向临时表空间添加数据文件
217 create database --创建数据库时创建数据文件
218 alter database…create datefile--数据氈恢复操作时,新建一个数据文件取代出现故障的数据文件
219 --例
220 alter tablespace users add datafile 'd:\app\administrator\oradata\orcl\users02.dbf' size 10m;
221 --修改数据文件大小
222 select file_name,autoextensible from dba_data_files;--查看当前数据库所有数据文件的扩展方式。
223 --例
224 alter database datafile 'd:\app\administrator\oradata\orcl\users04.dbf'size 10m autoextend on next 512k maxsize 100m;
225 --改变数据文件的可用性
226 --要进行数据文件的脱机备份时,需要先将数据文件脱机。
227 --需要重命名数据文件或改变数据文件的位置时,需要先将数据文件脱机。
228 --如果Oracle在写入某个数据文件时发生错误,系统会自动将该数据文件设置为脱机状态,并且记录在报警文件中。排除故障后,需要以手动方式重新将该数据文件恢复为联机状态。
229 --数据文件丢失或损坏,需要在启动数据库之前将数据文件脱机。
230 --归档模式下:
231 alter database datafile…online|offline--设置永久性数据文件的脱机与联机。
232 alter database tempfile…online|offline--设置临时数据文件的脱机与联机。
233 --将ORCL数据库设置为归档模式。
234 shutdown immediate--数据库己经关闭,己经卸载数据库,例程己关闭
235 startup mount--例程己启动
236 --例
237 alter database datafile
238 'd:\app\administrator\oradata\orcl\users01.dbf'offline;--脱机
239 recover datafile
240 'd:\app\administrator\oradata\orcl\users01.dbf';--完成介质恢复。
241 alter database datafile
242 'd:\app\administrator\oradata\orcl\users01.dbf'online;--联机
243 --非归档模式下数据文件的脱机
244 --由于数据库处于非归档模式,数据文件脱机后,会导致信息的丢失,从而使该数据文件无法再联机,
245 --即无法使用了。因此,在非归档模式下,通常不能将
246 shutdown immediate
247 startup mount
248 alter database noarchivelog;
249 alter database open;
250 alter database datafile 'd:\app\administrator\product\11.2.0\dbhome_1\database\users3.dbf' offline for drop;
251 select file_name,from dba_data_files where tablespace_name = 'users';
252 --注意 使用该语句只是将数据文件脱机,数据文件不可用,并没有从数据字典以及控制文件中删除该数据文件信息,也没有从磁盘上删除该数据文件。
253 --该文件随后可以随其所属表空间的删除而删除。
254 alter tablespace users datafile offline;
255 select name,status from v$datafile where ts# = (select ts# from v$tablespace where name='users');
256 --查看users表空间各个数据文件的状态
257 recover tablespce users;
258 --改变数据文件的名称与位置
259 alter tablespacle…rename datafile…to--改变同一个表空间中的数据文件的名称与位置。
260 alter database rename file…to--改变多个表空间中的数据文件的名称与位置
261 --例
262 select file_name,bytes from dba_data_files where tablespace_name = 'users';
263 alter tablespace users datafile offline;
264 host copy d:\app\administrator\oradata\orcl\users02.dbf d:\disk1\users02.dbf
265 host copy d:\app\administrator\oradata\orcl\users04.dbf d:\disk1\users04.dbf
266 alter tablespace users rename datafile
267 'd:\app\administrator\oradata\orcl\users02.dbf',
268 'd:\app\administrator\oradata\orcl\users04.dbf' to
269 'd:\disk1\users02.dbf',
270 'd:\disk1\users02.dbf'
271 alter tablespace users online;
272 --修改多个表空间中数据文件的名称与位置
273 select file_name, bytes from dba_data_files where tablespace_name in('users','example');
274 shutdown immediate
275 startup mount
276 host copy d:\app\administrator\oradata\orcl\users01.dbf d:\disk2\users01.dbf
277 host copy d:\app\administrator\oradata\orcl\example01.dbf d:\disk2\example01.dbf
278 alter database rename file_name
279 alter database open;
280 --删除数据文件
281 alter tablespace…drop datafile--删除永久表空间中指定的空的数据文件。
282 alter tablespace…drop tempfile--删除临时表空间中指定的空的临时数据文件。
283 --例
284 alter tablespace users drop datafile
285 'd:\app\administrator\product\11.2.0\dbhome_1\database\users03.dbf';
286 alter tablespace temp drop tempfile
287 'd:\app\administrator\oradata\orcl\temp02.dbf';
288 alter database tempfile
289 'd:\app\administrator\oradata\orcl\temp02.dbf'drop;
290
291 ------------------------------------------------------------------------------------------------------------
292 --创建模式
293 --可以使用create schema语句在一个事务中同时为当前模式创建多个表、视图,并执行多个授权操作。
294 --在执行时,当所有的语句都成功完成时,系统提交该事务,当其中任何一个操作失败时,系统回滚整个事务。
295 create schema authorization schema--指定模式名称,必须为当前模式的名称。
296 [create_table_statement]--创建表的语句,结尾不能加分号等结束符号。
297 [create_view_statement]--创建视图的语句,结尾不能加分号等结束符号。
298 [grant_statement];--为用户授予对象权限或系统权限,结尾不能加分号等结束符号。
299 --例:在system模式下创建一个表new_product、一个视图new_product_view,并将视图new_product_view的select权限授予用户scott
300 connect system/sfd12345@orcl
301 create schema authorization system
302 create table new_product( color varchar2(10)primary key, quantity number )
303 create view new_product_view
304 as
305 select color,quantity from new_product
306 where color='red' grant select
307 on new_product_view to scott;
308 ------------------------------------------------------------------------------------------------
309 --创建表
310 --标准表、临时表、索引表、分区表、聚簇表,外部表
311 create[global temporary]table[schema.]table
312 (
313 column1 datatype[default|:=expr]--列的数据类型,设置列的默认值。
314 [encrypt encryption_spec]--对列数据进行加密,设定采用的加密算法。
315 [column_level_constraint]--列级约束
316 [,column2[datatype]
317 [generated always]as(column_expression)--创建虚拟列。
318 [virtual]
319 [column_level_constraint]--表级约束
320 ]
321 …
322 [,table_level_constraint]
323 )
324 [on commit delete|preserve rows]--指定临时表的类型
325 [organization
326 [heap[segment_attributes_clause]table_compression]--创建标准表,以堆结构组织数据
327 [index[segment_attributes_clause]index_org_table_clause]--创建索引表,以平衡树(b-tree)结构组织数据。
328 [external external_table_clause]--创建外部表,数据只读
329 ]
330 [partition by partition_clause]--创建分区表
331 [cluster cluster(column)]--创建聚簇表
332 [tablespace tablespace]--设置表的存储位置
333 [logging|nologging]--指明表的创建过程是否写入重做日志文件。默认为logging。
334 [cache|nocache]--指明表中数据是否缓存。默认为cache
335 [compress|nocompress]--指明表中数据是否压缩。默认为nocompress。
336 [
337 [noparallel]|[parallel integer]--指明是否允许并行创建表以及随后对表中数据进行并行操作。默认为noparallel。
338 ]
339 [pctfree integer]--指定块中必须保留的最小空闲空间比例,用于更新数据块内存在的数据行,而其余80%是用于插入新的数据行
340 [pctused integer]--指定可以向块中插入数据时块已使用的最大空间比例。低于这个值才会插入数据,默认是10%
341 [initrans integer]--可以同时对数据块进行dml操作的事务的初始个数,用于保证数据块的最低并行操作水平。
342 [maxtrans integer];--可以同时对此数据块进行dml操作的事务的最多个数,用于保证数据块的最大并行操作水平
343 [storage--设置表的存储分配方式。若不指定,则继承表空间的存储参数设置。(如果表空间采用字典管理方式,则可以在STORAGE子句设置任何存储参)
344 (
345 initial 65536 --指定为表段分配的第一个区的大小,以KB或MB为单位。默认值为5个数据块大小,最小值为2个数据块的大小。
346 next 1048576 --指定为表段分配的第二个区的大小,以KB或MB为单位。默认值为5个数据块大小,最小值为1个数据块的大小。
347 minextents 1 --指定允许为表段初始分配的区的最小数量。默认值为1,最小值为1。
348 maxextents 2147483645--指定允许为表段分配的区的最大数量。默认为UNLIMITED(不受限制),最小值为1
349 pctincrease 0 --指定从为表段分配的第三个区开始,区大小的增长百分比。当前区的大小为前一个区大小×(1+PCTINCREASE)。默认值为50,最小值为0。
350 freelists 1 --
351 freelist groups 1 --
352 buffer_pool default --指定存放表数据的缓存池。表中数据存放在数据高速缓冲区中,数据高速缓冲区分为KEEP、RECYCLE和DEFAULT三个缓存池。如果没有指定BUFFER_POOL参数,BUFFER_POOL参数的默认值为DEFAULT,即数据存放在DEFAULT缓存池中。如果某个表的访问频率很高,可以将表的BUFFER_POOL参数设置为KEEP,这时该表的数据块将始终驻留在SGA中,以获得更快的访问速度。
353 flash_cache default --
354 cell_flash_cache default--
355 )]
356 ----------------------------------------------------------------------------------------------------
357 --利用子查询创建表
358 create[global temporary]table table
359 (
360 column1[column_level_constraint]
361 [,column2[column_level_constraint]…]
362 [,table_level_constraint]
363 )
364 [on commit delete|preserver rows]
365 [organization
366 [heap[segment_attributes_clause]table_compression]
367 [index[segment_attributes_clause]index_org_table_clause]
368 [external external_table_clause]
369 ]
370 [partition by partition_clause]
371 [other_parameter_list]
372 as
373 subquery;
374 ---------------------------------------------------------------------------
375 --维护表
376 --修改表
377 alter table[schema.]table
378 [alter_table_properties]--修改表属性参数
379 [column_clauses]--修改表列
380 [constraint_clauses]--修改表约束。
381 [alter_table_partitioning]--修改分区表。
382 [alter_external_table]--修改外部表。
383 [move_table_clause]--修改表移动属性
384 --添加列
385 alter table table
386 add
387 (
388 column1 datatype[default value][not null]
389 [,column2 datatype generated always as(expression)[virtual]…]
390 );
391 --为表添加列时,如果表中已经有数据,那么新列不能用NOT NULL约束,
392 --除非为新列设置默认值。在默认情况下,新插入列的值为NULL。
393 --例
394 alter table aux_emp
395 add
396 (
397 phone_number varchar2(20),
398 hiredate date default sysdate not null,
399 commission number(7,2)generated always as(sal*comm)
400 );
401 --删除列
402 alter table table
403 drop[column column]|[(column1,column2,…)]
404 [cascade constraints];
405 --注意:如果被删除的列被其他表的外键引用,则必须使用CASCADE CONSTRAINTS选项,
406 --同时删除引用表的外键。否则,列的删除操作无法成功完成。
407 --将列标记为UNUSED状态,然后删除UNUSED状态列。
408 alter table table_name
409 set unused[column column]|[(column1,column2,…)]
410 [cascade constraints];
411 --修改列定义
412 alter table table
413 modify column[datatype][default expression]
414 [encrypt encryption_specification]|[decrypt];
415 --.修改列名
416 alter table table rename column oldname to newname;
417 --注意:依赖于该列的函数索引和检查约束继续保持有效状态。
418 --依赖于该列的视图、触发器、函数、存储过程和包变为失效状态。当这些对象下次被调用时,
419 --系统自动进行重新编译,使之变为有效状态;如果自动编译不成功,需要进行手动修改这些对象。
420 --例
421 alter table aux_emp rename column hiredate to hire_date;
422
423 --表结构重组
424 alter table aux_emp move
425 storage
426 (
427 initial 20k
428 next 40k
429 minextents 2
430 maxextents 20
431 pctincrease 0
432 )
433 tablespace tbs1;
434 --1.手动分配表的存储空间
435 alter table tablename allocate extent[([size size][datafile 'filename'])];
436 --例
437 alter table aux_emp allocate extent (size 100k datafile'd:\disk1\tbs1_1.dbf');
438 --2.手动回收表的存储空间
439 dbms_space.unused_space('ehr','aux_emp','table',
440 total_blocks,total_bytes,unused_blocks,
441 unused_bytes,lastextf,last_extb,lastusedblock);
442 alter table 表名 deallocate unused[keep size];--keep是还要保留的空间
443 --3.改变表的读写模式
444 alter table 表名 read only
445 --4.重命名表
446 alter table table_old_name rename to table_new_name;
447 --或
448 rename table_old_name to table_new_name;
449
450 --给表或列加注解
451 comment on table table is ;
452 comment on column table.column is ;
453 --删减表
454 delete --使用delete语句删除表中大量记录会占用较多的系统资源,包括cpu时间、重做日志存储空间、回退段存储空间等,
455 --同时还会触发表中定义的触发器。使用delete语句删除记录后,这部分记录占据的空间变成空闲空间,oracle并不会回收这部分存储空间,
456 --hwm的位置不会改变,也无法使用手动操作回收该空闲空间。
457 --因此,如果要删除表中所有记录,通常使用truncate或drop语句,而不使用delete语句
458 drop --用drop语句删除整个表,包括表结构,回收表的存储空间,然后使用create语句重新创建该表。
459 truncate --使用truncate语句可以快速、高效地删除表中所有的记录。truncate语句属于ddl语句,执行后立即提交,不会产生任何重做日志信息、
460 --回退信息,因此truncate操作不能被回滚。在执行truncate语句时不会影响与被删减表相关的数据库对象以及该表的授权,也不会触发表中定义的触发器。
461 --与delete操作不同,使用truncat语句删除表中数据的同时,hwm位置发生变化,分配给表的存储空间部分或全部被回收。
462 truncate table[schema.]table
463 [
464 [drop[all]]|reuse storage--drop storage:默认选项,被删减表中只会保留由存储参数minextents指定的区的最小个数,其余的区都被回收
465 ];
466 --drop table
467 drop table[schema.]table[cascade constraints][purge];
468 drop table aux_emp purge;--清空回收站
469 --分析表
470 dbms_stats.gather_table_stats--统计表的存储过程
471 (
472 ownname varchar2,
473 tabname varchar2,
474 partname varchar2 default null,
475 estimate_percent number default
476 to_estimate_percent_type(get_param('estimate_percent')),
477 block_sample boolean default false,
478 method_opt varchar2 default get_param('method_opt'),
479 degree number default to_degree_type(get_param('degree')),
480 granularity varchar2 default get_param('granularity'),
481 cascade boolean default to_cascade_type(get_param('cascade')),
482 stattab varchar2 default null,
483 statid varchar2 default null,
484 statown varchar2 default null,
485 no_invalidate boolean default to_no_invalidate_type(
486 get_param('no_invalidate')),
487 stattype varchar2 default 'data',
488 force boolean default false
489 );
490 --可以查询user_tables、all_tables、dba_tables数据字典视图获取分析后的统计信息。
491 --可以使用analyze语句清除数据字典中表的统计信息,语法为:
492 analyze table[schema.]table delete[system]statistics;
493 analyze table employees delete statistics;--在删除表的统计信息的同时,该表上所有索引的统计信息也同时被删除了。
494 --验证表存储结构
495 analyze table[schema.]table validate structure--
496 [
497 cascade--对表进行完整性验证的同时,也对定义在该表上的索引进行完整性验证。
498 [
499 complete--对表及其索引进行完全的存储结构完整性验证,默认值。
500 [into[schema.]table]--将验证返回的、包含损坏数据块的记录的ROWID保存到用户自定义的表中。
501 [offline--在对表进行存储结构完整性验证时不允许对表进行DML操作。默认值。
502 |online]--如果对表进行存储结构完整性验证时,若有用户对该表进行DML操作,则必须使用ONLINE参数,
503 --以联机方式对表进行存储结构完整性验证。这样虽然会稍微影响DML执行性能,但为表的存储结构完整性验证提供了更大的灵活性。
504 ]|fast--对表和索引进行完全的结构完整性验证需要占用大量的资源,可以使用FAST参数,采用优化验证算法的验证方法。
505 --该验证方法可以快速实现对表的完整性验证,但不返回损坏数据块的详细信息。
506 ];
507
508 @d:\app\administrator\product\11.2.0\dbhome_1\rdbms\admin\utlvalid.sql;--创建一个默认表INVALID_ROWS
509 analyze table employees validate structure;--分析表
510 @D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\UTLCHN1.SQL;--CHAINED_ROWS表
511 analyze table[schema.]table list chained rows[into[schema.table]];--分析行链接、行迁移情况
512 -------------------------------------------------------------------------------------------------------
513 --约束的定义方式
514 --1.列级约束
515 column_definition[constraint constraint_name]constraint_type…
516 --2.表级约束
517 [constraint constraint_name] constraint_type(column1[,column1,…])…
518 --约束的状态
519 enable--激活
520 disable--禁用
521 validate--对表中已有记录进行约束检查
522 novalidate--不对表中已有记录进行约束检查。
523 --创建与维护约束
524 --1.采用列级约束方式定义约束
525 constraint constraint--约束名称,如果用户没有为约束命名,Oracle将自动为约束命名,样式为SYS_Cn,其中n是数据库对象的唯一编号。
526 [[not]null]|[unique]|[primary key]|[check(condition)]
527 [
528 references[schema.]object[(column)]
529 [on delete cascade|[set null]]--定义级联删除的外键约束。
530 ]
531 [
532 [not deferrable]|--约束不可延迟,默认值。
533 [deferrable--约束可以延迟
534 [initially immediate|--可延迟约束的立即检查。
535 deferred]--可延迟约束的延迟检查
536 ]
537 ]
538 [enable|disable]
539 [validate|novalidate]
540 [using index index_clause]--设置在定义主键约束或唯一性约束时自动创建的唯一性索引的参数。
541 [exceptions into[schema.]table]--将违反完整性约束的记录保存到指定的表中。
542 --2.采用表级约束方式定义约束
543 constraint constraint
544 [unique(column1[,column2…])]
545 [primary key(column1[,column2…])]
546 [check(condition)]
547 [foreign key(column1[,column2…])
548 references[schema.]object[(column[,column2…])]
549 [on delete cascade|[set null]]
550 ]
551 [
552 [not deferrable]|--约束不可延迟,默认值。
553 [deferrable--约束可以延迟
554 [initially immediate]|--可延迟约束的立即检查。
555 deferred]--可延迟约束的延迟检查S
556 ]
557 [enable|disable][validate|novalidate]
558 [using index index_clause]
559 [exceptions into[schema.]table]
560 --添加、修改与删除约束
561 --1.添加约束alter table table
562 add[constraint constraint]constraint_type(column1[,column2,…])
563 [constraint_parameters];
564 alter table books modify title not null;--添加非空约束
565 --2.修改约束
566 ALTER TABLE table
567 MODIFY[CONSTRAINT constraint]
568 [PRIMARY KEY]|[UNIQUE(column1[,column2,…])]
569 [constraint_parameters];
570 --3.重命名约束
571 alter table table rename constraint old_name to new_name;
572 --4.删除约束
573 ALTER TABLE table
574 DROP[CONSTRAINT constraint]
575 [PRIMARY KEY]|[UNIQUE(column1[,column2,…])]
576 [CASCADE][KEEP|DROP INDEX]
577 set constraints all deferred;--对所有可以延迟的约束进行延迟检查
578 set constraints all immediate;--恢复所有延迟检查的约束为立即检查
579 -----------------------------------------------------------------------------------
580 --创建其它表
581 --创建索引表
582 create table[schema.]table
583 (
584 column1 datatype[default|:=expr][column_level_constraint]
585 …
586 [,table_level_constraint]
587 )
588 organization index--创建索引表
589 [pctthreshold percent]--指定保留在索引段的索引条目中的记录的百分比,超出该百分比的部分将保存到溢出数据段中,即一条记录分成两部分,
590 --一部分包含主键的列保存在原来的索引段中,而另一部分不包括主键的列保存到溢出数据段中。
591 [including column]--该子句指定的列之前的所有列与主键列一起保存在索引段的索引条目中(数据百分比不能超过PCTTHRESHOLD设定的值),
592 --而之后的列都被存储在溢出数据段中。
593 [overflow tablespace tablespace]--指定溢出数据段的存储表空间。
594 --注意 创建索引表时,必须定义一个主键约束,否则将返回错误。
595 --创建分区表
596 create table table(…)
597 partition by range(column1[,column2,…])--采用范围分区,分区列,可以是单列分区,也可以是多列分区。
598 (
599 partition partition1 values less than(literal|maxvalue)--分区设置(partition1就是个名字)。设置分区列值的上界。
600 [tablespace tablespace]--设置分区所在的表空间
601 [,partition partition2 values less than(literal|maxvalue)
602 [tablespace tablespace],…]
603 )
604 alter tablespace tbs1 offline;--将分区表的一分区设置为脱机状态,验证分区的可用性
605 --创建列表分区表
606 create table table(…)
607 partition by list(column)--采用列表分区
608 (
609 partition partition1 values([literal|null]|[default])
610 [tablespace tablespace]
611 [,
612 partition partition2 values([literal|null]|[default])
613 [tablespace tablespace],…
614 ]
615 )
616 --创建散列分区表
617 create table table(…)
618 partition by hash(column1[,column2,…])
619 [(partition partition[tablespace tablespace][,…])]
620 [partitions hash_partition_quantity store in(tablespace1[,…])]
621 …
622 --------------------------------------------------------------------------------------
623 --PL/SQL
624 --一个完整的PL/SQL语句块由3个部分组成。
625 declare
626 --声明部分,定义变量、数据类型、异常、局部子程序等
627 begin
628 --执行部分,实现块的功能
629 exception
630 --异常处理部分,处理程序执行过程中产生的异常
631 end;
632 ----------------------------------------------------------------------------------------
633 --控制结构
634 --1.IF语句
635 --利用IF语句实现选择控制的语法为:
636 if condition1 then statements1;
637 [elsif condition2 then statements2;]
638 …
639 [else else_statements];
640 end if;
641 --2.CASE(等值比较)
642 case test_value
643 when value1 then statements1;
644 when value2 then statements2;
645 ……
646 when valuen then statementsn;
647 [else else_statements;]
648 end case;
649 --2.CASE(多条件比较或搜索比较)
650 case
651 when condition1 then statements1;
652 when condition2 then statements2;
653 ……
654 when conditionn then statementsn;
655 [else else_statements;]
656 end case;
657 --3.LOOP
658 loop
659 sequence_of_statement;
660 exit[when condition];
661 end loop;
662 --4.WHILE
663 while condition loop
664 sequence_of_statement;
665 end loop;
666 --5.FOR
667 for loop_counter in[reverse]low_bound..high_bound loop
668 sequence_of_statement;
669 end loop;
670 --例:
671 begin
672 for v_counter in 1..50 loop
673 insert into temp_table values(v_counter,'loop index');
674 end loop;
675 end;
676 --6.GOTO
677 declare
678 v_counter binary_integer:=1;
679 begin
680 <<label>>
681 insert into temp_table values(v_counter,'loop index');
682 v_counter:=v_counter+1;
683 if v_counter <= 50 then
684 goto label;
685 end if;
686 end;
687 --游标
688 --1.显示游标
689 cursor cursor_name is select_statement;--(1)定义游标
690 open cursor_name;--(2)打开游标
691 fetch cursor_name into variable_list|record_variable;--(3)检索游标
692 close cursor_name;--(4)关闭游标
693 --例:
694 declare
695 v_deptno hr.employees.department_id%type;
696 cursor c_emp is select*from hr.employees
697 where department_id=v_deptno;
698 v_emp c_emp%rowtype;
699 begin
700 v_deptno:=&x;
701 open c_emp;
702 loop
703 fetch c_emp into v_emp;
704 exit when c_emp%notfound;
705 dbms_output.put_line(v_emp.employee_id||''||v_deptno||''
706 v_emp.first_name||''||v_emp.last_name||''||v_emp.salary);
707 end loop;
708 close c_emp;
709 end;
710 --显式游标的属性
711 --无论显式游标还是隐式游标,都具有%isopen、%found、%notfound、
712 --%rowcount、返回到目前为止从游标缓冲区检索的记录的个数。
713 --%bulk_rowcount数值型,用于取得FORALL语句执行批绑定操作时第i个元素所影响的行数。五个属性,
714 --利用游标属性可以判断当前游标状态。
715 --.参数化显式游标
716 cursor cursor_name(parameter1 datatype[,parameter2 datatype…])
717 is select_statement;
718 --例如,查询并输出某个部门的员工信息。
719 declare
720 cursor c_emp(p_deptno employees.department_id%type)is
721 select*from hr.employees where department_id=p_deptno;
722 v_emp c_emp%rowtype;
723 begin
724 open c_emp(10);
725 loop
726 fetch c_emp into v_emp;
727 exit when c_emp%notfound;
728 dbms_output.put_line(v_emp.employee_id||v_emp.last_name);
729 end loop;
730 close c_emp;
731 open c_emp(20);
732 loop
733 fetch c_emp into v_emp;
734 exit when c_emp%notfound;
735 dbms_output.put_line(v_emp.employee_id||v_emp.last_name);
736 end loop;
737 close c_emp;
738 end;
739 --1.利用简单循环检索游标的基本方式如下:
740 declare
741 cursor cursor_name is select…;
742 begin
743 open cursor_name;
744 loop
745 fetch…into…;
746 exit when cursor_name%notfound;
747 …
748 end loop;
749 close cursor_name;
750 end;
751 --2.利用WHILE循环检索游标的基本方法如下:
752 declare
753 cursor cursor_name is select…;
754 begin
755 open cursor_name;
756 fetch…into…;
757 while cursor_name%found loop
758 fetch…into…;
759 …
760 end loop;
761 close cursor;
762 end;
763 --3.利用FOR循环检索游标
764 --利用FOR循环检索游标时,系统会自动打开、检索和关闭游标。
765 --用户只需要考虑如何处理从游标缓冲区中检索出来的数据。其方法如下:
766 declare
767 cursor cursor_name is select…;
768 begin
769 for loop_variable in cursor_name loop
770 …
771 end loop;
772 end;
773 --1.利用游标更新或删除数据的定义方法
774 cursor cursor_name is
775 select select_list_item from table for update[of column_reference]
776 [nowait];--若数据对象已经被其他会话加锁,则当前会话挂起等待(默认状态)若指定则返回ORACLE错误。
777 --2.利用游标更新或删除数据的方法
778 where current of cursor_name;
779 --例
780 declare
781 cursor c_emp is select*from hr.employees for update;
782 v_increment number;
783 begin
784 for v_emp in c_emp loop
785 case v_emp.department_id
786 when 10 then v_increment:=100;
787 when 20 then v_increment:=140;
788 when 30 then v_increment:=200;
789 else v_increment:=250;
790 end case;
791 update hr.employees set salary=salary+v_increment
792 where current of c_emp;
793 end loop;
794 commit;
795 end;
796 --隐式游标
797 --显式游标用于处理返回多行数据的SELECT查询,但所有的SQL语句都有一个执行的缓冲区,
798 --隐式游标就是指向该缓冲区的指针,由系统隐含地打开、处理和关闭。隐式游标又称为SQL游标。
799 --sql%isopen--对用户而言,该属性值始终为false,因为操作时系统自动打开,操作完后立即自动关闭
800 --sql%found--判断当前的操作是否会对数据库产生影响。如果有数据的插入、删除、修改或查询到数据,则返回true,否则返回false。
801 --sql%notfound--判断当前的操作是否对数据库产生影响。如果没有数据的插入、删除、修改或没有查询到数据,则返回true,否则返回false。
802 --sql%rowcount--数值型,返回当前操作所涉及的数据库中的行数。
803 --例
804 begin
805 update hr.employees set salary = salary + 100
806 where employee_id=1000;
807 if sql%notfound then
808 insert into hr.employees(employee_id,first_name,last_name,
809 email,hire_date,job_id,department_id)
810 values(employees_seq.nextval,'san','zhang',
811 'zs@neusoft.edu.cn',sysdate,'ac_account',200);
812 end if;
813 end;
814 --或
815 begin
816 update hr.employees set salary = salary + 100
817 where employee_id = 1000;
818 if sql%rowcount = 0 then
819 insert into hr.employees(employee_id,first_name,last_name,
820 email,hire_date,job_id,department_id)
821 values(employees_seq.nextval,'san','zhang',
822 'zs@neusoft.edu.cn',sysdate,'ac_account',200);
823 end if;
824 end;
825 --注意 当SELECT…INTO语句没有查询到任何数据时,会激发NO_DATA_FOUND异常。
826 --游标变量
827 --前面介绍的显式游标在定义时与特定的查询绑定,其结构是不变的,因此又称为静态游标。
828 --游标变量是一个指向多行查询结果集的指针,不与特定的查询绑定,
829 --因此具有非常大的灵活性,可以在打开游标变量时定义查询,可以返回不同结构的结果集。
830 type ref_cursor_type_name is ref cursor[return return_type]--(1)定义游标引用类型
831 --在Oracle 11g中,系统预定义了一个游标引用类型,称为SYS_REFCURSOR,可以直接使用它定义游标变量。
832 ref_cursor_type_name variable_name;--(2)声明游标变量
833 --例
834 type emp_cursor_type is ref cursor return employees%rowtype;
835 type general_cursor_type is ref cursor;
836 v_emp emp_cursor_type;
837 v_general general_cursor_type;
838 my_cursor sys_refcursor;
839 OPEN cursor_variable FOR select_statement;--打开游标变量
840 loop--检索游标变量
841 fetch cursor_variable into variable1,variable2,…;
842 exit when cursor_variable%notfound;
843 …
844 end loop;
845 CLOSE cursor_variable;--.关闭游标变量
846 --例
847 DECLARE
848 TYPE emp_cursor_type IS REF CURSOR RETURN hr.employees%ROWTYPE;
849 TYPE general_cursor_type IS REF CURSOR;
850 v_emp emp_cursor_type;
851 v_general general_cursor_type;
852 my_cursor SYS_REFCURSOR;
853 v_empinfo hr.employees%ROWTYPE;
854 v_deptinfo hr.departments%ROWTYPE;
855 begin
856 open v_emp for select*from hr.employees;
857 loop
858 fetch v_emp into v_empinfo;
859 exit when v_emp%notfound;
860 dbms_output.put_line(v_empinfo.employee_id||''
861 v_empinfo.first_name||''||v_empinfo.last_name||''
862 v_empinfo.salary);
863 end loop;
864 close v_emp;
865 open my_cursor for select*from hr.departments;
866 loop
867 fetch my_cursor into v_deptinfo;
868 exit when my_cursor%notfound;
869 dbms_output.put_line(v_deptinfo.department_id||''
870 v_deptinfo.department_name);
871 end loop;
872 close my_cursor;
873 --open v_general for select employee_id,first_name,last_name,
874 --salary,department_id from hr.employees;
875 end;
876 -----------------------------------------------------------------------------------------------------
877 --预定义异常(略)
878 --非预定义异常
879 declare
880 e_deptno_fk exception;
881 pragma exception_init(e_deptno_fk,-2292);
882 begin
883 …
884 exception
885 …
886 end;
887 --用户自定义异常
888 e_exception exception;--定义异常
889 raise user_define_exception;--抛出异常
890 exception--异常的捕获及处理
891 when exception1[or excetpion2…]then sequence_of_statements1;
892 when exception3[or exception4…]then sequence_of_statements2;
893 …
894 when others then sequence_of_statementsn;
895 end;
896 ------------------------------------------------------------------------------------------------------------
897 --创建存储过程
898 create[or replace]procedure procedure_name
899 (parameter1_name[mode]datatype[default|:=value]
900 [,parameter2_name[mode]datatype[default|:=value],…])
901 as|is
902 /*declarative section is here*/
903 begin
904 /*executable section is here*/
905 exception
906 /*exception section is here*/
907 end[procedure_name];
908 --其中mode有IN、OUT、IN OUT
909 --删除存储过程
910 drop procedure proc_show_emp;
911 ---------------------------------------------------------------------------------------------------------
912 --创建函数
913 create[or replace]function function_name
914 (parameter1_name[mode]datatype[default|:=value]
915 [,parameter2_name[mode]datatype[default|:=value],…])
916 return return_datatype
917 as|is
918 /*declarative section is here*/
919 begin
920 /*executable section is here*/
921 exception
922 /*exception section is here*/
923 end[function_name];
924 --例
925 create or replace function func_dept_maxsal(
926 p_deptno hr.employees.department_id%type)
927 return hr.employees.salary%type
928 as
929 v_maxsal hr.employees.salary%type;
930 begin
931 select max(salary)into v_maxsal from hr.employees
932 where department_id=p_deptno;
933 return v_maxsal;
934 exception
935 when no_data_found then
936 dbms_output.put_line('the deptno is invalid!');
937 end func_dept_maxsal;
938 --------------------------------------------------------------------------------------------------
939 --创建包声明
940 create or replace package package_name
941 is|as
942 [pragma serially_resuable]
943 type_definition|
944 variable_declaration|
945 exception_declaration
946 cursor_declaration|
947 procedure_declaration|
948 function_declaration
949 end[package_name];
950 --.创建包体
951 create or replace package body package_name
952 is|as
953 [pragma serially_resuable]
954 type_definition|
955 variable_declaration|
956 exception_declaration
957 cursor_declaration|
958 procedure_definition|
959 function_definition
960 end[package_name];
961 -------------------------------------------------------------------------
962 --创建用户
963 create user user identified--用于指明用户身份认证方式。
964 [by password]--指定用户采用数据库身份认证
965 [externally--指定用户采用外部身份认证,如操作系统认证或第三方认证。
966 [as 'certificate_dn|--指定用户只采用SSL外部身份认证
967 kerberos_principal_name']--指定用户只采用kerberos外部身份认证。
968 ]
969 [globally[as 'directory_dn']]--指定用户采用全局身份认证。
970 [default tablespace tablespace]--用于设置用户的默认表空间。
971 [temporary tablespace tablesapce|tablespace_group_name]--用于设置用户的临时表空间
972 [quota n k|m|unlimited on tablespace]--用于指定用户在特定表空间上的配额
973 [profile profile]--用于为用户指定概要文件。默认值为DEFAULT,采用系统默认的概要文件。
974 [password expire]--用于设置用户口令的初始状态为过期,用户在首次登录数据库时必须修改口令。
975 [account lock|unlock];--用于设置用户初始状态为锁定,默认为不锁定。
976 --注意 创建一个用户后,如果不为该用户授权,则该用户不能做任何操作,即便是连接数据库。
977 --只有给用户授予了CREATE SESSION系统权限后,用户才可以连接数据库。
978 --如果用户要通过OEM访问数据库,还需要具有SELECT ANY DICTIONARY系统权限。
979 orapwd file=filename[password=password][entries=numusers][force=y|n]
980 [ignorecase=y|n]
981 --例
982 orapwd file=E:\PWDorcl.ora password=www123 entries=5 force=n ignorecase=y;
983 show parameter remote_login_passwordfile;
984 alter system set remote_login_passwordfile = execlusive scope = spfile;
985 --查询某个用户具有的角色:
986 select grantee,granted_role from dba_role_privs where grantee='SYS';
987 --查询某个用户具有的系统权限:
988 select grantee,privilege from dba_sys_privs where grantee='SYS';
989 --查询某个角色中具有什么系统权限:
990 select privilege from role_sys_privs where role='RESOURCE';
991 --查询某个角色中包含有什么角色
992 select granted_role from role_role_privs where role='SYSDBA';
993 --管理用户、角色和权限的DBA视图:
994
995 ----------------------------------------------------------------------------------
996 --创建重做日志文件
997 alter database add logfile
998 ('d:\disk4\redo04a.log','d:\disk5\redo04b.log')size 10m;
999 alter database add logfile group 5
1000 ('d:\disk4\redo05a.log','d:\disk5\redo05b.log')size 10m;
1001 --注意:重做日志文件最小为4MB
1002 select * from v$logfile order by group#;
1003 alter database add logfile member
1004 'd:\disk5\redo01b.log'to group 1,
1005 'd:\disk5\redo02b.log'to group 2,
1006 'd:\disk5\redo03b.log'to group 3;
1007 alter database rename file…to--修改重做日志文件的名称与位置
1008 ALTER DATABASE DROP LOGFILE MEMBER--删除重做日志文件组及其成员
1009 --归档重做日志管理
1010 archive log list--查看当前数据库的归档设置情况
1011 alter database archivelog--设置归档
1012 alter database noarchivelog--设置非归档
1013 --将数据库从非归档模式转换为归档模式的步骤为:
1014 --1.关闭数据库
1015 shutdown
1016 --2.备份数据库。
1017 --3.设置归档目的地
1018 select name,value,from v$parameter where name = 'db_recovery_file_dest';
1019 --4.将数据库启动到加载状态。
1020 startup mount
1021 --5.改变数据库归档模式。
1022 alter database archivelog;
1023 --6.打开数据库。
1024 alter database open;
1025 --7.关闭数据库。
1026 shutdown
1027 --8.备份数据库。