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数据字典中没有表空间的信息;

相关推荐
zzb15801 小时前
RAG from Scratch-优化-query
java·数据库·人工智能·后端·spring·mybatis
一只鹿鹿鹿1 小时前
信息安全等级保护安全建设防护解决方案(总体资料)
运维·开发语言·数据库·面试·职场和发展
堕2741 小时前
MySQL数据库《基础篇--数据库索引(2)》
数据库·mysql
wei_shuo1 小时前
数据库优化器进化论:金仓如何用智能下推把查询时间从秒级打到毫秒级
数据库·kingbase·金仓
雷工笔记1 小时前
Navicat Premium 17 软件安装记录
数据库
wenlonglanying2 小时前
Ubuntu 系统下安装 Nginx
数据库·nginx·ubuntu
数据库小组2 小时前
10 分钟搞定!Docker 一键部署 NineData 社区版
数据库·docker·容器·database·数据库管理工具·ninedata·迁移工具
爬山算法2 小时前
MongoDB(38)如何使用聚合进行投影?
数据库·mongodb
l1t2 小时前
Deep Seek总结的APSW 和 SQLite 的关系
数据库·sqlite
Pocker_Spades_A3 小时前
基于代价模型的连接条件下推:复杂SQL查询的性能优化实践
数据库·sql·性能优化