rman对特定表空间迁移技术

2024-04-15

rman对特定表空间迁移技术(通用10篇)

篇1:rman对特定表空间迁移技术

备份与恢复UNDO表空间,首先要有备份。使用RMAN备份完成后,我们模拟UNDO表空间丢失。此时做更新操作仍然成功,因为shared pool和buffer cache存放了更新的信息。如果我们刷新shared pool和buffer cache,再做连接用户或者更新操作,会提示数据文件找不到。因为UNDO表空间丢失,并且UNDO表空间不可脱机,所以我们不能在数据库运行状态下对UNDO表空间进行恢复。这就要求我们关闭数据库进行恢复操作。如果在真实环境中进行操作,务必在业务低峰期或者测试库进行操作。我们使用一致性关闭数据库会失败,只有强制关闭。此时参数文件、控制文件正常,只是数据文件不正常,所以我们能把数据库启动到MOUNT状态。启动到MOUNT状态后,我们需要使UNDO表空间数据文件离线,注意此时的数据文件编号。然后登录到RMAN中,还原UNDO表空间数据文件,实际上做了一个拷贝的操作,从备份文件中拷贝UNDO表空间数据文件到数据目录,待拷贝完成后,我们需要对UNDO表空间数据文件进行恢复。恢复完成后,再使UNDO表空间数据文件在线,此时的数据库是MOUNT状态,我们需要打开数据库。如果所有的操作都成功,就可以对数据进行更新。

篇2:rman对特定表空间迁移技术

1.共享表空间(也可以拆分成多个小的表空间)

2.独立表空间每一个表有一个独立的表空间,

我个人推荐使用独立表空间。在性能和运维上独立表空间比共享的表空间有很多优势。下面我将分别说明一下两种表空间管理的特点。

共享表空间:

优点:

可以放表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同步的文件上)。数据和文件放在一起方便管理。

缺点:

所有的数据和索引存放到一个文件中以为着将有一个很常大的文件,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日值系统这类应用最不适合用共享表空间。

我们知道共享表空间管理会出现表空间分配后不能回缩的问题,当出现临时建索引或是创建一个临时表的操作表空间扩大后,就是删除相关的表也没办法回缩那部分空间了。我们存在磁盘监控时,也许就报警不断了,但实际上MySQL还可以运行良好。另外,当磁盘上占用较多时性能也不是太好。

这种情况处理只能是是建一个新的Slave从主库上Dump出来,然后在Dump到从库中,动作较大。

对于InnoDB Hot Backup备份的操作(或是直接冷备),每次需要CP的文件比较大。如果现在有180G的表空间,但实际数据只有50多G,那么我们将面对每次需要拷180G的数据。

这种方式也许mysqldump是一个好的处理方式了。

独立表空间:

在配置文件(my.cnf)中设置: innodb_file_per_table

优点:

1.每个表都有自已独立的表空间。

2.每个表的数据和索引都会存在自已的表空间中,

3.可以实现单表在不同的数据库中移动。

4.空间可以回收(除drop table操作处,表空不能自已回收)

a)Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。

b)对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。

c)对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点:

单表增加过大,如超过100个G。

对于单表增长过大的问题,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢。对于独立表空间也有一个解决办法是:使用分区表,也可以把那个大的表空间移动到别的空间上然后做一个连接。其实从性能上出发,当一个表超过100个G有可能响应也是较慢了,对于独立表空间还容易发现问题早做处理。

备份:

InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。

监控:

可以更好从系统上监控数据的大小,每个表的大小。

另外推荐使用独立表空间的原因:

从性能上对比共享表空间和独立表空间:

共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。这里也有一个TIPS当启用独立表空间时,请合理调整一下:innodb_open_files 。

从Linux系统处理上出发:

文件系统fsync一大片更新数据,对系统io冲击较大。若分隔成多个小数据fsync,能够减少对读的影响。 同时从mysql代码,发现mysql保证两次fsync之间至少有20ms的sleep,这样的话,若将一次fsync变成多次小数据操作,应该能够减少慢查询的比例。所以对于大量更新操作的系统不太适合用共享表空间。

篇3:rman对特定表空间迁移技术

近年来随着我国经济发展速度的不断加快以及综合国力的不断提高, 电力资源作为保证我国各行业建设的重要基础能源发挥着越来越大的作用, 居民的供电需求日渐提高, 而变电站作为供电系统中的重要环节, 能否安全平稳地运行直接关系到电能的供应质量, 因此在变电站的施工过程中, 需严格按照国家的相关规定进行科学施工。就110k V变电站的施工来说, 其主要由3回路电源进线、4回路动力变组成, 并通过4台容量均为50m VA主变到2个110/10k V总降压站, 而10k V的开关柜是通过12个馈出回路、8个备用回路及进线回路等25个回路组成, 降压站采用2路电源方式进线, 进线柜的连接方式为10k V、4 000A封闭式连接。

2 变压器的安装技术及调试应用

2.1 附件的调试及组装

由于变压器体积较大, 在运输过程中通常采用散件运输的方式, 而到达现场后需要进行组装作业, 由于变压器的部分构件较为特殊, 需要在特定的条件下进行安装, 如在进行变压器内部构件的安装时, 需要始终保持变压器内部处于未干燥条件下, 在进行储油柜和散热器等部件的安装时, 需严格按照施工要求进行组装。以下对其进行具体分析:

胶囊式储油柜是比较常见的储油柜类型, 安装前需仔细检查胶囊是否有损伤裂痕等现象, 如发现微小裂痕需立即更换, 通常采用20t的吊车对储油柜进行安装操作, 储油柜内部需保证干净无锈蚀、杂质等杂物, 在检查气密性时可以充入19.6k Pa的压力气体并保证30min无漏气, 以此进行储油柜的试压操作。

进行油位表的安装操作时, 需要检查连杆是否可以灵活伸缩, 保证油位处于最高以及最低状态时能够及时发出警报, 可以将检测正常的瓦斯继电器与储油柜一起进行组装。散热器作为保证变压器正常工作的重要元件, 安装时需保证主油路管道无锈蚀和杂物, 再将其与主油路管道连接, 安装散热器时一定要避免发生碰撞, 以免散热鳞片的损毁。

2.2 瓦斯继电器的校验工作

通常情况下, 气体继电器油速应保持在0.7~1.5 m/s, 同储油柜的安装一样, 安装瓦斯继电器前先要进行继电器的密封检测工作, 保证干簧管内无油渗入, 确保顶盖上标志箭头指向储油柜。除此之外, 还要仔细检测与其他管道的接口处的密封性是否完好。

2.3 变压器的安装

安装变压器前需要进行准备工作, 包括各种附件的检查、清点工作, 完成相关部件的清洗, 对相关机密性元件进行气密性的全面检查, 各项参数合格后方可进行安装操作。安装有载调压切换设备、检查变压器的冷却装置是否完好无损, 如风扇的电动机和叶片、阀门等是否有破损的情况, 检查无误后对其进行安装, 之后进行电流互感器及套管的安装工作以及压力阀门、气体继电器的检验和安装, 在注入绝缘油前需要保证变压器的所有附件, 如散热器、储油柜等都已安装完毕后方可注油, 待上述准备工作进行完毕后方可进行变压器的安装操作。

由于变压器的重量较大, 普通变压器已接近60t重, 这就要求安装现场有坚固宽阔的混凝土场地, 在不影响到其他建筑物的前提下, 可以使用80t的吊车进行安装操作, 在使用吊车时, 其支撑脚不能直接作用于混凝土路面上, 需用路基箱垫牢。在吊装时, 千万不能将钢丝绳直接吊在变压器的线圈吊环上, 否则将会对变压器造成严重的损毁, 而应将钢丝绳吊在变压器外壳的吊装环上。

3 变压器电缆的敷设、接线及通道安装

电缆敷设与接线工序作为变压器施工过程中的重要环节, 其完成好坏直接影响到整个电气设备的整体安装水平, 在进行变压器电缆的敷设、接线及通道安装过程中, 还需注意相关电缆桥架的安装以及防火工作, 以确保施工的顺利进行。

在电缆通道的安装前, 需要对敷设程序和路径进行充分审核, 一定要保证设计深度达到指定要求后才可进行安装施工。安装时需严格按照安装工程设计标准来确定托架与支吊架的固定方式, 将电缆支架固定牢固, 安装托架、吊架时可将桥架作为参照物, 保证偏差在10mm以内, 桥架上的连接板螺栓要固定牢, 如果直线段钢制电缆桥架超过30m, 可以采用伸缩连接板进行连接。此外, 伸缩缝的设置可以起到电缆桥架跨越建筑物的目的。在设置电缆支架时要确保接地良好, 尽量使用热镀锌钢管作为电缆导管, 在使用热镀锌钢管前需要对镀层厚度与镀层质量进行严格检验。

4 接地装置的施工分析

变压器的接地:分为工作接地和保护接地两种。其中工作接地是指由于工作时系统的要求需要进行的接地;而保护接地是指出于安全的原因设置的接地, 是为了防止设备绝缘损坏时, 设备外壳带上过高的电压而设置的。

在进行接地施工前, 先要确定接地装置是否满足相关的工程设计标准与要求, 应保证接地体之间的距离在5m以上, 其与建筑物之间的距离保证在1.5m以上, 在进行焊接连接操作前要保证焊接表面无铁锈和污染物。

5 结语

近年来我国电力施工规模不断扩大, 随着科学技术水平的不断提高, 电力施工的整体施工工艺也发生了很大的变化, 而变压器作为变电站的重要设备, 其安装质量直接影响到变电站后续的工作质量, 可以说是变电站电气施工中最为重要的一个环节。随着科研工作者对电气施工工艺的不断改进, 施工质量将会得到进一步的提升, 为后续变电站的运营带来更大的经济效益和社会效益。

摘要:110kV变电作为电力系统中常见的变电类型在国民经济的建设中发挥着巨大的作用。本研究详细介绍了110kV变电站的电力施工技术以及相关注意事项, 为相关电力建设企业提供一定的指导方向。

关键词:110kV变电站,电力施工,注意事项

参考文献

[1]李晓江.电力施工技术分析[J].中国新技术新产品, 2010, (08) :18-19.

篇4:rman对特定表空间迁移技术

【关键词】母语负迁移 空间介词 对策

上世纪60年代,斯金纳在对第二语言习得的研究中认为,学习者要对第一语言系统所带来的影响要进行克服,并慢慢地习惯用第二语言特质来取代第一语言特质,从而使学习者的目标语的语言能力接近本族语学习者的语言水平。

在外语学习过程中,母语对学习者要习得的第二语言所产生的影响称之为语言迁移。当母语的语言系统与第二语言系统有着相似特征的时候,第一语言知识系统会对第二语言的习得起积极的促进作用,这个过程称之为母语的正迁移。反之,当母语和第二语言差异很大的时候,第一语言就会对第二语的习得产生干扰,学习者在学习过程中就会犯错误,这就是母语的负迁移。

对于空间介词的使用,学习者对于英语空间介词的使用存在着母语的负迁移现象。下面我们就具体分析在汉译英中母语对空间介词的负迁移现象。

一、汉语空间介词与英语空间介词的差异

汉语“上/ 下”范畴的空间系统与英语中的上下空间系统有着明显的不同。关于“在…上”的英语空间介词有above,over和on,在…下有under和below,这五个英语空间介词与汉语中的表示在…上 和在…下空间概念词至少存在以下三点不同。

1.两种语言对空间关系的认知不一样: 英语使用above /below 来表达一个物体在另一个物体的上/下,而这两个物体是有一定距离,没有接触的,而汉语表达这种上下关系时只用在…上或在…下,在理解和翻译时我们会用“距离”或“在…上空”,不会像英语那样用这种空间概念的词来表示。

(1) A.We flew above the clouds.

B.我们在云的上方飞。

(2) A.Water was found about three feet below the surface.

B.距离表面3英尺的地方发现了水。

(1B) 使用“上空”一词表达了英语例句(1A)中we 和clouds之间的距离关系,但( 1A)英语句中却使用了空间介词above/over。( 2A)和( 2B) 的使用了“距离”这个词来表述水与表面之间的关系。

2.在描述空间关系时英语所附带的信息量要比汉语的所附带的信息量大。在英语中,当一物高于或低于另一物时,并且两者距离十分接近或可以发生接触时,会选择over 表示在…上和under表示在… 下;但是一物高于或低于另一物时并且两者存在一定距离且较远时,英语会选择above表示在…上方,用below表示在…下方,而汉语中基本不会有这么多的介词表示两者之间的接触与否的关系。

3.描述某种空间关系时,对物体的概念化方式不同: 汉语的概念化方式较笼统,而英语较具体。同样在英语中表示在…下时,英语会有不同的介词表示,而汉语却没有这么多的介词来表示。

(3)A.The dog is lying under the table.

B.狗在桌下趟着。

(4) A.they are reading in the sun.

B.他们在太阳底下读书。

(5) A.The village is at the foot of the mountain.

B.这个村庄位于山脚下。

在例( 3-5) 中汉语的在…下英语分别使用了in,under,at 三个介词。

二、对策

1.发挥母语正迁移作用,克服母语负迁移影响。当学习者在学习另一门语言时,他的大脑里不是一片空白,而是有母语的知识系统,这种知识系统会对第二语言的习得产生正负迁移 。学习者不应简简单单地看待母语迁移,我们在承认母语负迁移存在的时候,还要正确看待它的正迁移作用,并且要充分发挥其正迁移作用来帮助学习者快捷地习得英语空间介词,并能准确地使用空间介词来表达正确的英语意思。

2.采用灵活的教学方法。对于空间介词的讲授,外语教师可以采取灵活的教学方法。当教师在黑板上写出介词的不同内涵和差异时,学习者只能靠想象来理解这些词的使用,如果教师配上实物来展示这些物与物之间的距离关系,学习者就会比较直观地了解这些词的使用,如果用多媒体,教师就可以配上声音、动画来刺激学生的各个感官来习得英语的空间介词。

英语空间介词与汉语空间在认知系统、所承载的信息量和概念化方式存在差异,因此对于母语是汉语的学习者来说,母语对于英语的介词习得存在负迁移,学习者在使用这些空间介词时首先要了解每个介词所表达的空间概念,克服母语带来的负迁移影响,这样才能更好更准确地使用英语空间介词。

参考文献:

[1]Bowerman, M.1999.Learning how to structure space for language: Across linguistic perspective [A].In Bloom et al.(eds.) .Language and Space [C].London: MTT Press, 385-436.

[2]李佳,蔡金亭.认知语言学角度的英语空间介词习得研究 [J].现代外语.2008(31),2,P185-P193.

篇5:功能 对特定语言进行检查

 

实用功能 对特定语言进行检查

 

①从“工具”菜单中选择“语言→设置语言”命令。

篇6:可传输表空间

对于可传输表空间有一个重要概念:自包含(Self-Contained),

在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集。自包含分为两种:一般自包含表空间集和完全(严格)自包含表空间集。

常见的以下情况是违反自包含原则的:

 索引在内部表空间集,而表在外部表空间集(相反地,如果表在内部表空间集,而索引在外部表空间集,则不违反自包含原则)。

 分区表一部分区在内部表空间集,一部分在外部表空间集(对于分区表,要么全部包含在内部表空间集中,要么全不包含)。

 如果在传输表空间时同时传输约束,则对于引用完整性约束,约束指向的表在外部表空间集,则违反自包含约束;如果不传输约束,则与约束指向无关。

 表在内部表空间集,而lob列在外部表空间集,则违反自包含约束。

通常可以通过系统包DBMS_TTS来检查表空间是否自包含,验证可以以两种方式执行:非严格方式和严格方式。

以下是一个简单的验证过程,假定在eygle表空间存在一个表eygle,其上存在索引存储在USERS表空间:

SQL> create table eygle as select rownum id ,username from dba_users;

Table created.

SQL> create index ind_id on eygle(id) tablespace users;

Index created.

以SYS用户执行非严格自包含检查(full_check=false):

SQL> connect / as sysdba

Connected.

SQL> exec dbms_tts.transport_set_check(‘EYGLE‘, TRUE);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

执行严格自包含检查(full_check=true):

SQL> exec dbms_tts.transport_set_check(‘EYGLE‘, TRUE, True);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

--------------------------------------------------------------------------------------

Index EYGLE.IND_ID in tablespace USERS points to table EYGLE.EYGLE in tablespace EYGLE

反过来对于USERS表空间来说,非严格检查也是无法通过的:

SQL> exec dbms_tts.transport_set_check(‘USERS‘, TRUE);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

----------------------------------------------------------------------------------------

Index EYGLE.IND_ID in tablespace USERS points to table EYGLE.EYGLE in tablespace EYGLE

但是可以对多个表空间同时传输,则一些自包含问题就可以得到解决:

SQL> exec dbms_tts.transport_set_check(‘USERS,EYGLE‘, TRUE, True);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

官方解释如下:

There may be logical or physical dependencies between objects in the transportable set and those outside of the set. You can only transport a set of tablespaces that is self-contained. In this context “self-contained” means that there are no references from inside the set of tablespaces pointing outside of the tablespaces. Some examples of self contained tablespace violations are:

An index inside the set of tablespaces is for a table outside of the set of tablespaces.

Note:

It is not a violation if a corresponding index for a table is outside of the set of tablespaces.

A partitioned table is partially contained in the set of tablespaces.

The tablespace set you want to copy must contain either all partitions of a partitioned table, or none of the partitions of a partitioned table. If you want to transport a subset of a partition table, you must exchange the partitions into tables.

A referential integrity constraint points to a table across a set boundary.

When transporting a set of tablespaces, you can choose to include referential integrity constraints. However, doing so can affect whether or not a set of tablespaces is self-contained. If you decide not to transport constraints, then the constraints are not considered as pointers.

A table inside the set of tablespaces contains a LOB column that points to LOBs outside the set of tablespaces.

An XML DB schema (*.xsd) that was registered by user A imports a global schema that was registered by user B, and the following is true: the default tablespace for user A is tablespace A, the default tablespace for user B is tablespace B, and only tablespace A is included in the set of tablespaces.

To determine whether a set of tablespaces is self-contained, you can invoke the TRANSPORT_SET_CHECK procedure in the Oracle supplied package DBMS_TTS. You must have been granted the EXECUTE_CATALOG_ROLE role (initially signed to SYS) to execute this procedure.

When you invoke the DBMS_TTS package, you specify the list of tablespaces in the transportable set to be checked for self containment. You can optionally specify if constraints must be included. For strict or full containment, you must additionally set the TTS_FULL_CHECK parameter to TRUE.

The strict or full containment check is for cases that require capturing not only references going outside the transportable set, but also those coming into the set. Tablespace Point-in-Time Recovery (TSPITR) is one such case where dependent objects must be fully contained or fully outside the transportable set.

For example, it is a violation to perform. TSPITR on a tablespace containing a table t but not its index i because the index and data will be inconsistent after the transport. A full containment check ensures that there are no dependencies going outside or coming into the transportable set. See the example for TSPITR in the Oracle Database Backup and Recovery User‘s Guide.

incl_constraints

TRUE if you want to count in referential integrity constraints when examining if the set of tablespaces is self-contained. (Theincl_constraints parameter is a default so that TRANSPORT_SET_CHECK will work if it is called with only the ts_list argument.)

full_check

Indicates whether a full or partial dependency check is required. If TRUE, treats all IN and OUT pointers (dependencies) and captures them as violations if they are not self-contained in the transportable set. The parameter should be set to TRUE for TSPITR or if a strict version of transportable is desired. By default the parameter is set to false. It will only consider OUT pointers as violations.

1.3.5可传输表空间

在很多Oracle文档中,可能大家都注意过Oracle用来进行测试的一个表空间,这个表空间中有一系列预置的用户和数据,可以用于数据库或BI的很多测试实验。

这个表空间在使用模板建库时是可以选择的,在如图1-22所示的这个界面中,可以选择建库时包含这个范例表空间(缺省是未选择的)。

vcWxvr2ru+HT0Mv5uMSx5KOs1vfSqtT2vNPBy8jnz8LT777ko7o8L3A+CjwvYmxvY2txdW90ZT4KPGJsb2NrcXVvdGU+CmNvbm5lY3QgJnF1b3Q7U1lTJnF1b3Q7LyZxdW90OyZhbXA7JmFtcDtzeXNQYXNzd29yZCZxdW90OyBhcyBTWVNEQkE8YnI+CkBDOlxvcmFjbGVcMTAuMi4wXGRlbW9cc2NoZW1hXG1rcGx1Zy5zcWwgJmFtcDsmYW1wO3N5c1Bhc3N3b3JkIGNoYW5nZV9vbl9pbnN0YWxsIGNoYW5nZV9vbl9pbnN0YWxsIDxicj4KY2hhbmdlX29uX2luc3RhbGwgY2hhbmdlX29uX2luc3RhbGwgY2hhbmdlX29uX2luc3RhbGwgY2hhbmdlX29uX2luc3RhbGwgQzpcb3JhY2xlXDEwLjIuMFxhc3Npc3RhbnRzXGRiY2FcdGVtcGxhdGVzXGV4YW1wbGUuZG1wIEM6XG9yYWNsZVwxMC4yLjBcYXNzaXN0YW50c1xkYmNhXHRlbXBsYXRlc1xleGFtcGxlMDEuZGZiIEM6XG9yYWNsZVxvcmFkYXRhXGV5Z2xlXGV4YW1wbGUwMS5kYmYgQzpcb3JhY2xlXGFkbWluXGV5Z2xlXHNjcmlwdHNcICZxdW90Ow==“SYS/&&sysPassword as SYSDBA‘”;

看到这里,再次引用了模板目录中的文件:

C:>dir C:oracle10.2.0assistantsdbcatemplatesex*

驱动器 C 中的卷是 SYSTEM

卷的序列号是 8C88-D1B4

C:oracle10.2.0assistantsdbcatemplates 的目录

-09-07 13:02 983,040 example.dmp

2005-09-07 13:02 20,897,792 example01.dfb

2 个文件 21,880,832 字节

0 个目录 915,578,880 可用字节

通过mkplug.sql脚本来加载这个范例表空间,来看一下这个脚本的主要内容,

电脑资料

同样,最重要的是通过dbms_backup_restore包从example01.dfb文件中恢复数据文件:

SELECT TO_CHAR(systimestamp, ‘YYYYMMDD HH:MI:SS‘) FROM dual;

variable new_datafile varchar2(512)

declare

done boolean;

v_db_create_file_dest VARCHAR2(512);

devicename varchar2(255);

data_file_id number;

rec_id number;

stamp number;

resetlogs_change number;

creation_change number;

checkpoint_change number;

blksize number;

omfname varchar2(512);

real_file_name varchar2(512);

begin

dbms_output.put_line(‘ ‘);

dbms_output.put_line(‘ Allocating device.... ‘);

dbms_output.put_line(‘ Specifying datafiles... ‘);

devicename := dbms_backup_restore.deviceAllocate;

dbms_output.put_line(‘ Specifing datafiles... ‘);

SELECT MAX(file_id)+1 INTO data_file_id FROM dba_data_files;

SELECT value INTO v_db_create_file_dest FROM v$parameter WHERE name =‘db_create_file_dest‘;

IF v_db_create_file_dest IS NOT NULL

THEN

dbms_backup_restore.restoreSetDataFile;

dbms_backup_restore.getOMFFileName(‘EXAMPLE‘,omfname);

dbms_backup_restore.restoreDataFileTo(data_file_id, omfname, 0,‘EXAMPLE‘);

ELSE

dbms_backup_restore.restoreSetDataFile;

dbms_backup_restore.restoreDataFileTo(data_file_id,‘&data_file_name‘);

END IF;

dbms_output.put_line(‘ Restoring ... ‘);

dbms_backup_restore.restoreBackupPiece(‘&data_file_backup‘, done);

SELECT max(recid) INTO rec_id FROM v$datafile_copy;

-- Now get the real file name. It could be also OMF filename

SELECT name, stamp, resetlogs_change#, creation_change#, checkpoint_change#,block_size

INTO real_file_name, stamp,resetlogs_change, creation_change, checkpoint_change, blksize

FROM V$DATAFILE_COPY

WHERE recid = rec_id and file# = data_file_id;

-- Uncatalog the file from V$DATAFILE_COPY. This important.

dbms_backup_restore.deleteDataFileCopy(recid => rec_id,

stamp => stamp,

fname => real_file_name,

dfnumber => data_file_id,

resetlogs_change => resetlogs_change,

creation_change => creation_change,

checkpoint_change => checkpoint_change,

blksize => blksize,

no_delete => 1,

force => 1);

-- Set the bindvariable to the real filename

:new_datafile := real_file_name;

if done then

dbms_output.put_line(‘ Restore done.‘);

else

dbms_output.put_line(‘ ORA-XXXX: Restore failed ‘);

end if;

end;

/

这个恢复完成之后,接下来最重要的部分就是通过传输表空间技术将example表空间导入到当前的数据库。

考虑一下这种情况,当进行跨数据库迁移时,需要将一个用户表空间中的数据迁移到另外一个数据库,应该使用什么样的方法呢?最常规的做法可能是通过EXP工具将数据全部导出,然后在目标数据库上IMP导入,可是这种方法可能会比较缓慢。EXP工具同时还提供另外一种技术-可传输表空间技术,可以用于加快这个过程。

在exp -help的帮助中,可以看到这样一个参数:

TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)

通过这个选项,我们可以对一组自包含、只读的表空间只导出元数据,然后在操作系统层将这些表空间的数据文件拷贝至目标平台,并将元数据导入数据字典(这个过程称为插入,plugging),即完成迁移。

对于可传输表空间有一个重要概念:自包含(Self-Contained)。

在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集。自包含分为两种:一般自包含表空间集和完全(严格)自包含表空间集。

常见的以下情况是违反自包含原则的:

 索引在内部表空间集,而表在外部表空间集(相反地,如果表在内部表空间集,而索引在外部表空间集,则不违反自包含原则)。

 分区表一部分区在内部表空间集,一部分在外部表空间集(对于分区表,要么全部包含在内部表空间集中,要么全不包含)。

 如果在传输表空间时同时传输约束,则对于引用完整性约束,约束指向的表在外部表空间集,则违反自包含约束;如果不传输约束,则与约束指向无关。

 表在内部表空间集,而lob列在外部表空间集,则违反自包含约束。

通常可以通过系统包DBMS_TTS来检查表空间是否自包含,验证可以以两种方式执行:非严格方式和严格方式。

以下是一个简单的验证过程,假定在eygle表空间存在一个表eygle,其上存在索引存储在USERS表空间:

SQL> create table eygle as select rownum id ,username from dba_users;

Table created.

SQL> create index ind_id on eygle(id) tablespace users;

Index created.

以SYS用户执行非严格自包含检查(full_check=false):

SQL> connect / as sysdba

Connected.

SQL> exec dbms_tts.transport_set_check(‘EYGLE‘, TRUE);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

执行严格自包含检查(full_check=true):

SQL> exec dbms_tts.transport_set_check(‘EYGLE‘, TRUE, True);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

--------------------------------------------------------------------------------------

Index EYGLE.IND_ID in tablespace USERS points to table EYGLE.EYGLE in tablespace EYGLE

反过来对于USERS表空间来说,非严格检查也是无法通过的:

SQL> exec dbms_tts.transport_set_check(‘USERS‘, TRUE);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS

----------------------------------------------------------------------------------------

Index EYGLE.IND_ID in tablespace USERS points to table EYGLE.EYGLE in tablespace EYGLE

但是可以对多个表空间同时传输,则一些自包含问题就可以得到解决:

SQL> exec dbms_tts.transport_set_check(‘USERS,EYGLE‘, TRUE, True);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected

表空间自包含确认之后,进行表空间传输就很方便了,一般包含如下几个步骤。

(1) 将表空间设置为只读:

alter tablespace users read only;

(2) 导出表空间。在操作系统提示符下执行:

exp username/passwd tablespaces=users transport_tablespace=y file=exp_users.dmp

此处的导出文件只包含元数据,所以导出文件很小,导出速度也会很快。

(3) 转移。将导出的元数据文件(此处是exp_users.dmp)和传输表空间的数据文件(此处是users表空间的数据文件user01.dbf)转移至目标主机(转移过程如果使用FTP方式,应该注意使用二进制方式)。

(4) 传输。在目标数据库将表空间插入到数据库中,完成表空间传输。在操作系统命令提示符下执行下面的语句:

imp username/passwd tablespaces=users transport_tablespace=y file=exp_users.dmp datafiles=‘users01.dbf‘

了解了Oracle的可传输表空间技术后,来看一下example表空间的插入,以下脚本仍然来自mkplug.sql脚本:

--

-- Importing the metadata and plugging in the tablespace at the same

-- time, using the restored database file

--

DEFINE imp_logfile = &log_path.tts_example_imp.log

-- When importing use filename got after restore is finished

host imp “‘sys/&&password_sys AS SYSDBA‘” transport_tablespace=y file=&imp_file log=&imp_logfile datafiles=‘&datafile‘ tablespaces=EXAMPLE tts_owners=hr,oe,pm,ix,sh

篇7:恢复Oracle表空间的方法

Oracle表空间恢复方案

一。用户表空间

错误:

在启动数据库时出现ora-01157,ora-01110或操作系统级错误例如ora-07360, 在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ora -01116,ora-01110以及操作系统级错误ora-07368

以下有两种解决方案:

1.用户的表空间可以被轻易地重建 即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等。在 这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并 重建表空间以及所有的对象。

svrmgrl> startup mount

svrmgrl> alter database datafile filename offline drop;

svrmgrl> alter database open;

svrmgrl> drop tablespace tablespace_name including contents;

重建表空间及所有对象。

2.用户的表空间不能够被轻易地重建在大多数情况下,重建表空间是不可能及太辛苦的工作。方法是倒备份及做介质恢复。如果您的系统运行在noarchivelog模式下,则只有丢失的数据 在online redo log中方可被恢复。

步骤如下:

1)restore the lost datafile from a backup

2)svrmgrl> startup mount

3)svrmgrl> select v1.group#,member,sequence#,first_change# > from v$log v1,v$logfile v2 > where v1.group#=v2.group#;

4)如果数据库运行在noarchivelog模式下则: svrmgrl> select file#,change# from v$recover_file;

如果 change# 大于最小的first_change#则数据文件可以被恢复。 如果 change# 小于最小的first_change#则数据文件不可恢复。 恢复最近一次的全备份或采用方案一。

5)svrmgrl> recover datafile filename;

6)确认Oracle表空间恢复成功

7)svrmgrl> alter database open resetlogs;

3.只读表空间无需做介质恢复,只要将备份恢复即可。唯一的例外是:

表空间在最后一次备份后被改为read-write 模式

表空间在最后一次备份后被改为read-only 模式

在这种情况下,均需进行介质恢复

二。临时表空间

临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可,

三。系统表空间

如果备份不可用,则只能采用重建数据库的方法

四。回滚表空间

有两种情况:

1、数据库已经完全关闭(使用shutdown immediate或shutdown命令)

1) 确认数据库完全关闭

2) 修改init.ora文件,注释“rollback-segment”

3) svrmgrl> startup restrict mount

4) svrmgrl> alter database datafile filename offline drop;

5) svrmgrl> alter database open;

基于出现的结果:

“statement processed”

“ora-00604,ora-00376,ora-01110”

6) svrmgrl> shutdown immediate 修改init.ora文件,增加如下一行: _corrupted_rollback_segments = (,…) svrmgrl> startup restrict

7) svrmgrl> drop tablespace tablespace_name including contents;

8) 重建表空间及回滚段

9) svrmgrl> alter system disable restricted session;

10) 修改init.ora文件

2、数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库)

1) Oracle表空间恢复备份

2) svrmgrl> startup mount

3) svrmgrl> select file#,name,status from v$datafile; svrmgrl> alter database datafile filename online;

4) svrmgrl> select v1.group#,member,sequence#,first_change# > from v$log v1,v$logfile v2 > where v1.group#=v2.group#;

5) svrmgrl> select file#,change# from v$recover_file;

6) svrmgrl> recover datafile filename;

7) svrmgrl> alter database open;

3、数据库处于打开状态

1) 删除回滚段和表空间

2) 重建表空间和回滚段

五。控制文件恢复

1.所有的控制文件均被破坏

将备份的控制文件拷贝至原目录下 对于raw device,则:

dd if=con.bak f=/dev/rdrd/drd1 seek=128

2.并非所有的控制文件均被破坏

篇8:rman对特定表空间迁移技术

质检总局共抽查了45家企业生产的60批次仿真饰品, 包括戒指、手链、项链、吊坠、手镯、耳环、发饰等7类, 检验镍释放量、铅含量、砷含量、镉含量、铬 (六价) 含量, 结果查出了9批次不合格产品, 不合格品检出率为15%。而45家生产企业中, 3家大中型企业的产品全部合格, 42家小型企业的不合格产品检出率为16.1%。

据质检总局介绍, 抽查发现的突出质量问题是铅含量、镉含量和镍释放量不合格, 9批次不合格品中, 有7批次铅含量不合格, 4批次产品镉含量不合格, 2批次产品镍释放量超标, 包括“酷猫饰品”耳环、“蓝蝴蝶”耳环项链等。仿真饰品在佩戴过程中, 镍、镉、铅等有害重金属有可能随汗液溶出, 经皮肤吸收进入人体, 长期接触可能会造成伤害。铅、镉和镍释放量超标的主要原因是生产企业为降低制造成本, 滥用有害元素含量高的劣质金属或废旧金属作为原料。

国家质检总局同时还宣布, 儿童用品作为重要的日用消费品, 即日起到今年5月开展儿童用品质量安全监督检查专项行动, 主要针对童装、童鞋、童车、玩具、儿童家具、儿童安全坐椅、婴幼儿纸尿裤、婴幼儿奶瓶这8种儿童用品。

篇9:rman对特定表空间迁移技术

例如: 用户名: test 密码:test 全局数据库名:joyo

开始-运行-cmd 输入 exp test/test@joyo file=d:back.dmp full=y 其中back备份的名,可以任意起,后缀一定是.dmp的

Oracle还原

例如:要还要的用户名为:apple 密码:apple 开始-运行-cmd 输入 imp apple/apple@joyo file=d:back.dmp full=y

还原的用户建立

1.建表格

在建立用户前先建立用户使用的表格

在 oracle Enterprise Manage Console的存储下建立表空间 打开oracle Enterprise Manage Console

输入要建立的表空间名字 如 test 大小 输入100 M 表格可以自已任意起名字

点创建 创建表格

点中创建的表格test下的数据文件的信息

选择 存储

选中数据文件已满后自动扩展

100MB

点应用

表格创建成功

2.建用户

在 oracle Enterprise Manage Console的安全性下建立用户 打开oracle Enterprise Manage Console

输入用户名

如hong 密码hong 默认值选刚建的表空间test 用户可以自已任意起名字

角色选DBA

篇10:rman对特定表空间迁移技术

试验目的:全面掌握表空间和数据文件的创建、管理过程 试验内容:

1、创建表空间、增加数据文件

2、管理表空间和数据文件的的各种操作 试验步骤:

1、掌握表空间和数据文件相关的概念

1)oracle默认的表空间

系统默认的表空间:SYSTEM、SYSAUX、UNDOTBS1、EMP、EXAMPLE、USERS 2)系统表空间

SYSTEM、SYSAUX是系统表空间,SYSTEM用于存放oracle数据字典的结构和内部元数据。

SYSAUX是SYSTEM的辅助表空间用于存放个模式(用户)的对象元数据。

3)非系统表空间

由DBA根据需要创建,存放用户自己的数据,也可以包含临时数据以及UNDO数据。

2、创建表空间

1)创建表空间的语法

CREATE [smallfile|bigfile] TABLESPACE tablespace_name DATAFILE ‘/path/filename’ SIZE [k|m] REUSE

[‘/path/filename’ SIZE [k|m] REUSE]

[AUTOEXTEND [ON|OFF] NEXT [k|m] MAXSIZE [UNLIMITED|[K|M]]] [ONLINE|OFFLINE] [LOGGING|NOLOGGING] [PERMANENT|TEMPORARY] [DICTIONARY|LOCAL]

2)定义表空间名字及属性

创建两个表空间ts_test1、ts_test2,本地化管理(Local,默认)、永久表空间(permantent,默认)

3)定义数据文件名字、路径、初始大小、自动扩展等属性

数据文件data_test1、data_test2 路径:c:disk1data_test1.dbf c:disk2data_test2

4)创建脚本:

a、创建本地永久表空间

//创建本地永久表空间ts_test1和ts_test2,默认为永久和本地

SQL>create tablespace ts_test1 datafile ‘c:disk1data_file1.dbf’ size=50m reuse autoextend on next 10m;

SQL>create tablespace ts_test2 datafile ‘c:disk2data_file2.dbf’ size=50m reuse autoextend on next 10m maxsize unlimited;查看一下创建完成的结果

//查看dba_tablespaces结构

SQL>desc dba_tablespaces;

//查看字典中的所有表空间情况,extent_management值为local时为本地表空间 SQL>select tablespace_name,status,extent_management,content from dba_tablespaces;//查看创建表空间时创建的数据文件,首先查看dba_data_files字典结构 SQL>desc dba_data_files;//查看数据文件情况 SQL>set linesize 120 SQL>col file_name for a20 SQL>col file_id for a20 SQL>col tablespace_name a30 SQL>col online_status for a20 SQL>select file_name,file_id,tablespace_name,online_status from dba_data_files;

b、创建还原表空间和临时表空间

//创建还原表空间

SQL>create undo tablespace test_undo datafile ‘c:disk3test_undo’ size 20m;

//查看创建结果,contents为表空间内容类型,如undo

SQL>select tablespace_name,contents from dba_tablespaces;

c、创建临时表空间

//创建临时表空间

SQL>create temporary tablespace test_temp

tempfile ‘c:disk4test_temp.dbf’ size 20m extent management local;

//查询创建结果

SQL>select tablespace_name,extent_management,contents from dba_tablespaces;d、增加数据文件

//增加数据文件

SQL>alter tablespace ts_test1 add datafile ‘c:disk1ts_test11.dbf’ size 10m;

//查看增加数据文件的结果

SQL>col file_name for a30

SQL>col tablespace_name for a30 SQL>select file_name,tablespace_name from dba_data_files;

3、管理表空间的各种操作

1)改变表空间的读写状态

//将表空间设为只读

//这时表空间应为online状态,表空间不能包含回滚段,不能是归档模式

//查看数据库日志模式

SQL>archive log list;//查看表空间contents

SQL>select tablespace_name,contents from dba_tablespaces where tablespace_name like‘TS_%’;

//修改为只读

SQL>alter tablespace ts_test1 read only;2)表空间脱机离线、在线连接

SQL>alter tablespace ts_test1 offline;

SQL>alter tablespace ts_test1 online;

//查看表空间状态

SQL>select tablespace_name,status from dba_tablespaces;3)修改表空间名称 //查询当前表空间名称和所包含的数据文件

SQL>select file_name,tablespace_name from dba_data_files;//确认表空间处在online状态

SQL>select tablespace_name,status from dba_tablespaces;//表空间改名

SQL>alter tablespace ts_test2 rename to ts_test22;//查询修改结果

SQL>Col file_name for a30;SQL>col tablespace_name for a30;SQL>select file_name,tablespace_name from dba_data_files;4)设置默认表空间

SQL>alter database default tablespace users //设置默认临时表空间

SQL>alter database default temporary tablespace temp;5)删除表空间

SQL>drop tablespace ts_test2;//仅删除表空间信息不删除表空间数据文件 SQL>drop tablespace ts_test2 includng contents;//包括数据文件全部删除 查看删除后的结果情况

SQL>select file_name,tablespace_name from dba_data_files;6)切换undo表空间

SQL>alter system set undo_tablespace =undotbs02;7)删除undo表空间

要删除正在使用的undo表空间,首先切换undo表空间后在进行删除 例如删除undost01 SQL>alter system set undo_tablespace=undost02;SQL>drop tablespace undost01;8)查询undo表空间信息

SQL>show parameter undo_tablespace;

4、管理数据文件的各种操作 1)在表空间中新增一个数据文件

SQL>alter tablespace ts_test1 add datafile ‘c:dsk1ta_test111.dbf’ size 50m;2)删除表空间中无数据的数据文件 第一种语法

SQL>alter database datafile ‘c:disk1ts_test1.dbf’ offline;//数据文件脱机 SQL>alter tablespace ts_test1 drop datafile ‘c:disk1ts_test111.dbf’;第二种语法:

SQL>alter database datafile ‘mytb.dbf’ offline drop;3)数据文件自动扩展设置

SQL>alter tablespace ts_test1 datafile ‘c:disk1ts_test1.dbf’ autoextend on next 10m maxsize 500m;4)重置数据文件大小,收回或扩数据文件空间

SQL>alter tablespace ts_test1 datafile ‘c:disk1ts_test1.dbf’ resize 45m;

查询重置数据文件大小后的结果

SQL>col file_name for a30;

SQL>col tablespace_name for a30;

SQL>select file_name,tablespace_name,bytes/(1024*1024)from dba_data_files;5)移动数据文件

有两条语句可以实现对数据文件的移动:

a、alter tablespace tablespace_name rename datafile ‘/path/file_name1’

to ‘/path/file_name_new’;

a这条语句主要适合用户表空间,在执行这条语句时表空间必须脱机才能执行。SQL>alter tablesapace ts_test2 offline;//使表空间ts_test2脱机

SQL>host copy c:disk2ts_test2.dbf c:disk1 //将数据文件拷贝到新的位置

SQL>alter tablespace rename datafile ‘c:disk2ts_test2.dbf’ to ‘c:disk1ts_test1.dbf’;b、alter database db_name rename file ‘/path/file_name1’ to ‘/path/file_name_new’;

这条语句使用于系统表空间及不能置为脱机的表空间中的数据文件。在使用该语句时,数据库必须在加载(mount)的状态且目标数据文件必须存在,因为该语句只是修改文件中指向数据文件的指针(地址)。SQL>shutdown immediate;SQL>host copy c:oracleproduct10.2.0oradatasystem01.dbf c:disk1 SQL>startup mount;SQL>alter database rename file ‘c:oracleproduct10.2.0oradataorclsystem01.dbf’ to ‘c:disk1system01.dbf’;SQL>alter database open;查询移动后的结果

上一篇:在工会培训班上的讲话下一篇:高三物理培优补差工作计划

本站热搜