Oracle存储设置及简述

ORACLE存储设置

表空间:
1.表空间是数据库中最大的存储结构。
2.1个表空间可以对应多个数据文件,但是多个数据文件只能对应1个表空间,并且表空间属于逻辑文件存储。
3.SMALLFILE(小文件表空间,创建表空间时会生成多个数据文件)
4.BIGFILE(大文件表空间,创建表空间时只会生成1个数据文件)但是无法扩容/缩容。不方便管理。

段:
1.数据库里的表、索引、序列等等一些数据库对象,并不是直接存放在表空间中的,这样会显得杂乱无章,而是存放在“段”中。
2.表空间是由多个段组成的。

区:
1.段里面细分就是“区”,段必须是区的整数倍:假如一张表是25M,一个区大小是4M,那么段的大小是28M,如果现在表里添加了3M的数据,此时段的空间还能容纳表。现在表的大小是28M,如果此时表又添加了1M,此时为29M,那么段的空间大小是为32M。
2.段的增长大小必须依赖于区的整数倍增长。
3.组成段的单位就是区。

块(BLOCK):是数据库进行IO操作的最小单位,在安装数据库时会有显示默认为8K
它与操作系统的块不是一个概念,ORACLE数据库不是以操作系统的块为单位来请求数据,
而是以多个ORACLE数据库块为单位。

数据库底层存储结构:数据库—>表空间—>数据文件---->段(SEGMENT)—>区(EXTENT)–块(BLOCK)

DESC V$DATAFILE/DBA_DATA_FILES   --存放数据文件的目录以及和表空间的对应关系
DESC V$TABLESPACE/DBA_TABLESPACES  --数据库中现有的表空间信息
DESC DBA_SEGMENTS 		   --数据库中现有的段信息
DESC DBA_EXTENTS.SEGMENT_NAME      --数据库中现有的区信息
DESC DBA_EXTENTS.BLOCKS	           --数据库中现有的块信息

表空间创建两种方式:
1.通过EM管理工具手动创建表空间。
2.通过命令的形式创建表空间,以下为创建语句示例:
2.1:登录SQLPLUS,用管理员身份SYS
2.2:创建表空间语句

CREATE TABLESPACE XX
DATAFILE '/U01/XX/XX.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 5M
MAXSIZE 200M;

AUTOEXTEND ON NEXT 5M MAXSIZE 200M --将该表空间设置为自动增长的形式,
如果存放的数据超出了表空间大小会按照每5M的方式进行增长,一直增长到表空间为200M的时候,就会停止增长(可以设置无上限 MAXSIZE UNLIMITED)

–当我们通过命令删除表空间后只是删除了数据库中的逻辑文件,
但是存放在硬盘上的DBF文件还是存在的,如果想要复用直接在创建
语句后加上REUSE即可复用原来的数据文件。
CREATE TABLESPACE XX
DATAFILE ‘/U01/XX/XX.DBF’
SIZE 100M
AUTOEXTEND ON NEXT 5M
MAXSIZE 200M REUSE;

–当我们通过命令删除表空间的时候需要将存放在硬盘上的
DBF(数据文件)也一并删除可以用以下的语句:
DROP TABLESPACE XX INCLUDING CONTENTS AND DATAFILES;
如果不加INCLUDING CONTENTS AND DATAFILES这段,只会单纯删除数据库中的表空间并不会删除
硬盘上的数据文件。

修改表空间状态:
1.通过DBA_TABLESPACES查询到所要修改的表空间状态(STATUS)
2.ALTER TABLESPACE XX OFFLINE --将XX表空间修改为离线状态
,ONLINE为在线,而ONLINE状态是代表该表空间是可读可写的,如果要
将此表空间修改为只读就是ALTER TABLESPACE XX READ ONLY,如果要
将此表空间修改为只写就是ALTER TABLESPACE XX READ WRITE即可(其实也是叫ONLINE)。

修改表空间名称:
ALTER TABLESPACE XX RENAME TO YY;

备份表空间:

1.使用操作系统命令拷贝一份出来。
2.把表空间设置为OFFLINE
3.对数据文件重命名
执行步骤(这是我的环境):
第一步将需要RENMAE的数据文件先CP复制重命名
第二步通过命令ALTER TABLESPACE XX RENAME TO YY;修改表空间名字
第三步将修改后表空间状态改为OFFLINE(离线)
第四步修改数据文件名称,从原来的数据文件指向刚刚CP完新的数据文件,
ALTER DATABASE RENAME FILE ‘/U01/XX/XX.DBF’ TO ‘/U01/XX/YY.DBF’;
第五步此时查询DBA_TABLESPACES表,里面的YY和对应硬盘下路径的数据文件已经修改完毕。
第六步将YY表空间状态改为ONLINE(在线),ALTER TABLESPACE YY ONLINE;
第七步如果在第六步修改不了,报错需要介质恢复,执行RECOVER DATAFILE ‘/U01/XX/YY.DBF’;
第八步再重新执行ALTER TABLESPACE YY ONLINE;
第九步有一点提示,现在我们是将表空间备份在原来的路径下,假如对应的硬盘即将损坏,那我们可以将对应的表空间备份文件放到其他硬盘目录上即可,用同样的步骤进行操作。

手动增加表空间大小,表空间增加大小都是直接对数据文件进行操作的:
1.直接增加现有数据文件大小,ALTER DATABASE DATAFILE ‘/U01/XX/YY.DBF’ RESIZE 100M;
但是这里要说明一个情况,我们表空间是基于数据文件的,而数据文件是存放在硬盘分区上的,通过第一条
命令只能对原来硬盘里存放的数据文件大小进行增加,如果硬盘分区的大小不够呢?这个时候我们可以为该
表空间添加一个新的数据文件,之前有说到表空间可以对应多个数据文件,就可以用以下命令进行添加:
2.新增一个数据文件,ALTER TABLESPACE YY ADD DATAFILE ‘/U01/YY2.DBF’ SIZE 100M;
3.增长表空间不需要将表空间设置为OFFLINE。

除了通过EM和命令增加表空间还有第三种方法创建表空间,利用ORACLE自带工具OMF(ORACLE管理的文件)
1.SHOW PARAMETER DB_CREATE;如果没有设置OMF的路径值一般是为空的。
2.为DB_CREATE赋值,ALTER SYSTEM SET DB_CREATE_FILE_DEST=’/U01/OMF-DF’;
3.这个时候直接使用CREATE TABLESPACE XX;就可以完成表空间创建并且不用写过多的参数。

临时表空间:
1.DBA_DATA_FILES表查看只能查询到永久表空间和撤销表空间(UNDO),查询不到临时表空间。
2.DESC V$TEMPFILE(查询临时表空间)

3.创建临时表空间
CREATE TEMPORARY TABLESPACE TMP1 TEMPFILE '/U01/OMF-DF/TMP1.DBF' SIZE 10M 
AUTO EXTEND ON NEXT 5M MAX SIZE UNLIMITED;

4.删除临时表空间和删除永久表空间的命令是一样的。

临时表空间和永久表空间的区别:
临时表空间用来进行一些运算和索引创建等,多数使用完会自动清理,
而永久表空间是正常数据物理存储的永久空间,两者的用途不同,为了更好的管理所以区分开来创建

猜你喜欢

转载自blog.csdn.net/m0_38036502/article/details/106351777