`
fudehai001
  • 浏览: 499725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

管理oracle表空间

阅读更多
在管理表空间时应遵循以下原则:
1)使用多重表空间。采用多重表空间可使数据库操作更灵活。主要体现在以下方面:
  •将用户数据与数据字典数据相分离,并将不同表空间的数据文件分别存储在不同磁盘上可以降低I/O竞争。
  •将一个应用的数据与其他应用相分离,可以避免表空间脱机时多个应用受到影响。
  •可根据需要将单个表空间脱机,从而获得较好的可用性。
  •通过为不同类型的数据库预留表空间,以达到优化表空间的目的,如更新较高的或只读,或临时段存储等。
  •备份单个表空间。
2)为用户指定表空间限额。要创建、管理与使用表空间,必须首先以sys用户并以as sysdba身份登录数据库。与Oracle9i不同,在Oracle 10g中,启动SQL*Plus时的帐户和口令不需加引号。命令格式是:
    sqlplus sys/<sys password> as sysdba    
在Oracle 10g中,创建和管理表空间所使用的数据字典和权限及语句可归纳如下。

1.与表空间有关的数据字典
查询和使用与表空间有关的元数据均可从下列数据字典中获得。主要包括:

dba_tablespaces、dba_users、dba_ts_quotas、user_tablespaces、
user_ts_quotas、user_extents、user_segments、user_free_space、
dba_data_files、dba_extents、dba_free_space、dba_segments、
dba_temp_files、dba_undo_extents、dba_rollback_segs、
dba_data_files、v_$backup_datafile、
v_$database_block_corruption、v_$datafile、
v_$datafile_copy、v_$datafile_header、v_$rollstat、
v_$segment_statistics、v_$undostat等。  

以v_$开头的数据字典均保存为动态信息。
2.与使用表空间有关的系统权限
与表空间有关的主要系统权限有:

create tablespace、alter tablespace、drop tablespace、
manage tablespace和unlimited tablespace等。  

其中,unlimited tablespace是允许用户无限制地访问所有表空间。出于安全考虑,在授予该权限给用户时应慎重。如果用户不需要该系统权限,最好撤销该权限,否则用户会利用该权限蓄意创建大量对象或复制数据,从而塞满表空间导致数据库服务器崩溃。
3.创建永久性的表空间
命令格式:

SQL>create[undo]tablespace tablespace
[datafile filespec[autoextend_clause][,filespec[autoextend_clause]]...]
[{minimum extent integer[ k|m]|blocksize integer[k]|{logging|nologging}
|default storage_clause|{online|offline}
|{permanent|temporary}|extent_management_clause|segment_management_clause
}
[ minimum extent integer[k|m]|blocksize integer[k]
|{logging|nologging}|default storage_clause|{online|offline}
|{permanent|temporary}|extent_management_clause|segment_management_clause
]...
];

【例2-1】创建一个名为dalianren的表空间

SQL>create tablespace dalianren nologging
datafile′D:\oracle\product\10.2.0\oradata
\dalianren\dalianren01.ora′size 50m blocksize 8192
extent management local uniform size 256k
segment space management auto; 

4.使一个表空间脱机
命令格式:

SQL>alter tablespace<tablespace_name>offline;  

【例2-2】将表空间dalianren脱机

SQL>alter tablespace dalianren offline;  

注意 system表空间不能脱机。
5.使一个表空间联机
命令格式:

SQL>alter tablespace<tablespace_name>online;

【例2-3】将表空间dalianren联机

SQL>alter tablespace dalianren online;

6.使表空间只读命令格式:

SQL>alter tablespace<tablespace_name>read only;

【例2-4】将表空间dalianren更改为只读

SQL>alter tablespace dalianren read only;  

7.使表空间可读可写命令格式:

SQL>alter tablespace<tablespace_name>read write;

【例2-5】将表空间dalianren更改为可读写

SQL>alter tablespace dalianren read write;

8.创建临时表空间命令格式:

SQL>create temporary tablespace<tablespace_name>
tempfile′<data_file_path_and_file_name>′
size<megabytes>m autoextend<on|off>
extent management local uniform size<extent_size>;

【例2-6】创建临时表空间temp

SQL>create temporary tablespace temp
tempfile ′D:\ oracle\product\10.2.0\oradata dalian\temp01.ora′
size 500m autoextend off
extent management local uniform size 512k;   

注意虽然语句alter tablespace中带有temporary关键字,但不能使用带有temporary关键字的alter tablespace语句将一个本地管理的永久表空间转变为本地管理的临时表空间。必须使用create temporary tablespace语句直接创建本地管理的临时表空间。
9.添加临时表空间的数据文件
命令格式:
SQL>alter tablespace<tablespace_name>add tempfile ′<path_and_file_name>′size<n>m;
【例2-7】为临时表空间temp_ren添加数据文件
SQL>alter tablespace temp_ren add tempfile ′D:\oracle\product\10.2.0\oradata\dalian\temp_ren.dbf′size 100m;
10.调整临时表空间的数据文件
命令格式:
SQL>alter database tempfile ′<path_and_file_name>′resize<mega_bytes>m;
【例2-8】调整临时表空间的数据文件大小
SQL>alter database tempfile ′D:\oracle\product\10.2.0\oradata\test \temp_ren.ora′ resize 20m;
11.将表空间的数据文件或临时文件脱机
命令格式:
SQL>alter database  datafile′<path_and_file_name>′ offline;

SQL>alter database tempfile ′<path_and_file_name>′ offline;
【例2-9】将表空间的数据文件或临时文件脱机
SQL>alter database  datafile ′D:\oracle\product\10.2.0\oradata\dalian\temp_ren.ora′ offline;

SQL>alter database  tempfile ′D:\oracle\product\10.2.0\oradata\dalian\temp_ren.ora′offline;
12.将临时表空间联机
命令格式:
SQL>Alter database tempfile ′<path_and_file_name>′online;
【例2-10】将临时表空间联机
SQL>Alter database tempfile ′D:\oracle\product\10.2.0\oradata\dalian\temp_ren.ora′ online;
13.删除表空间,但不删除其文件
命令格式:
SQL>drop tablespace<tablespace_name>;
【例2-11】删除表空间dalianren,但不删除其文件
SQL>drop tablespace dalianren;
14.删除包含目录内容的表空间
命令格式:
SQL>drop tablespace<tablespace_name>including contents;
【例2-12】删除表空间dalianren及其包含的内容
SQL>drop tablespace dalianren including contents;
15.删除包含目录内容和数据文件在内的表空间
命令格式:
SQL>drop tablespace<tablespace_name>including contents and datafiles;
【例2-13】删除表空间dalianren及其包含的内容以及数据文件
SQL>drop tablespace dalianren including contents and datafiles;
16.当含有参照性约束时,删除包含目录内容和数据文件在内的表空间
命令格式:
SQL>drop tablespace<tablespace_name>including contents and datafiles cascade constraints;
【例2-14】将表空间dalianren及其包含的内容、数据文件以及相关约束一同删除
SQL>drop tablespace dalianren including contents and datafiles cascade constraints;
17.表空间更名
Oracle9i中不能直接将表空间更名。在Oracle 10g可直接更名永久表空间和临时表空间。但是,system和sysaux表空间不能更名。
命令格式:
SQL>alter tablespace<old_tablespacename>rename to<new_tablespacename>;
【例2-15】将表空间users更改为newusers
SQL>alter tablespace users rename to newusers;
在Oracle 10g中,如果一个撤销表空间通过使用pfile的实例被更名,则警告日志文件中将写入一个信息,提醒用户更改undo_tablespace的参数值。
注意当使用drop tablespace误删除了表空间之后,通过查看alert文件可以确定误操作的时间。该文件位于Oracle_Home\admin \<SID>\bdump目录下,名为alert_<SID>.log,如:D:\oracle\product\10.2.0 \admin\test\bdump目录下的alert_test.log文件。
18.多重临时表空间
在Oracle 10g中增加了一个表空间组的概念,通过使用表空间组用户可以使用一个以上的表空间存储临时段。表空间组是在第一个表空间被指定给该组时,由系统自动隐式创建的。例如:
  •通过添加现有的表空间创建表空间组。
SQL>alter tablespace temp tablespace group temp_ts_group;
  •添加一个新的表空间给该已经创建的表空间组。
SQL>create temporary tablespace temp2
tempfile ′D:\oracle\product\10.2.0\oradata\test\temp201.dbf ′ size 20m tablespace group temp_ts_group;
被指定给组的表空间可在视图中查询得到。
SQL>select*from dba_tablespace_groups;
group_nametablespace_name
------------------------------------------------------------
temp_ts_grouptemp
temp_ts_grouptemp2
2 rows selected.
SQL>
一旦创建了表空间组,就可以将其指定给用户或作为默认的临时表空间,就像一个表空间一样。
  •将表空间组指定给用户,作为临时表空间。
SQL>alter user scott temporary tablespace temp_ts_group;
  •将表空间组作为默认的临时表空间。
SQL>alter database default temporary tablespace temp_ts_group;
  •表空间也可以从表空间组中移出。
SQL>alter tablespace temp2 tablespace group;
  •查询表空间组。
SQL>select*from dba_tablespace_groups;
group_nametablespace_name
------------------------------------------------------------
temp_ts_grouptemp

1 row selected.
SQL>
理论上,一个表空间组包含多少表空间是没有最大限制的,但必须至少包含一个表空间。当最后一个表空间被删除后,该表空间组也被隐式地删除。若该表空间组仍然被指定做临时表空间,则不可以删除该组中的最后一个表空间成员。同时,表空间组不能与表空间同名。

--==========================================================================

--begin 基本表空间介绍

a. 系统表空间

主要存放数据字典和内部系统表基表

查看数据数据字典的SQL

select * from dict

查看内部系统表的SQL

select * from v$fixed_view_definition

DBA对系统的系统表中的数据字典必须有一个很深刻的了解,他们必须准备一些基础的SQL语句,通过这些SQL可以立即了解系统的状况和数据库的状态,这些基本的SQL包括

系统的剩余空间

系统的SGA

状态系统的等待

用户的权限

当前的用户锁

缓冲区的使用状况等

在成为DBA 的道路上我们不建议你过分的依赖于OEM/Quest 等优秀的数据库管理工具,因为他们不利于你对数据数据字典的理解,SQL语句可以完成几乎全部的数据库管理工作。

大量的读少量的写是该表空间的一个显著的特点。

b. 临时表空间.

临时表空间顾名思义是用来存放临时数据的,例如排序操作的临时空间,他的空间会在下次系统启动的时候全部被释放。

c. 回滚段表空间

i. 回滚段在系统中的作用

当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(Before Image)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一至性。

回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。

ii. 回滚段的工作方式

一个回滚表空间可以被划分成多个回滚段.

一个回滚段可以保存多个会话的数据.

回滚段是一个圆形的数据模型

假设回滚段由4 个区间组成,他们的使用顺序就是区间1à区间2à区间3à区间4à区间1。也就是说,区间是可以循环使用的,当区间4到区间1的时候,区间1里面的会话还没有结束, 区间4用完后就不能再用区间1,这时系统必须分配区间5,来继续为其他会话服务服务。

我们分析一个Update 语句的完成

①. 用户提交一个Update 语句

②. Server Process 检查内存缓冲.

如果没有该数据块的缓冲,则从磁盘读入

i. 如果没有内存的有效空间,DBWR被启动将未写入磁盘的脏缓冲写入磁盘

ii. 如果有有效空间,则读入

③. 在缓冲内更新数据

i. 申请一个回滚段入口,将旧数据写如回滚段

ii. 加锁并更新数据

iii. 并在同时将修改记录在Redo log buffer中

--end 基本表空间介绍
分享到:
评论

相关推荐

    获取oracle表空间脚本

    ### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...

    Oracle本地管理表空间

    ### Oracle本地管理表空间知识点详解 #### 一、概述 **本地管理表空间**是Oracle 8i版本引入的一种新的表空间管理模式。相比于之前的**字典管理表空间**,它采用了更加高效的空间管理机制,主要通过在每个数据文件...

    \Oracle 表空间与数据文件

    通过以上内容,我们详细了解了Oracle中的表空间与数据文件的概念、分类以及它们在Oracle数据库存储结构中的作用,并学习了如何通过SQL查询来查看和管理这些表空间和数据文件。这对于管理和优化Oracle数据库的性能至...

    oracle 表空间创建

    在实际应用中,创建表空间是非常重要的操作,因为它可以帮助用户更好地管理数据库中的数据,并提高数据库的性能。 此外,还可以使用 Oracle 的其他功能,如创建索引、视图、存储过程等,以满足不同的应用需求。 在...

    oracle表空间命令语句大全

    Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...

    Oracle多个表空间合并成一个表空间,验证通过

    ### Oracle 多个表空间合并成一个表空间详解 #### 背景介绍 在进行数据库维护时,可能会遇到需要将多个表空间合并为一个的情况。这种情况通常发生在新项目的开发过程中,尤其是当新项目需要引用来自其他表空间的...

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    在Oracle数据库系统中,表空间(Tablespace...通过学习和实践,你可以更好地理解和管理Oracle数据库中的表空间资源。在4.0Y2ORACLE第1章.SQL这个文件中,可能包含了上述操作的示例脚本,建议仔细阅读和运行以加深理解。

    oracle表空间详解

    在 Oracle8i 之后,创建表空间都推荐使用“本地管理表空间”,这种表空间中的分区是一个固定大小的值。语法结构如下: ``` CREATE TABLESPACE 空间名称 DATAFILE '文件名 1' SIZE 数字 M [,'文件名2' SIZE 数字….] ...

    oracle表空间管理汇总.docx

    Oracle 表空间管理包括创建表空间、添加数据文件、删除表空间数据文件、扩展表空间大小、修改表空间属性、删除表空间等操作。 1. 创建表空间 创建表空间是 Oracle 表空间管理的基本操作。创建表空间需要指定表空间...

    oracle定时删除表空间的数据并释放表空间

    在Oracle数据库管理中,定期清理和优化表空间是至关重要的任务,这有助于保持数据库的高效运行和合理利用存储资源。本文将深入探讨如何在Oracle环境中实现定时删除表空间的数据并释放空间,主要涵盖以下几个关键知识...

    如何正确的删除Oracle表空间数据文件

    在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...

    oracle表空间查询命令

    ### Oracle表空间查询与管理命令详解 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据...这些命令对于日常数据库维护非常重要,熟练掌握它们能够帮助DBA更高效地管理Oracle数据库。

    oracle创建表空间

    总结来说,创建和管理Oracle表空间涉及多个方面,包括创建表空间和临时表空间、指定数据文件、设置自动扩展、创建用户并分配表空间、授权以及维护表空间的数据文件。理解这些概念和操作对于有效管理Oracle数据库至关...

    oracle 创建表空间命令

    在Oracle数据库管理系统中,创建表空间是管理数据库存储空间的关键操作。表空间是数据库中用于存储数据对象(如表、索引、视图等)的逻辑结构。它将物理磁盘上的一个或多个数据文件组织成一个逻辑单元,使得数据库...

    创建Oracle表空间

    在创建表空间和用户的过程中,管理员还需要关注Oracle的文件路径和文件系统的管理,确保数据库文件存储在适当的磁盘上,以优化性能并防止磁盘空间耗尽的问题。同样需要注意的是,这些操作应由具有相应权限的数据库...

    Oracle 表空间与数据文件

    Oracle 表空间的管理包括表空间的创建、修改和删除等。表空间的管理需要了解表空间的逻辑结构和物理结构,了解表空间的分类和特点。表空间的管理还需要了解数据文件的管理,包括数据文件的创建、修改和删除等。 ...

    oracle表空间学习整理,包括常用sql

    Oracle数据库系统是企业级数据管理的重要工具,其中表空间(Tablespace)是数据库存储结构的基础单元。本篇文章将深入探讨Oracle表空间的概念、作用、创建方法以及常用的SQL语句,帮助你更好地理解和管理数据库资源...

    Oracle表空间

    Oracle 表空间 Oracle 表空间是 Oracle 数据库中用于存储表、索引、约束、...Oracle 表空间是 Oracle 数据库中用于存储数据的逻辑存储单元,通过创建、管理和删除表空间,可以对数据库中的数据进行有效的管理和维护。

    Oracle表空间备份及还原

    本文将深入探讨Oracle表空间的备份与恢复,这是数据库管理中至关重要的环节。 首先,了解Oracle中的表空间(Tablespace)概念。表空间是Oracle数据库中逻辑存储结构的基本单位,它由一个或多个数据文件组成,用于...

    oracle表空间变动注意事项

    在Oracle数据库管理与维护过程中,表空间(tablespace)的操作是一项非常重要的工作。表空间是Oracle数据库中的逻辑存储单元,用于组织和管理数据文件。本文将详细介绍关于Oracle表空间变动时需要注意的关键点,特别...

Global site tag (gtag.js) - Google Analytics