第01部分-表空间基本属性
01.1-RMAN全库备份时不备份临时表空间(v$tablespace)
SYS@11g>set linesize 999
SYS@11g>set pagesize 0
SYS@11g>col NAME for a9
SYS@11g>col INCLUDED_IN_DATABASE_BACKUP for a26
select '--'||name,'Fullbackup='||included_in_database_backup FROM v$tablespace where name in('USERS','TEMP');
--USERS Fullbackup=YES
--TEMP Fullbackup=NO
01.2-大文件的BigFile相对文件号总是1024
SYS@11g> create bigfile temporary tablespace temp2 tempfile '/tmp/temp2.dbf' size 2045g;
SYS@11g> set pagesize 0
col file# for a15
col rfile# for a15
select '--file#: '||file_id file#,'rfile#: '||relative_fno rfile# from dba_temp_files where file_name like '%temp2%';
--file#: 2 rfile#: 1024
01.3-相对文件号不超过1023的情况下与绝对文件号是一样的
SYS@11g> set heading on
set pagesize 111
col FILE_ID for 9
select file_id,relative_fno from dba_data_files order by file_id;
FILE_ID RELATIVE_FNO
------- ------------
1 1
2 2
3 3
4 4
5 5
6 6
01.4-一个库最多有DB_FILES=65534个文件
一、超过db_file限制会抛ORA-00059错误
SYS@11g> set pagesize 0 ;
create pfile='/tmp/pfileorcl2.ora' from spfile;
show parameter db_files;
db_files integer 200
SYS@11g> create temporary tablespace temp3 tempfile '/tmp/temp3_1.dbf' size 2M;
SYS@11g> declare
v_str varchar2(100);
begin
for i in 2..1023 loop
v_str:='alter tablespace temp3 add tempfile '||'''/tmp/temp3_'||i||'.DBF'''||' size 2m';
execute immediate v_str;
end loop;
end;
/
--ORA-00059: maximum number of DB_FILES exceeded
SYS@11g> drop tablespace temp3 including contents and datafiles cascade constraints; //清理现场
二、修改db_files初始化参数
SYS@11g> alter system set db_files=65535 scope=spfile;
shutdown immediate
startup
-- ORA-01131: DB_FILES system parameter value 65535 exceeds limit of 65534
SYS@11g> startup pfile='/tmp/pfileorcl2.ora'
create spfile from pfile='/tmp/pfileorcl2.ora';
shutdown immediate
startup
/
SYS@11g> alter system set db_files=65534 scope=spfile;
shutdown immediate
startup
show parameter db_files
--db_files integer 65534
01.5-超过rowid对表空间文件数限制=1023相对文件号重新计算
SYS@11g> drop tablespace temp3 including contents and datafiles cascade constraints;
create temporary tablespace temp3 tempfile '/tmp/temp3_1.dbf' size 2M;
SYS@11g> declare
v_str varchar2(100);
begin
for i in 2..2222 loop
v_str:='alter tablespace temp3 add tempfile '||'''/tmp/temp3_'||i||'.DBF'''||' size 2m';
execute immediate v_str;
end loop;
end;
/
--ORA-01686: max # files (1023) reached for the tablespace TEMP3
SYS@11g> select count(*) from v$tempfile where NAME like '%temp3_%';
1023
SYS@11g> select file#,RFILE# from v$tempfile where NAME like '%temp3_%' and RFILE# <3 or RFILE# > 1021;
FILE# RFILE#
---------- ----------
2 1
3 1024
4 2
1024 1022
1025 1023
01.6-表空间每次扩大几个块dba_data_files.Increment_by
一、创建永久SmallFile Tablespace
drop tablespace z including contents and datafiles cascade constraints;
create tablespace z datafile '/tmp/z_1.dbf' size 2M;
alter tablespace z add datafile '/tmp/z_2.dbf' size 2M autoextend on maxsize unlimited;
alter tablespace z add datafile '/tmp/z_3.dbf' size 2M autoextend on next 10M Maxsize 2G;
/
二、dba_data_files.Increment_by
SYS@11g> set pagesize 0
col fname for a18
select '--'||file_name fname,
'autoextent='||autoextensible,
'max_GB='||ceil(maxbytes/1024/1024/1024),
'extent_blk='||increment_by from dba_data_files
where tablespace_name='Z';
--/tmp/zcs1_1.dbf autoextent=NO max_GB=0 extent_blk=0
--/tmp/tp01_2.dbf autoextent=YES max_GB=31 extent_blk=1
--/tmp/tp01_3.dbf autoextent=YES max_GB=2 extent_blk=1280
01.7-开关表空间闪回
SYS@11g> drop tablespace z including contents and datafiles cascade constraints;
create tablespace z datafile '/tmp/z.dbf' size 2m flashback off;
select '-- flashback='||flashback_on from v$tablespace where name='Z';
--flashback=NO
SQL> alter tablespace z8 flashback on;
ORA-01126: database must be mounted in this instance and not open in any instance
SYS@11g> shutdown immediate;
startup mount;
alter tablespace z flashback on;
select '-- flashback='||flashback_on from v$tablespace where name='Z';
--flashback=YES
SYS@11g> alter database open;
drop tablespace zcs8 including contents and datafiles cascade constraints;
/
第02部分-表空间大小监控
02.1-占用磁盘量=总大小
一、方法一:host du -sh
SYS@11g> select file_name from dba_data_files where tablespace_name='SYSTEM';
-- /u01/app/oracle/oradata/orcl2/system01.dbf
SYS@11g> !du -sh /u01/app/oracle/oradata/orcl2/system01.dbf|awk '{ print $1 }'
681M
二、方法二:sm$ts_avail.BYTES
SYS@11g> select 'Disk_use_MB='||BYTES/1024/1024 from sm$ts_avail where tablespace_name='SYSTEM';
Disk_use_MB=680
三、方法三:dba_data_files.bytes
SYS@11g> select '--Disk_use_MB='||sum(bytes)/1024/1024 from dba_data_files
where tablespace_name='SYSTEM' group by tablespace_name ;
--Disk_use_MB=680
02.2-已消耗总大小(含metadata)
SYS@11g>
select '--Data_used_MB='||trunc((disk_used-free)/1024/1024)
from
(select tablespace_name,sum(bytes) disk_used from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) free from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name and A.tablespace_name='SYSTEM';
--Data_used_MB=675
02.3-段消耗的大小=dba_segments.BYTES
SYS@11g> select '--SEG_used='||trunc(sum(bytes)/1024/1024) from dba_segments where tablespace_name='SYSTEM' group by tablespace_name;
--SEG_used=674
02.4-Free的表空间大小
一、方法一:dba_free_space.BYTES
SYS@11g> select '--Free_MB='||trunc(sum(bytes)/1024/1024) from dba_free_space where tablespace_name='SYSTEM' group by tablespace_name;
--Free_MB=4
二、方法二:sm$ts_free.BYTES
SYS@11g> select '--Free_MB='||trunc(BYTES/1024/1024) from sm$ts_free where tablespace_name='SYSTEM';
Free_MB=4
02.5-文件头的元数据大小(dba_data_files)
SYS@11g> set pagesize 0
Set linesize 333
select
'--disk_use_MB:'||sum(bytes)/1024/1024,
'data_area_MB:'||sum(user_bytes)/1024/1024,
'meta_data_MB:'||sum(bytes-user_bytes)/1024/1024
from dba_data_files where tablespace_name='SYSTEM'
group by tablespace_name;
--disk_use_MB:680 data_area_MB:679 meta_data_MB:1
说明:
disk_used= dba_data_files.BYTES=磁盘占用量
data_area = dba_data_files.USER_BYTES=可用于存数据的空间
meta_data=disk_used 减去data_area=文件头的元数据大小
02.6-综合监控(dba_data_files、dba_free_space)
SYS@11g>
select
'--Disk_MB='||disk,'Free_MB='||free,'used_MB='|| (disk - free)
from
( select tablespace_name,sum(bytes)/1024/1024 disk from dba_data_files group by tablespace_name) a,
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name and a.tablespace_name='SYSTEM';
--Disk_MB=680 Free_MB=4.375 Used_MB=675.625
02.7-综合监控(sm$ts_avail、sm$ts_used、sm$ts_free)
一、分成三个语句
SYS@11g> select'Disk_use_MB='||BYTES/1024/1024 from sm$ts_avail where tablespace_name='SYSTEM';
SYS@11g> select 'Free_MB='||trunc(BYTES/1024/1024) from sm$ts_used where tablespace_name='SYSTEM';
SYS@11g> select 'Free_MB='||trunc(BYTES/1024/1024) from sm$ts_free where tablespace_name='SYSTEM';
二、合成一个语句
SYS@11g> select
'--Disk_use_MB='||disk.BYTES/1024/1024,
'Used_MB='||trunc(used.BYTES/1024/1024) ,
'Free_MB='||trunc(free.BYTES/1024/1024)
from
sm$ts_avail disk,sm$ts_used used,sm$ts_free free
where disk.tablespace_name=used.tablespace_name
and disk.tablespace_name=free.tablespace_name
and disk.tablespace_name='SYSTEM';
--Disk_use_MB=680 Used_MB=674 Free_MB=4
三、查看百分比
SYS@11g> select
'--Disk_use_MB='||A.bytes/1024/1024,
'Used_MB='||trunc(B.bytes/1024/1024),
'Free_MB='||trunc(C.bytes/1024/1024),
'%USED='||trunc((B.bytes*100)/A.bytes),
'%FREE='||trunc((C.bytes*100)/A.bytes)
FROM
SYS.sm$ts_avail A,SYS.sm$ts_used B,SYS.sm$ts_free C
WHERE A.tablespace_name=B.tablespace_name
AND A.tablespace_name=C.tablespace_name
and A.tablespace_name='SYSTEM';
--Disk_use_MB=680 Used_MB=674 Free_MB=4 %USED=99 %FREE=0
第03部分-表空间增删改查
1、表空间分类
2、数据文件分类——永久、临时、UNDO,Redo不使用表空间管理方式
03.1-创建永久表空间
SYS@11g> set sqlprompt "_user'@'11g> "
create tablespace z datafile '/tmp/z_1.dbf' size 2M;
alter tablespace z add datafile '/tmp/z_2.dbf' size 2M autoextend on maxsize unlimited;
03.2-获取创建表空间的语句
SYS@11g> set long 999
select dbms_metadata.get_ddl('TABLESPACE', 'Z') from dual;
/*
CREATE TABLESPACE "Z" DATAFILE
'/tmp/z_1.dbf' SIZE 2097152,
'/tmp/z_2.dbf' SIZE 2097152
AUTOEXTEND ON NEXT 8192 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEM
ENT AUTO
*/
03.3-dbfile自动扩展、手工收缩
自动扩展的好处:不会因无剩余空间而数据无法写入;减少人为维护的工作量
自动扩展的弊端:会导致数据文件异常大;无人管理的数据库是非常危险的
一、列出tbs中固定大小dbfile
SYS@11g> select '-- '||file_name from dba_data_files where TABLESPACE_NAME='Z' and autoextensible='NO';
-- /tmp/z_1.dbf
二、改为自动扩展
SYS@11g> alter database datafile '/tmp/z_1.dbf' autoextend on next 1m maxsize 1G;
SYS@11g> host du -sh /tmp/z_1.dbf|awk '{print $1}'
--2.1M
SYS@11g> create table t tablespace z AS select * from dba_objects where rownum=1 ;
insert into t select * from t;
SYS@11g> /
16384 rows created. //插入n次
SYS@11g> host du -sh /tmp/z_1.dbf|awk '{print $1}'
--3.1M
三、删除表段dbfile不会自动收缩
SYS@11g> truncate table t;
drop table t purge;
host du -sh /tmp/z_1.dbf|awk '{print $1}'
3.1M
四、手工收缩文件的当前大小(此命令也可用于扩展表空间)
SYS@11g> alter database datafile '/tmp/z_1.dbf' resize 2m;
host du -sh /tmp/z_1.dbf|awk '{print $1}'
--2.1M
03.5-dbfile改为固定大小
SYS@11g> alter database datafile '/tmp/z_1.dbf' autoextend off;
SYS@11g> col fname for a18
col auto for a18
select '--'||file_name fname,
'AUTOEXT='||autoextensible auto,
'MAX_GB='||ceil(maxbytes/1024/1024/1024)
from dba_data_files where TABLESPACE_NAME='Z';
--/tmp/z_1.dbf AUTOEXT=NO MAX_GB=0
--/tmp/z_2.dbf AUTOEXT=YES MAX_GB=32
03.6-查看永久表空间列表
SYS@11g> set pagesize 0
select '--'||tablespace_name FROM dba_tablespaces where contents='PERMANENT';
--SYSTEM
--SYSAUX
--USERS
--EXAMPLE
--Z
03.7-改名联机表空间非系统表空间(不会修改该表空间的id)
将会更新控制文件相关信息,在操作前后都请做好控制文件的备份工作
一、system 和 sysaux 这两个表空间不可以更名
SYS@11g> alter tablespace system RENAME TO system1;
alter tablespace sysaux RENAME TO mysysaux;
--ORA-13502: Cannot rename SYSAUX tablespace
二、表空间或任一数据文件处于脱机状态,则不能进行重命名
SYS@11g> alter tablespace Z OFFLINE;
alter tablespace Z RENAME TO ZCS;
--ORA-01135: file 3 accessed for DML/query is offline
--ORA-01110: data file 3: '/tmp/z_1.dbf'
三、只读表空间可以改名(数据文件头不能更新会有alter.log)
SYS@11g> alter tablespace z ONLINE;
alter tablespace z READ ONLY;
alter tablespace z RENAME TO z1;
四、列出dbfile的状态
SYS@11g> select '--'||tablespace_name,file_name fname,online_status FROM dba_data_files where file_name like '%z_%' order by file_name;
--Z1 /tmp/z_1.dbf ONLINE
--Z1 /tmp/z_2.dbf ONLINE
五、改名read write状态的TBS
SYS@11g> alter tablespace Z1 ONLINE;
alter tablespace Z1 rename to ZCS;
03.7-删除表空间
SYS@11g> drop tablespace zcs including contents and datafiles cascade constraints;
第04部分-表空间增删改查补充:大文件表空间与小文件表空间
Oracle对文件大小的限制——块大小为2~32k间2的幂*rowid中block编号范围
04.1-证明单个SFT文件的最大值
一、SFT file受basic ROWID中22bit的block number限制,最多有2^22-1个块
SQL> create temporary tablespace temp2 tempfile '/tmp/temp2.dbf' size 40g;
ORA-01144: File size (5242880 blocks) exceeds maximum of 4194303 blocks
二、临时表空间为稀疏文件方便测试
SQL> create temporary tablespace temp2 tempfile '/tmp/temp2.dbf' size 30g;
SQL> !du -sh /tmp/temp2.dbf
140K /tmp/temp2.dbf
SQL> !ls -lh /tmp/temp2.dbf|awk '{ print $5,$9 }'
31G /tmp/temp2.dbf
三、添加一个unlimited的数据文件并查看maxbytes
SQL> alter tablespace temp2 add tempfile '/tmp/temp2_2.dbf' size 2M autoextend on maxsize unlimited;
SQL> select ceil(maxbytes/1024/1024/1024) ||'GB' from dba_temp_files where file_name='/tmp/temp2_2.dbf';
32GB
SQL> drop tablespace temp2 INCLUDING CONTENTS and datafiles;
四、块大小不同SFT 单个文件的最大值也不同
2^22*2K Block_size=8G
2^22*4K Block_size=16G
2^22*8K Block_size=32G
2^22*16KBlock_size=64G
2^22*32KBlock_size=128G
SQL> select 32* power(2,22)/1024/1024 ||' GB' from dual;
128 GB
04.2-BFT特有的属性
一、只有自动段空间管理的 LMT 支持 BFT
SYS@11g> create bigfile tablespace a datafile '/tmp/a.dbf' size 9M segment space management AUTO;
--Tablespace created.
SYS@11g> create bigfile tablespace a datafile '/tmp/a.dbf' size 9M segment space management MANUAL;
--ORA-32772: BIGFILE is invalid option for this type of tablespace
二、相对文件号(RELATIVE_FNO)为1024 ( 4096 on OS/390)
SYS@11g> create bigfile temporary tablespace t2 tempfile '/tmp/t2.dbf' size 1g;
SYS@11g> set pagesize 0
col file# for a15
col rfile# for a15
select '--file#: '||file_id file#,'rfile#: '||relative_fno rfile# from dba_temp_files where file_name like '%t2%';
--file#: 2 rfile#: 1024
三、每个表空间只能包含一个数据文件
SYS@11g> alter tablespace temp2 add tempfile '/tmp/temp2_2.dbf' size 9M;
--ORA-32771: cannot add file to bigfile tablespace
四、块大小不同BFT 单个文件最大值也不同(BFTfile用extend ROWID中32bit的block number每个文件最多有2^32-1个块)
2^32*2K Block_size=8T
2^32*4K Block_size=16T
2^32*8K Block_size=32T
2^32*16K Block_size=64T
2^32*32K的Block_size=128T
SQL> select 32* power(2,32)/1024/1024/1024||' TB' from dual;
128 TB
五、补充:用BFT FILE证明FS限制:EXT3<=2TB、EXT4<=16TB
SQL> create bigfile temporary tablespace temp2 tempfile '/tmp/temp2.dbf' size 2T;
--ORA-27044: Linux Error: 27: File too large //ext3<=2 TB,ext4<=16t
SQL> !oerr ora 27044
SQL> create bigfile temporary tablespace temp2 tempfile '/tmp/temp2.dbf' size 2000g;
SQL> select file_name from dba_temp_files where tablespace_name='TEMP2';
--/tmp/temp2.dbf
第05部分-表空间增删改查补充:标准块与非标准块表空间
05.1-理论:标准块与非标准块
一、oracle默认的块大小是8k
SYS@11g> show parameter db_cache_size;
db_cache_size big integer 0
SYS@11g> select distinct block_size from dba_tablespaces;
8192
二、oracle同时也支持其他四种块大小:2k、4k、16k、32k
补充:Platform-specific restrictions regarding the maximum block size apply, so some of these sizes may not be allowed on some platforms.
SYS@11g> show parameter k_cache_size;
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
SYS@11g> SELECT component, current_size, min_size FROM v$sga_dynamic_components where component not like '%pool%';
三、块是io 的最小单元,合理的块大小能减少IO压力
数据块的大小一般是OS块大小的整数倍,这样可以避免不必要的系统I/O操作。如果操作系统块大小的值小于2KB则不能指定DB_2K_CACHE_SIZE的值。
当一行数据在一个8k块中无法装载,需存放在2个块中的时候读取需2次IO,如果使用大块表空间的话可以减少IO的次数;
相反如果一条记录太小,可以使用小块的表空间避免不必要的IO;
如果一个表非常热,可以考虑建立一个小block_size的表空间,可缓解热块争用问题;
四、其它规则
? 分区对象的所有分区必须位于具有相同块大小的表空间中。
? 所有临时表空间必须采用标准块大小,包括用作缺省临时表空间的永久表空间。
? 按索引组织的表溢出和外部LOB 段可以存储在块大小与基表不同的表空间中。
05.2-实验:创建非标准blocksize的表空间
传输表空间时需配置非标准块的表空间。
在同一环境下,测试不同不块大小的效率,以辅助决策。
一、必须先修改db_nk_cache_size内存参数
SYS@11g> alter system set db_2k_cache_size=8M;
System altered.
二、然后才能创建blocksize=nk 大小的表空间
SQL> create tablespace zcs datafile '/tmp/zcs_1.dbf' size 9m blocksize 2k;
Tablespace created.
select block_size from dba_tablespaces where tablespace_name= 'ZCS';
select block_size from dba_tablespaces where tablespace_name= 'ZCS';
2048
第06部分-核心文件迁移,冷备份
本帖最后由 zcs0237 于 2013-6-17 12:07 编辑
与迁移有关的技术有:exp/imp、存储迁移、利用data guard迁移、用rman做迁移等很多种,这里用最简的冷迁移。
控制文件,日志文件,数据文件统称Oracle的三大核心文件,这三个文件都一个检查点(checkpoint)。数据库能否启动唯一的标志是:三大核心文件的检查点一致。
06.1-生成OS命令(此步不现录视频以免视频文件过大)
一、控制文件
SYS@11g> select '!cp '||name||' /tmp ' from v$controlfile;
!cp /u01/app/oracle/oradata/orcl2/control01.ctl /tmp
!cp /u01/app/oracle/oradata/orcl2/control02.ctl /tmp
SYS@11g> select '!rm -f '||name||' /tmp ' from v$controlfile;
!rm -f /u01/app/oracle/oradata/orcl2/control01.ctl
!rm -f /u01/app/oracle/oradata/orcl2/control02.ctl
二、数据文件
SYS@11g> set pagesize 0
set linesize 333
set sqlprompt "_user'@'11g> "
select '!cp '||name||' /tmp ' from v$datafile;
!cp /u01/app/oracle/oradata/orcl2/system01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/sysaux01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/undotbs01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/users01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/example01.dbf /tmp
SYS@11g> select '!rm -f '||name from v$datafile;
!rm -f /u01/app/oracle/oradata/orcl2/system01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/sysaux01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/undotbs01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/users01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/example01.dbf
三、临时数据文件不需复制或移动
SYS@11g> select '!rm -f '||name from v$tempfile;
!rm -f /u01/app/oracle/oradata/orcl2/temp01.dbf
补充:temp的练习题
四、日志文件
SYS@11g> select '!cp '||member||' /tmp ' from v$logfile;
!cp /u01/app/oracle/oradata/orcl2/redo03.log /tmp
!cp /u01/app/oracle/oradata/orcl2/redo02.log /tmp
!cp /u01/app/oracle/oradata/orcl2/redo01.log /tmp
SYS@11g> select '!rm -f '||member from v$logfile;
!rm -f /u01/app/oracle/oradata/orcl2/redo03.log
!rm -f /u01/app/oracle/oradata/orcl2/redo02.log
!rm -f /u01/app/oracle/oradata/orcl2/redo01.log
06.2-关闭数据库,用OS命令冷备/清理
一、控制文件(小心操作顺序,最后删除old控制文件)
SYS@11g> set sqlprompt "_user'@'11g> "
shutdown immediate
SYS@11g> !cp /u01/app/oracle/oradata/orcl2/control01.ctl /tmp
!cp /u01/app/oracle/oradata/orcl2/control02.ctl /tmp
SYS@11g> !ls /tmp/*.ctl
SYS@11g> startup nomount
SYS@11g> alter system set control_files='/tmp/control01.ctl' ,'/tmp/control02.ctl' scope=spfile;
SYS@11g> !rm -f /u01/app/oracle/oradata/orcl2/control01.ctl
!rm -f /u01/app/oracle/oradata/orcl2/control02.ctl
SYS@11g> !ls /u01/app/oracle/oradata/orcl2/*.ctl
二、数据文件
SYS@11g> shutdown immediate
SYS@11g> --稍等片刻再复制
!cp /u01/app/oracle/oradata/orcl2/system01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/sysaux01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/undotbs01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/users01.dbf /tmp
!cp /u01/app/oracle/oradata/orcl2/example01.dbf /tmp
SYS@11g> --稍等片刻再复制
!ls /tmp/*.dbf
SYS@11g> !rm -f /u01/app/oracle/oradata/orcl2/system01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/sysaux01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/undotbs01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/users01.dbf
!rm -f /u01/app/oracle/oradata/orcl2/example01.dbf
SYS@11g> --稍等片刻再复制
!ls /u01/app/oracle/oradata/orcl2/*.dbf
三、临时数据文件不需复制或移动
SYS@11g> !rm -f /u01/app/oracle/oradata/orcl2/temp01.dbf
SYS@11g> !ls /u01/app/oracle/oradata/orcl2/*.dbf
四、日志文件
SYS@11g> !cp /u01/app/oracle/oradata/orcl2/redo03.log /tmp
!cp /u01/app/oracle/oradata/orcl2/redo02.log /tmp
!cp /u01/app/oracle/oradata/orcl2/redo01.log /tmp
SYS@11g> !ls /tmp/*.log
SYS@11g> !rm -f /u01/app/oracle/oradata/orcl2/redo03.log
!rm -f /u01/app/oracle/oradata/orcl2/redo02.log
!rm -f /u01/app/oracle/oradata/orcl2/redo01.log
SYS@11g> !ls /u01/app/oracle/oradata/orcl2/*.log
补充:用户管理的冷备份
1、一致性备份:在备份时没有任何访问和修改
2、干净shutdown恢复时不需要跑日志就可以不用归档
3、不支持增量备份,不适合对大量数据量备份
4、仅提供到“某一时间点”的恢复
5、与归档相结合做“最佳状态”恢复
6、不支持基于表和用户的恢复
7、冷备份=脱机备份=一致性备份=物理备份=非归档模式
8、对于非归档模式下,最好的办法就是采用OS的冷备份
建议不要用RMAN来作冷备份,因为RMAN不备份联机日志,需要利用不完全恢复(until cancel)的方法来重新创建联机日志文件。
06.3-mount数据库,用oracle命令改参数文件中的路径
一、数据文件
SYS@11g> startup mount
SYS@11g> --稍等片刻再复制
alter database rename file '/u01/app/oracle/oradata/orcl2/system01.dbf' to '/tmp/system01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl2/undotbs01.dbf' to '/tmp/undotbs01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl2/sysaux01.dbf' to '/tmp/sysaux01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl2/users01.dbf' to '/tmp/users01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl2/example01.dbf' to '/tmp/example01.dbf';
SYS@11g> select '-- '||name from v$datafile;
-- /tmp/system01.dbf
-- /tmp/sysaux01.dbf
-- /tmp/undotbs01.dbf
-- /tmp/users01.dbf
-- /tmp/example01.dbf
二、临时数据文件
SYS@11g> alter database rename file '/u01/app/oracle/oradata/orcl2/temp01.dbf' to '/tmp/temp01.dbf';
SYS@11g> select '-- '||name from v$tempfile;
-- /tmp/temp01.dbf
SYS@11g> !rm -f /u01/app/oracle/oradata/orcl2/temp01.dbf
三、日志文件
SYS@11g> alter database rename file '/u01/app/oracle/oradata/orcl2/redo03.log' to '/tmp/redo03.log';
alter database rename file '/u01/app/oracle/oradata/orcl2/redo02.log' to '/tmp/redo02.log';
alter database rename file '/u01/app/oracle/oradata/orcl2/redo01.log' to '/tmp/redo01.log';
SYS@11g> select '-- '||member from v$logfile;
-- /tmp/redo03.log
-- /tmp/redo02.log
-- /tmp/redo01.log
四、控制文件
SYS@11g> select '-- '||name from v$controlfile;
-- /tmp/control01.ctl
-- /tmp/control02.ctl
五、迁移后启动
SYS@11g> shutdown immediate
startup;
第07部分-核心文件迁移补充:在线迁移UNDO
本帖最后由 zcs0237 于 2013-6-17 12:05 编辑
07.1-查看现有undo表空间
一、列出所有undo表空间
SYS@11g> select '--'||tablespace_name from DBA_TABLESPACES where CONTENTS='UNDO';
--UNDOTBS1
二、查看当前的UNDO表空间名称
SYS@11g> show parameter tablespace
undo_tablespace string UNDOTBS1
07.2-在新位置创建UNDO表空间并切换为默认undo
SYS@11g> create undo tablespace ud2 datafile '/tmp/ud2.dbf' size 9m autoextend on;
SYS@11g> alter system set undo_tablespace =ud2 scope=both;
SYS@11g> show parameter tablespace
--undo_tablespace string
07.3-清除旧的UNDO表空间
SYS@11g> drop tablespace undotbs1 including contents and datafiles cascade constraints;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26366371/viewspace-2061986/
,如需转载,请注明出处,否则将追究法律责任。