1.ORACLE逻辑结构
ORACLE将数据逻辑地存放在表空间,物理地存放在数据文件中。
一个表空间任何一个时刻只能属于一个数据库。
数据库——表空间——段——区——ORACLE块
每个数据库由一个或多个表空间组成,至少一个。
每个表空间基于一个或多个操作系统的数据文件,至少一个,一个操作系统的数据文件只能属于一个表空间。一个表空间可以存放一个或多个段 segment。
每个段由一个或多个区段extent组成。
每个区段由多个连续的ORACLE数据库块组成,最少5个块,引申出一个表最少5个块。
每个ORACLE数据块由一个或多个连续的操作系统数据块组成。
每个操作系统数据文件由一个或多个区段组成,由一个或多个操作系统数据块组成。
2.两类表空间:
系统SYSTEM表空间 非系统表空间 NON-SYSTEM表空间
系统SYSTEM表空间与数据库一起建立,在系统表空间中有数据字典,系统还原段。可以存放用户数据但是不建议。
非系统表空间NON-SYSTEM表空间 由管理员创建。可以方便管理。
SYSAUX表空间 ---v$sysaux_occupants select tablespace_name from dba_tables where tablespace_name='SYSAUX';
3.创建数据库表空间语句:
SQL> create tablespace "test" nologging datafile 'd:\disk2\moon\test01.dbf' size10M,'d:\disk4\moon\test02.dbf' size 10M;
创建本地管理的索引表空间
SQL> create tablespace test_indexdatafile 'd:\disk6\moon\test_index.dbf' size 10M extent management local uniform size 1M;
创建UNDO表空间
SQL> create undo tablespace test_undodatafile 'd:\disk7\moon\test_undo.dbf' size 10M;
表空间已创建。
SQL> select file_id,file_name,tablespace_name from dba_data_files order by file_id;
FILE_ID FILE_NAME TABLESPACE
------------------------------------------------------------ ----------
1 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
3 C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
4 C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF USERS
5 C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
6 D:\DISK2\MOON\TEST01.DBF test
7 D:\DISK4\MOON\TEST02.DBF test
8 D:\DISK6\MOON\TEST_INDEX.DBF TEST_INDEX
9 D:\DISK7\MOON\TEST_UNDO.DBF TEST_UNDO
已选择9行。
SQL> select file#,name,status from v$datafile;
SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 MB from dba_data_files;
4.创建临时表空间
临时数据文件状态只能为可读写,不能重命名,不能脱机,总是为NOLOGGING状态,
只读状态运行的数据库也需要临时数据文件,临时数据文件不可恢复。
SQL> select f.file#,t.ts#,f.name,t.name from v$tempfile f,v$tablespace t where f.ts#=t.ts#;
SQL> create temporary tablespacetest_temp tempfile 'd:\disk8\moon\test_temp.dbf' size 10M extent management local uniform size 2M;
默认临时表空间的改变
SQL> select PROPERTY_NAME,PROPERTY_VALUEfrom database_properties where property_name like 'DEFAULT%';
SQL> alter database default temporary tablespace test_temp;
SQL> select PROPERTY_NAME,PROPERTY_VALUEfrom database_properties where property_name like 'DEFAULT%';
SQL> alter database default temporary tablespace temp;
5.设置表空间脱机注意表空间名的大小写
正常状态 为ONLINE 联机状态 。脱机可进行:数据库打开状态下移动数据文件,数据库打开状态下恢复一个表空间。执行对表空间的脱机备份。
脱机时表空间上数据不可访问,状态变化 会记录在数据字典和控制文件中。
系统表空间,上面有活动的还原、回滚表空间,默认临时表空间不可脱机。
SQL> select tablespace_name,status,contents from dba_tablespaces;
TABLESPACE STATUS CONTENTS
---------- --------- ---------
SYSTEM ONLINE PERMANENT
SYSAUX ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
EXAMPLE ONLINE PERMANENT
test ONLINE PERMANENT
TEST_INDEX ONLINE PERMANENT
TEST_UNDO ONLINE UNDO
TEST_TEMP ONLINE TEMPORARY
SQL> col name for a50
SQL> select file#,name,status from v$datafile;
FILE# NAME STATUS
------------------------------------------------------------ -------
1 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF ONLINE
3 C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF ONLINE
4 C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF ONLINE
5 C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF ONLINE
6 D:\DISK2\MOON\TEST01.DBF ONLINE
7 D:\DISK4\MOON\TEST02.DBF ONLINE
8 D:\DISK6\MOON\TEST_INDEX.DBF ONLINE
9 D:\DISK7\MOON\TEST_UNDO.DBF ONLINE
SQL> alter tablespace test_index offline;
表空间已更改。
SQL> select file#,name,status from v$datafile;
FILE# NAME STATUS
------------------------------------------------------------ -------
1 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF ONLINE
3 C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF ONLINE
4 C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF ONLINE
5 C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF ONLINE
6 D:\DISK2\MOON\TEST01.DBF ONLINE
7 D:\DISK4\MOON\TEST02.DBF ONLINE
8 D:\DISK6\MOON\TEST_INDEX.DBF OFFLINE
9 D:\DISK7\MOON\TEST_UNDO.DBF ONLINE
SQL> alter tablespace test_index online;
SQL> select file#,name,status from v$datafile;
FILE# NAME STATUS
---------- ---------------------------------------------------------
1 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF ONLINE
3 C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF ONLINE
4 C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF ONLINE
5 C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF ONLINE
6 D:\DISK2\MOON\TEST01.DBF ONLINE
7 D:\DISK4\MOON\TEST02.DBF ONLINE
8 D:\DISK6\MOON\TEST_INDEX.DBF ONLINE
9 D:\DISK7\MOON\TEST_UNDO.DBF ONLINE
#############
6.表空间的设置为只读模式,注意表名字默认是大写,如果创建表空间时表名小写并加双引号可以成小写。
SQL> select tablespace_name,status,contents from dba_tablespaces where tablespace_name like 'TEST%';
TABLESPACE STATUS CONTENTS
---------- --------- ---------
TEST_INDEX READ ONLY PERMANENT
TEST_TEMP ONLINE TEMPORARY
TEST_UNDO ONLINE UNDO
SQL> alter tablespace "test" read only;
表空间已更改。
SQL> alter tablespace "test" read write;
表空间已更改。
########################################################################
7.改变表空间的存储设置
alter tablespace "test" minimum extent 100K