管理表空间

管理表空间
在管理表空间时应遵循以下原则:
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文件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/219982/viewspace-498141/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/219982/viewspace-498141/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值