目录
1、表空间创建
(1)为 ORCL 数据库创建一个名为 BOOKTBS1 的永久表空间,数据文件为'd:\bt01.dbf' ,大小为100M,区采用自动扩展方式(即自动分配), 段采用自动管理方式;
SQL> create tablespace BOOKTBS1
datafile 'd:\bt01.dbf' size 100M
extent management local autoallocate
segment space management auto;表空间已创建。
(2)为ORCL数据库创建一个名为BOOKTBS2的永久表空间,数据文件为'd:\bt02.dbf',大小为100M,区采用定制分配,每次分配大小(即每个区间)为1MB,段采用手动管理方式。
SQL> create tablespace BOOKTBS2
datafile 'd:\bt02.dbf' size 100M
extent management local uniform size 1M
segment space management manual;表空间已创建。
(3) 为 ORCL 数据库创建一个临时表空间 TEMP02,数据文件为'd:\tp02.dbf',大小为15M;
SQL> create temporary tablespace TEMP02
tempfile 'd:\tp02.dbf' size 15M;表空间已创建。
(4) 为 ORCL 数据库创建一个名为 UNDO02 的还原表空间,数据文件为'd:\un02.dbf',大小10M;
SQL> create undo tablespace TEMP02
datafile 'd:\un02.dbf' size 15M;表空间已创建。
(5)查询DBA_TABLESPACES数据字典,查看创建出的表空间信息(表空间名、状态、区管理模式、段管理模式、类型)
SQL>select tablespace_name, status, extent_management, segment_space_management, contents from dba_tablespaces;
2、表空间修改
(1) 为 ORCL 数据库的表空间 BOOKTBS2 添加一个大小为 20M 的数据文件'd:\bt03.dbf',以改变该表空间的大小;
SQL> alter tablespace BOOKTBS2 add datafile 'd:\bt03.dbf' size 20M;
表空间已更改。
(2)创建一个名为 test 的表,其中包含id(number类型)和name(varchar类型)存储于 BOOKTBS1 表空间中,向表中插入一条记录,记录内容为自己的学号和姓名;
SQL> create table test
(id number,name varchar(20))
tablespace BOOKTBS1;表已创建。
SQL> insert into test(id,name) values (XXXXXXXX,'XXX');
已创建 1 行。
SQL> select * from test;
(3)查看test表所属表空间信息
SQL> select tablespace_name from dba_tables where table_name = 'TEST';
(4) 将 ORCL 数据库的 BOOKTBS1 表空间设置为脱机状态,测试该表空间是否可以使用(查询表空间信息STATUS,尝试查询test表内容);
SQL> alter tablespace BOOKTBS1 offline;
SQL> select tablespace_name,status
from dba_tablespaces
where tablespace_name='BOOKTBS1';
SQL> select * from test;
(5) 将 ORCL 数据库的 BOOKTBS1 表空间设置为联机状态,测试该表空间是否可以使用(查询表空间信息STATUS,尝试查询test表内容);
SQL> alter tablespace BOOKTBS1 online;
SQL> select tablespace_name,status
from dba_tablespaces
where tablespace_name='BOOKTBS1';
SQL> select * from test;
(6) 将 ORCL 数据库的 BOOKTBS1 表空间设置为只读状态,测试该表空间是否可以进行数据读写操作(测试test表读写);
SQL> alter tablespace BOOKTBS1 read only;
SQL> select * from test;
SQL> insert into test(id,name) values(XXXXXXXX,'XXX');
(7) 将 ORCL 数据库的 BOOKTBS1 表空间设置为读写状态,测试该表空间是否可以进行数据读写操作(测试test表读写);
SQL> alter tablespace BOOKTBS1 read write;
SQL> select * from test;
SQL> insert into test(id,name) values(XXXXXXXX,'XXX');
3、数据文件可用性切换操作
(1)修改表空间BOOKTBS1中的bt01文件为脱机状态,然后验证数据文件是否能够使用
SQL> alter database datafile 'd:\bt01.dbf' offline;
①查询DBA_DATA_FILES数据字典,查看文件名和ONLINE_STATUS状态
SQL> SELECT file_name, online_status FROM dba_data_files WHERE file_name LIKE '%BT01%';
②查询test表中的数据,验证是否能够查询
SQL> select * from test;
(2)修改表空间BOOKTBS1中的bt01文件为联机状态。
SQL> recover datafile 'D:\BT01.DBF';
完成介质恢复。
SQL> alter database datafile 'd:\bt01.dbf' online;数据库已更改。
4、数据文件和表空间删除
(1) 查看属于BOOKTBS2表空间的数据文件信息
SQL> select file_name from dba_data_files where tablespace_name like 'BOOKTBS2';
(2)删除BOOKTBS2表空间中的一个数据文件‘d:\bt03.dbf’
SQL> alter tablespace BOOKTBS2 drop datafile 'd:\bt03.dbf';
表空间已更改。
(3)尝试用上述语句删除BOOKTBS2表空间中最后一个数据文件‘d:\bt02.dbf’,观察是否能够删除,为什么?
SQL> alter tablespace BOOKTBS2 drop datafile 'd:\bt02.dbf';
BOOKTBS2表空间中最后一个数据文件‘d:\bt02.dbf’不能够删除:
无法删除表空间中的最后一个数据文件,这是因为数据库系统为了防止数据丢失,不允许删除最后一个数据文件,如果尝试这样做,数据库将返回错误,提示你不能删除最后一个数据文件。
(4)删除表空间BOOKTBS2,要求同时将表空间中的数据文件一起删除,确认最后一个数据文件‘d:\bt02.dbf’在电脑硬盘上是否已经删除?DBA_TABLESPACES数据字典中是否还有表空间的信息?
SQL> drop tablespace BOOKTBS2 including contents and datafiles;
表空间已删除。
最后一个数据文件‘d:\bt02.dbf’在电脑硬盘上已经删除
DBA_TABLESPACES数据字典中没有表空间的信息;