搜档网
当前位置:搜档网 › Oracle 删除索引

Oracle 删除索引

Oracle  删除索引
Oracle  删除索引

Oracle 删除索引

删除索引是使用DROP INDEX语句完成的。一般情况下,删除索引是由索引所有者完成的,如果以其他用户身份删除索引,则要求该用户必须具有DROP ANY INDEX系统权限或在相应表上的INDEX对象权限。通常在如下情况下需要删除某个索引:

●该索引不再需要时,应该删除该索引,以释放其所占用的空间。

●如果移动了表中的数据,导致索引中包含过多的存储碎片,此时需要删除并重建索

引。

●通过一段时间的监视,发现很少有查询会使用到该索引。

索引被删除后,它所占用的所有盘区都将返回给包含它的表空间,并可以被表空间中其他对象使用。索引的删除方式与索引创建采用的方式有关,如果使用CREATE INDEX语句显式地创建该索引,则可以用DROP INDEX语句删除该索引。例如:

SQL> drop index emp_job_bmp;

索引已删除。

如果索引是定义约束时由Oracle自动建立,则必须禁用或删除该约束本身。另外,在删除一个表时,Oracle也会删除所有与该表相关的索引。

关于索引最后需要注意一点,虽然一个表可以拥用任意数目的索引,但是表中的索引数目越多,维护索引所需的开销也就越大。每当向表中插入、删除和更新一条记录时,Oracle 都必须对该表的所有索引进行更新。因此,用户还需要在表的查询速度和更新速度之间找到一个合适的平衡点。也就是说,应该根据表的实际情况,限制在表中创建的索引数量。

Oracle卸载 可不用向导程序 直接删注册表和文件夹 Oracle11g亲测卸载再重装成功

Oracle卸载可不用向导程序直接删注册表和文件夹Oracle11g亲测卸载再重装成功 1.关闭oracle所有的服务。可以在windows的服务管理器中关闭; 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 删除该路径下的所有以oracle开始的服务名称,这个键是标识Oracle在windows下注册的各种服务! 3.打开注册表,找到路径: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息。 4.删除注册的oracle事件日志,打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 删除注册表的以oracle开头的所有项目。 5.删除环境变量path中关于oracle的内容。 鼠标右键右单击“我的电脑-->属性-->高级-->环境变量-->PATH 变量。

删除Oracle在该值中的内容。注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(; )隔开的,删除时注意。 建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。 6.重新启动操作系统。 以上1~5个步骤操作完毕后,重新启动操作系统。 7.重启操作系统后各种Oracle相关的进程都不会加载了。 这时删除Oracle_Home下的所有数据。(Oracle_Home指Oracle程序的安装目录) 8.删除C:\Program Files下oracle目录。 (该目录视Oracle安装所在路径而定) 9.删除开始菜单下oracle项,如: C:\Documents and Settings\All Users\「开始」菜单\程序\Oracle - Ora10g 不同的安装这个目录稍有不同。

Oracle索引分析与查询优化

龙源期刊网 https://www.sodocs.net/doc/1a13590511.html, Oracle索引分析与查询优化 作者:崔黎明志远李婧 来源:《数字技术与应用》2016年第07期 摘要:Oracle是目前国内在大型数据存储中用得比较多的一种关系型数据库,磁盘阵列技术(RAID)和集群技术(RAC)的运用,使Oracle在处理数据效率和数据安全上有非常大的提高,在国内交通、电力,通信和金融等重要领域都有广泛的用途。本文基于Oracle 11g版本,对Rowid和索引的原理机制做出分析,并论述利用这些原理对大型数据表查询的优化。 关键词:Oracle Rowid 索引查询 中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2016)07-0234-02 在逻辑上,Oracle是由多个表空间构成的,在新建一个表空间的时候,必须指定存储的文件,可以指向多个存储在不同磁盘上的数据。表空间下面分为段、区、块。新建一张表的时候,Oracle数据库就会为它创建一个段。所谓区就是指连续的块(block)构成的空间,一般区包含8个空块,block是Oracle数据库最小的数据空间,一般为8k或16k,当开始往这个表中插入数据的时候,Oralce数据库会自动为这个表分配一个区,并把数据不断往此区进行填充,当数据填满此区后,Oralce数据库会重新为该表分配一个区而不是一个段。实际上,对于我们不同的查询过程中,就是通过一些谓词过滤条件,从对应的数据块中获取正确的一行数据或多行数据。如何快速定位到该数据行,是一个数据库学习者不断探索的方向。 1 Rowid 1.1 简介 从字面上理解是行标识的意思,它是Oracle数据库中数据表的一个伪列,用于存放该表中每一行数据的地址,在8i版本之前,Oracle采用受限制的rowid,它是由数据文件编号,块编号和数据在该块内的偏移量这三个部分构成,长度为6个字节,因此在8i之前的版本中,每 个数据库最多可以包含1022个文件,每个文件最多能有4m个数据块,而每个数据库最多能 存储64k条记录。为了突破长度的限制和解决其他一些缺陷,Oracle数据库引入了这样一个概念:相对文件号。它的主要特点是改变之前rowid中数据文件编号是整个数据库范围组成的表空间,即文件编号为5的文件不再是数据库中编号为5的数据文件,而是表空间中对应编号的数据文件。如下图1所示为Oracle11g中一个普通表的rowid。 从该图1中可以看到rowid共有18位,分为四部分,格式为:AAAAAABBBCCCCCCDDD,其中AAAAAA六位表示dataobjectid,根据这个id可以确定该行数据在哪个段中;BBB三位表示相对文件号,通过这个字段号可以用来确定该行数据的绝 对文件号;CCCCCC六位表示datablocknumber,它是相对于datafile的编号;最后三位DDD

oracle索引基本分类

oracle索引基本分类法分类 逻辑上: Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned 非分区索引 B-tree: Normal 正常型B树 Rever Key 反转型B树 Bitmap 位图索引 索引结构: B-tree: 适合与大量的增、删、改(OLTP); 不能用包含OR操作符的查询; 适合高基数的列(唯一值多) 典型的树状结构; 每个结点都是数据块; 大多都是物理上一层、两层或三层不定,逻辑上三层; 叶子块数据是排序的,从左向右递增; 在分支块和根块中放的是索引的范围; Bitmap: 适合与决策支持系统; 做UPDATE代价非常高; 非常适合OR操作符的查询; 基数比较少的时候才能建位图索引; 树型结构: 索引头 开始ROWID,结束ROWID(先列出索引的最大范围) BITMAP 每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT 对应的ROWID有值; =============================================== ======================

Oracle的索引主要包含两类:BTree和位图索引。默认情况下大多使用Btree 索引,该索引就是通常所见唯一索引、聚簇索引等等,Btree用在OLTP,加快查询速度。位图索引是Oracle的比较引人注目的地方,其主要用在OLAP(联机数据分析)方面,也就是数据仓库方面用到,目的是在加快查询速度是,节省存储空间。通常情况下,索引都要耗费比较大的存储空间,位图采用了压缩技术实现磁盘空间缩减。Btree用在高基数(即列的数据相异度大),位图用在低基数列。位图索引的基本原理是在索引中使用位图而不是列值。通常在事实表和维表的键之间有很低的集的势(cardinality),使用位图索引,存储更为有效,与B*Tree 索引比较起来,只需要更少的存储空间,这样每次读取可以读到更多的记录,而且与B*Tree索引相比,位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间,从而得到性能上的极大的提升。 在Oracle中如何合理的使用位图索引?以下的几个事项应该考虑。 *如果要使用位图索引,初始化参数STAR_TRANSFORMATION_ENABLED 应该设置为TRUE. *优化模式应该是CBO。对于数据仓库的环境中,总是应该考虑使用CBO (COST-BASEDOPTIMIZER)。 *位图索引应该建立在每一个事实表的外键列上。(这只是一个一般的规则.) 此外,对于数据表中的cardinality如何客观的确定也是一个问题,一万条数据中只包含3个值的集和算是低的了,那么一亿条记录中包含3万条记录算不算低的呢?对于这样的情况,建议几行一下数据的模拟测试,一般来说,在数据仓库环境中,位图索引的性能要好于B*Tree索引。还要注意位图索引不是为OLTP 数据库设计的,不应该在OLTP数据库中大量的使用它,尤其是对那些有更新操作的表。 ==================================================================== ========== B*Tree索引 B*Tree索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree索引是基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址,如图26-1所示。

彻底删除oracle重新安装

彻底删除oracle,重新安装 下载vistar版本,解压,搜索refhost.xml文件,修改之。 当前任何版本的ORACLE客户端在任何版本的WINDOWS7上都不能正常完成安装。 主要是因为ORACLE安装的先决条件里操作系统版本不符合,但是这个疑问可以修改refhost.xml 处理,具体是在refhost.xml中添加 <!--Microsoft Windows 7--> <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SYSTEM> 即可 -------------------------------------------------------------------- 彻底删除oracle: 1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。 2、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除 5、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。 6、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。 7、运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。 8、开始->设置->控制面板->系统->高级->环境变量删除环境变量CLASSPATH和PATH中有关Oracle的设定 9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标 10、删除\Program Files\Oracle目录 11、重新启动计算机,重起后才能完全删除Oracle所在目录(到这基本可以安装) 12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 13、WIN.INI文件中若有[ORACLE]的标记段,删除该段 14、如有必要,删除所有Oracle相关的ODBC的DSN 15、到事件查看器中,删除Oracle相关的日志说明:如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。 ------------------------------------------------------------------

Oracle索引原理

Oracle数据库中的索引详解 一、ROWID的概念 存储了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和/,row在数据块中的存储方式 SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20; 比如:OOOOOOFFFBBBBBBRRR OOOOOO:data object number, 对应dba_objects.data_object_id FFF:file#, 对应v$datafile.file# BBBBBB:block# RRR:row# Dbms_rowid包 SELECT dbms_rowid.rowid_block_number('AAAGFqAABAAAIWEAAA') from dual; 具体到特定的物理文件 二、索引的概念 1、类似书的目录结构 2、Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度 3、索引直接指向包含所查询值的行的位置,减少磁盘I/O 4、与所索引的表是相互独立的物理结构 5、Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引 6、语法:CREA TE INDEX index ON table (column[, column]...); 7、B-tree结构(非bitmap): [一]了解索引的工作原理: 表:emp

目标:查询Frank的工资salary 建立索引:create index emp_name_idx on emp(name);

[试验]测试索引的作用: 1. 运行/rdbms/admin/utlxplan 脚本 2. 建立测试表 create table t as select * from dba_objects; insert into t select * from t; create table indextable as select rownum id,owner,object_name,subobject_name, object_id,data_object_id,object_type,created from t; 3. set autotrace trace explain 4. set timing on 5. 分析表,可以得到cost 6. 查询object_name=’DBA_INDEXES’ 7. 在object_name列上建立索引 8. 再查询 [思考]索引的代价: 插入,更新 三、唯一索引 1、何时创建:当某列任意两行的值都不相同 2、当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立 3、语法:CREA TE UNIQUE INDEX index ON table (column); 4、演示

ORACLE RAC删除节点

ORACLE RAC删除RAC节点 删除RAC节点有分为2种情况,一种是2台RAC节点都完好,但是要删除其中一个节点,另外一种情况是,某个RAC节点由于硬件问题或者软件问题出现问题导致机器已经关闭。 2种情况的删除其实都可以使用后一种方法来做,即直接通过操作来清除OCR和voting disk的RAC节点信息。但是当你一个完好的RAC我们还是使用正规的删除方法。 先介绍一个完好无损的RAC删除节点的方法: [root@rac1 ~]# /u01/app/crs/bin/crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.orcl.db application ONLINE ONLINE rac1 ora....l1.inst application ONLINE ONLINE rac1 ora....l2.inst application ONLINE ONLINE rac2 ora....SM1.asm application ONLINE ONLINE rac1 ora....C1.lsnr application ONLINE ONLINE rac1 ora.rac1.gsd application ONLINE ONLINE rac1 ora.rac1.ons application ONLINE ONLINE rac1 ora.rac1.vip application ONLINE ONLINE rac1 ora....SM2.asm application ONLINE ONLINE rac2 ora....C2.lsnr application ONLINE ONLINE rac2 ora.rac2.gsd application ONLINE ONLINE rac2 ora.rac2.ons application ONLINE ONLINE rac2 ora.rac2.vip application ONLINE ONLINE rac2 以上是一个非常正常的RAC。下面来删除节点RAC2.

oracle数据库索引的理解与总结

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 例如这样一个查询:SELECT * FROM TABLE1 WHERE ID = 44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。 建立索引的目的是加快对表中记录的查找或排序。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 虽然建立索引能加快对表中记录的查询或者排序速度,但是并不是索引建得越多越好,这就需要我们了解使用索引过程中,索引的一些优点以及缺陷: 使用索引的好处: 创建索引可以大大提高系统的性能: 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。使用索引的一些不足: 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引: ?在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; ?在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; ?在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; ?在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; ?在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点: ?对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 ?对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了

oracle注册表删除--彻底卸载Oracle

oracle注册表删除--彻底卸载Oracle 用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢? 那就是直接注册表清除,步骤如下: 1、开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 2、开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除 5、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。 6、运行regedit,选择 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动 这个列表,删除所有Oracle入口。 7、运行refedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Applic ation, 删除所有Oracle入口。 8、开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定 9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标 10、删除\Program Files\Oracle目录 11、重新启动计算机,重起后才能完全删除Oracle所在目录 12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文 件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 13、WIN.INI文件中若有[ORACLE]的标记段,删除该段 14、如有必要,删除所有Oracle相关的ODBC的DSN 15、到事件查看器中,删除Oracle相关的日志

Oracle索引介绍

Oracle索引简单介绍 更多Oracle资料下载,请收藏https://www.sodocs.net/doc/1a13590511.html,

一、引言 对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。 二、B-Tree 我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。所以在最开始,简单地介绍一下 B-Tree。 B-Tree不同于Binary Tree(二叉树,最多有两个子树),一棵M阶的B-Tree满足以下条件:1)每个结点至多有M个孩子; 2)除根结点和叶结点外,其它每个结点至少有M/2个孩子; 3)根结点至少有两个孩子(除非该树仅包含一个结点); 4)所有叶结点在同一层,叶结点不包含任何关键字信息; 5)有K个关键字的非叶结点恰好包含K+1个孩子; 另外,对于一个结点,其内部的关键字是从小到大排序的。以下是B-Tree(M=4)的样例:

对于每个结点,主要包含一个关键字数组Key[],一个指针数组(指向儿子)Son[]。在B-Tree 内,查找的流程是:使用顺序查找(数组长度较短时)或折半查找方法查找Key[]数组,若找到关键字K,则返回该结点的地址及K在Key[]中的位置;否则,可确定K在某个Key[i]和Key[i+1]之间,则从Son[i]所指的子结点继续查找,直到在某结点中查找成功;或直至找到叶结点且叶结点中的查找仍不成功时,查找过程失败。 接着,我们使用以下图片演示如何生成B-Tree(M=4,依次插入1~6): 从图可见,当我们插入关键字4时,由于原结点已经满了,故进行分裂,基本按一半的原则进行分裂,然后取出中间的关键字2,升级(这里是成为根结点)。其它的依类推,就是这样一个大概的过程。 三、数据库索引 1.什么是索引 在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。 A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。B)对于非聚集索引,有些查询甚至可以不访问数据页。 C)聚集索引可以避免数据插入操作集中于表的最后一个数据页。

Oracle数据库实例的创建、删除与修改(doc 6页)

Oracle数据库实例的创建、删除与修改(doc 6页)

Oracle数据库实例的创建、删除、修改 以SUSE10SP2、Oracle10gR2为例。 本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。(20090714修改) 安装完Oracle数据库系统的安装后,需要创建数据库实例才能真正开始使用Oracle数据库服务。 总结起来,Oracle有三种创建数据库实例的方法。 第一种,最常用也最简单,那就是通过DBCA(Database Configuration Assistant),这是Oralce提供的一个图形界面的数据库实例配置工具,通过它可以创建、删除和修改数据库实例,它的使用也比较简单、易懂,交互式的图形界面操作,非常准确有效的提示与配置,是一个比较方便的创建数据库实例的方式。 按照DBCA给出的提示,很容易创建一个新数据库实例。 在创建数据库的时候,DBCA还提供了两个选项,让你可以根据刚刚设置好的参数生成一个数据库实例模板和一份数据库实例创建脚本。这两个东西是非常好,非常有用的东西,数据库模板由Oracle自己管理维护,已经创建好的数据库实例模板可以在DBCA图形程序新建数据库实例时作为模板来使用,另外在DBCA使用responseFile文件或者命令行参数创建数据库时也需要用到(见后面介绍);数据库创建脚本是一组脚本,包括shell脚本和sql脚本,这些脚本共同实现一个功能,那就是按照你之前在DBCA中设置好的那样创建一个数据库实例(后面也会有介绍),你需要做的只是将这些脚本在你的代码中调用起来。当然,你也可以选择只生成数据库模板或者数据库脚本,而不用去创建一个真的数据库(这通常很费时间)。

卸载Oracle后删除原有的SID

卸载Oracle后删除原有的SID 实现方法: 1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。 2、开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除 5、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。 6、运行regedit,选择 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。 7、运行 refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog \Application,删除所有Oracle入口。 8、开始->设置->控制面板->系统->高级->环境变量删除环境变量CLASSPATH和PATH中有关Oracle的设定 9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle 的组和图标 10、删除\Program Files\Oracle目录 11、重新启动计算机,重起后才能完全删除Oracle所在目录 12、 WIN.INI文件中若有[ORACLE]的标记段,删除该段 13、如有必要,删除所有Oracle相关的ODBC的DSN 14、到事件查看器中,删除Oracle相关的日志 说明: 如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,

Oracle删除表的几种方法

Oracle删除表的几种方法 2010年07月27日星期二 13:07 引言: drop table books;的指令会将表放到回收站里, 用 flashback table "BIN$1Oiy3qm/QJubov1BwBUOgw==$0" to before drop; 就能恢复。 删除表: drop table books purge;是绕过回收站,彻底删除 建议你先 purge recyclebin; 清除当前用户的回收站,不会影响其他用户的回收站 或者 purge table 表名; 清除回收站内指定的表 正文: 删除表(记录和结构)的语名delete ———— truncate ————drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused. 如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间 TRUNCATE TABLE 表名; 此操作不可回退. 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 注意:这里说的delete是指不带where子句的delete语句 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.

2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 显然drop语句将表所占用的空间全部释放 truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始). 4.速度,一般来说: drop>; truncate >; delete 5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不 及 使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够 大. 想删除表,当然用drop 想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete. 如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据 oracle中删除表中的一列语句 alter table 表名 drop colum 列名

Oracle 创建索引

Oracle创建索引 Oracle在创建索引时要遵循以下的原则: ●平衡查询和DML的需要。在易挥发(DML操作频繁)的表上尽量减少索引的数量, 因为索引虽然加快了查询的速度,但却降低了DML操作速度。 ●将其放入单独的表空间,不要与表、临时段或还原(回滚)段放在一个表空间,因为索 引段会与这些段竞争输入/输出(I/O)。 ●使用统一的EXTENT尺寸:数据块尺寸的5倍,或表空间的MINIMUM EXTENT的尺 寸。这样做的目的是为了减少系统的转换时间。 ●对大索引可以考虑使用NOLOGGING。这样做的目的是通过减少REDO操作来提高系 统的效率,但是如果一旦系统发生崩溃,则该索引一般是无法进行完全灰度的。不过问题也不是很大,因为真正的数据还在表中,所以可以通过重建该索引来恢复与之前完全相同的效果。 ●索引的INITRANS参数通常应该比相对应表的高。以为索引项要比表中的数据行小的 多,所以一个数据块可以存放更多的索引项(记录)。 创建索引的命令格式: CREATE (UNIQUE|BITMAP) INDEX [用户名.]索引名 ON [用户名.]表名 (列名[ASC | DESC] [,列名[ASC| DESC ] ]…) [TABLESPACE 表空间名] [PCTFREE 正整型数] [INITRANS 正整型数] [MAXTRANS 正整型数] [存储子句] [LOGGING | NOLOGGING] [NOSORT] 其中, ●UNIQUE:说明该索引是唯一索引,默认是非唯一的 ●ASC:说明所创建的索引为升序 ●DESC:说明所创建的索引为降序 ●表空间名:说明将要创建的索引的表空间名 ●PCTFREE:在创建索引时每一个块中预留的空间 ●INITRANS:在每一个块中预分配的事物记录数,默认值为2 ●MAXTRANS:在每一个块中可以分配的事物记录数的上限,默认为255 ●存储子句:说明在索引中EXTENTS怎样分配 ●LOGGING:说明在创建索引是和以后的索引操作中要记录联机重做日志文件(默认)●NOLOGGING:说明索引的创建和一些数据装入操作将不记录联机重做日志文件 ●NOSORT:数据库中所存的数据行已经按升序排好,因此在创建索引时不需要再排序了●PCTUSED:在索引中不能说明该参数。因为索引记录必须以正确的顺序存放,所以用 户不能控制何时向索引块中插入索引数据行 使用数据字典的dba_indexes获取有关scott用户的索引基于表、所在的表空间、索引的类型和索引的状态等信息。 SQL> select index_name,table_name,tablespace_name,index_type, uniqueness,status from dba_indexes where owner = 'SCOTT' AND INDEX_NAME not like 'SYS%'

oracle11g删除操作

完全卸载oracle11g步骤 步骤1、 开始->控制面板->管理工具->服务停止所有Oracle服务。 (图:停掉所有oracle服务) 步骤2、 开始->所有程序->Oracle –OraDb11g_home1->Oracle Installation Products->Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。

步骤3、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。

步骤4、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(以oracle或OraWeb开头的键)。 步骤5、 运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。

步骤6、 删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。 步骤7、 删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中所有以oracle开头的键。(未找到) 步骤8、 删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。(此步骤没有操作!)

Oracle视图中建立索引的注意事项

Oracle视图中建立索引的注意事项 在视图上创建索引需要三个条件: 一、视图必须绑定到架构。 要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中“绑定到架构”。 二、索引必须是唯一索引。 要做到这点,在 CREATE INDEX 中必须指定 UNIQUE。 三、索引必须是聚集索引。 要做到这点,在 CREATE INDEX 中必须指定 CLUSTERED。 例: CREATE VIEW viewFoo WITH SCHEMABINDING AS SELECT id... CREATE UNIQUE CLUSTERED INDEX index_viewFoo ON viewFoo(id) 在视图上创建聚集索引之前,该视图必须满足下列要求: 当执行 CREATE VIEW 语句时,ANSI_NULLS 和 QUOTED_IDENTIFIER 选项必须设置为 ON。OBJECTPROPERTY 函数通 过 ExecIsAnsiNullsOn 或 ExecIsQuotedIdentOn 属性为视图报告此信息。 为执行所有 CREATE TABLE 语句以创建视图引用的表,ANSI_NULLS 选项必须设置为 ON。 视图不能引用任何其它视图,只能引用基表。 视图引用的所有基表必须与视图位于同一个数据库中,并且所有者也与视图相同。 必须使用 SCHEMABINDING 选项创建视图。SCHEMABINDING 将视图绑定到基础基表的架构。 必须已使用 SCHEMABINDING 选项创建了视图中引用的用户定义的函数。 表和用户定义的函数必须由 2 部分的名称引用。不允许使用 1 部分、3 部分和 4 部分的名称。

oracle 10g 完全卸载彻底删除办法

Oracle数据库彻底删除办法 很多朋友只用了Oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。 实现方法: 1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。 2、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer卸装所有Oracle产品,但Universal Installer本身不能被删除。 3、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。 4、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动 这个列表,删除所有Oracle入口。 5、运行refedit, HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,删除所有Oracle入口。 6、开始->设置->控制面板->系统->高级->环境变量,删除环境变量CLASSPATH和PATH 中有关Oracle的设定。 7、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标。 8、删除Program FilesOracle目录。 9、重新启动计算机,重起后才能完全删除Oracle所在目录。 10、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入 口目录及所有子目录,并从Windows 2000目录(一般为C:WINNT)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 11、WIN.INI文件中若有[ORACLE]的标记段,删除该段。

Oracle数据库创建索引的几个原则

在Oracle数据库中要合理的创建索引有如下几个要求。 一、根据表的大小来创建索引。 虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以笔者认为,数据库管理员首先需要做到,为合适的表来建立索引,而不是为所有的表建立索引。 一般来说,不需要为比较小的表创建索引。如在一个ERP系统的数据库中,department表用来存储企业部门的信息。一般企业的部分也就十几个,最多不会超过一百个。这100条记录对于人来说,可能算是比较多了。但是对于计算机来说,这给他塞塞牙缝都还不够。所以,对类似的小表没有必要建立索引。因为即使建立了索引,其性能也不会得到很大的改善。相反索引建立的开销,如维护成本等等,要比这个要大。也就是说,付出的要比得到的多,显然违反常理。 另外,就是对于超大的表,也不一定要建立索引。有些表虽然比较大,记录数量非常的多。但是此时为这个表建立索引并一定的合适。如系统中有一张表,其主要用来保存数据库中的一些变更信息。往往这些信息只给数据库管理员使用。此时为这张表建立索引的话,反而不合适。因为这张表很少用到,只有在出问题的时候才需要查看。其次其即使查看,需要查询的纪录也不会很多,可能就是最近一周的更新记录等等。对于对于一些超大的表,建立索引有时候往往不能够达到预计的效果。而且在打表上建立索引,其索引的开销要比普通的表大的多。那么到底是否给大表建立索引呢?笔者认为,主要是看两个方面的内容。首先是需要关注一下,在这张大表中经常需要查询的记录数量。一般来说,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大的多。这个比例只是一个经验的数据。如果数据库管理员需要得出一个比较精确的结论,那么就需要进行测试分析。即数据库管理员需要测试一下全表扫描的时间,看看其是否比建立索引后的查询时间要长或者短。如果是长的话,则说明有建立索引的必要。但是如果没有的话,则说明还是全表扫描速度来的快。此时也就没有必要建立索引了。 总之,在考虑是否该为表建立索引时,一般来说小表没有建立索引的必要。而对于打表的话,则需要进行实际情况实际分析。简单一点的,可以根据大致的比率来确定。如果要精确一点的,则可以进行全表扫描性能分析,以判断建立索引后是否真的如预期那样改善了数据库性能。 二、根据列的特征来创建索引。

相关主题