Oracle对五大对象的管理
新建、修改、删除、查看
对象命名规则
- 由数字、字母、_、$、#组成
- 表名和列名必须以字母开头,长度为1-30个字符
- 同一个用户不能拥有两个同名的对象
- 名字中不能使用Oracle服务器的保留字
- 不区分大小写
- 双引号打破规则
管理的对象
对象 | 新建 | 修改 | 删除 | 查看 | 数据字典 |
---|---|---|---|---|---|
表 | create table | alter table | drop table | desc;select | user_tables |
约束 | create table add constraint | alter table modify constraint | alter table drop constraint | desc | user_constraints |
视图 | create view | no | drop view | select | user_views |
序列 | create sequence | alter sequence | drop sequence | select | no |
索引 | create index | drop index | select | user_indexes user_ind_columns index_stats | |
同义词 | create synonym | no | drop synonym |
常用查询
sysdba用户查看所有的对象
select segment_name,blocks from user_segments; |
sysdba用户查看所有的对象select table_name from dba_tables;
scott用户拥有的rw以及可查看ro的对象select table_name from all_tables;
scott用户拥有的表rw权限select table_name from user_tables;
sysdba用户查看scnselect current_scn from v$database;
查看约束状态select CONSTRAINT_NAME,STATUS,VALIDATED from user_constraints where table_name='T01';
scott用户拥有的视图select view_name ,text from user_views;
查看序列的当前值和下一个值select seq_empno.currval,seq_empno.nextval from dual;
查看索引情况select index_name,blevel,num_rows from user_ind_statistics;
分析索引结构有效性
index_stats记录的时当前会话中最近一次的分析索引情况
create index i_e01 on e01 (deptno); |
打开scott用户的信息搜集begin
dbms_stats.gather_schema_stats(ownname=>'scott',
estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,
options=>'gather',
degree=>DBMS_STATS.AUTO_DEGREE,
method_opt=>'for all columns size repeat',
cascade=>TRUE);
END;
/
查看表的情况select num_rows,blocks from user_tab_statistics;
查看建表语句
SET SERVEROUTPUT ON |
index_stats表分析
属性 | 说明 |
---|---|
height | 索引的高度,层级从0开始 |
blocks | 索引在后台占用多少块 |
br_blks | 索引分支有多少块 |
br_rows | 索引分支有多少行 |
lf_blks | 叶子有多少块 |
lf_rows | 叶子有多少行 |
st=>start: 查找empno为450的行 |
- 所有的数据都是放在叶子节点上
- 分支记录的是“范围+地址”
- 叶子记录的时“关键字+rowid的一个组合”
- rowid是记录数据的物理地址
rowid的格式
rowid是64进制的
例如AAAVREAAEAAAACXAAI
对象id | 文件id | 块id | row number |
---|---|---|---|
AAAVRE | AAE | AAAACX | AAI |
6位 | 3位 | 6位 | 3位 |
object_id | file_id | block_id | row number |
注意:在rowid中过的最后三位记录的row number是计算机记录的从0开始的,而我们在读表的时候使用的rownum是从1开始的。