Oracle的物理、逻辑结构概览(三)
lter tablespace orcl offline;
->notes:虽然表不能访问和修改了,但可以删除,相当于数据库
关闭了,只不过这是局部关闭。
回收站命令 show recyclebin 可以查询,但不可以对回收站里的表执行DDL/DML
[sql]
select * from " BIN$wHUg/RiVRxuXtwyypSxnTw==$0 TABLE" ;
从回收站里拿出来 闪回
[sql]
flashback table t to before drop;
================================================
可以使用EM来观察表空间的使用率
--登录->administration->tablespace
3.2 表空间和数据文件的管理
创建一个表
[sql]
create table tt tablespace orcl as select * from dba_objects;
持续插入数据
[sql]
insert into tt select * from tt;
当表空间大小不足时,扩展表空间大致有以下几种方式:
1.直接扩展数据文件大小
[sql]
alter database datafile file_id resize 20M;
2.自动扩展数据文件大小
[sql]
alter database datafile 5 autoextend on next 1M maxsize 1024M;
3.手动扩展表空间的大小
[sql]
alter tablespace orcl add datafile 'D:\oradata\orcl\orcl02.dbf'
autoextend on next 1M maxsize 1024M;
为tt表分配了40M的空间大小且会显示但里面没有数据是空的(插入会遵循有空间的优先插入)
[sql]
alter table tt allocate extent(datafile'D:\oradata\orcl\orcl02.dbf' size 40M);
查看表中块的使用情况方法:
1.包的方式
[sql]
execdbms_stats.gather_table_stats(‘table’,’TEST’);
2.分析表—这种更准确
[sql]
analyze table tt computestatistics;
从10g开始可以为tt表紧缩
[sql]
alter table t shrink space;
但紧缩需要行移动(row movement)
[sql]
alter table t shrink space;
这样就可以紧缩了。。。
查看row movement 是否可以移动
[sql]
select * from dba_tables where table_name='T';
===============================================================
把表t移动到表空间2里,观察会有什么变化
[sql]
alter table t move tablespace orcl02;
案例一:
优化问题,观察磁盘读取速率及各个文件的读取情况。
视图:
--dba打头的属于静态数据来自于system里的数据字典
--v$打头的属于动态,一般来自于控制文件等,且存储在内存中,所以服务器尽量不要重启,重启后,动态信息会消失,当然从10g
开始oracle已经每隔一个小时会存储下动态信息
[sql]
select * from v$filestat;
3.3 undo表空间
创建undo表空间
[sql]
create undo tablespace undotbs2 database'E:\oradata\orcl\undotbs02.dbf' size 10M;
在表t中加入一列
[sql]
alter table t add name varchar2(10) default 'a';
insert into t values(1,'elvis');
insert into t values(2,'elvis');
commit;
然后更新下列值
[sql]
updata t set name='c' where id=1;
select * from t;
不提交通过另外一个窗口同一个用户身份去查询观察。
--当然不会看到,因为没有提交