Oracle-表空间与数据文件操作

目录

1、表空间创建

2、表空间修改

3、数据文件可用性切换操作

4、数据文件和表空间删除


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 tablespace TEMP02

datafile 'd:\tp02.dbf' size 15M;

表空间已创建。

(4) 为 ORCL 数据库创建一个名为 UNDO02 的还原表空间,数据文件为'd:\un02.dbf',大小10M;

SQL> create temporary tablespace TEMP02

tempfile 'd:\tp02.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数据字典中没有表空间的信息;

相关推荐
尘浮生39 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的桂林旅游景点导游平台(源码+数据库+文档)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
柠檬の夏季1 小时前
数据库表操作
数据库
听雪楼主.1 小时前
Oracle RAC IPC Send timeout detected问题分析处理
数据库·oracle
一个儒雅随和的男子1 小时前
连肝了多天学习MySQL索引与性能优化,详细总结一下索引的使用与数据库优化
数据库·学习·mysql
爱吃牛肉的大老虎2 小时前
Oracle架构之用户,权限,角色讲解
oracle·架构·ffmpeg
禾高网络3 小时前
陪护小程序|护理陪护系统|陪护小程序成品
java·数据库·小程序·陪护
小登ai学习3 小时前
简单认识redis - 7redis实现分布式
数据库·redis·分布式
周周写不完的代码3 小时前
Redis-分布式锁
数据库·redis·分布式
盖头盖3 小时前
【宽字节注入】
数据库
bug菌¹3 小时前
滚雪球学Oracle[5.2讲]:数据库备份与恢复基础
数据库·oracle·数据库备份·数据库恢复