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

相关推荐
百***920241 分钟前
【MySQL】MySQL库的操作
android·数据库·mysql
q***766641 分钟前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
信仰_2739932431 小时前
Redis红锁
数据库·redis·缓存
人间打气筒(Ada)1 小时前
Centos7 搭建hadoop2.7.2、hbase伪分布式集群
数据库·分布式·hbase
心灵宝贝1 小时前
如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程)
数据库·mysql·macos
奋斗的牛马2 小时前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信
忧郁的橙子.3 小时前
一、Rabbit MQ 初级
服务器·网络·数据库
杰杰7983 小时前
SQL 实战:用户访问 → 下单 → 支付全流程转化率分析
数据库·sql
爬山算法3 小时前
Redis(120)Redis的常见错误如何处理?
数据库·redis·缓存
野生技术架构师3 小时前
盘一盘Redis的底层数据结构
数据结构·数据库·redis