`

Oracle重建索引 约束

 
阅读更多

rebuild索引

alter index indexname rebuild online;

 

同时删除oracle中有主外键关系的两张表

select constraint_name  from user_constraints WHERE table_name ='表名';--得到约束名字
----先删除约束,然后删除表
alter table table_name drop constraint 约束名(cascade);
----使约束暂时无效
alter table table_name disable/enable constraint constraint_name;
无效以后也可以删除表

或者只要删除外键约束,就可以删除主键表,不会影响到外键表的数据

select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R';



主键约束添加、删除
1、创建表的同时创建主键约束
一、无命名 create table accounts ( accounts_number number primary key, accounts_balance number );
二、有命名 create table accounts ( accounts_number number primary key, accounts_balance number, constraint yy primary key(accounts_number) );
2、删除表中已有的主键约束
一、无命名
SELECT * FROM USER_CONS_COLUMNS WHERE TALBE_NAME='accounts';找出主键
ALTER TABLE ACCOUNTS DROP CONSTRAINT SYS_C003063;
二、有命名
 ALTER TABLE ACCOUNTS DROP CONTRAINT yy;
3、向表中添加主键约束
ALTER TABLE ACCOUNTS ADD CONSTRAINT PK_ACCOUNTS PRIMARY KEY(ACCOUNTS_NUMBER);

4、加外键约束

ALTER TABLE USERS_PAYMENT_ITEM_RECORDS ADD CONSTRAINT FK_USER_FK_USERS_USER FOREIGN KEY(UID) REFERENCES CEB_USERS(UID);

 

Oracle中查询索引名称,批量修改索引名称语句

 

 

 在Oralce数据库数据优化过程中,对源数据表处理,原则上是做更名备份,作为被查或回退使用,所以,有修改数据表名后重新建表的操作,这样,往往也需要修改索引、主键、外键名称,方便重建,为了方便、快速生成处理数据脚本,采用批量处理方式,如第4、5段例句,拼接字符串,生成批量处理脚本。
一、依据DBA视图查询,涉及到的视图有:user_ind_columns、user_indexes、user_constraints
1、查询索引信息例句
select t.*,i.index_type from user_ind_columns t,user_indexes i
where t.index_name = i.index_name and t.table_name = i.table_name and
t.table_name in ('WORKFLOW_INSTANCE','WORKFLOW_INSTANCE_TRANSLOG','PROCESS_INSTANCE','PROCESS_INSTANCE_DATA',
'PROCESS_ACTIVITY','MESSAGE','MESSAGE_TRACK','NOTIFICATION_SEARCH_DATA')
2、查询主键信息例句
select cu.* from user_cons_columns cu, user_constraints au
where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and
au.table_name in ('WORKFLOW_INSTANCE','WORKFLOW_INSTANCE_TRANSLOG','PROCESS_INSTANCE','PROCESS_INSTANCE_DATA',
'PROCESS_ACTIVITY','MESSAGE','MESSAGE_TRACK','NOTIFICATION_SEARCH_DATA')
3、查询外键关系信息例句
select * from user_constraints c where c.constraint_type = 'R' and
c.table_name in ('WORKFLOW_INSTANCE','WORKFLOW_INSTANCE_TRANSLOG','PROCESS_INSTANCE','PROCESS_INSTANCE_DATA',
'PROCESS_ACTIVITY','MESSAGE','MESSAGE_TRACK','NOTIFICATION_SEARCH_DATA')
二、拼接字符串,生成批量处理语句
4、批量修改索引名称
    批量修改就是在索引名称后面追加字符,用以区分。
select
'alter index '||i.index_name||' rename to '||substr(i.index_name,0,decode(sign(25-length(i.index_name)),'-1',25,length(i.index_name)))||'tmp1;',
i.table_name,i.tablespace_name
 from user_indexes i
where i.table_name in ('DOC_DOCMAIN','DOC_WF_OPINION')
5、批量修改主键名称
select
'alter table '||c.table_name||' rename constraint '||c.constraint_name||' to '||substr(c.constraint_name,0,decode(sign(25-length(c.constraint_name)),'-1',25,length(c.constraint_name)))||'tmp1;',
c.table_name from user_constraints c where c.constraint_type in ('R','P') and
c.table_name in ('TASK_LIST','TASK_LIST_WAIT','WORKFLOW_INSTANCE_TRANSLOG')

分享到:
评论

相关推荐

    09 oracle的索引 PPT

    3. 重建索引:当索引碎片严重时,可能需要重建索引来优化性能。 4. 删除索引:当索引不再被使用或者影响写操作性能时,可以考虑删除。 五、索引优化策略 1. 复合索引:如果多个列常一起出现在查询条件中,可以创建...

    oracle在线创建索引和重组索引

    创建完成后,需要马上检查系统应用,如果发现有错误走到该索引的语句,并且有严重影响的,可能需要立即删除该索引或者约束。 二、重组索引 重组索引可以减少索引的碎片化和空间浪费。如果索引因为更新太频繁或者是...

    oracle索引技术-(英文版)

    除了性能提升之外,Oracle使用索引来帮助强制启用的主键和唯一键约束。此外,当在外键列上放置索引时,Oracle可以更好地管理表锁定场景。虽然有可能构建一个没有索引的数据库应用程序,但没有索引几乎可以保证性能...

    ORACLE索引笔记.pdf

    6. **索引管理**:在大量数据导入时,临时删除索引可以加速导入,之后再重建。索引和表应放在不同的表空间以减少竞争。索引扩展大小应为5块的倍数以优化I/O操作。创建大表索引时,可以关闭对应的redo日志,以提高...

    Oracle数据库基于索引SQL优化方法的研究与实现

    在Oracle数据库中,索引通常是以B树的形式存储的,这种结构可以高效地支持范围查询和唯一性约束。 2. **索引的类型**:Oracle提供了多种类型的索引,包括B树索引、位图索引、函数依赖索引等。每种索引都有其特定的...

    深入oracle分区索引的详解

    重建索引是一个重要的维护任务,可以通过`ALTER INDEX`语句完成。对于分区索引,可以逐个分区进行重建,如`ALTER INDEX idx_name REBUILD PARTITION index_partition_name [ONLINE NOLOGGING]`,对于非分区索引,...

    Oracle数据字典

    静态数据字典主要记录的是不随数据库运行变化的信息,如用户、表、索引、列、触发器、约束和权限的定义等;而动态数据字典记录的信息是随数据库运行状况变化的,比如锁的状态、会话的活动、等待事件、系统资源使用...

    oracle索引详述

    例如,重建索引可以优化索引结构,提高查询性能: ```sql ALTER INDEX idx_employee_id REBUILD; ``` **4. 删除索引** 不再需要的索引可以使用`DROP INDEX`语句删除。 ```sql DROP INDEX idx_employee_id; ``` ...

    ORACLE错误码及解决方法

    在创建或重建索引前,需要确保数据的唯一性。 错误码如ORA-0942、ORA-1779、ORA-2261等,通常涉及视图的创建、修改或删除操作。这些错误可能是因为试图在不存在的对象上操作,或者试图在非键保留的视图上执行DML...

    Oracle数据库,索引的相关知识

    文章目录1、索引的概念2、索引的类型(面试题)3、创建索引4、修改和重建索引5、删除索引6、查看索引信息7、索引与约束(面试题)8、何时使用索引(面试题) 1、索引的概念 1)概念:Oracle数据库中的索引是一种建立...

    oracle开发

    - 及时删除不再需要的索引,重建或删除索引时要注意操作顺序。 5. **创建索引的注意事项**: - 明确指定索引的表空间,尤其是在创建主键时。 - 设定合理的存储参数,如pctfree、initrans、maxtrans等。 - 考虑...

    oracle向达梦数据库迁移

    这一步涉及复制Oracle数据库中的表结构,包括表名、字段、数据类型、主键、外键、唯一性约束、非空约束等,并在DM8中重建。同时,迁移索引以保持查询性能,以及字段的注释和序列,用于自增字段。 四、删除键,约束...

    oracle dba宝典14

    在Oracle中创建索引通常有两种方式:使用CREATE INDEX语句或ALTER TABLE语句添加约束(如PRIMARY KEY或UNIQUE约束)时自动创建索引。 ##### 创建B*树索引 ```sql CREATE INDEX index_name ON table_name (column_...

    Oracle数据库中建立索引的基本方法讲解

    在Oracle数据库中,索引是提高查询性能的...理解各种类型的索引及其适用场景,以及如何创建、重建和删除索引,有助于提升Oracle数据库的查询效率。然而,应谨慎选择要索引的列,确保索引能够真正提升系统的整体性能。

    Oracle数据库对象管理及备份与恢复.pdf

    索引的维护工作包括合并、重建和删除不再需要的索引。 分区是Oracle数据库提供的一种将表或索引拆分成更小部分的机制,有助于改善性能和可管理性。分区类型包括散列分区、列表分区、范围分区、组合分区等。管理分区...

    sqlserver转oracle

    在Oracle中重建SQL Server的索引和约束,确保数据的完整性和性能。 6. 触发器和存储过程: 如果源数据库包含存储过程或触发器,这些需要在目标Oracle数据库中重新创建。 7. 迁移策略: 可以选择全量迁移(一次...

    mysql 数据库转 oracle

    3. **触发器和存储过程**:如果MySQL数据库中包含触发器和存储过程,迁移工具需要能处理这些复杂逻辑,确保在Oracle中重建。 4. **权限和角色**:用户权限和角色在数据库迁移中同样重要。工具需要考虑如何将MySQL的...

Global site tag (gtag.js) - Google Analytics