- 浏览: 565440 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 随笔 (4)
- Spring (13)
- Java (61)
- HTTP (3)
- Windows (1)
- CI(Continuous Integration) (3)
- Dozer (1)
- Apache (11)
- DB (7)
- Architecture (41)
- Design Patterns (11)
- Test (5)
- Agile (1)
- ORM (3)
- PMP (2)
- ESB (2)
- Maven (5)
- IDE (1)
- Camel (1)
- Webservice (3)
- MySQL (6)
- CentOS (14)
- Linux (19)
- BI (3)
- RPC (2)
- Cluster (9)
- NoSQL (7)
- Oracle (25)
- Loadbalance (7)
- Web (5)
- tomcat (1)
- freemarker (1)
- 制造 (0)
最新评论
-
panamera:
如果设置了连接需要密码,Dynamic Broker-Clus ...
ActiveMQ 集群配置 -
panamera:
请问你的最后一种模式Broker-C节点是不是应该也要修改持久 ...
ActiveMQ 集群配置 -
maosheng:
longshao_feng 写道楼主使用 文件共享 模式的ma ...
ActiveMQ 集群配置 -
longshao_feng:
楼主使用 文件共享 模式的master-slave,produ ...
ActiveMQ 集群配置 -
tanglanwen:
感触很深,必定谨记!
少走弯路的十条忠告
一,只读表空间与数据的备份/恢复
表空间设置成只读之后,只需要执行一次备份操作即可,在后续备份时不再需要考虑这些表空间的备份。原因很容易理解,这些表空间中的数据已经不再改变,存储在表空间中的数据状态始终保持在表空间设置为Read-Only那一刻,Oracle也不需要对它们进行额外的恢复工作,比如应用归档。
我们创建两个表空间,一个是只读(Read-Only)的,一个是常规的(Read-Write),下面来比较这两个表空间数据文件的变化情况。
SQL> create tablespace readonly datafile '/u01/app/oracle/oradata/readonly01.dbf' size 10m;
Tablespace created.
SQL> create tablespace readwrite datafile '/u01/app/oracle/oradata/readwrite01.dbf' size 10m;
Tablespace created.
SQL> alter tablespace readonly read only;
Tablespace altered.
这样,我们就创建了两个表空间readonly和readwrite,并把表空间readonly的状态设置为只读。
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 ONLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4341997 ONLINE READ WRITE
我们先记录下当前状态下两个表空间数据文件的CHECKPOINT_CHANGE#号,这个号表示表空间数据文件在Oracle数据库运行时某个时间点的状态。CHECKPOINT_CHANGE#是Oracle里面的一个序号,用来标识一个先后顺序,通常用于保护数据块的完整性或者一致性的查询。当数据块做了修改,它的CHECKPOINT_CHANGE#值就会发生相应的改变。
SQL> alter system checkpoint;
System altered.
我们发出一个CHECKPOINT命令,这个命令实际上是将内存中的脏数据块写入到磁盘上的文件中,并更新文件头部信息,以保证数据块中数据的一致性。
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 ONLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4343696 ONLINE READ WRITE
我们看到,执行了CHECKPOINT命令之后,READWRITE表空间数据文件的checkpoint_change#号发生了变化,这说明这个表空间相比之前的状态,它的数据文件已经产生了变化。
尽管我们没有对这个表空间做任何操作,但不能保证Oracle不这样做(实际上,这里是表空间数据文件的文件头数据块产生了变化)。我们知道,只要数据文件的checkpoint_change#号发生了变化,Oracle就需要进行恢复;而这里,READONLY的checkpoint_change#号并没有变化,看起来就像静止在那里一样。
这就是说,如果此时Oracle数据库出现问题,比如DOWN掉了,在数据库重新OPEN时,READONLY表空间是不需要恢复的,因为它的状态依然保持在将它置于READ-ONLY那一刻,那一刻数据库是好的。
而READWRITE表空间就不同了,如果此时数据库DOWN掉了,它就需要进行恢复,因为这个表空间上的数据块状态是持续更新的,它需要通过联机日志(或者归档日志)将它恢复到最后Oracle数据库DOWN掉时的状态。
我们继续来看,现在将这两个表空间的状态改为离线。
SQL> alter tablespace readonly offline;
Tablespace altered.
SQL> alter tablespace readwrite offline;
Tablespace altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351566 OFFLINE READ WRITE
我们看到,READONLY表空间的checkpoint_change#号依然保持不变。
SQL> alter system checkpoint;
System altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351566 OFFLINE READ WRITE
当数据文件状态为离线时,不论之前它是只读还是读写表空间,它的状态都不再改变。
现在,我们把这两个表空间的状态重新改为在线。
SQL> alter tablespace readonly online;
Tablespace altered.
SQL> alter tablespace readwrite online;
Tablespace altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351660 OFFLINE READ WRITE
我们看到,READWRITE表空间的checkpoint_change#号再次改变了。实际上,在把READWRITE表空间的状态改为在线时,Oracle对它进行了恢复操作,使它的状态和数据库当前状态一致;而READONLY表空间依然静止不动地保持着它最初的状态,和数据库的变化毫无关系。
这样看来,在备份和恢复上,对只读表空间备份一次就够了;而对其他的读写表空间的备份,可能需要定期做全备份或者增量备份,同时还需要备份恢复时所需要的归档日志。这些备份集不但需要大量的磁盘空间,而且恢复时也可能会相当耗时。
二,只读表空间可以防止数据被意外删除和修改
----创建一个jack表空间----
SQL> create tablespace jack datafile '/u01/app/oracle/oradata/jack01.dbf' size 500m;
Tablespace created.
SQL> show user;
USER is "JACK"
----创建一张表jack----
SQL> create table jack tablespace jack as select * from dba_objects;
Table created.
----将表空间状态设置为只读----
SQL> alter tablespace jack read only;
Tablespace altered.
----做一些修改数据的操作,无法进行DELETE操作----
SQL> delete from jack;
delete from jack
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----无法进行UPDATE操作----
SQL> update jack set object_id=object_id*10;
update jack set object_id=object_id*10
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----无法进行INSERT操作,也就是说,对于只读表空间上的数据,无法进行DML操作。----
SQL> insert into jack select * from dba_objects;
insert into jack select * from dba_objects
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----也无法进行TRUNCATE操作,说明在只读表空间上,对数据(说的是对象里面的数据)的所有操作都是不允许的,看起来数据还是比较安全的----
SQL> truncate table jack;
truncate table jack
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----当表空间处于只读的时候,我们可以对表进行其他的修改,给表增加字段----
SQL> alter table jack add new_col varchar2(10);
Table altered.
SQL> alter table jack modify object_name varchar2(2000);
Table altered.
----在这里我们可以看到新的字段NEW_COL已经增加,OBJECT_NAME的属性已经修改成VARCHAR2(2000)----
SQL> desc jack;
Name Null? Type
--------------------- -------- ----------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(2000)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
NEW_COL VARCHAR2(10)
----无法删除字段----
SQL> alter table jack drop column new_col;
alter table jack drop column new_col
*
ERROR at line 1:
ORA-12985: tablespace 'JACK' is read only, cannot drop column
----可以删除索引和表----
SQL> alter tablespace jack read write;
Tablespace altered.
SQL> create index jack on jack(object_id);
Index created.
SQL> alter tablespace jack read only;
Tablespace altered.
SQL> drop index jack;
Index dropped.
SQL> create table persons(
PERSON_ID NUMBER(8) NOT NULL,
FIRST_NAME VARCHAR2(32) NOT NULL,
LAST_NAME VARCHAR2(32) NOT NULL
) tablespace jack;
Table created.
SQL> drop table persons;
Table dropped.
总结:
凡是要对表空间上的数据进行修改的操作都不允许。比如:
INSERT UPDATE DELETE TRUNCATE
实际上,只读表空间上的数据块连Oracle都不会修改(checkpoint_change#号从来都不会改变),这些修改数据的操作自然不被允许的。
那么,创建空表和给表增加字段或者修改字段的属性操作为什么就可以呢?因为此操作根本就不需要去触碰这个只读表空间,我们只要修改Oracle字典表中的信息就可以了(Oracle的对象属性是存储在数据字典中的,而字典表是存储在SYSTEM表空间上的),因此,这样的操作是被允许的。
同样的,删除一个字段,不仅仅要修改数据字典中表的相关信息,还涉及将该字段上的数据内容从表上抹掉,需要修改表空间上的数据块,因此,不被允许。
这样就清晰了:
凡是需要修改表空间数据块的操作,都不被允许。反之,则可以。
最后,删除这个表以及表上的索引是允许的,因为Oracle只需要从数据字典中将它的所有信息抹去就可以了。
表空间设置成只读之后,只需要执行一次备份操作即可,在后续备份时不再需要考虑这些表空间的备份。原因很容易理解,这些表空间中的数据已经不再改变,存储在表空间中的数据状态始终保持在表空间设置为Read-Only那一刻,Oracle也不需要对它们进行额外的恢复工作,比如应用归档。
我们创建两个表空间,一个是只读(Read-Only)的,一个是常规的(Read-Write),下面来比较这两个表空间数据文件的变化情况。
SQL> create tablespace readonly datafile '/u01/app/oracle/oradata/readonly01.dbf' size 10m;
Tablespace created.
SQL> create tablespace readwrite datafile '/u01/app/oracle/oradata/readwrite01.dbf' size 10m;
Tablespace created.
SQL> alter tablespace readonly read only;
Tablespace altered.
这样,我们就创建了两个表空间readonly和readwrite,并把表空间readonly的状态设置为只读。
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 ONLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4341997 ONLINE READ WRITE
我们先记录下当前状态下两个表空间数据文件的CHECKPOINT_CHANGE#号,这个号表示表空间数据文件在Oracle数据库运行时某个时间点的状态。CHECKPOINT_CHANGE#是Oracle里面的一个序号,用来标识一个先后顺序,通常用于保护数据块的完整性或者一致性的查询。当数据块做了修改,它的CHECKPOINT_CHANGE#值就会发生相应的改变。
SQL> alter system checkpoint;
System altered.
我们发出一个CHECKPOINT命令,这个命令实际上是将内存中的脏数据块写入到磁盘上的文件中,并更新文件头部信息,以保证数据块中数据的一致性。
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 ONLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4343696 ONLINE READ WRITE
我们看到,执行了CHECKPOINT命令之后,READWRITE表空间数据文件的checkpoint_change#号发生了变化,这说明这个表空间相比之前的状态,它的数据文件已经产生了变化。
尽管我们没有对这个表空间做任何操作,但不能保证Oracle不这样做(实际上,这里是表空间数据文件的文件头数据块产生了变化)。我们知道,只要数据文件的checkpoint_change#号发生了变化,Oracle就需要进行恢复;而这里,READONLY的checkpoint_change#号并没有变化,看起来就像静止在那里一样。
这就是说,如果此时Oracle数据库出现问题,比如DOWN掉了,在数据库重新OPEN时,READONLY表空间是不需要恢复的,因为它的状态依然保持在将它置于READ-ONLY那一刻,那一刻数据库是好的。
而READWRITE表空间就不同了,如果此时数据库DOWN掉了,它就需要进行恢复,因为这个表空间上的数据块状态是持续更新的,它需要通过联机日志(或者归档日志)将它恢复到最后Oracle数据库DOWN掉时的状态。
我们继续来看,现在将这两个表空间的状态改为离线。
SQL> alter tablespace readonly offline;
Tablespace altered.
SQL> alter tablespace readwrite offline;
Tablespace altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351566 OFFLINE READ WRITE
我们看到,READONLY表空间的checkpoint_change#号依然保持不变。
SQL> alter system checkpoint;
System altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351566 OFFLINE READ WRITE
当数据文件状态为离线时,不论之前它是只读还是读写表空间,它的状态都不再改变。
现在,我们把这两个表空间的状态重新改为在线。
SQL> alter tablespace readonly online;
Tablespace altered.
SQL> alter tablespace readwrite online;
Tablespace altered.
SQL> select name,file#,checkpoint_change#,status,enabled from v$datafile where name like '%read%';
NAME FILE# CHECKPOINT_CHANGE# status enabled
--------------------------------------------- ---------- -------------
/u01/app/oracle/oradata/readonly01.dbf 6 4342263 OFFLINE READ ONLY
/u01/app/oracle/oradata/readwrite01.dbf 7 4351660 OFFLINE READ WRITE
我们看到,READWRITE表空间的checkpoint_change#号再次改变了。实际上,在把READWRITE表空间的状态改为在线时,Oracle对它进行了恢复操作,使它的状态和数据库当前状态一致;而READONLY表空间依然静止不动地保持着它最初的状态,和数据库的变化毫无关系。
这样看来,在备份和恢复上,对只读表空间备份一次就够了;而对其他的读写表空间的备份,可能需要定期做全备份或者增量备份,同时还需要备份恢复时所需要的归档日志。这些备份集不但需要大量的磁盘空间,而且恢复时也可能会相当耗时。
二,只读表空间可以防止数据被意外删除和修改
----创建一个jack表空间----
SQL> create tablespace jack datafile '/u01/app/oracle/oradata/jack01.dbf' size 500m;
Tablespace created.
SQL> show user;
USER is "JACK"
----创建一张表jack----
SQL> create table jack tablespace jack as select * from dba_objects;
Table created.
----将表空间状态设置为只读----
SQL> alter tablespace jack read only;
Tablespace altered.
----做一些修改数据的操作,无法进行DELETE操作----
SQL> delete from jack;
delete from jack
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----无法进行UPDATE操作----
SQL> update jack set object_id=object_id*10;
update jack set object_id=object_id*10
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----无法进行INSERT操作,也就是说,对于只读表空间上的数据,无法进行DML操作。----
SQL> insert into jack select * from dba_objects;
insert into jack select * from dba_objects
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----也无法进行TRUNCATE操作,说明在只读表空间上,对数据(说的是对象里面的数据)的所有操作都是不允许的,看起来数据还是比较安全的----
SQL> truncate table jack;
truncate table jack
*
ERROR at line 1:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/jack01.dbf'
----当表空间处于只读的时候,我们可以对表进行其他的修改,给表增加字段----
SQL> alter table jack add new_col varchar2(10);
Table altered.
SQL> alter table jack modify object_name varchar2(2000);
Table altered.
----在这里我们可以看到新的字段NEW_COL已经增加,OBJECT_NAME的属性已经修改成VARCHAR2(2000)----
SQL> desc jack;
Name Null? Type
--------------------- -------- ----------------------------
OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(2000)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED DATE
LAST_DDL_TIME DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NUMBER
EDITION_NAME VARCHAR2(30)
NEW_COL VARCHAR2(10)
----无法删除字段----
SQL> alter table jack drop column new_col;
alter table jack drop column new_col
*
ERROR at line 1:
ORA-12985: tablespace 'JACK' is read only, cannot drop column
----可以删除索引和表----
SQL> alter tablespace jack read write;
Tablespace altered.
SQL> create index jack on jack(object_id);
Index created.
SQL> alter tablespace jack read only;
Tablespace altered.
SQL> drop index jack;
Index dropped.
SQL> create table persons(
PERSON_ID NUMBER(8) NOT NULL,
FIRST_NAME VARCHAR2(32) NOT NULL,
LAST_NAME VARCHAR2(32) NOT NULL
) tablespace jack;
Table created.
SQL> drop table persons;
Table dropped.
总结:
凡是要对表空间上的数据进行修改的操作都不允许。比如:
INSERT UPDATE DELETE TRUNCATE
实际上,只读表空间上的数据块连Oracle都不会修改(checkpoint_change#号从来都不会改变),这些修改数据的操作自然不被允许的。
那么,创建空表和给表增加字段或者修改字段的属性操作为什么就可以呢?因为此操作根本就不需要去触碰这个只读表空间,我们只要修改Oracle字典表中的信息就可以了(Oracle的对象属性是存储在数据字典中的,而字典表是存储在SYSTEM表空间上的),因此,这样的操作是被允许的。
同样的,删除一个字段,不仅仅要修改数据字典中表的相关信息,还涉及将该字段上的数据内容从表上抹掉,需要修改表空间上的数据块,因此,不被允许。
这样就清晰了:
凡是需要修改表空间数据块的操作,都不被允许。反之,则可以。
最后,删除这个表以及表上的索引是允许的,因为Oracle只需要从数据字典中将它的所有信息抹去就可以了。
发表评论
-
Oracle的三种高可用集群方案
2015-05-18 15:14 9751. RAC(Real Application Cluster ... -
Oracle 执行计划介绍
2013-08-09 15:22 960优化定义: 是选择最有效的执行计划来执行SQL语句的过 ... -
Oracle 优化器介绍
2013-08-08 17:51 7592种类型的优化器:基于规则的优化器与基于代价的优化器。 基于 ... -
Oracle SQL 语句的处理过程详解
2013-08-08 17:24 1069SQL语句: 1 数据查询语言DQL:select查询语句 ... -
Oracle SQL性能优化深入浅出 3
2013-08-08 16:29 859用EXPLAIN PLAN 分析SQL语句 ... -
Oracle 索引介绍
2013-08-07 15:26 969Oracle 创建索引要做到三 ... -
Oracle普通视图和实体化视图比较
2013-07-29 15:54 8840相对于普通的视图来说,实体化视图的不同之处在于实体化视图管理存 ... -
Oracle 实体化视图
2013-07-29 14:28 1748简介: MView中文名称为 ... -
Oracle 存储过程读文件
2013-05-02 19:01 1439create or replace PROCEDURE PR_ ... -
Oracle Alter 语句
2013-03-28 14:40 1064oracle怎样修改表名、列名、字段类型、添加表列、删除表列: ... -
Oracle SQL性能优化总结
2013-03-22 11:21 1067Oracle数据库技术的两大基石是:索引和表连接 1.能不写 ... -
Oracle SQL 分析工具
2013-02-22 15:09 1082用EXPLAIN PLAN 分析SQL语句: EXPLAIN ... -
Oracle SQL性能优化深入浅出 0
2013-02-22 14:38 805随着软件技术的不断发展,系统性能越来越重要。 系统性能主要用 ... -
Oracle 数据库介绍
2013-02-20 17:43 1869概要: 1、 ORACLE ... -
Oracle Tkprof(Trace Kernel Profile)工具
2013-02-20 13:37 1399TKPROF介绍 Tkprof:分析ORACLE跟踪文件并且 ... -
Oracle分区技术介绍
2013-03-25 14:09 1021Oracle的分区技术基本原理 分而治之: Oracle分区表 ... -
Oracle SQL性能优化深入浅出 2
2013-01-25 10:47 968SQL 语句的编写原则: 1. ... -
Oracle SQL性能优化深入浅出 1
2013-01-25 09:53 1232ORACLE将执行过的SQL语句存放在内存的共享池(share ... -
Oracle 触发器详解 5
2012-12-21 09:20 10268.6 数据库触发器的应用实例 用户可以使用数据库触发器实 ... -
Oracle 触发器详解 4
2012-12-21 09:17 9808.5 数据库触发器的应用举例 例1:创建一个DML语句 ...
相关推荐
* 只读表空间(Read-Only Tablespace):不能创建或更改数据库对象,但可以删除某些对象,通常用于数据仓库应用程序和查找表。 2. 表和索引(Tables and Indexes) 表是 Oracle 数据库中的基本存储结构,用于存储...
读写表空间(Read-Write Tablespace)和只读表空间(Read-Only Tablespace)是两种类型的表空间权限。读写表空间可创建、修改和删除数据库对象,默认状态。只读表空间不可创建或修改数据库对象,但可删除某些对象,...
### Oracle表空间建立方法 #### 一、Oracle 表空间概念与作用 在Oracle数据库管理系统中,表空间是逻辑存储单元的基本单位。每个数据库至少包含一个表空间,默认情况下为`SYSTEM`表空间。表空间由一个或多个数据...
表空间的状态可以通过`ALTER TABLESPACE`语句进行调整,如将其设置为在线(ONLINE)、离线(OFFLINE)、只读(READ ONLY)或读写(READ WRITE)。离线操作通常用于维护或移动数据文件,而只读状态则限制了对表空间的...
Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...
本文将详细介绍Oracle中关于表空间的一些关键操作,包括创建、修改、管理和删除表空间的过程,以及如何处理表空间的在线与离线状态,数据文件的管理,以及表空间的扩展策略。 #### 一、建立表空间 创建表空间是...
- **使表空间只读/可读写**:通过设置表空间的状态为只读或可读写来控制访问权限。例如: ```sql ALTER TABLESPACE game READONLY; ALTER TABLESPACE game READWRITE; ``` #### 七、表空间的扩展 - **增加数据...
rman> alter tablespace '表空间名' read only; ``` 6. **还原数据文件**: RMAN会自动还原相关数据文件,但有时可能需要指定具体文件: ``` rman> restore datafile '/path/to/datafile.dbf'; ``` 7. **...
Oracle数据库中的表空间是存储数据的基本单位,它用于组织数据库对象,如表、索引和其他数据结构。在Oracle中,管理表空间对于确保数据库高效运行至关重要。以下是对Oracle表空间操作的详细解释: 1. 建立表空间: ...
### ORACLE表空间操作知识点详解 #### 一、表空间创建与管理 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。通过不同的命令可以实现对表空间的操作,包括创建、调整大小、离线与在线状态切换等。 ##...
* 使表空间只读:ALTER TABLESPACE game READ ONLY; * 使表空间可读写:ALTER TABLESPACE game READ WRITE; 五、删除表空间 删除表空间的命令为:DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;其中,...
- 使用ALTER TABLESPACE命令将目标表空间设置为只读状态: ```sql ALTER TABLESPACE realimg READ ONLY; ``` - 此步骤确保在数据迁移过程中不会对表空间进行任何修改操作,从而避免数据一致性问题。 #### 三、...
在Oracle 10g数据库管理中,表空间(Tablespace)是重要的逻辑存储结构单元,用于组织和管理数据库中的数据文件。本文将详细介绍如何通过Oracle 10g SQL命令进行表空间的操作,包括创建、调整大小、删除等,并提供...
### Oracle 创建表空间知识点 #### 一、Oracle 表空间概念 在 Oracle 数据库中,表空间是逻辑存储单元,用于组织和管理数据库中的数据。一个表空间由一个或多个数据文件组成,这些数据文件存储在操作系统级别的文件...
### Oracle表空间查询与操作方法 #### 一、Oracle表空间基本信息查询 1. **查询Oracle表空间使用情况** ```sql SELECT b.file_id AS file_id, b.tablespace_name AS tablespace, b.file_name AS filename, b...
### Oracle表空间与数据文件的详细操作 #### 1. 创建表空间 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。创建表空间的基本语法如下: ```sql CREATE TABLESPACE <表空间名> DATAFILE '<数据文件...
表空间的状态包括联机(ONLINE)、读写(READ-WRITE)、只读(READ-ONLY)和脱机(OFFLINE)四种。联机状态是表空间的常态,允许用户访问其中的数据。读写状态是表空间的默认状态,允许数据的读取、更新和删除。只读...