管理表空间和数据文件——维护表空间——改变表空间的读写状态和改变表空间名称


默认情况下表空间是处于可读写状态,用户不仅可以查询表空间上的对象数据,而且可以在表空间上执行dml 和ddl 操作。如果表空间只用于存放静态数据,那么为了便于管理和备份恢复,应该将其转变为只读状态:另外如果搬移表空间到其他数据库,那么在搬移前也需要将表空间转变为只读状态。

1.是表空间只读

当表空间转变为只读状态之后,其scn值和内容不会发生任何变化,并且用户不能在该表空间的对象上执行dml 和ddl 操作(drop 例外的)。

例子:将表空间tbs_4k转变为只读并在表空间执行dml 和ddl 操作:

alter tablespace tbs_4k read only;
insert into t1 values(1);

第 1 行出现错误:
ORA-00372: 此时无法修改文件 12
ORA-01110: 数据文件 12: 'D:\ORCL\TBS_4K.DBF'

drop table t1;

表已删除。

2.使表空间可读写

当搬移表空间时,鼻血首先将表空间转变为read only 状态,让后才能褒义相应的表空间。在完成了表空间搬移之后,必须将其转变为可读写状态。

例子:

alter tablespace tbs_4k read write;
create table t2(cola int) tablespace tbs_4k;
insert into t2 values(1);

3.改变表空间的名称
当搬移表空间到其他数据库时,在目标数据库中不能存在同名表空间。如果存在同名表空间,那么在搬移之前应该改变源数据库或目标数据的表空间名,使用alter tablespace 的rename 选项可以改变表空间名。

注意;不能修改system和sysaux 表空间的名称:当表空间或数据文件处于offline状态时,该表空间的名称将不能修改。

例子:

alter tablespace tbs_4k rename to tb_4k;

原文地址:https://www.cnblogs.com/zhaojiedi1992/p/oracle11g_sql_0048.html