oracle:表主键索引经常失效,能怎么解决? 改为唯一约束的索引,需要怎么改
通过配置本地数据库的tns配置文件实现:
去oracle安装目录下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了
有两种方法:
(1)视图dba_constraints
(2)视图dba_indexes
设置一个字段,为主键,这个主键就是不重复的,主键的内容可以使用oracle的sequence。
方法一、
视图dba_constraints,这张表中有所有的表的约束,拥有唯一约束的字段就拥有唯一索引,其中Constraint_type的值应该是U,不过值是R的表示主键,这个也存在唯一索引,不知道你要不要找这种,所以个人认为在这张表内能找到。
方法二:
视图dba_indexes,这里的index_type应该也能查到唯一索引。
oaracle 中auto increasement=2什么意思
auto_increment 就是对主键 id 自动增加编号的。如果你想 为你插入的一条记录 获得一个唯一性的编号,那就需要用主键。
oracle 索引什么时候重建和重建方法讨论
2).Alter index --- rebuild 快速重建索引的一种有效的办法,因为使用现有索引项来重建新索引,如果客户操作时有其他用户在对这个表操作,尽量使用带online参数来最大限度的减少索引重建时将会出现的任何加锁问题,alter index --- rebuild online.但是,由于新旧索引在建立时同时存在,因此,使用这种技巧...
SQL、MySQL、Oracle随机查询语句?
1、Oracle查询结果集,随机排序 select * from tableName order by dbms_random.value();2、MySQL随机查询,随机排序 SELECT * FROM tableName ORDER BY rand()3、SQL随机查询,随机排序 SELECT * FROM tableName ORDER BY NEWID()4、Oracle随机查询20条 select * from( select * from tab...
学习Java的,大学毕业一般从事些什么工作?
1、Java应用方向。目前Java在许多行业的企业信息应用方面的应用非常多,比如OA、邮箱、股票、金融、考试、物流、医疗、矿山等信息方面的系统。该方向和行业密切相关,所以,这是一个经验型的发展方向。Java开发者在这方面的需求也非常大,待遇也相当不错,工资水平与Java互联网方向的差不多,很容易在一些...
权岸红药: 就是正常现象,这是Oracle新特性中的闪回功能. oracle在删除表时并不是真正将表删除而是修改一个名字而已,然后可以用闪回命令来还原被删除的表. 具体查看Oracle闪回的相关文章.这里我就不详细解释了!
易门县18280149071: oracle索引为什么没起作用 - ?
权岸红药: 索引失效 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上(见12) 6) 对小表查询 7) 提示不使用索引 ...
易门县18280149071: oracle索引什么时候失效 - ?
权岸红药: 容易引起oracle索引失效的原因很多: 1、在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2、新建的表还没来得及生成统计信息,分析一下就好了 3、基于cost的成本分析,访问的表...
易门县18280149071: oracle索引问题 - ?
权岸红药: 慢的原因应该是 nvl函数导致了索引失效.改成下面这样应该能快一些:Select Distinct(page_no_cx) From yz_inpatient_orderWHERE ksdm = '11' and ksdm is not BULL AND status_time Between to_date('2009-07-29','yyyy-mm-dd') and to_date...
易门县18280149071: 如何检查表的索引损坏 - ?
权岸红药: 建了索引没好用不好用这一说,只有能不能用得上这一说法,主要要看你写的sql里有没有用到索引关键字,还有就是sql的结果占总数据量的比例,这是个复杂的判断过程,由oracle自动完成.如果你的不好用是指索引总是坏,那你得找一下原因,你对表的DML操作,oracle都会自动去维护这个索引,一般来说你这种情况不应该出现的,是否是因为你的磁盘不稳定造成的.看索引是否损坏,你可以查dba_indexes.status字段,如果不是VALID,那就是坏了
易门县18280149071: 如何查找oracle中失效的索引 - ?
权岸红药: oracle可以使用强制索引,举个例子 比如在条件诸多的sql中为了确保优先正确的使用最高效的索引可以这样写 select /*+index(a,index_name)*/ * from table_name a where col_a=? and col_b=? and col_c=? and ...; 注意() 里面的a如果表有别名要用别名如果没有就用表名,这样就会强制使用你想要用的索引了.
易门县18280149071: 如何让Oracle表的索引暂时失效?然后恢复有效 - ?
权岸红药: 这种现象多出现在分区表,之后创建和删除分区的时候引起全局索引失效,这个一般的解决方法是重现创建索引,还有一种是把全局索引创建成local的就可以了.这个您可以上网查查全局索引和local索引的区别.
易门县18280149071: 数据库索引失效怎么办 - ?
权岸红药: 看 user_indexes 的 status 字段, 如果不是 valid, 索引失效.在使用分区表情况下,可能出现索引失效.如果索引失效,需要重建索引.
易门县18280149071: oracle数据表分区,truncate或drop后会导致索引失效,除了重建索引有没有更好的快速解决方法? - ?
权岸红药: 有一个办法,就是在每个分区建立同样的索引,而不是建全局索引,这样,当把分区truncate或者drop的时候,只是把那个分区的索引也给删掉了,而不影响其他分区
易门县18280149071: mysql 使用中需要不停的检查表 索引容易失效 - ?
权岸红药: 频繁查询和更新会导致索引失效 这个不止mysql有这个问题. 所以又很多解决的办法 比如oracle有一个每天晚上自动分析表的存储过程来避免这个情况