Oracle表空间和数据文件详解(二)

在SYSTEM模式下,从DBA_DATA_FILES数据字典中获得。
Col tablespace_name for a10;
Col file_name for a50;
Col bytes for 999,999,999;
Select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;

查询users表空间内存放的数据对象及其类型和拥有者
Col owner for a10;
Col segment_type for a20;
Col segment_name for a30;
Select segment_type,segment_name,owner from dba_segments where tablespace_name='USERS';

查询sysaux表空间所存放的用户及其所拥有的对象数量
Select owner,count(segment_name) from dba_segments where tablespace_name='SYSAUX' group by owner;

create [smallfile/bigfile] tablespace tablespace_name
datafile '/path/filename' size num[k/m] reuse [,...]
[autoextend [on|off] next num [k/m]
[maxsize [unlimited | num[k/m]]]]
[mininum extent num[k/m]]
[default storage storage]
[online|offline]
[logging|nologging]
[permanent|temporary]
[extent management dictionary|local [autoallocate|uniform size num[k/m]]];

关键字
smallfile/bigfile 创建小文件表空间还是大文件表空间
autoextend [on|off] next 数据文件为自动扩展还是非自动扩展 如果自动扩展需要设置next的值
maxsize 当数据文件自动扩展时,允许数据文件扩展的最大长度字节数,unlimited则不需要指定字节长度
mininum extent 最小的长度,由操作系统和数据库的块决定
online|offline 创建表空间时可以指定在线或者离线
permanent|temporary 永久表空间还是临时表空间,默认永久性表空间
logging|nologging 该表空间内的表在加载数据时是否产生日志,默认产生日志,即使设置nologging,但进行insert、update、delete时,oracle仍会将操作信息记录到redo log buffer中
extent management dictionary|local 表空间扩展方式是使用数据字典管理还是本地化管理,默认本地化管理,不推荐数据字典管理
autoallocate|uniform size 如果采用本地化管理,表空间扩展时,指定每次盘区扩展的大小是由系统自动指定还是按照等同大小进行,如果按照等同大小进行,默认每次扩展的大小是1MB
参数
 tablespace_name 表空间名称
'/path/filename' 数据文件的路径和名字 reuse表示如果文件存在则清除该文件再重新建立该文件,如果文件不存在则创建
default storage storage 指定以后要创建表、索引、簇的存储参数值

通过本地化管理方式创建表空间
通过本地化管理方式创建一个表空间,其扩展大小为等同256kb
create tablespace tbs_test_1 datafile 'D:\oraclefiles\datafile1.dbf'
size 10m
extent management local uniform size 256k;

通过本地化管理方式创建一个表空间,其扩展大小为自动管理
create tablespace tbs_test_2 datafile 'D:\oraclefiles\datafile2.dbf'
size 10m
extent management local autoallocate;

通过段空间管理方式创建表空间
段空间管理方式是建立在本地化表空间管理方式基础上,使用
segment space management manual/auto 手工段和自动段两种空间管理方式
手工段空间管理方式是使用pct_free\pct_userd参数标识可供插入使用的数据块
通过本地化管理方式创建表空间,扩展大小为自动管理,段空间管理方式为手工
create tablespace tbs_test_3 datafile 'D:\oraclefiles\datafile3.dbf'
size 20m
extent management local autoallocate
segment space management manual;
自动段管理,数据库使用位图来标识哪些数据块可以用于插入操作,哪些数据块需要从自由列表上取下,此时会忽略pct_free\pct_userd参数
通过本地化管理方式创建表空间,扩展大小为自动管理,段空间管理方式为自动
create tablespace tbs_test_4 datafile 'D:\oraclefiles\datafile4.dbf'
size 20m
extent management local autoallocate
segment space management auto;
自动段管理方式不能用于创建临时表空间和系统表空间
oracle本身推荐自动段空间方式管理永久表空间

创建非标准块的表空间,块大小是标准块的2倍
Alter system set db_16k_cache_size=16 M scope=both;
create tablespace tbs_test_5 datafile 'D:\oraclefiles\datafile5.dbf'
size 64m reuse
autoextend on next 4m maxsize unlimited
blocksize 16k
extent management local autoallocate
segment space management auto;

创建一个大文件表空间,指定一个数据文件,并且数据文件大小为2gb
create bigfile tablespace tbs_test_big datafile 'D:\oraclefiles\datafilebig.dbf'
size 2g;
修改大文件表空间其空间大小改变为1gb
alter tablespace tbs_test_big resize 1g;

传统表空间如果改变数据文件大小
alter database datafile  'D:\oraclefiles\datafile5.dbf'
resize 100m;

设置默认表空间
alter database default temprory tablespace temp_1;
alter database default tablespace tbs_example;

更改表空间读写状态
设置表空间只读必须满足
表空间为online状态;不包含任何回滚段;不能在归档模式下
alter tablespace tbs_test_3 read only;
alter tablespace tbs_test_3 read write;

重命名表空间
数据库管理员只能对普通表空间重命名,不能对system和sysaux表空间进行重命名,也不能对处于offline状态的表空间重命名
alter tablespace tbs_test_3 rename to tbs_test_3_new;

删除表空间
drop tablespace tbs_test_3
including contents   --删除表空间的同时删除表空间中的数据
cascade constraints; --删除表空间的同时删除完整性限制

向表空间中添加数据文件
向users表空间中添加一个新的数据文件users02.dbf,该文件支持自动扩展,扩展能力为每次扩展5mb,并且该文件的最大空间不受限制
alter tablespace users add datafile 'd:\app\Administrator\oradata\orcl\users02.dbf'
size 10m autoextend on next 5m maxsize unlimited;

从表空间中删除文件
删除users表空间中users02.dbf数据文件
alter tablespace users drop  datafile 'd:\app\Administrator\oradata\orcl\users02.dbf';

对数据文件的自动扩展设置
select file_name,autoextensible from dba_data_files
where tablespace_name='TBS_TEST_5';
alter database datafile  'D:\oraclefiles\datafile5.dbf'
autoextend on next 10m maxsize unlimited;

创建临时表空间
create tempory tablespace temp_01 tempfile
 'D:\oraclefiles\tempfile1.tpf' size 300m;

查询临时表空间信息
col file_name for a40;
col tablespace_name for a10;
select file_name,bytes,tablespace_name from dba_temp_files;

临时表空间组
创建
CREATE TEMPORARY TABLESPACE tp1 TEMPFILE
    'D:\oraclefiles\tempfile1.tpf'
     SIZE 10M   
     TABLESPACE GROUP temp_group1;
CREATE TEMPORARY TABLESPACE tp2 TEMPFILE
    'D:\oraclefiles\tempfile2.tpf'
     SIZE 10M   
     TABLESPACE GROUP temp_group1;

转移
CREATE TEMPORARY TABLESPACE tp3 TEMPFILE
    'D:\oraclefiles\tempfile3.tpf'
     SIZE 10M   
     TABLESPACE GROUP temp_group2;
ALTER TABLESPACE tp1 TABLESPACE GROUP temp_group2;

把临时表空间分配给指定用户使用
alter user hr temporary tablespace group2;

设置默认的临时表空间组
alter database orcl default temporary tablespace group2;

删除临时表空间组
drop tablespace tp1 including contents and datafiles;
drop tablespace tp2 including contents and datafiles;
select * from dba_tablespace_groups where group_name='GROUP2';
组的删除时通过删除组内所有的临时表空间实现

撤销表空间
创建
create undo tablespace undo_tbs1
datafile   'D:\oraclefiles\undofile1.dbf'
size 3g;
修改
alter tablespace ...add datafile
alter tablespace...rename datafile
achivlog alter tablespace ...begin backup/end backup
切换undo表空间
alter system set undo_tablespace=undo_tbs1;
删除
alter system set undo_tablespace=undo_tbs2;
drop tablespace undo_tbs1;
查看信息
当前例程正在使用的undo表空间
show parameter undo_tablespace;
实例的所有undo表空间
select tablespace_name from dba_tablespaces where contents='UNDO';

你可能感兴趣的:(Oracle表空间和数据文件详解(二))