oracle dba常用语句6

本文介绍了Oracle数据库中表和索引的管理方法,包括创建、修改、删除表及索引的操作指令,还涉及如何维护数据完整性,如添加、修改和删除约束条件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

########## Managing Tables ###########

/*char type maxlen=2000;varchar2 type maxlen=4000 bytes

rowid 是 18 位的 64 进制字符串 (10 个 bytes 80 bits)

rowid 组成 : object#( 对象号 )--32bits,6 位

rfile#( 相对文件号 )--10bits,3 位

block#( 块号 )--22bits,6 位

row#( 行号 )--16bits,3 位

64 进制 : A-Z,a-z,0-9,/,+ 共 64 个符号

dbms_rowid 包中的函数可以提供对 rowid 的解释 */

select rowid,dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_row_number(rowid) from table_name;

create table test2

(

id int,

lname varchar2(20) not null,

fname varchar2(20) constraint ck_1 check(fname like 'k%'),

empdate date default sysdate)

) tablespace tablespace_name;
/* 手工分配分区 , 分配的数据文件必须是表所在表空间内的数据文件 */

alter table user.table_name allocate extent(size 500k datafile '...');

/* 释放表中没有用到的空间 */

alter table table_name deallocate unused;

alter table table_name deallocate unused keep 8k;

/* 将非分区表的表空间搬到新的表空间 , 在移动表空间后,原表中的索引对象将会不可用,必须重建 */

alter table user.table_name move tablespace new_tablespace_name;

create index index_name on user.table_name(column_name) tablespace users;

alter index index_name rebuild;

drop table table_name [CASCADE CONSTRAINTS];

alter table user.table_name drop column col_name [CASCADE CONSTRAINTS CHECKPOINT 1000];---drop column

/* 给表中不用的列做标记 */

alter table user.table_name set unused column comments CASCADE CONSTRAINTS;

/*drop 表中不用的做了标记列 */

alter table user.table_name drop unused columns checkpoint 1000;

/* 当在 drop col 是出现异常,使用 CONTINUE ,防止重删前面的 column*/

ALTER TABLE USER.TABLE_NAME DROP COLUMNS CONTINUE CHECKPOINT 1000;

select * from dba_tables/dba_objects;

######## managing indexes ##########

/*create index*/

example:

/* 创建一般索引 */

create index index_name on table_name(column_name) tablespace tablespace_name;

/* 创建位图索引 */

create bitmap index index_name on table_name(column_name1,column_name2) tablespace tablespace_name;

/* 索引中不能用 pctused*/

create [bitmap] index index_name on table_name(column_name) tablespace tablespace_name pctfree 20 storage(inital 100k next 100k) ;

/* 大数据量的索引最好不要做日志 */

create [bitmap] index index_name table_name(column_name1,column_name2) tablespace_name pctfree 20 storage(inital 100k next 100k) nologging;

/* 创建反转索引 */

create index index_name on table_name(column_name) reverse;

/* 创建函数索引 */

create index index_name on table_name(function_name(column_name)) tablespace tablespace_name;

/* 建表时创建约束条件 */

create table user.table_name(column_name number(7) constraint constraint_name primary key deferrable using index storage(initial 100k next 100k) tablespace tablespace_name,column_name2 varchar2(25) constraint constraint_name not null,column_name3 number(7)) tablespace tablespace_name;

/* 给创建 bitmap index 分配的内存空间参数,以加速建索引 */

show parameter create_bit;

/* 改变索引的存储参数 */

alter index index_name pctfree 30 storage(initial 200k next 200k);

/* 给索引手工分配一个分区 */

alter index index_name allocate extent (size 200k datafile '$ORACLE/oradata/..');

/* 释放索引中没用的空间 */

alter index index_name deallocate unused;

/* 索引重建 */

alter index index_name rebuild tablespace tablespace_name;

/* 普通索引和反转索引的互换 */

alter index index_name rebuild tablespace tablespace_name reverse;

/* 重建索引时,不锁表 */

alter index index_name rebuild online;

/* 给索引整理碎片 */

alter index index_name COALESCE;

/* 分析索引 , 事实上是更新统计的过程 */

analyze index index_name validate structure;

desc index_state;

drop index index_name;

alter index index_name monitoring usage;----- 监视索引是否被用到

alter index index_name nomonitoring usage;---- 取消监视

/* 有关索引信息的视图 */

select * from dba_indexes/dba_ind_columns/dbs_ind_expressions/v$object_usage;

########## 数据完整性的管理 (Maintaining data integrity) ##########

alter table table_name drop constraint constraint_name;----drop 约束

alter table table_name add constraint constraint_name primary key(column_name1,column_name2);----- 创建主键

alter table table_name add constraint constraint_name unique(column_name1,column_name2);--- 创建唯一约束

/* 创建外键约束 */

alter table table_name add constraint constraint_name foreign key(column_name1) references table_name(column_name1);

/* 不效验老数据,只约束新的数据 [enable/disable :约束 / 不约束新数据 ;novalidate/validate: 不对 / 对老数据进行验证 ]*/

alter table table_name add constraint constraint_name check(column_name like 'B%') enable/disable novalidate/validate;

/* 修改约束条件,延时验证, commit 时验证 */

alter table table_name modify constraint constraint_name initially deferred;

/* 修改约束条件,立即验证 */

alter table table_name modify constraint constraint_name initially immediate;

alter session set constraints=deferred/immediate;

/*drop 一个有外键的主键表 , 带 cascade constraints 参数级联删除 */

drop table table_name cascade constraints;

/* 当 truncate 外键表时,先将外键设为无效,再 truncate;*/

truncate table table_name;

/* 设约束条件无效 */

alter table table_name disable constraint constraint_name;

alter table table_name enable novalidate constraint constraint_name;

/* 将无效约束的数据行放入 exception 的表中,此表记录了违反数据约束的行的行号;在此之前,要先建 exceptions 表 */

alter table table_name add constraint constraint_name check(column_name >15) enable validate exceptions into exceptions;

/* 运行创建 exceptions 表的脚本 */

start $ORACLE_HOME/rdbms/admin/utlexcpt.sql;

/* 获取约束条件信息的表或视图 */

select * from user_constraints/dba_constraints/dba_cons_columns;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值