OracleDBA之路之Tabespace(四)

将表空间设置为read only /read write ;offline/online

ALTER TABLESPACE [tablespace]READ ONLY 命令将表空间置于过渡只读模式。除了以前修改过该表空间中的块的已有事务处理回退,这种过渡状态不允许再对该表空间进行任何写入操作。当已有的所有事务处理提交或者回退后,只读命令完成,该表空间置于只读模式。
您可以删除只读表空间内的表和索引等项,因为这些命令只影响数据字典。之所以可以这样操作,是因为 DROP 命令只更新数据字典,而不更新构成表空间的物理文件。对于本地管理的表空间,删除的段将改为临时段以避免更新位图。要使只读表空间可写,表空间内的所有数据文件都必须联机。将表空间设为只读将导致对表空间的数据文件执行检查点操作。
将表空间设为只读可防止对表空间中的数据文件进行任何写操作
用xiaomi 用户登陆系统
SQL> conn xiaomi/xiaomi
Connected.
SQL> create table t (integer id);
create table t (integer id)
                *
ERROR at line 1:
ORA-00904: : invalid identifier
 
 
SQL> create table t(id integer);
 
Table created.
 
SQL> insert into t values(1);
 
1 row created.
 
SQL> commit;
 
Commit complete.
 
SQL> insert into t values(2);
 
1 row created.
 
SQL> select * from t;
 
        ID
----------
         1
         2
 
SQL>


用sysdba用户来让小米拥有的tablespace read only
SQL> show user
USER is "SYS"
SQL> alter tablespace MYTABLESPACE read only;
 
小米用户插入的第二条数据没有commit 无法把该表空间设置为read only
SQL> show user
USER is "XIAOMI"
SQL> commit;
 
Commit complete.

SQL> show user
USER is "SYS"
SQL> alter tablespace MYTABLESPACE read only;
 
Tablespace altered.

表空间设置成read only 状态后无法插入,删除,更新数据
SQL> insert into t values(3);
insert into t values(3)
            *
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/oradata/houzhh/myts01.dbf'

SQL> delete from t where id=1;
delete from t where id=1
            *
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/oradata/houzhh/myts01.dbf'

可以删除表
SQL> drop table t;
 
Table dropped.

把该表空间修改为read write

SQL> alter tablespace MYTABLESPACE READ WRITE;
 
Tablespace altered.

修改表空间到离线状态
只要数据库打开,数据库管理员就可以使任何表空间脱机(SYSTEM表空间和任何具有活动还原段或临时段的表空间除外)。当一个表空间脱机后,Oracle 服务器将使与之相关联的所有数据文件脱机
ALTER TABLESPACE tablespace
{ONLINE |OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]}
其中:
NORMAL:将该表空间中所有数据文件内的所有块从SGA 中清空。这是缺省设置。在使该表空间重新联机之前,您无须对其执行介质恢复。尽可能使用 NORMAL 子句。
TEMPORARY:对表空间内的所有联机数据文件执行检查点操作,即使某些文件无法写入。所有脱机文件可能都需要进行介质恢复。
IMMEDIATE:不保证表空间文件可用,而且不执行检查点操作。在使表空间重新联机前,您必须对其执行介质恢复操作。
alter tablespace mytablespace offline;
SQL> show user;
USER is "XIAOMI"
SQL> select * from tt;
select * from tt
*
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/u01/oradata/houzhh/myts01.dbf'

SQL> insert into tt values(3);
insert into tt values(3)
            *
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/u01/oradata/houzhh/myts01.dbf'
SQL> alter tablespace mytablespace online;
 
Tablespace altered.
 
show user;
USER is "SYS"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值