最近处理数据库的一些问题总结了下:
1. oracle10G查看系统日志:
E:\oracle\product\10.2.0\admin\"oracle_sid"\bdump
E:\oracle\product\10.2.0\admin\"oracle_sid"\udump
E:\oracle\product\10.2.0\db_1\NETWORK\log
2. 分区表、分区索引和全局索引(10G)
分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop和truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效。但是在查询性能稍微有点影响。
参考:
方法一:create index index_name on T_name(col1) local( partition p1, partition p2, partition p3 );
方法二:create index index_name on T_name(col1) local;
另外注意:分区表上创建PK主键时主键列必须包含分区列,创建另外的约束(unique)也不可以。
全局索引就是在全表上创建索引,它可以创建自已的分区,可以和分区表的分区不一样,也就是它是独立的索引。在drop或truncate某个分区时需要创建索引。
方法一:alter index index_name rebuild
方法二:alter table T_name drop partion partion_name update global indexes
但全局索引更新时要花很长时间在重建索引上。可以通过查询user_indexes、user_part_indexes和user_ind_partitions视图来查看索引是否有效。
全局索引创建方式:
方法一: create index index_name on T_name(col2);
方法二:全局索引分成多个区(注意和分区表的分区不一样)
create index index_name on T_name(col2) global partition by range(col2)(partition par1_name values less than(100000), partition par2_name less than(200000), partition par3_name values less than(maxvalue));
注意索引上的引导列要和ranger后列一致,否则会有ORA-14038错误。
oracle会对主键自动创建全局索引
如果想在主键的列上创建分区索引,除非主键包括分区键,还有就是主键在两个或两个以上列上。
在频繁删除表的分区且数据更新比较频繁时为了维护方便避免使用全局索引。
以上分区索引在psql中查看表结构时是看不到相关创建语句的,看到的只是普通全局索引创建的脚本,所以在使用plsql导出相关建表语句时注意,需要重建下。类似问题也出现在子分区上。