2012年5月16日星期三

manager dbfile

1.创建数据文件: create tablespace 创建一个表空间和组成它的数据文件 。
  • create temporary tablespace 创建一个临时表空间和组成它的临时文件(临时文件是一和特殊类型的数据文件,只用于存放临时排序操作所用的数据,不能永久地存放用户数据。 
  • alter tablespace ... add datafile 创建一个数据文件,并将其添加到(永久)表空间 
  • alter tablespace ... add tempfile 创建一个临时文件,并将其添加到临时表空间
  • create database 创建一个数据库及其与system表空间关联的数据文件 
  • create tablespace mytbs01 datafile 'e:\mytbs01.dbf' size 2M [ reuse ]; create temporary tablespace mytmptbs01 tempfile 'e:\mytmptbs01.dbf' size 3M uniform size 64k ; 
  • 2.查询新创建的数据文件 : 
  •  set pagesize 100 linesize 120 
  • col tbs_name format a14 
  • column file_name for a28 
  • column blocks format 999999 
  • col Mbytes for 999999 
  • column auto format a10 
  • select tablespace_name tbs_name,file_name,blocks,bytes/1024/1024 Mbytes,autoextensible auto,maxbytes/1024/1024 max_Mbytes from dba_data_files where tablespace_name like 'MY%' 
  • union 
  • select tablespace_name tbs_name,file_name,blocks,bytes/1024/1024 Mbytes,autoextensible auto,maxbytes/1024/1024 max_Mbytes from dba_temp_files where tablespace_name like 'MY%' ; 
  • 3.备份controlfile 为文本 文件 : 
  • show parameter user_dump_dest 
  • alter database backup controlfile to trace ; 
  • 4.数据文件的大小 : 
  •  create table personnel (pid number(9) not null ,name varchar2(20) ,constraint pk_pid primary key (pid) validate ) tablespace mytbs01 ; 
  • begin 
  •     for i in 1..50000 loop insert into personnel (pid,name) 
  •     values(i,'for text') ; end loop ; 
  •     commit ; 
  • end; 
  • 表空间用完会报错: 
  • alter database datafile 'e:\mytbs01.dbf' autoextend on|off next 1M maxsize 100M ; 
  • alter database datafile 'e:\mytbs01.dbf' resize 3m ; 
  • 5.在archivelog下修改数据文件的可用性: 
  • shutdown immediate 
  • startup mount 
  • alter database archivelog alter database open ; 
  • 表空间的所有数据文件脱机: 
  • 语句 : alter tablespace tablespace_name datafile 'xxxx' offline|online ;
  • 语句: alter tablespace tablespace _name tempfile 'xxx' offline|online ; 
  • 单个数据文件脱机: alter database datafile 'xxxxx' offline ; 
  • recover datafile 'xxxxx' ; alter database datafile 'xxxxx' online ; 
  • 6.移动数据文件 : 
  • open 状态下 可用:alter tablespace rename datafile 'xxxx' to 'xxxx'; 
  • alter database rename file 'xxxx' to 'xxxx' ; 
  • 前者必须在open下使用,而且数据文件所在的表空间处于OFFLINE状态下。 
  • 由于system,sysaux表空间不能脱机,所以只能用alter database rname 语句移动。 
  • alter tablespace mytbs01 offline ; 
  • host copy e:\mytbs01.dbf e:\share\mytbs01_1.dbf 
  • host copy e:\mytbs02.dbf e:\share\mytbs02_2.dbf 
  • alter tablespace mytbs01 rname 
  • datafile 'e:\mytbs01.dbf', 
  • 'e:\mytbs02.dbf' 
  • to 
  • 'e:\share\mytbs01_1.dbf', 
  • 'e:\share\mytbs02_2.dbf' ;
  •  alter tablespace mytbs01 online ; 
  • alter database backup controlfile to 'e:\control.bkp' ; 
  • 移动多个表空间的数据文件时,要对每一个表空间:
  • alter database tablespace_name offlin ;
  • 之后再host copy 再alter database rname file 'xxxxx' to 'xxxxx' 
  • 再alter tablespace 'xxx' online 
  • 再 alter database backup controlfile to 'e:\share\control.bkp' ; 
  • 7.删除数据文件 : alter tablespace mytemptbs01 tempfile offline ; 
  • drop tablespace mytemptbs01 ; 
  • 对于有数据的表空间:
  • drop tablespace mytbs01 including contents [ and datafiles ]; 
  • 只删除一个数据文件 :
  • alter database datafile 'e:\share\mytbs01_1.dbf' offline drop ; 
  • 此语句后,若想恢复使用些数据文件 可用 
  • recover datafile 'e:\share\mytbs01_1.dbf' ; 
  • alter database datafile 'e:\share\mytbs01_1.dbf' online ; 
  • 8.查询数据字典,了解数据文件的信息: 
  •  DBA_DATA_FILES 包含所有数据文件的基本信息,如所属表空间、文件号,文件号可与其它视图进行关联取更详细的信息。 
  • DBA_TEMP_FILES 包含数据库上所有临时不空间的信息。 
  • DBA_EXTENTS “DBA_" 包含所有表空间中,已分配的区的描述信息,如构所属的数据文件的文件号。 
  • USER_EXTENTS ”USER_" 视图包含当前用户所拥有的对象在所有表空间中已分配的区的描述信息,如构所属数据文件的文件号。 
  • DBA_FREE_SPACE “DBA_" 包含表空间中空闲区的描述信息,如空闲区所属的数据文件的文件号等 。 
  • USER_FREE_SPACE ”USER_" 包含可被当前用户访问的表空间中空闲区的描述信息,如空闲区所属的数据文件文件号。 
  • V$DATAFILE 包含从控制文件中获取的数据文件信息,主要是用于同步的信息,如它所属的表空间名称、文件号、SCN 
  • V$DATAFILE_HEADER 包含从数据文件头部获取的信息。 要获取数据库中数据文件的基本信息,可以查询DBA_DATA_FILES视图: 
  • select file_name,file_id,tablespace_name tbs_name,blocks blk,status,relative_fno rel_fno,autoextensible auto,user_blocks u_blk from dba_data_files where tablespace_name = 'USERS' ; 
  • 要获取数据文件的同步信息,
  • 可以查询v$datafile 
  • select file#,name,creation_time crt_time,ts#,status,checkpoint_change# ckpt_chg, checkpoint_time ckpt_time,create_bytes/1024/1024 crt_Mb,bytes/1024/1024 MB from v$datafile ; 
  • 查询临时文件的信息:
  • select tablespace_name,file_name,autoextensible from dba_temp_files ; 
  • 9.查询数据文件的使用信息: 
  • select file_name,total_size,total_size - free_size used_size ,free_size from (select file_id,file_name,bytes/1024/1024 total_size from dba_data_files ) f, (select file_id,sum(bytes)/1024/1024 free_size from dba_free_space group by file_id) e where f.file_id = e.file_id ; 
  • 10.查询数据文件的读写信息:
  • v$FILESTAT和V$TEMPSTAT 
  • select vfs.file#,vdf.name,vfs.phyrds reads,vfs.phywrts writes,vfs.readtim/100 readtime, vfs.writetim/100 writetime from v$filestat vfs,v$datafile vdf where vfs.file# = vdf.file# ; 
  • 可查询 dba_data_files 和v$datafile 、v$filestat 、v$tempstat ;