oracle日志表空间管理,Oracle:管理表空间

管理表空间

在管理表空间时应遵循以下原则:

1)使用多重表空间。采用多重表空间可使数据库操作更灵活。主要体现在以下方面:

  ·将用户数据与数据字典数据相分离,并将不同表空间的数据文件分别存储在不同磁盘上可以降低I/O竞争。

  ·将一个应用的数据与其他应用相分离,可以避免表空间脱机时多个应用受到影响。

 ·可根据需要将单个表空间脱机,从而获得较好的可用性。

  ·通过为不同类型的数据库预留表空间,以达到优化表空间的目的,如更新较高的或只读,或临时段存储等。

  ·备份单个表空间。

2)为用户指定表空间限额。要创建、管理与使用表空间,必须首先以sys用户并以as sysdba身份登录数据库。与Oracle9i不同,在Oracle 10g中,启动SQL*Plus时的帐户和口令不需加引号。命令格式是:

sqlplus sys/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 tablespaceoffline;

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

SQL>alter tablespace dalianren offline;

注意 system表空间不能脱机。

5.使一个表空间联机

命令格式:

SQL>alter tablespaceonline;

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

SQL>alter tablespace dalianren online;

6.使表空间只读

命令格式:

SQL>alter tablespaceread only;

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

SQL>alter tablespace dalianren read only;

7.使表空间可读可写

命令格式:

SQL>alter tablespaceread write;

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

SQL>alter tablespace dalianren read write;

8.创建临时表空间

命令格式:

SQL>create temporary tablespace

tempfile′′

sizem autoextend

extent management local uniform 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 tablespaceadd tempfile ′′sizem;

【例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 ′′resizem;

【例2-8】调整临时表空间的数据文件大小

SQL>alter database tempfile ′D:\oracle\product\10.2.0\oradata\test \temp_ren.ora′ resize 20m;

11.将表空间的数据文件或临时文件脱机

命令格式:

SQL>alter database  datafile′′ offline;

SQL>alter database tempfile ′′ 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 ′′online;

【例2-10】将临时表空间联机

SQL>Alter database tempfile ′D:\oracle\product\10.2.0\oradata\dalian\temp_ren.ora′ online;

13.删除表空间,但不删除其文件

命令格式:

SQL>drop tablespace;

【例2-11】删除表空间dalianren,但不删除其文件

SQL>drop tablespace dalianren;

14.删除包含目录内容的表空间

命令格式:

SQL>drop tablespaceincluding contents;

【例2-12】删除表空间dalianren及其包含的内容

SQL>drop tablespace dalianren including contents;

15.删除包含目录内容和数据文件在内的表空间

命令格式:

SQL>drop tablespaceincluding contents and datafiles;

【例2-13】删除表空间dalianren及其包含的内容以及数据文件

SQL>drop tablespace dalianren including contents and datafiles;

16.当含有参照性约束时,删除包含目录内容和数据文件在内的表空间

命令格式:

SQL>drop tablespaceincluding 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 tablespacerename to;

【例2-15】将表空间users更改为newusers

SQL>alter tablespace users rename to newusers;

在Oracle 10g中,如果一个撤销表空间通过使用pfile的实例被更名,则警告日志文件中将写入一个信息,提醒用户更改undo_tablespace的参数值。

注意当使用drop tablespace误删除了表空间之后,通过查看alert文件可以确定误操作的时间。该文件位于Oracle_Home\admin\\bdump目录下,名为alert_.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>

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

2.1.4表空间的相关查询

列出表空间、表空间的文件、分配的空间、空闲空间以及下一个空闲分区,如下所示。

set linesize 132

set pagesize 60

col tablespace_name format a12

col file_name format a38

col tablespace_kb heading ′TABLESPACE|TOTAL KB′

col kbytes_free heading ′TOTAL FREE|KBYTES′

select ddf.tablespace_name tablespace_name,ddf.file_name file_name,ddf.bytes/1024 tablespace_kb,

sum(fs.bytes)/1024 kbytes_free,max(fs.bytes)/1024 next_free

from sys.dba_free_space fs,sys.dba_data_files ddf

where ddf.tablespace_name=fs.tablespace_name

group by ddf.tablespace_name,ddf.file_name,ddf.bytes/1024

order by ddf.tablespace_name,ddf.file_name;

列出数据文件,表空间名以及大小,如下所示。

col file_name format a50

col tablespace_name format a10

select file_name,tablespace_name,round(bytes/1024000) MB

from dba_data_files

order by file_name;

列出表空间、大小、空闲空间以及空闲空间的百分比,如下所示。

select ddf.tablespace_name,sum(ddf.bytes) total_space,sum(dfs.bytes) free_space,

round(((nvl(sum(dfs.bytes),0)/sum(ddf.bytes))*100),2) pct_free

from dba_free_space dfs,dba_data_files ddf

where ddf.tablespace_name=dfs.tablespace_name (+)

group by ddf.tablespace_name

order by ddf.tablespace_name;

计算表空间每个数据文件实际的最小空间以及对应的文件名,其大小与磁盘操作系统中显示的不同,如下所示。该语句运行需要较长时间。

Select substr(df.file_name,1,70) filename,max(de.block_id*

(de.bytes/de.blocks)+de.bytes)/1024 min_size

from dba_extents de,dba_data_files df

where de.file_id=df.file_id

group by df.file_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值