oracle数据库重启产生的问题详解
来源:互联网 发布:qq炫舞ktv网络连接失败 编辑:程序博客网 时间:2024/05/29 04:52
最近公司数据库服务器重启后造成索引、主键无效。
具体解决如下:
--oracle查询数据库表的所有索引
select a.index_name, b.column_name from dba_indexes a,dba_ind_columns b
where a.index_name = b.index_name and a.table_name =upper('S_ADSL_USER_201405') order by 1;
--由于索引有组合索引,主键索引,以下分两批处理。
--单个字段的索引处理
--将单个字段的索引名备份到t1表中
create table t_1 as select a.index_name from dba_indexes a,dba_ind_columns b
where a.index_name = b.index_name and a.owner='用户' groupby
--批量生成删除索引的sql
select 'drop index '||t_1.index_name||';' from t_1;
--批量生成创建索引的sql
select 'create index '||a.index_name||' on'||a.table_name||'('||b.column_name||');' from dba_indexes a,dba_ind_columns b
where a.index_name = b.index_name and a.owner='IQS' anda.index_name in (select index_name from t_1) ;
--组合字段索引的处理
--两个字段索引的处理(多个以此类推)
--将两个字段的索引名备份到t2表中
create table t_2 as select a.index_name from dba_indexes a,dba_ind_columns b
where a.index_name = b.index_name and a.owner='用户' groupby
--将索引名跟两个索引字段放入t_2_1表中
create table t_2_1 as select t_2.index_name,max(case whenb.column_position = 1 then b.column_name else '' end) as c1,
max(case when b.column_position = 2 then b.column_name else '' end)c2 from
group by t_2.index_name
select 'drop index '||t_2.index_name||';' from t_2;
select 'reate index '||a.index_name||' on'||a.table_name||'('||b.c1||','||b.c2||');' from dba_indexes a,t_2_1 b
where a.index_name = b.index_name ;
'CREATEINDEX'||A.INDEX_NAME||'ON'||A.TABLE_NAME||'('||B.C1||','||B.C2||');'
注意:主键索引是无法删除的,不但你不用管它,以下创建主键的时候系统会自动删除/创建主键索引
select a.constraint_name,
where a.constraint_name = b.constraint_name
--删除主键
ALTER TABLE
--创建主键
alter table
--序列(重建完索引后序列为主键的表同样报错,所以走了一下弯路,怀疑是序列的问题,但是重建完序列后才发现是主键的问题,以下我列举下序列的重建。大家不必走这一步)
--查询某用户下的序列
select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences wheresequence_owner='用户';
--删除序列
DROP SEQUENCE 序列名;
--重建序列sql
CREATE SEQUENCE emp_sequence
--主要注意的是:由于有些序列会被作为主键,而众所周知主键也是唯一索引,因此大家需要把开始计数的值设为目前表中还不存在的值,即,startwith X 应大于目前此序列的last_number.
- oracle数据库重启产生的问题详解
- 关于linux更换IP、重启产生的问题
- 重启oracle 数据库
- 重启oracle数据库
- 重启ORACLE数据库
- 重启Oracle数据库的操作步骤
- oracle数据库重启的方法
- 重启linux下的oracle数据库
- oracle数据库重启的方法
- 关于IP更换后基于ORACLE数据库的开发所产生的问题及解决方案
- oracle 数据库命令行重启
- Oracle数据库产生Guid
- arcgis数据库产生冗余问题的解决
- LINUX 操作系统重启Oracle数据库的方法步骤
- Tomcat中关于重定向产生的乱码问题
- win2003 怎样重启oracle数据库
- linux重启oracle数据库方法
- Oracle数据库实例及监听重启
- [牛客]两串旋转练习题
- 2014年02月17日
- 配置jdk环境变量
- NYOJ 11
- 致我的朋友们
- oracle数据库重启产生的问题详解
- Android Build Types (构建类型)
- hibernate实体类注解
- WINDWOS 驱动开发笔记-------持续更新
- 2014年7夕/生日/周末两日游
- elasticsearch sql插件安装
- Redis安装以及配置详解
- Oracle全文索引之一 原理
- SVN命令使用详解