Oracle存储结构
逻辑卷(LV)
表空间(tablespace)===》段(segment)===>区(extent)===》block
最小单位为block大小为8K
当对象在增长的时候,对应的段也会跟着增长的,增长的最小单位为区extent
段:一个对象占有一个段
区:段的增长的最小单位为区
块:表空间的最小单位
表空间和数据文件是不可分开的
SELECT * FROM DBA_DATA_FILES; --数据文件
select file_name,file_id,tablespace_name from dba_temp_files; --临时表空间数据文件
SELECT * FROM DBA_TABLESPACES; --表空间
SELECT * FROM DBA_SEGMENTS WHERE OWNER='SCOTT'; --段
SELECT * FROM Dba_Extents WHERE TABLESPACE_NAME='USERS'; --区
SELECT TABLESPACE_NAME,BLOCK_SIZE FROM DBA_TABLESPACES;-- 块 block
创建和删除表空间
表空间类型:
撤销表空间
临时表空间
CREATE TEMPORARY TABLESPACE TS_CRM_TMP
TEMPFILE '/home/oracle/app/oracle/oradata/orcl/ts_crm_tmp_01.dbf' SIZE 50M AUTOEXTEND on next 50m maxsize 10240M
EXTENT MANAGEMENT LOCAL;
大数据空间(只能有一个数据文件)
CREATE BIGFILE TABLESPACE TS_CRM_BIG DATAFILE
'/home/oracle/app/oracle/oradata/orcl/ts_crm_big_01.dbf' size 50m autoextend on next 5m maxsize unlimited;
永久表空间
--创建表空间
create tablespace TS_PECRM_DATA
datafile '/home/oracle/app/oracle/oradata/orcl/ts_pecrm_data_01.dbf' size 50m autoextend on next 5m maxsize unlimited,
'/home/oracle/app/oracle/oradata/orcl/ts_pecrm_data_02.dbf' size 50m autoextend on next 5m maxsize unlimited;
--删除表空间:
drop tablespace TS_PECRM_DATA; --只删除表空间不删除数据文件
drop tablespace TS_PECRM_DATA including contents and datafiles ; --删除表空间,同时删除数据文件及数据
--表空间删除,数据文件重新使用
create tablespace TS_PECRM_DATA
datafile '/home/oracle/app/oracle/oradata/orcl/ts_pecrm_data_01.dbf' reuse;
表空间的管理:
表空间状态:
offline :对表空间进行管理时候,表空间应该处于的状态
online :等于read write
read only :离线状态,只能读
alter tablesapce TS_PECRM_DATA offline;
表空间修改名字:
alter tablespace IDX_CRM_PSON rename to TS_CRM_INX;
重命名表空间对应的数据文件的名字:
--a.复制数据文件,名字重命名(登录数据库服务器)
cp /home/oracle/app/oracle/oradata/orcl/crm_pson_idx_01.dbf /home/oracle/app/oracle/oradata/orcl/ts_crm_inx_01.dbf
cp /home/oracle/app/oracle/oradata/orcl/crm_pson_idx_02.dbf /home/oracle/app/oracle/oradata/orcl/ts_crm_inx_02.dbf
--b.表空间设置为离线状态
alter tablespace TS_CRM_INX offline;
--c.重新指定数据库数据文件名字
alter database rename file '/home/oracle/app/oracle/oradata/orcl/crm_pson_idx_01.dbf' to '/home/oracle/app/oracle/oradata/orcl/ts_crm_inx_01.dbf';
alter database rename file '/home/oracle/app/oracle/oradata/orcl/crm_pson_idx_02.dbf' to '/home/oracle/app/oracle/oradata/orcl/ts_crm_inx_02.dbf';
--d.介质恢复
recover datafile 7; --7为数据文件的file_id,通过sql查询: select file_name,file_id,tablespace_name from dba_data_files;
recover datafile 8;
--e.更改表空间状态
alter tablespace TS_CRM_INX online;
扩展表空间大小:
--a.直接改变数据文件的大小
alter database datafile '/home/oracle/app/oracle/oradata/orcl/ts_crm_inx_01.dbf' resize 1024M;
alter database datafile 7 resize 1024M; --7为数据文件的file_id
--b.给表空间增加数据文件
alter tablespace TS_PECRM_DATA add datafile '/home/oracle/app/oracle/oradata/orcl/ts_pecrm_data_02.dbf' size 50m autoextend on next 5m maxsize unlimited;
删除表空间:
alter tablespace TS_PECRM_DATA drop datafile '/home/oracle/app/oracle/oradata/orcl/ts_pecrm_data_02.dbf'
SYSTEM与SYSAUX表空间区别:
a.数据字典表存放于SYSTEM表空间
All data dictionary tables and views for a database are stored in the SYSTEM tablespace
b.SYSAUX表空间可以处于offline,SYSTEM表空间则不能
SQL> alter tablespace sysaux offline;
Tablespace altered.
SQL> alter tablespace system offline;
alter tablespace system offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary
SQL>
c.两者均是永久表空间,不能用于临时表空间
d.两者都不能设置为READ ONLY