分类目录归档:Oracle

oracle之index

--查看用户对象
SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS;
--创建普通索引(指定pctfree,表空间,nologging模式)
create index fei_idx3 on fei(pwd,name) pctfree 20 tablespace users nologging;
--创建唯一索引
 create unique index fei_idx1 on fei(id) pctfree 20 tablespace users nologging;
--创建bitmap index
create bitmap index fei_idx1 on fei(id) pctfree 20 tablespace users nologging;
--修改索引空间大小(增大)
alter index fei_idx1 allocate extent(size 2000k
datafile 'C:\oracle\product\10.2.0\oradata\orcl\users01.dbf');
--释放索引未空间
alter index fei_idx1 deallocate unused;
--rebuild索引(在线索引重建)
alter index fei_idx1 rebuild online;
--删除索引
drop index fei_idx1;
--coalescing 索引(索引融合    相当于windows的磁盘整理功能)
alter index fei_idx1 coalesce;
--对索引分析(判断该索引是否要rebuild,主要参数是lf_rows,del_lf_rows的比例)
analyze index fei_idx1 validate structure offline;
select * from index_stats;
--监控索引使用情况
alter index fei_idx1 monitoring usage;--开启监控
select * from v$object_usage;--监控的结果
alter index fei_idx1 nomonitoring usage;--关闭监控
--查看执行计划
set autot on exp;--开启
set autot off;--关闭
--相关视图查询
select * from dba_ind_columns WHERE INDEX_OWNER='CHF';
select * from dba_indexes where owner='CHF';
SELECT * FROM DBA_IND_STATISTICS WHERE owner='CHF';
发表在 Oracle | 评论关闭

oracle之表管理

1、创建session级别的临时表(commit后数据还会保留)
1)create global temporary table tem_session on commit preserve rows
as select rowid rid,id from a;
2) create global temporary table tem_fei(id number,a varchar2(10))
on commit preserve rows;

2、创建commit级别的临时表(commit后数据清空)
1)create global temporary table tem_xff on commit delete rows
as select * from a;
2)create global temporary table tem_a (id int,abc number)
on commit delete rows;
note:当session退出或者数据库重启后临时表会被清空,但是临时表的结构还是保存在数据库里面的,还是可以直接插入数据等操作

3、修改表的所属表空间
1)查看表所属表空间
select table_name,tablespace_name from user_tables;
2)查看哪些表空间
select name from v$tablespace;
3)修改表所属表空间
alter table a move tablespace users;

4、删除表中若干列
设置为unused
alter table tt set unused column z cascade constraints;
每次删除1000条提交commit
alter table tt drop unused columns checkpoint 1000;
如果中断继续执行
alter table tt drop columns continue checkpoint 1000;
直接删除一列
alter table tt drop column y;

5、查看表的结构

--1)desc
desc tablename
--2)dbms_metadata.get_ddl
set long 100000
 set pages 0
select dbms_metadata.get_ddl('TABLE','tablename') from dual;
发表在 Oracle | 评论关闭

oracle之undo

1、创建undo表空间
create undo tablespace xff_undo datafile
‘C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\xff_undo1.dbf’
size 20m reuse autoextend on;
2、修改默认undo表空间
alter system set undo_tablespace=xff_undo;
3、查看undo中的transaction占用的block数目
select addr,used_ublk from v$transaction;
4、查看undo中的历史信息汇总
select begin_time,end_time,undoblks from v$undostat;
5、设置undo的过期时间(单位是s)
alter system set undo_retention=100;
6、决定undo大小
1)每秒钟undo的大小
select max(undoblks/(end_time-begin_time)*24*3600) from v$undostat;
2)undo的过期时间
show parameter undo_retention
3)oracle block的大小
show parameter db_block_size
4)上面三项相乘即为undo所需要的大小

发表在 Oracle | 评论关闭