oracle实验四

创建文件

(1)为 ORCL 数据库创建一个名为 BOOKTBS1 的永久性表空间,数据文件为'd:\bt01.dbf' ,大小为100M,区采用自动扩展方式(即自动分配), 段采用自动管理方式;

(2)为ORCL数据库创建一个名为BOOKTBS2的永久性表空间,数据文件为'd:\bt02.dbf',大小为100M,区采用定制分配,每次分配大小(即每个区间)为1MB,段采用手动管理方式。

(3) 为 ORCL 数据库创建一个临时表空间 TEMP02,数据文件为'd:\tp02.dbf',大小为15M;

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

可以使用以下SQL语句来创建一个名为BOOKTBS1的永久性表空间,满足您的要求:

sql 复制代码
CREATE TABLESPACE BOOKTBS1
DATAFILE 'd:\bt01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

这条SQL语句会创建一个100MB大小的数据文件('d:\bt01.dbf'),并设置它可以自动扩展,直到达到文件系统的限制。表空间的段管理方式被设置为自动分配。但是这个区和段的默认设置就是自动管理,后面的 AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE; 可以缺省。

可以使用以下SQL语句来创建名为BOOKTBS2的永久性表空间,满足您的要求:

sql 复制代码
CREATE TABLESPACE BOOKTBS2
DATAFILE 'd:\bt02.dbf' SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT MANUAL;

这条SQL语句将创建一个名为BOOKTBS2的永久性表空间,数据文件为'd:\bt02.dbf',初始大小为100MB。区采用定制分配,每次分配的大小为1MB,而段采用手动管理方式。

您可以使用以下SQL语句来执行这些任务:

创建临时表空间 TEMP02:

sql 复制代码
CREATE TEMPORARY TABLESPACE TEMP02
TEMPFILE 'd:\tp02.dbf' SIZE 15M;

创建撤销表空间 UNDO02:

sql 复制代码
CREATE UNDO TABLESPACE UNDO02
DATAFILE 'd:\un02.dbf' SIZE 10M;

为表空间 BOOKTBS1 添加一个数据文件:

sql 复制代码
ALTER TABLESPACE BOOKTBS1
ADD DATAFILE 'd:\bt03.dbf' SIZE 20M;

这些SQL语句将分别创建一个临时表空间(TEMP02),一个撤销表空间(UNDO02),以及向表空间BOOKTBS1添加一个新的数据文件来改变其大小。

第二部分

(6)创建一个名为 test 的表, 存储于 BOOKTBS1 表空间中, 向表中插入一条记录;

(7) 将 ORCL 数据库的 BOOKTBS1 表空间设置为脱机状态, 测试该表空间是否可以使用;

(8) 将 ORCL 数据库的 BOOKTBS1 表空间设置为联机状态, 测试该表空间是否可以使用;

以下是您需要执行的任务:

要在Oracle中创建一个名为 "test" 的表并将其存储在 "BOOKTBS1" 表空间中,以及向表中插入一条记录,您可以使用以下SQL语句:

sql 复制代码
-- 创建表并指定表空间
CREATE TABLE BOOKTBS1.test (
    id NUMBER,
    name VARCHAR2(50)
)
TABLESPACE BOOKTBS1;

-- 向表中插入一条记录
INSERT INTO BOOKTBS1.test (id, name) VALUES (1, 'Example Record');

这将创建一个名为 "test" 的表,并将其存储在 "BOOKTBS1" 表空间中。然后,它插入了一条记录到这个表中。

7. 将BOOKTBS1表空间设置为脱机状态:

sql 复制代码
ALTER TABLESPACE BOOKTBS1 OFFLINE;

这将使BOOKTBS1表空间脱机,即不可用状态。

8. 将BOOKTBS1表空间设置为联机状态:

sql 复制代码
ALTER TABLESPACE BOOKTBS1 ONLINE;

这将使BOOKTBS1表空间联机,即重新可用状态。在执行这两个命令之后,您可以测试该表空间是否可以正常使用。

但是上面还有要注意的地方

如何查询表空间的状态,确认脱机还是联机状态

要查询表空间的状态,您可以使用以下SQL查询:

sql 复制代码
SELECT tablespace_name, status
FROM dba_tablespaces;

这条SQL语句将返回所有表空间的名称以及它们的状态。状态通常可以是以下之一:

  • ONLINE:表空间处于正常在线状态,可用于数据存储。
  • OFFLINE:表空间处于脱机状态,不可用。
  • READ ONLY:表空间处于只读状态,不可写入数据。
  • FORCE LOGGING:表空间启用了强制日志记录。
  • LOGGING/NOLOGGING:表空间是否记录日志。

请注意,您需要相应的权限才能查询DBA视图中的数据。

在进行联机恢复时,要先完成介质恢复

要对BOOKTBS1表空间进行介质恢复(media recovery),您需要使用Oracle的恢复操作。通常,这是在表空间或数据库处于异常状态时执行的。

下面是一般介质恢复的步骤:

  1. 将表空间脱机(如果尚未脱机):

    在进行介质恢复之前,确保表空间处于脱机状态。如果不是,请使用以下命令脱机表空间:

    sql 复制代码
    ALTER TABLESPACE BOOKTBS1 OFFLINE;
  2. 恢复数据文件:

    首先,您需要找到损坏的数据文件,并使用适当的备份或归档日志进行数据文件恢复。这通常需要在SQL*Plus中运行。以下是一个示例:

    sql 复制代码
    RECOVER DATAFILE 'd:\bt01.dbf';

    请确保使用正确的数据文件路径。

  3. 将表空间联机:

    在成功恢复数据文件后,将表空间重新联机:

    sql 复制代码
    ALTER TABLESPACE BOOKTBS1 ONLINE;

这些步骤将对BOOKTBS1表空间执行介质恢复。请注意,介质恢复的成功与否取决于您是否具有正确的备份和归档日志,并且可能需要数据库管理员的参与。此外,恢复操作应仅在必要时执行,因为它可能会中断数据库的正常运行。

第四部分

(9) 将 ORCL 数据库的 BOOKTBS1 表空间设置为只读状态, 测试该表空间是否可以进行数据写入操作;

(10) 将 ORCL 数据库的 BOOKTBS1 表空间设置为读写状态, 测试该表空间是否可以进行数据读写操作;

9. 将BOOKTBS1表空间设置为只读状态:

sql 复制代码
ALTER TABLESPACE BOOKTBS1 READ ONLY;

这将使BOOKTBS1表空间变为只读状态,即不允许进行数据写入操作。

当将ORCL数据库的BOOKTBS1表空间设置为只读状态后,试图进行数据写入操作将会导致错误。以下是一个测试示例来证明该表空间不可写:

首先,将BOOKTBS1表空间设置为只读状态:

sql 复制代码
ALTER TABLESPACE BOOKTBS1 READ ONLY;

随后,尝试插入一条记录,这将失败并抛出错误:

sql 复制代码
-- 试图插入一条记录
INSERT INTO BOOKTBS1.test (id, name) VALUES (2, 'Another Record');

您将会收到类似以下错误信息:

ORA-16056: tablespace BOOKTBS1 is read only, cannot add data file

这个错误表明BOOKTBS1表空间是只读的,因此无法进行数据写入操作。

10. 将BOOKTBS1表空间设置为读写状态:

sql 复制代码
ALTER TABLESPACE BOOKTBS1 READ WRITE;

这将使BOOKTBS1表空间重新变为读写状态,即允许进行数据读写操作。

在执行这两个命令之后,您可以测试该表空间是否可以进行相应的数据操作。

仍然可以插入一条测试数据,看一下是否可以进行读写操作。

第五部分

(11) 查询 ORCL 数据库控制文件中的表空间信息;

(12) 查询 ORCL 数据库所有表空间及其数据文件信息;

(13) 删除 ORCL 数据库 BOOKTBS2 表空间及其所有内容, 同时删除操作系统上的数据文件。

以下是您需要执行的任务:

11. 查询控制文件中的表空间信息:

sql 复制代码
SELECT tablespace_name
FROM v$tablespace;

这将返回ORCL数据库中控制文件中包含的表空间信息。

12. 查询所有表空间及其数据文件信息:

sql 复制代码
SELECT tablespace_name, file_name
FROM dba_data_files;

这将列出ORCL数据库中的所有表空间以及它们的数据文件信息。

13. 删除BOOKTBS2表空间及其内容,同时删除操作系统上的数据文件:

首先,删除表空间及其内容:

sql 复制代码
-- 将表空间离线
ALTER TABLESPACE BOOKTBS2 OFFLINE;
-- 删除表空间及其内容
DROP TABLESPACE BOOKTBS2 INCLUDING CONTENTS AND DATAFILE;

接下来,删除操作系统上的数据文件(在命令行或文件浏览器中执行):

-- 删除操作系统上的数据文件 'd:\bt02.dbf'(请确保路径正确)

这将从数据库中删除BOOKTBS2表空间及其内容,并删除相应的操作系统数据文件。请小心执行此操作,因为它将永久删除表空间和数据文件。确保已备份所需数据,以免意外数据丢失。

相关推荐
一休哥助手5 分钟前
Redis 五种数据类型及底层数据结构详解
数据结构·数据库·redis
翔云12345613 分钟前
MVCC(多版本并发控制)
数据库·mysql
代码敲上天.30 分钟前
数据库语句优化
android·数据库·adb
盒马盒马1 小时前
Redis:zset类型
数据库·redis
静听山水1 小时前
mysql语句执行过程
数据库·mysql
虽千万人 吾往矣1 小时前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
mariokkm2 小时前
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
数据库·django·sqlite
Wang's Blog3 小时前
Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息
数据库·redis
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO3 小时前
MySQL事务
数据库·mysql
cyt涛5 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok