oracle 11g 存储结构和数据文件

 

存储结构与数据文件
存储结构:
database----tablespace-----sefment-----extent----blocks
|
datafile
tablespace:存储数据和表数据
1.表空间分类:
1.1永久表空间:存放用户和字典
查看表空间有名字及属于哪种类型:select tablespace_name,contents from dba_tablespaces;
1.1.1system(字典表空间):存放当前数据库数据字典信息,对象的结构信息,Oracle内部的基表(查看基表 desc tab$) 。
1.1.2sysaux(辅助表空间):分单字典表空间的负担,存放oracle内部使用的工具,
查看辅助表空间有哪些工具:select occupant_name from v$sysaux_occupants;
1.1.3undo(回退表空间):存放用户对数据块修改前的前镜像,主要用来用户执行回退或闪回操作;
1.1.4temp(临时表空间):1.存放用户临时数据,2.内存不够用时,排序操作
1.1.5users/example(用户表空间):需要手动创建

1.2表空间的状态:
online:联机 offline:离线 read write:可写 read only:只读
system空间不能offline/read write/read only
sysaux空间不能read only
设置表空间状态:alter tablespace users offline;
2.表空间的创建
创建语法:create [smallfile | bigfile] tablespace <> datafile '/' size <> [ extend uniform size <> | autoextend segment management local | auto];
创建小表表空间:select bigfile tablespace sarch1 datafile '/opt/u01/oracle/oradata/db/up14.dbf' size 50m;
创建自动增长的大表表空间:select bigfile tablespace sarch1 datafile '/u01/..... .dbf' size 50m autoextend on;
查看默认使用的哪个表空间:select property_name,property_value from database_properties where property_name like '%DEF%';
设置默认表空间:alter database default tablespace <> ;
使用默认的小 | 大 表表空间:alter databale set default smallfile | bigfile tablespace;
小表表空间:一个表空间下存放多个数据文件(最多存放1023个数据文件每个数据文件大小不能从超过32G)--------->系统默认
小表表空间数据文件头部:4k
大表表空间:一个表空间只存放一个数据文件(最大达到128T,最小8T,能放40亿个数据块)
大表表空间数据文件头部:4M
3.表空间的管理:


1.表空间改名:
注:system/sysaus 不能改名 自己创建的表空间可以改名
语法:alter tablespace <old> rename to <new>;


2.自己创建的表空间的迁移或空间下的数据文件的迁移
1.open状态下执行
注:不能离线的表空间不能迁移,能够离线的表空间可以迁移,不能直接拷贝(cp)需要离线
1.直接离线表空间(不建议使用,影响用户)
1.离线表空间:alter tablespace <> offline;
2.查看有哪些表空间:select tablespace_name,file_name from dba_data_files; 并拷贝(cp)到新路径
3.更新系统路径:alter tablespace <> rename datafile '/<old>' to '/<new>';
4.表空间在线:alter tablespace <> online;
2.迁移表空间的某个数据文件:
1.离线数据文件:alter database datafile <路径 | 编号> offline;
查看数据文件编号:select file#,name,status from v$datafile;
2.拷贝到新路径;cp
3.更新系统路径:alter database rename file '/<old>' to '/<new>';
4.介质恢复:recover datafile <编号 | 路径>;
5.数据文件在线:alter database datafile <编号 | 路径> online
2.mount状态下执行
1.拷贝到新路经
2.更新系统路径:alter database rename file '/<old>' to '/<new>';
3.打开数据库:alter database open;
3.表空间的扩容:表空间使用率达到85%时需扩容--->推荐使用1.3种
查看表空间使用情况:select tablespace_name,bytes/1024/1024 bytes from dba_data_files; |
查看空闲情况:select tablespace_name,sum(bytes/1024/1024) bytes from dba_free_space group by tablespace_name ;
查看表空间是否自动增长:select file_name,autoextensible from dba_data_files;
扩容方法:
1.没有使用自动增长:----->该为自动增长:autoextend on
alter database <> datafile '/' autoextend on
2.重置表空间的大小或数据文件的大小(使用它会出问题因为用户在使用)
alter database datafile '/' resize 60M;
3.在表空间下增加数据文件
alter tablespace <> add datafile '/' size 50M;
4.表空间的删除:
没有对象:drop tablespace <>;
有对象:drop tabalespace <> including contents;
删除表空间及物理文件:drop tabalespace <> including contents and datafiles;
5.表空间相关试图:
dba_tablespaces;
dba_data_files;
dba_free_space;
v$tablespace(动态);
undo表空间:主要给普通用户使用
默认分配10个段。
查看Undo表空间有多少个段:select segment_name from dba_rollback_segs;
查看undo表空间参数:show parameter undo;
1.作用
回退操作--------rollback
闪回操作-------commit
一致性
undo出了问题
创建undo表空间语法(也可以做smallfile | bigfile):
create undo tablespace <> datafile '/' size <> autoextend in [ segment management <> entent management <> | uniform size <>];
undo_management:
rallback segment:
aum:auto undo management
mum:manual undo management
11g:manual ----不能呢个做dml操作
sys----system
auto----
2.1Undo 表空间丢失处理(系统自带的)
1.改为手动管理:alter system set undo_management=manual scope=spfile;
2.重启数据库:shutdown immediate ---->启动:startup
3.删除undo表空间:drop tabalespace <>
4.创建undo表空间:create undo tablespace <> datafile '/' size 100m autoextend on ;
5.改为自动管理:alter system set undo_management=auto scope=spfile;
6.重启数据库:shutdown immediate ----->启动:startup
2.2undo物理文件丢失
1.关闭数据库:shutdown immediate; | shutdown abort;
启动到nomount阶段:startup nomount
2.改为手动管理undo表空间:alter system set undo_management=manual scope=spfile;
3. 启动数据库到mount阶段:shutdown immediate ---->startup nomount---->salter database mount;
4.让undo数据文件离线并删除物理文件: alter database datafile 3 offline drop;
5.打开数据库:alter databases open;
6.删除undo表空间(如果有dml操作会报错需要使用隐藏参数进行删除): drop tablespace undotbs1
7.新建undo: create undo tablespace undotbs1 datafile '/' size 100m autoextend on ;
8.改为默认:alter system set undo_tablespace=undotbs1;
9.该为自动管理: alter system set undo_management=auto scope=spfile
如果第六步不成功:
7.create pfile=‘/tmp/a.ora’ from spfile;
8.加隐藏参数过滤掉活动的undo段;
select segment_name from dba_rollback_segs where tablespace_name='UNDOTBS1'
vim /tmp/a.ora
添加: _corrupted_rollback_segments=(''_SYSSMU1_1240252155$,'...')
9.使用pfile启动数据库
startup pfile='/tmp/a.ora';
10.删除undotbs1并重新创建一个undo设为默认的
drop tablespace undotbs1 including contents and datafiles;
create undo tablespace undotbs2 datafile '/' size <> autoextend on;
alter system set undo_tablespace=undotbs2;
alter system set undo_management=auto scope=spfile;
11.重启并打开数据库
shutdown immediate---------->startup;
3.Undo表空间扩容(达到85%):
1.改为自动增长autoextend on
alter database datafile '/' autoextend on;
2.重置表空间大小 resize
alter database datafile '/' resize <>;
3.将表空间增加数据文件
alter tabalespcae <> add datadile ' ' size <>;
4.Undo试图:
与永久表空间试图一样
temp:临时表空间:
1.作用:
1.存放用户临时数据,
2.排序操作时,内存不够用时,
2.创建语法:
create temporary tablespace <> tempfile '/' size <> [segment management <> | extent management <> uniform size <> ];
查看临时表空间相关信息:desc dba_temp_files;
3.管理:
1.改为自动增长autoextend on
alter database datafile '/' autoextend on;
2.重置表空间大小 resize
alter database datafile '/' resize <>;
3.将表空间增加数据文件
alter tabalespcae <> add datadile ' ' size <>;
4.丢失处理:
允许重启:只需将数据库重启,
不允许重启:重新创建一个表空间并设置成默认的
1.重建:create temporary tablespace <> tempfile '/' size <> autoextend on;
2.设置为默认:alter database default temporary tablespace <>;
3.删除丢失的表空间:drop tablespace <>;
5.相关试图:
多1个 dba_temp_files;
segment(段):
查看段的信息:desc user_segments(11g只有插入数据到segment里面才会分配段)
段的产生:
用户执行创建对象的时候,系统自动分配段,默认情况用户创建对象时候系统分配一个段,
段只有名字,没有大小
段的分类:
表段:
索引段:
临时段:
undo段:
段的管理:
字典管理:10g就被淘汰。
本地管理:
extent:(区)
区只有大小,没有名字:
查看区的信息:desc user_extents
区的管理:
区的大小自动管理
本地管理:
Block:数据块
查看数据库信息: show parameter db_block

数据文件:
数据文件状态:
online: 联机 offline:离线 recover:需要做介质恢复

转载于:https://my.oschina.net/hdlp520/blog/893093

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值