ORACLE期末复习整理笔记详细版Word格式.docx
- 文档编号:1477073
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:50
- 大小:39.48KB
ORACLE期末复习整理笔记详细版Word格式.docx
《ORACLE期末复习整理笔记详细版Word格式.docx》由会员分享,可在线阅读,更多相关《ORACLE期末复习整理笔记详细版Word格式.docx(50页珍藏版)》请在冰点文库上搜索。
/test/mytbs01.dbf'
EXTENTMANAGEMENTLOCALAUTOALLOCATESEGMENTSPACEMANAGEMENTAUTO
droptablespacemytbsincludingcontentsanddatafiles;
createtablespacemytbsdatafile'
/u01/oracle/oradata/ora10g/mytbs01.dbf'
size100M;
createtablet2tablespacemytbs2asselect*fromscott.emp;
selectsegment_name,extent_id,file_id,block_id,blocksfromdba_extentswhereowner='
SYS'
andSEGMENT_NAME='
T2'
;
空间回收(整理碎片)
10G以前回收的方法
1.在表空间中移动表
altertableTABLE_NAMEmovetablespaceTABLESPACE_NAME;
2.将数据导出删除表再将数据导入
10G中提供的新方法
altertableTABLE_NAMEshrinkspace[compact|cascate]
altertableTABLE_NAMEshrinkspace;
整理碎片并回收空间
altertableTABLE_NAMEshrinkspacecompact;
只整理碎片不回收空间
altertableTABLE_NAMEshrinkspacecascate;
整理碎片回收空间
并连同表的级联对象一起整理(比如索引)
使用条件
自动段管理模式
打开行移动
使用步骤
1.altertablet1enableROWMOVEMENT;
2.shrink操作
3.altertablet1disableROWMOVEMENT;
ASSM是自动段管理AUTOSEGMENTSPACEMANAGEMENT
MSSM是手工段管理
FREELIST(空闲列表)管理
FREEextent可以分配给不同的段
extent的使用和空闲由数据文件位图或者数据字典UET$和FET$来管理
而在属于段内的块如何来管理呢?
在字典管理及本地管理非自动段管理时将由FREELIST和FREELIST组来管理
在本地管理表空间的自动段管理采用位图来管理
FREELIST管理
FREELIST作为一个Oracle存储管理的核心参数
其行为方式由Oracle内部控制
但对这种机制不了解时,会遇到很多问题
当插入一条记录,会插入到哪个块中?
是使用新块,还是插入有数据的老块?
段是什么时候扩展的,如何扩展的?
表中只有一条记录,但是做一次select时,代价为何却是上千个块?
带着这些问题来了解FREELIST
块的内部结构
header中包含:
块属性信息,事务信息,表目录,行目录
属性信息:
块的类型,块的格式,块地址,SCN,块的序列号,块的标志
事务信息:
事务相关的基本信息,和ITL(事务槽)
表目录:
当前表的信息
行目录:
记录块内存储行的地址信息
freespace:
空闲空间
dataspace:
使用空间
在生成段的时候,会同时分配初始区(initialextents),
初始区的第一个块就格式化为segmentheader,
并被用来记录freelist描述信息、extents信息,HWM信息等。
段头就是初始区的第一个块
freelist是一种单向链表用于定位可以接收数据的块,
在字典管理方式的表空间中或MSSM,Oracle使用freelist来管理未分配的存储块。
Oracle记录了有空闲空间的块用于insert或Update。
空闲空间来源于两种方式:
1.段中所有超过高水位(HWM)的块,这些块已经分配给段了,但是还未被使用。
2.段中所有在HWM下的且链入了freelist的块,可以被重用。
HWM:
HIGHWATERMARK代表一个表使用的最大的(toplimit)块。
简单点说HWM就是一口井曾经达到的最高水位,也就是历史最高水位点
比如一个杯子能装100升水装到80,倒出20.高水位就是80;
空闲的块怎么来的?
1.段中所有超过HWM的块,这些块已经分配给段了,但是还未被使用。
注意限定词:
这些块已经分配给段了
FREELIST就是一个链入了空闲块的单向链表
高水位上的肯定是空闲的,想用高水位以上的空闲之前,必须将高水位延伸.
表空间信息
表空间数据字典视图:
DBA_TABLESPACES
表空间动态性能视图:
V$TABLESPACE
数据文件信息
数据字典视图:
DBA_DATA_FILES
动态性能视图:
V$DATAFILE
临时文件信息
DBA_TEMP_FILES
V$TEMPFILE
空间分配信息
被段分配的区:
DBA_EXTENTS
没有被段分配的区:
DBA_FREE_SPACE
系统默认
database_properties;
查询FREElist
dba_tables
自动段管理ASSM
引入了一种新的段空间管理方式,称为ASSM,自动段管理
自动段管理,采用位图方式管理段空间。
******回退表空间和数据文件的管理******
作用:
1.交易的回退:
没有提交的交易可以rollback
2.交易的恢复:
数据库崩溃时,将磁盘的不正确数据恢复到交易前
3.读一致性:
被查询的记录有事务占用,转向回滚段找改前镜像
4.闪回数据:
从回滚段中构造历史数据
回滚段创建的时候是空闲的,只有事务产生时候才会产生数据。
创建UNDO表空间:
createundotablespaceundo2datafile'
/u01/oracle/oradata/ora10g/undo02.dbf'
size10M;
管理风格:
自动或手动
showparameterundo
NAMETYPEVALUE
-----------------------------------------------------------------------------
undo_managementstringAUTO
undo_retentioninteger900
undo_tablespacestringUNDOTBS1
undo_management=AUTO回滚表空间段的段管理模式,
自动管理
管理员只需要备足够的表空间容量,oracle会自动管理扩展回滚段的数量。
只能使用一个UNDO表空间
undo_tablespace:
只有在自动管理模式下才可以使用。
指明使用哪个UNDO表空间
切换回滚表空间的时候不会影响回滚数据:
altersystemsetundo_tablespace=undo2;
Systemaltered.
手工管理UNDO
修改方法
SYS@beijing>
showparameterrollback
NAMETYPEVALUE
fast_start_parallel_rollbackstringLOW
rollback_segmentsstring
transactions_per_rollback_segmentinteger5
默认一个回滚段可以维持5个事务不要放太多事务会产生回滚段头争用
因为段头中记录段中的块的位置找段里的数据就要访问段头
改成手动
altersystemsetundo_management=manualscope=spfile;
***************临时表空间*****************
存放排序的中间结果或临时表
selecttablespace_name,contentsfromdba_tablespaceswhereCONTENTS='
TEMPORARY'
SQL>
改成手动
追加新的临时文件:
altertablespacetempaddtempfile'
/u01/oracle/oradata/ora10g/temp02.dbf'
size50M;
selecttablespace_name,file_namefromdba_temp_files;
查询一下临时文件的存储位置。
10G的新语法临时文件的删除
altertablespacetempdroptempfile'
/u01/oracle/oradata/ora10g/temp01.dbf'
删除临时表空间
droptablespacetemp2includingcontentsanddatafiles;
删除临时表空间的文件
altertablespacetemp2addtempfile'
/u01/oracle/oradata/ora10g/temp02a.db'
altertablespacetemp2droptempfile'
扩容手段和永久的一致
alterdatabasetempfile'
/u01/oracle/oradata/ora10g/temp03.dbf'
resize10M;
清除临时表空间组
altertablespacetemp01tablespacegroup'
'
为空即可
******************永久表空间管理***********************
永久表空间管理
又分为:
小文件表空间(一个表空间可以存放1023个文件每个文件4M*block_size)
基本应用都是这类默认创建也是它
大文件表空间(一个表空间可以存放1个文件文件管理4G*block_size)
很少使用,不利于IO分散,容易产生争用,容易被FS限制
小文件表空间
查看
selecttablespace_name,file_id,file_name,ceil(bytes/1048567)||'
M'
MB
fromdba_data_files;
TABLESPACE_NAMEFILE_IDFILE_NAMEMB
------------------------------------------------------------------------------------------
USERS4/u01/oracle/oradata/ora10g/users01.dbf26M
SYSAUX3/u01/oracle/oradata/ora10g/sysaux01.dbf241M
UNDOTBS12/u01/oracle/oradata/ora10g/undotbs01.dbf26M
SYSTEM1/u01/oracle/oradata/ora10g/system01.dbf481M
创建大文件表空间
createbigfiletablespacebigtbsdatafile'
/test/bigtbs01.dbf'
size5M;
selecttablespace_name,bigfilefromdba_tablespaces;
TABLESPACE_NAMEBIG
------------------
SYSTEMNO
UNDOTBS1NO
SYSAUXNO
TEMPNO
USERSNO
MYTBSNO
BIGTBSYES
修改表空间状态(onlinereadonlyoffline)
只读表空间只能select查询和drop删除对象不能修改(INTSERTupdatedeletetruncate)
systemundotbstemp包含活动事务的表空间都不能只读
selecttablespace_name,statusfromdba_tablespaces;
TABLESPACE_NAMESTATUS
-------------------------
SYSTEMONLINE
UNDOTBS1ONLINE
SYSAUXONLINE
TEMPONLINE
USERSONLINE
MYTBSONLINE
altertablespacemytbsreadonly;
恢复成online(读写)状态
altertablespacemytbsreadwrite;
altertablespacemytbsoffline;
数据文件的移动改名(两种命令方法)
1.使用altertablespaceTABLESPACE_NAMErenamedatafile'
OLD_file'
to'
NEW_file'
命令
前提条件
a.表空间要offline状态altertablespaceusersoffline
b.目标文件要存在就是先做mv操作
altertablespaceusersoffline;
selectnamefromv$datafile;
移动文件
altertablespaceusersrenamedatafile'
/u01/oracle/oradata/ora10g/users01.dbf'
/home/oracle/users01.dbf'
2.使用alterdatabaserenamefile'
a.数据库mount或表空间离线shutimmediate==>
startupmount
b.目标文件存在mvsrc_filedst_file
shutimmediate
startupmount
alterdatabaserenamefile'
alterdatabaseopen;
练习
将表空间设置只读然后备份控制文件创建脚本
一致停库启动到nomount重新创建控制文件
启动数据库根据控制文件备份脚本中的提示将只读表空间恢复正常
(直到可以在这个表空间内创建表)
createtablespacetestdatafile'
/u01/oracle/oradata/ora10g/mytest01.dbf'
altertablespacetestadddatafile'
/u01/oracle/oradata/ora10g/mytest02.dbf'
alterdatabasebackupcontrolfiletotraceas'
/u01/oracle/ctl_rw.sql'
altertablespacetestreadonly;
/u01/oracle/ctl_ro.sql'
/u01/oracle/product/10.2.0/dbs/MISSING00005'
altertablespacetestonline;
altertablespacetestreadwrite;
表空间扩容
使文件自动增长
增加新文件
修改现有文件的大小
selecttablespace_name,sum(bytes/1048576)curr_MB,sum(MAXBYTES/1048576)MAX_MBfromdba_data_filesgroupbyTABLESPACE_NAME;
TABLESPACE_NAMECURR_MBMAX_MB
-----------------------------------
SYSAUX24032767.9844
UNDOTBS12532767.9844
USERS2532767.9844
SYSTEM48032767.9844
MYTBS1010
最大大小为空说明不能增长
查询当前分配大小中的剩余尺寸
selectTABLESPACE_NAME,sum(bytes/1048576)free_mbfromdba_free_spacegroupbyTABLESPACE_NAME;
TABLESPACE_NAMEFREE_MB
UNDOTBS14.0625
SYSAUX.875
USERS24.5625
SYSTEM6.875
MYTBS10.875
扩容的方法:
1.使文件自动增长
alterdatabasedatafile'
autoextendonnext10Mmaxsize4G;
autoextendoff;
2.增加新文件
altertablespaceusesadddatafile'
altertablespaceusesdropdatafile'
/*10G才能删有数据不能删第一个文件不能删*/
3.修改现有文件的大小
resize15M;
删除表空间和数据文件
删除表空间及其内容一起删除
删除表空间及其文件一起删除
createtablet1tablespacemytbsasselect*fromscott.emp;
droptablespacemytbsINCLUDINGCONTENTS;
createtablespacemytbsdatafile'
/u01/oracle/oradata/db10/mytbs01.dbf'
droptablespacemytbsINCLUDINGCONTENTSanddatafiles;
*************表空间******************************
表空间是数据文件的容器
表空间是数据文件在数据库内逻辑的组织形式
数据文件存在于操作系统之上,也可以是裸设备
常见表空间
system系统表空间
数据库创建时就创建必须包含
存放数据库基本组件信息比如基表
sysaux辅助表空间
10G引入system太大了.就将部分功能组件取出放到sysaux里
属于SYSTEM表空间的辅助表空间
独立出来的好处
SYSTEM表空间的负荷得以减轻.
反复创建一些相关对象及组件引起SYSTEM表空间的碎片问题得以避免
查看sysaux表空间内的组件信息和大小
selectOCCUPANT_NAME,SPACE_USAGE_KBYTESfrom
V$SYSAUX_OCCUPANTS;
undotbs回退表空间
用于事务回退,保存改前镜像块
temp临时表空间
存放临时数据磁盘排序或临时表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 期末 复习 整理 笔记 详细