Oracle数据库命令大全速查文档格式.docx
《Oracle数据库命令大全速查文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle数据库命令大全速查文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
to'
/oracle/oradata/redo01.log'
;
1.6.删除重做日志组(droponlineredologgroups)
alterdatabasedroplogfilegroup3;
1.7.删除重做日志文件(droponlineredologmembers)
alterdatabasedroplogfilemember'
1.8.清空重做日志文件(clearingonlineredologfiles)
alterdatabaseclear[unarchived]logfile'
/oracle/log2a.rdo'
1.9.使用logminer分析重做日志文件(usinglogmineranalyzingredologfiles)
a.intheinit.oraspecifyutl_file_dir='
b.sql>
executedbms_logmnr_d.build('
oradb.ora'
\oracle\oradb\log'
);
c.sql>
executedbms_logmnr_add_logfile('
\oracle\oradata\oradb\redo01.log'
dbms_logmnr.new);
d.sql>
executedbms_logmnr.add_logfile('
\oracle\oradata\oradb\redo02.log'
dbms_logmnr.addfile);
e.sql>
executedbms_logmnr.start_logmnr(dictfilename=>
'
\oracle\oradb\log\oradb.ora'
f.sql>
select*fromv$logmnr_contents(v$logmnr_dictionary,v$logmnr_parameters
v$logmnr_logs);
g.sql>
executedbms_logmnr.end_logmnr;
2.表空间管理
2.1.创造表空间(createtablespaces)
createtablespacets_namedatafile'
\oracle\oradata\file1.dbf'
size100m,
\oracle\oradata\file2.dbf'
size100mminimumextent550k[logging/nologging]sql>
defaultstorage(initial500knext500kmaxextents500pctinccease0)
[online/offline][permanent/temporary][extent_management_clause]
2.2.创建本地管理的表空间(locallymanagedtablespace)
createtablespaceuser_datadatafile'
\oracle\oradata\user_data01.dbf'
size500mextentmanagementlocaluniformsize10m;
2.3.创建临时表空间(temporarytablespace)
createtemporarytablespacetemptempfile'
\oracle\oradata\temp01.dbf'
2.4.改变表空间的存储参数(changethestoragesetting)
altertablespaceapp_dataminimumextent2m;
altertablespaceapp_datadefaultstorage(initial2mnext2mmaxextents999);
2.5.使表空间离线或连线(takingtablespaceofflineoronline)
altertablespaceapp_dataoffline;
altertablespaceapp_dataonline;
2.6.设置表空间为只读/可写模式(read_onlytablespace)
altertablespaceapp_datareadonly|write;
2.7.删除表空间(dropingtablespace)
droptablespaceapp_dataincludingcontents;
2.8.允许数据文件自动扩展(enableingautomaticextensionofdatafiles)
altertablespaceapp_dataadddatafile'
\oracle\oradata\app_data01.dbf'
size200m
autoextendonnext10mmaxsize500m;
2.9.手工改变数据文件的大小(changethesizefodatafilesmanually)
alterdatabasedatafile'
\oracle\oradata\app_data.dbf'
resize200m;
2.10.改名表空间中的数据文件(Movingdatafiles:
altertablespace)
altertablespaceapp_datarenamedatafile'
\oracle\oradata\app_data.dbf
\oracle\app_data.dbf'
2.11.改变数据库中的数据文件(movingdatafiles:
alterdatabase)
3.表
3.1.创建表(createatable)
createtabletable_name(columndatatype,columndatatype]....)
tablespacetablespace_name[pctfreeinteger][pctusedinteger]
[initransinteger][maxtransinteger]sql>
storage(initial200knext200kpctincrease0maxextents50)
[logging|nologging][cache|nocache]
3.2.复制一个已存在的表(copyanexistingtable)
createtabletable_name[logging|nologging]assubquery
3.3.创建一个临时表(createtemporarytable)
createglobaltemporarytablexay_tempasselect*fromxay;
oncommitpreserverows/oncommitdeleterows
3.4.pctfree和pctused参数计算公式
pctfree=(averagerowsize-initialrowsize)*100/averagerowsize
pctused=100-pctfree-(averagerowsize*100/availabledataspace)
这是标准的计算公式。
PCTFREE:
指定表内每个数据块中空间的百分比。
PCTFREE的值必须介于0和99之间。
如果值为零,表示可以通过插入新行来填充整个块。
缺省值为10。
此值表示每个块中保留着10%的空间,用于更新现有的行以及插入新行,每个块最多可填充到90%。
PCTUSED:
指定为表内每个数据块维护的已用空间的最小百分比。
如果一个块的已用空间低于PCTUSED,则可在该块中插入行。
PCTUSED的值为介于0和99之间的整数,缺省值为40。
结合PCTFREE和PCTUSED就可以确定将新行插入到现有数据块中,还是插入到新块中。
这两个参数值的和必须小于或等于100。
使用这两个参数可以更有效地利用表内的空间。
设置PCTFREE和PCTUSED
设置PCTFREE
PCTFREE值越高,可为数据库块内的更新提供的空间就越大。
如果表存在下面两种情况,则应设置一个更高的值:
?
某些列最初为NULL,后来更新为某个值
某些列由于更新,大小可能增加
PCTFREE的值越高,块密度就越低,即每个块容纳的行数就越少。
上面的公式确保块中有足够的空闲空间供行增长使用。
设置PCTUSED
设置PCTUSED以确保只有在具备足够空间来容纳一个平均大小的行时才将块返回到空闲列表中。
如果空闲列表中的某个块没有足够的空间来插入一行,Oracle服务器将查找空闲列表中的下一个块。
直到找到具备足够空间的块或者到达列表的末尾,这种线性扫描才会结束。
使用给定的公式可以增加找到具有所需空闲空间的块的概率,从而缩短扫描空闲列表的时间。
注:
可以使用ANALYZETABLE命令估算平均行大小的值。
Oracle9i“自动段空间管理”功能可替代PCTUSED、FREELISTS和FREELISTGROUPS。
3.5.改变存储和块利用率参数(changestorageandblockutilizationparameter)
altertabletable_namepctfree=30pctused=50storage(next500kminextents2maxextents100);
3.6.手工分配区间(extents)(manuallyallocatingextents)
altertabletable_nameallocateextent(size500kdatafile'
/oracle/data.dbf'
3.7.改变表的所属表空间(movetablespace)
altertableemployeemovetablespaceusers;
3.8.释放表中未用空间(deallocateofunusedspace)
altertabletable_namedeallocateunused[keepinteger]
3.9.截断表(truncate)(truncateatable)
truncatetabletable_name;
截断一个表将删除表中所有行,从而释放已使用的空间。
对应的索引将被截断。
(注:
truncatetable不是DML语句,是DDL语句
另外,truncate与delete的区别是,delelte不释放空间,truncate释放空间。
)
3.10.删除表(dropatable)
droptabletable_name[cascadeconstraints];
3.11.删除列(dropacolumn)
altertabletable_namedropcolumncommentscascadeconstraintscheckpoint1000;
altertabletable_namedropcolumnscontinue;
3.12.标识某一列为未使用(unused)(markacolumnasunused)
altertabletable_namesetunusedcolumncommentscascadeconstraints;
altertabletable_namedropunusedcolumnscheckpoint1000;
altertableordersdropcolumnscontinuecheckpoint1000
data_dictionary:
dba_unused_col_tabs
除将列从表中删除以外,还可以先将列标记为“未使用”,以后再删除。
因为没有删除数据,所以此操作不回收磁盘空间,因而具有速度比较快的优点。
被标为“未使用”的列可在以后系统活动较少时从表中删除。
未使用的列就像不属于表一样。
查询时看不到未使用列中的数据。
此外,在执行DESCRIBE命令时,也不会显示这些列的名称和数据类型。
用户可以添加与未使用的列同名的新列。
如果想删除同一表中的两列,则可先将列设置为“未使用”然后再删除。
在删除两列时,表中的所有行都会更新两次;
但如果将这些列设置为“未使用”然后再删除,则所有的行仅更新一次。
4.索引
4.1.创建一个基于函数的索引(creatingfunction-basedindexes)
createindexsummit.item_quantityonsummit.item(quantity-quantity_shipped);
基于函数的索引(Function-basedindexes):
如果在表中要建立索引的一列或多列上使用了函数或表达式,则创建的是基于函数的索引。
基于函数的索引预先计算函数或表达式的值,并将结果存储在索引中。
可以将基于函数的索引创建为B树或位图索引。
4.2.创建一个B树索引(createaB-treeindex)
create[unique]indexindex_nameontable_name(column,..asc/desc)tablespace
tablespace_name[pctfreeinteger][initransinteger][maxtransinteger]
[logging|nologging][nosort]storage(initial200knext200kpctincrease0maxextents50);
B树:
平衡二叉树,oracle中用的最多的索引模式,适用于取值唯一性高的情况。
只有两层,非叶级、叶级(指针所在级)
4.3.索引中pctfree参数计算公式
pctfree(index)=(maximumnumberofrows-initialnumberofrows)*100/maximumnumberofrows
4.4.创建一个反向键索引(creatingreversekeyindexes)
createuniqueindexxay_idonxay(a)reversepctfree30storage(initial200knext200kpctincrease0maxextents50)tablespaceindx;
4.5.创建位图索引(createbitmapindex)
createbitmapindexxay_idonxay(a)pctfree30storage(initial200knext200kpctincrease0maxextents50)tablespaceindx;
在下列情况中,位图索引比B树索引更有利:
当表包含数百万行且键列的基数很低(即,该列中重复的值很多)时。
例如,对于包含护照记录的表的性别列和婚姻状况列而言,位图索引比B树索引更适合
当查询经常使用涉及OR运算符的多个WHERE条件组合时
当键列上存在只读或很少的更新操作时
(位图索引适用于取值的唯一性很低的情况)
4.6.改变索引的存储参数(changestorageparameterofindex)
alterindexxay_idstorage(next400kmaxextents100);
4.7.为索引分配空间(allocatingindexspace)
alterindexxay_idallocateextent(size200kdatafile'
/oracle/index.dbf'
8.alterindexxay_iddeallocateunused;
手动分配索引空间:
在表上进行频繁的插入操作前,可能需要向索引添加区。
添加区可防止索引动态扩展并导致性能降低。
(其中指定的数据文件一定是索引所在表空间的数据文件)
5.约束(constraints)
5.1.将约束定义为立即(immediate)或延迟(deferred)(defineconstraintsasimmediateordeferred)
altersessionsetconstraint[s]=immediate/deferred/default;
setconstraint[s]constraint_name/allimmediate/deferred;
SETCONSTRAINTS语句用于将特定事务处理的约束设置为DEFERRED或IMMEDIATE。
可以使用此语句设置约束名称列表或约束的模式。
SETCONSTRAINTS模式将一直持续到事务处理完成或者另一个SETCONSTRAINTS语句重置模式。
SETCONSTRAINTS语句不允许在触发器内部使用。
ALTERSESSION语句还包含将约束设置为IMMEDIATE或DEFERRED的子句SETCONSTRAINTS。
此命令缺省为设置所有(ALL)可延迟的约束(不能指定约束名称列表)。
ALTERSESSIONSETCONSTRAINTS语句仅适用于当前的会话。
5.2.删除表或表空间时连带删除其上的外键(约束)
droptabletable_namecascadeconstraints
droptablespacetablespace_nameincludingcontentscascadeconstraints
在删除父表之前,必须先删除外键。
可以使用以下一条语句同时执行这两个操作:
DROPTABLEtableCASCADECONSTRAINTS
在未删除或禁用外键之前无法截断(truncated)父表。
在删除包含父表的表空间之前,必须先删除外键。
可使用下列命令完成该操作:
DROPTABLESPACEtablespaceINCLUDINGCONTENTS
CASCADECONSTRAINTS
如果从父表中删除行时没有使用DELETECASCADE选项,Oracle服务器必须确保子表中的行不包含相应的外键。
同样,仅当子行中不包含旧键值时,才允许更新父键。
如果子表的外键上没有索引,则Oracle服务器锁定子表并禁止更改以确保引用完整性。
如果表上有索引,则可通过锁定索引项并避免子表上有更具限制性的锁来维护引用完整性。
如果必须从不同的事务处理同时更新两个表,则在外键列上创建索引。
5.3.在创建表时定义约束(defineconstraintswhilecreateatable)
createtablexay(idnumber(7)constraintxay_idprimarykeydeferrable
usingindexstorage(initial100knext100k)tablespaceindx);
primarykey/unique/referencestable(column)/check
5.4.启用当前禁用的约束(enableconstraints)
altertablexayenablenovalidateconstraintxay_id;
启用NOVALIDATE:
对于当前已有索引的PRIMARYKEY和UNIQUE约束,启用NOVALIDATE约束比启用VALIDATE约束要快得多,这是因为,如果约束是可延迟的,则不检查现有数据是否违反约束。
如果使用该选项启用约束,则不要求锁定表。
这种方法适合表上有许多DML活动的情况,如在OLTP环境中。
但是,如果需要创建索引,使用这种启用约束的方法并不能比ENABLEVALIDATE带来更多的好处,因为Oracle服务器在建立索引时锁定表。
5.5.启用约束(enableconstraints)
altertablexayenablevalidateconstraintxay_id;
6.加载(load)数据
6.1.使用insert语句从另一张表中“直接加载