oracle物理结构:
数据文件: .dbf
日志文件: .log
控制文件: .ctl
在oracle_base oradata\instancename\
数据文件的管理由表空间管理
逻辑结构: 由表空间管理数据文件
一个数据库可有多个表空间,至少要有system表空间,一个表空间可有多个数据文件,至少要有一个数据文件
控制文件:select name from v$controlfile;
日志文件: select * from v$logfile;
数据文件: select name from v$datafile;
表空间: select name from v$tablespace;
创建表空间:
create tablespace user01
datafile 'e:\oracle\oradata\orcl\user01.dbf' size 10m;
表中的数据录入到表的所有者的默认表空间上
新建的用户默认表空间:users表空间
查询表空间和数据文件的对应关系:
select h1.name, h2.name from v$tablespace h1 join v$datafile h2 on h1.ts# = h2.ts#;
查询表属于某个表空间;
selct table_name, tablespace_name from user_tables where table_name = 'T3';
create undo tablespace undo01
datafile 'e:\oracle\oradata\orcl\undo01.dbf' size 10m;
create temporary tablespace temp1
tempfile 'e:\oracle\oradata\orcl\temp01.dbf' size 10m;
alter tablespace user01 offline; online read only
drop tablespace user01;只删除表空间而不回删除数据文件,也就是说e:\oracle\oradata\orcl\user01.dbf
文件还在了!
drop tablespace user01 including contents and datafiles;这样的话数据表也没有了!
alter database datafile 'e:\oracle\oradata\orcl\user02.dbf' resize 20m;
SQL> select h1.name, h2.name from v$tablespace h1 join v$datafile h2 on h1.ts#=
h2.ts# where h1.name=upper('user01');
SQL> alter tablespace user01 add datafile 'e:\oracle\oradata\orcl\user03.dbf' si
ze 20m;这做方法是用来给user01表空间再添加一个数据文件当上一个数据文件用完了以后,再用这个文件。
查看表空间的使用情况
select a.file_id "FileNo",
a.tablespace_name "Tablespace_name", round(a.bytes/1024/1024,4) "Total MB",
round((a.bytes-sum(nvl(b.bytes,0)))/1024/1024,4) "Used MB",
round(sum(nvl(b.bytes,0))/1024/1024,4) "Free MB",
round(sum(nvl(b.bytes,0))/a.bytes*100,4) "%Free"
from dba_data_files a, dba_free_space b
where a.file_id=b.file_id(+)
group by a.tablespace_name,
a.file_id,a.bytes order by a.tablespace_name