在11g以前,Oracle提供的只读功能只到了数据库级和表空间级:

SQL> CONN / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP OPEN READ ONLY ORACLE instance started. Total System Global Area 267825152 bytes Fixed Size 1299316 bytes Variable Size 176163980 bytes Database Buffers 88080384 bytes Redo Buffers 2281472 bytes Database mounted. Database opened. SQL> INSERT INTO YANGTK.T VALUES (2); INSERT INTO YANGTK.T VALUES (2) * ERROR at line 1: ORA-16000: database open for read-only access

如果数据库级设置了只读打开,数据库中任何对象都无法进行修改。

SQL> SHUTDOWN Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started. Total System Global Area 267825152 bytes Fixed Size 1299316 bytes Variable Size 176163980 bytes Database Buffers 88080384 bytes Redo Buffers 2281472 bytes Database mounted. Database opened. SQL> INSERT INTO YANGTK.T VALUES (2); 1 row created. SQL> COMMIT; Commit complete. SQL> SELECT TABLESPACE_NAME FROM ALL_TABLES WHERE OWNER = 'YANGTK' AND TABLE_NAME = 'T'; TABLESPACE_NAME ------------------------------ YANGTK SQL> ALTER TABLESPACE YANGTK READ ONLY; Tablespace altered. SQL> INSERT INTO YANGTK.T VALUES (3); INSERT INTO YANGTK.T VALUES (3) * ERROR at line 1: ORA-00372: file 5 cannot be modified at this time ORA-01110: data file 5: '/data/oracle/oradata/ora11g/ORA11G/datafile/o1_mf_yangtk_3d3kn7k4_.dbf'

设置表空间只读,那么表空间中所有的对象都无法被修改。也就是说,如果在11g之前,想要实现对某张表的只读,只有建立一个表空间,将表放到该表空间中,再将表空间至于只读状态。
不但操作麻烦,而且如果需要添加新的只读表,而不打算新建立一个表空间的话,需要先将只读表空间置为可写,然后将新的表放进去,再将其置为只读,而在操作期间,表空间中原有的对象可能会被修改。

从11g开始,Oracle终于提供了表级的只读设置了,显现方法也很简单,一个ALTER TABLE READ ONLY语句就搞定了:

SQL> ALTER TABLESPACE YANGTK READ WRITE; Tablespace altered. SQL> CONN YANGTK/yangtk Connected. SQL> INSERT INTO T VALUES (3); 1 row created. SQL> ALTER TABLE T READ ONLY; Table altered. SQL> INSERT INTO T VALUES (4); INSERT INTO T VALUES (4) * ERROR at line 1: ORA-12081: update operation not allowed on table "YANGTK"."T"

将表置于只读状态,并非只是禁止DML语句,包含FOR UPDATE的查询语句,已经会引起表中数据发生变化的DDL语句都会被禁止。而不影响表中数据的DDL则可以正常执行:

SQL> SELECT * FROM T; ID ---------- 1 2 3 SQL> SELECT * FROM T FOR UPDATE; SELECT * FROM T FOR UPDATE * ERROR at line 1: ORA-12081: update operation not allowed on table "YANGTK"."T" SQL> ALTER TABLE T ADD NAME VARCHAR2(30); ALTER TABLE T ADD NAME VARCHAR2(30) * ERROR at line 1: ORA-12081: update operation not allowed on table "YANGTK"."T" SQL> ALTER TABLE T MODIFY ID NOT NULL; ALTER TABLE T MODIFY ID NOT NULL * ERROR at line 1: ORA-12081: update operation not allowed on table "YANGTK"."T" SQL> ALTER TABLE T ALLOCATE EXTENT; Table altered. SQL> ALTER TABLE T CACHE; Table altered.

Oracle11g新特性:在线操作功能增强-Oracle11g的只读表功能相关推荐

  1. Oracle11g新特性简介

    转 Oracle 11g 新特性简介https://blog.csdn.net/tianlesoftware/article/details/5134819  Oracle 11g于2007年7月11 ...

  2. oracle11g 新特性

    一.新特性提纲 1.数据库管理部分 ◆数据库重演(Database Replay)  这一特性可以捕捉整个数据的负载,并且传递到一个从备份或者standby数据库中创建的测试数据库上,然后重演负责以测 ...

  3. oracle 分区表 变大,Oracle11G新特性:分区表分区默认segment大小64k变为8M

    Oracle11G新特性:分区表分区默认segment大小64k变为8M 2017-02-08 在oracle11.2创建分区表,每个分区默认大小为8M,是由_partition_large_exte ...

  4. animate inater插件_Indesign十款功能增强插件合集(Indesign功能增强插件)V1.0 正式版...

    Indesign十款功能增强插件合集(Indesign功能增强插件)是一款非常优秀好用的针对Indesign用户推出的增强部分功能的插件.小编带来的这款Indesign十款功能增强插件合集功能强大全面 ...

  5. Oracle11g新特性:在线操作功能增强-Oracle11g在线重定义功能对物化视图... (转载)

    Oracle的在线重定义功能就是利用了物化视图的功能,通过物化视图日志的记录功能,来同步目标表和基表的数据.因此,在11g以前,建立了物化视图日志的表是无法进行在线重定义操作的: SQL> CR ...

  6. Oracle11g新特性注意事项

    在从oracle10g升级到oracle11g后,就需要对oracle11g的新特性进行了解,这些特性可能会对应用及性能产生影响,需要调整. 1. Oracle11g密码过期策略 oracle11g中 ...

  7. Oracle11g新特性之Replay a captured workload 捕获工作负载新环境重放负载测试压力

    <Oracle 数据库11g新特性之性能优化篇> [Replay a captured workload 捕获工作负载新环境重放负载测试压力] 引言:DB Replay工具是Oracle1 ...

  8. Oracle11g新特性密码延迟验证的坑

    在 Oracle 11g 中,为了提升安全性,Oracle 引入了『密码延迟验证』的新特性.这个特性的作用是,如果用户输入了错误的密码尝试登录,那么随着登录错误次数的增加,每次登录前验证的时间也会增加 ...

  9. Oracle11g新特性导致空表不能导出问题

        ORACLE 11G在用EXP导出时,发现空表(没有数据或者没有用过的表)不能导出了. 查了一下资料,说是Oracle 11G中有个新特性,当表无数据时,不分配segment,以节省空间,所以 ...

最新文章

  1. Fckeditor PHP/ASP File Upload Vul
  2. Numpy.genfromtxt
  3. 非侵入脑机接口新突破!用意念控制光标,连续追踪效果提升5倍
  4. 【五线谱】还原记号 ( 还原记号使用简介 | 变音记号、还原记号实例分析 )
  5. C语言实现链表(附完整源码)
  6. 最常见的显示设置和快捷键
  7. x86的32位汇编快速入门
  8. 36岁 计算机博士,36岁考博士
  9. asp.net core 3.0 更新简记
  10. .NET Core开发日志——HttpClientFactory
  11. LazyInitializationException的四种解决方案–第2部分
  12. 云 文件 服务器 只存,云 文件 服务器只存
  13. mysql数据库查询源码_超简单php mysql数据库查询类
  14. POJ 1037 DP
  15. 帆软报表重要Activator之DesignerInitActivator之二
  16. beetl调用java方法_08.自定义方法以及直接访问java类方法---《Beetl视频课程》
  17. bzoj 1677: [Usaco2005 Jan]Sumsets 求和(DP)
  18. 面向对象编程风格 VS 基于对象编程风格
  19. 中国2017 Google 开发者大会第二天简单回顾
  20. 智力与联系能力的关系

热门文章

  1. Javascript的数组操作(笔记)
  2. scala的字符串的方法(五)
  3. Pyqt5:使用多线程QThread
  4. 使用Firebase、Angular 8和ASP.NET Core 3.1保护网站
  5. MariaDB 10.4.9 发布,MySQL 分支数据库
  6. Python 之父 Guido van Rossum 宣布
  7. python 模型 欺诈概率_python信用卡欺诈模型,最大似然参数设置/混淆矩阵
  8. zookeeper和eureka的对比
  9. java 泛型参数_[基础]-Java泛型
  10. sigmoid函数_深度学习中激活函数总结