oracle表空间

在线过期数据迁移到离线数据库的案例

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-26 20:38:41
特别说明:该案例引自谭老师的《让Oracle跑的更快2》。 实验说明: 该实验将用到在线数据库YFT1,离线数据库YFT2。 实验操作: 一、分别在两个数据库中创建一个分区表,并为每个分区创建一个单独的表空间,以便于和临时表做分区交换。 1.1、在数据库YFT1中: Create Tablespace 1 [ oracle@node2 ~ ] $ env | grep ORA 2 ORACLE_SID = YFT1 3 ORACLE_BASE =/ u01 / app / oracle 4 ORACLE_HOME =/ u01 / app / oracle / product / 11.2 . 0 / db_1 5 [ oracle@node2 ~ ] $ sqlplus / nolog 6 7 SQL * Plus: Release 11.2 . 0.1 . 0 Production on Wed Dec 19 13 : 56 : 53 2012 8 9 Copyright (c) 1982 , 2009 , Oracle. All rights reserved. 10 11 SQL > conn / as sysdba 12 Connected. 13 SQL > alter system set db_create_file_dest = ' /u01/app/oracle

丢失控制文件恢复实验记录--1(当前的控制文件损坏,使用旧控制文件进行恢复(旧控制文件之后DROP了表空间的情况))...

孤街醉人 提交于 2019-11-26 20:37:24
一、实验说明: 本文转载于Luocs的丢失控制文件恢复实验记录--1,此处属于转载+模拟。 操作系统:rhel 5.4 x32 数据库:oracle 11g r2 二、实验操作: ----备份当前控制文件---- 1 RMAN > backup current controlfile; 2 3 Starting backup at 10 - JAN - 13 4 using target database control file instead of recovery catalog 5 allocated channel: ORA_DISK_1 6 channel ORA_DISK_1: SID = 17 device type = DISK 7 channel ORA_DISK_1: starting full datafile backup set 8 channel ORA_DISK_1: specifying datafile(s) in backup set 9 including current control file in backup set 10 channel ORA_DISK_1: starting piece 1 at 10 - JAN - 13 11 channel ORA_DISK_1: finished piece 1 at 10 - JAN -

丢失控制文件,有旧的备份控制文件,之后有drop表空间和create表空间的操作恢复。...

孤者浪人 提交于 2019-11-26 20:37:22
一、实验说明: 本实验是基于: 《丢失控制文件恢复实验记录--1(当前的控制文件损坏,使用旧控制文件进行恢复(旧控制文件之后DROP了表空间的情况))》 和 《丢失控制文件恢复实验记录--2(当前的控制文件损坏,使用旧控制文件进行恢复(旧控制文件之后新增了表空间的情况))》 ,把这两个实验的情况综合以后做一个恢复实验。 操作系统:rhel 5.4 x32 数据库:oracle 11g r2 二、操作内容: ----首先做一个当前控制文件的备份---- 1 RMAN > backup current controlfile; 2 3 Starting backup at 15 - JAN - 13 4 using target database control file instead of recovery catalog 5 allocated channel: ORA_DISK_1 6 channel ORA_DISK_1: SID = 31 device type = DISK 7 channel ORA_DISK_1: starting full datafile backup set 8 channel ORA_DISK_1: specifying datafile(s) in backup set 9 including current control file in

丢失控制文件恢复实验记录--4(在线日志文件没有损坏,归档日志丢失,直接重建控制文件(跟踪控制文件trace是旧的情况))...

妖精的绣舞 提交于 2019-11-26 20:37:03
一、实验说明: 本文转载于Luocs的丢失控制文件恢复实验记录--4,此处属于转载+模拟。该实验其实跟 《丢失控制文件恢复实验记录--2(当前的控制文件损坏,使用旧控制文件进行恢复(旧控制文件之后新增了表空间的情况))》 类似,就是少了利用备份的旧控制文件恢复而已。 操作系统:rhel 5.4 x32 数据库:oracle 11g r2 二、实验操作: ----先导出一个跟踪文件trace---- 1 SQL > alter database backup controlfile to trace; 2 3 Database altered. 4 5 SQL > select value from v$diag_info where NAME = ' Default Trace File ' ; 6 7 VALUE 8 -- ------------------------------------------------------------------------------ 9 / u01 / app / oracle / diag / rdbms / yft / yft / trace / yft_ora_3844.trc 10 ----查看trace内容---- 11 [ oracle@yft ~ ] $ sed - n ' /CREATE CONTROLFILE.

丢失控制文件恢复实验记录--6(实验4的基础上,如果luocs表空间为只读表空间的情况)...

岁酱吖の 提交于 2019-11-26 20:37:01
一、实验说明: 本文转载于Luocs的丢失控制文件恢复实验记录--6,此处属于转载+模拟。 操作系统:rhel 5.4 x32 数据库:oracle 11g r2 二、实验操作: ----先导出一个跟踪文件trace---- 1 SQL > alter database backup controlfile to trace; 2 3 Database altered. 4 5 SQL > select value from v$diag_info where name = ' Default Trace File ' ; 6 7 VALUE 8 -- ------------------------------------------------------------------------------ 9 / u01 / app / oracle / diag / rdbms / yft / yft / trace / yft_ora_3617.trc 10 ----查看---- 11 [oracle @yft ~ ]$ sed - n ' /CREATE CONTROLFILE.*NORESETLOGS/,/;/p ' / u01 / app / oracle / diag / rdbms / yft / yft / trace / yft_ora_3617.trc 12

Oracle之高水位线

社会主义新天地 提交于 2019-11-26 20:36:45
一、声明: 本人写的一些文章,其中有些是属于个人原创,有些属于转载+个人改编。就如本文属于转载+个人改编。 二、什么是水线(High Water Mark)? 所有的Oracle段(segments,在此,为了理解方便,建议把segments作为表的一个同义词)都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。 这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很像一个水库的历史最高水位,这也就是HWM的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为0。但是如果我们在表上使用了truncate命令,则该表的HWM会被重新置为0。 三、HWM数据库的操作有如下影响: a)、全表扫描通常要读出直到HWM标记的所有的属于该表数据库块,即使该表中没有任何数据; b)、即使HWM以下有空闲的数据库块,键入在插入数据时使用了append关键字,则在插入时使用HWM以上的数据块,此时HWM会自动增大。 四、如何知道一个表的HWM? a)、首先对表进行分析: analyze table <tablename> extimate/compute statistics; b)

Oracle 索引维护

大城市里の小女人 提交于 2019-11-26 20:35:31
一、本文说明 在浏览Dave的博客的时候发现有一篇关于索引维护的文章,感觉挺好的,自己对索引的维护了解甚少,因此在这里转载+模拟一下,如果想要看原文可以点击友情链接中的Dave在他的博客中可以找到。 二、查看系统表中的用户索引 在Oracle中,SYSTEM表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。 一般来说,应该尽量避免在SYSTEM表空间中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表空间损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。 1 SQL > select * from dba_indexes where tablespace_name = ' SYSTEM ' and owner not in ( ' SYS ' , ' SYSTEM ' ); 三、索引的存储情况检查 Oracle为数据库中的所有数据分配逻辑结构空间。数据库空间的单位是block、extent和segment。 Block:是Oracle使用和分配的最小存储单位。它是由数据库建立时设置的DB_BLOCK_SIZE决定的。一旦数据库生成了,数据块的大小不能改变。要想改变只能重新建立数据库。 Extent:是由一组连续的block组成的

Oracle ORA-01555(快照过旧)

不想你离开。 提交于 2019-11-26 20:34:36
一、引言: [ oracle@yft yft ] $ oerr ora 01555 01555 , 00000 , "snapshot too old: rollback segment number % s with name \" % s\" too small" // * Cause: rollback records needed by a reader for consistent read are // overwritten by other writers // * Action: If in Automatic Undo Management mode, increase undo_retention // setting. Otherwise, use larger rollback segments ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo已经不存在了,这个时候就会报ORA-01555的错误。 ORA-01555错误在Oracle 8i及之前的版本最多。从9i开始的undo自动管理,至现在的10g、11g中的undo auto tuning,使得ORA-01555的错误越来越少。但是这个错误,仍然不可避免。 二、出现ORA-01555错误,通常有2中情况: (1)

Oracle 行迁移和行链接

荒凉一梦 提交于 2019-11-26 20:32:38
一、行迁移 1.1、行迁移概念 当一个行上的更新操作(原来的数据存在且没有减少)导致当前的数据不能在容纳在当前块,我们需要进行行迁移。一个行迁移意味着整行数据将会移动,仅仅保留的是一个转移地址。因此整行数据都被移动,原始的数据块上仅仅保留的是指向新块的一个地址信息。 成因:当行被update时,如果update更新的行大于数据块的pctfree值,就需要申请第2个块,从而形成迁移。 后果:导致应用需要访问更多的数据块,性能下降。 预防:1.将数据块的pctfree调大; 2.针对表空间扩大数据块的大小。 检查:analyze table 表名 validate structure cascade into chained_rows; 2.1、实例: 实验说明: (以EMPLOYEES表为例,如果涉及到该表有主键,并且有别的表的外键REFERENCE关联到本表,必须要执行步骤2和步骤7,否则不必执行); 1. 执行$ORACLE_HOME/rdbms/admin目录下的utlchain.sql脚本创建chained_rows表。 2. 禁用所有其它表上关联到此表上的所有限制(假想EMPLOYEES表有主键PK_EMPLOYEES_ID,假想test表有外键f_employees_id关联reference到employees表)。 select index_name,index

SQL优化34条

南笙酒味 提交于 2019-11-26 19:22:12
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. (3) SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 (4) 减少访问数据库的次数: ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; (5) 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200