数据文件命令
Enabling and Disabling Automatic Extension for a Datafile:
ALTER TABLESPACE users ADD DATAFILE '/u02/oracle/rbdb1/users03.dbf' SIZE 10M AUTOEXTEND ON NEXT 512K MAXSIZE 250M;
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users03.dbf' AUTOEXTEND OFF;
数据文件调整大小:
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' RESIZE 100M;
归档模式下数据文件离线:
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' ONLINE;
离线后上线:
recover datafile '/u02/oracle/rbdb1/stuff01.dbf';
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' OFFLINE;
注:offline 和 offline drop 没有什么区别。 因为offline 之后多需要进行recover 才可以online。
非归档模式下数据文件离线:
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users03.dbf' OFFLINE FOR DROP;
注:离线后的数据文件还残留在数据字典中,须执行以下命令的其中一种,进行删除
1.ALTER TABLESPACE ... DROP DATAFILE
2.A DROP TABLESPACE ... INCLUDING CONTENTS AND DATAFILES statement
离线后若online,需要recover(恢复的前提是online redo里的数据还没有被覆盖掉)
1.recover datafile '/u02/oracle/rbdb1/users03.dbf';
2.alter database datafile '/u02/oracle/rbdb1/users03.dbf' online;
数据文件重命名步骤:
1.ALTER TABLESPACE users OFFLINE NORMAL;
2.操作系统内数据文件重命名
3.ALTER TABLESPACE users
RENAME DATAFILE '/u02/oracle/rbdb1/user1.dbf','/u02/oracle/rbdb1/user2.dbf'
TO '/u02/oracle/rbdb1/users01.dbf', '/u02/oracle/rbdb1/users02.dbf';
数据文件调整位置:
1.ALTER TABLESPACE users OFFLINE NORMAL;
2.移动位置
3.ALTER TABLESPACE users
RENAME DATAFILE '/u02/oracle/rbdb1/users01.dbf','/u02/oracle/rbdb1/users02.dbf'
TO '/u03/oracle/rbdb1/users01.dbf','/u04/oracle/rbdb1/users02.dbf';
4.Back up the database
删除数据文件的注意事项:
1.数据库必须是打开的
2.数据文件不为空,不能删除
3.如果必须删非空的除数据文件,则必须删除其所在的表空间连同数据文件
4.不能删除表空间的第一个数据文件
5.包含bigfile的表空间不能删除数据文件
6.不能删除只读表空间的数据文件
7.不能删除系统表空间的数据文件
8.本地管理的表空间的离线数据文件不能删除
ORA-03263: cannot drop the first file of tablespace string
Cause: Trying to drop the first datafile with which ts is created
Action: Cannot drop the first datafile with which ts is created
注:表空间创建时的第一个数据文件不能删除的。
数据文件复制
1.CREATE DIRECTORY SOURCE_DIR AS '/usr/admin/source';
CREATE DIRECTORY DEST_DIR AS '/usr/admin/destination';
2.GRANT EXECUTE ON DBMS_FILE_TRANSFER TO strmadmin;
GRANT READ ON DIRECTORY source_dir TO strmadmin;
GRANT WRITE ON DIRECTORY dest_dir TO strmadmin;
3.CONNECT strmadmin/strmadminpw
4.BEGIN
DBMS_FILE_TRANSFER.COPY_FILE(
source_directory_object => 'SOURCE_DIR',
source_file_name => 'db1.dat',
destination_directory_object => 'DEST_DIR',
destination_file_name => 'db1_copy.dat');
END;
/
关于数据文件大小:
Oracle最大支持block为32k。每个datafile的最大容量为(2^22-1)个block(即4194303个block)。因为Oracle的内部ROWID使用22位2进制数来存储不同的block号
单个datafile最大容量:(2^22-1)*8K=32G,(2^22-1)*16K=64G,(2^22-1)*32K=128G
bigfile tablespace里Oracle使用32位来存储block号,即比之前增大了1024倍,其最大文件大小从128G增加到128T。
关于系统中单个文件的限制
windows中单个文件最大限制:FAT12(8M) FAT16(2G) FAT32(4G) NTFS(64GB) NTFS5.0(2TB)
表空间命令
本地管理表空间(LMT):
字典管理表空间(DMT):10G里不能创建字典管理表空间的,只能导入老版本的。
临时表空间:
一般用来排序和创建索引时使用;
临时表空间里不存放实际的数据,不需要恢复、备份、记录日志;
临时表空间只能使是读写模式,而且只能为手动管理段空间模式;
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50MEXTENT MANAGEMENT LOCAL AUTOALLOCATE;CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50MEXTENT MANAGEMENT LOCALSEGMENT SPACE MANAGEMENT AUTO;
ALTER TABLESPACE lmtbsb ADD DATAFILE '/u02/oracle/data/lmtbsb02.dbf' SIZE 1M;
Bigfile Tablespaces
注意:Bigfile tablespaces are intended to be used with Automatic Storage Management (ASM) or other logical volume managers that supports striping or RAID, and dynamically extensible logical volumes.
Avoid creating bigfile tablespaces on a system that does not support striping because of negative implications for parallel query execution and RMAN backup parallelization.
Using bigfile tablespaces on platforms that do not support large file sizes is not recommended and can limit tablespace capacity. Refer to your operating system specific documentation for information about maximum supported file sizes.
Creating:CREATE BIGFILE TABLESPACE bigtbs DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 50G...
RESIZE:ALTER TABLESPACE bigtbs RESIZE 80G;
AUTOEXTEND:ALTER TABLESPACE bigtbs AUTOEXTEND ON NEXT 20G;
提高分区表性能的一个方法:分区表每个分区放在单独的表空间里,这些表空间使用同一个bigfile数据文件,这样在查询跨分区数据或较
多数据时,不至于跨越多个数据文件,在检索速度上,多表空间单个数据文件(bigfile)的分区表>多表空间多个数据文件(smallfile)分区
表>单表空间分区表。
Temporary Tablespaces
相关视图:V$TEMPFILE DBA_TEMP_FILES V$DATAFILE DBA_DATA_FILES views
Creating:CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf'SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
Resizing:ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 18M;
Deleting:ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROPINCLUDING DATAFILES;
注意:临时表空间不能设置为AUTOALLOCATE.
不能把本地管理的表空间变成本地管理的临时表空间,只能使用 CREATE TEMPORARY TABLESPACE 创建一个本地管理的临时表空间
ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 18M REUSE;
ALTER TABLESPACE lmtemp TEMPFILE OFFLINE;
ALTER TABLESPACE lmtemp TEMPFILE ONLINE;
不能使临时表空间离线,可以使它的文件离线(V$TEMPFILE)
临时表空间组
Creating:CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE '/u02/oracle/data/lmtemp201.dbf' SIZE 50M TABLESPACE GROUP group1;
ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;
ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;
脱机表空间选项
NORMAL 表空间中的数据文件都不能脱机。脱机时为所有数据文件建立检查点,online时不需要recover。
TEMPORARY 为online的数据文件建立检查点,online时只需为以前脱机的数据文件做recover。
IMMEDIATE 必须运行在归档模式,所有数据文件都不做检查点,online时需要为所有数据文件做recover。
只读表空间
可以删除表,索引等items,不能增加修改object,可以add或modify表或字段的描述信息
不能用于活跃的undo表空间和系统表空间
ALTER TABLESPACE flights READ ONLY;
ALTER TABLESPACE flights READ WRITE;
Renaming Tablespaces:ALTER TABLESPACE users RENAME TO usersts;
Dropping Tablespaces:DROP TABLESPACE users INCLUDING CONTENTS;
DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;
字典管理表空间迁移到本地管理表空间
EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('tbs_1');
SYSTEM表空间改成本地管理
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');
表空间传输
SELECT * FROM V$TRANSPORTABLE_PLATFORM; --查看可转换的平台
使用限制:1.字符集一致
2.Beginning with Oracle Database 10g Release 2, you can transport tablespaces that contain XMLTypes, but you must use the IMP and EXP utilities, not Data Pump. When using EXP, ensure that the CONSTRAINTS and TRIGGERS parameters are set to Y (the default).
查询表空间是否包含XMLTypes:
select distinct p.tablespace_name
from dba_tablespaces p,dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name=x.table_name and t.tablespace_name=p.tablespace_nameand x.owner=u.username
3.源目标平台最低支持:1)same platform source(8.0) target(8.0)
2)different database block size source(9.0) target(9.0)
3)different platforms source(10.0) target(10.0)
表空间管理:本地管理 字典管理
段管理:自动 位图
区:UNIFORM AUTOALLOCATE
块: