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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万叶学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值