- 浏览: 1103829 次
- 性别:
- 来自: 南京
-
博客专栏
-
-
Oracle管理和开发
浏览量:354649
最新评论
-
Simon.Ezer:
请问对于“如果非主键字段值发生改变,则不会同步过去”这种情况, ...
创建增量同步Oracle物化视图问题 -
dahai639:
挺好的,支持一下
Oracle的pipelined函数实现高性能大数据处理 -
zealotpz:
不错,原来是用户oracle 的所属组的问题
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 -
mikixiyou:
zhangyuslam 写道如果担心全局索引失效,可以使用如下 ...
Oracle分区表的分区交互技术实现数据快速转移 -
sea0108:
...
Oracle sql loader使用速成
将Oracle 数据库中某个用户迁移到另外一个库上,迁移的数据量大小约 120GB 。如果采用 expdp 导出的话时间会很长,再加上导出的 DMP 文件拷贝和 impdp 导入数据的时间,不能满足要求。
这里采用 RMAN 的 CONVERT 功能和 exp/expdp 的 transport_tablespace 的功能。前者将用户所在的表空间的数据文件从一个数据库所在的系统平台中拷贝到另外一个数据库系统上,后者将表空间对应的 metadata 数据拷贝出来。
测试过程虽然顺利,但最后想到一个问题, rman 中的 catalog 记录的 copy 的文件已经被数据库实例占用的情况下,该记录如何删除掉?
后来想到 rman convert 方法,它将文件系统文件拷贝到 ASM 磁盘组,不在 catalog 中留记录。同时,这个方法免去了文件名称修改的操作,更简洁高效。
使用 convert 可以实现跨平台的数据迁移,这点在环境复杂的项目中非常有用。
首先,介绍一下环境。
源库是 redhat linux as 5 ,单数据库实例,文件系统格式保存数据文件,数据库版本为 10.2.0.4 。
目标库是 redhat linux as 5 ,两节点的 RAC , ASM 格式保存数据文件,数据库版本为 10.2.0.4 。
可以使用 SELECT * FROM V$TRANSPORTABLE_PLATFORM; 检查这个版本上的表空间是否支持传输。结果当然是支持的。
其次,了解迁移的表空间和数据对象。
根据 dba_segments 查询到用户使用的哪些表空间,好决定要迁移的表空间。
在表空间确定了以后,如这里是 xxyy 。需要再根据表空间的 segment 都是哪些用户,如果不仅仅是要迁移的用户,还要将新的用户也找出来。
在目标库上提前将这些用户创建好。
这是因为我们采用的是表空间传输迁移数据,所以难免会有多的对象被迁移。根据实际情况权衡,决定是清理源头还是全部迁移。
表空间的 segment 的类型需要先分析一下。对于分区表、 IOT 表、 XMLType 对象等等不常见的,要先想想能不能用它迁移,这是第一点。
还有两点:一,目标库和源库的字符集要一致,否则请测试该方案;二、目标库不能有同名的表空间。
最后,开始正式迁移操作,步骤如下:
第一步,准备工作
校验表空间是否 self contained (注:不知道如何翻译,原文输出)
SQL> execute sys.dbms_tts.transport_set_check('XXYY', true);
SQL> select * from sys.transport_set_violations;
如果有记录,必须处理。
将表空间设置为只读状态。这点好理解,开始迁移了,就不能再写入数据到表空间了。
SQL> ALTER TABLESPACE XXYY READ ONLY;
第二步,使用 exp 导出表空间所有对象的 metadata
exp userid=\'sys/sys as sysdba\' file=tbs_exp.dmp log=tba_exp.log transport_tablespace=y tablespaces=XXYY
第三步,使用 rman 的 convert 将表空间的数据文件拷贝到文件系统上。
确定文件系统的平台名称
SQL> SELECT tp.platform_id,substr(d.PLATFORM_NAME,1,30), ENDIAN_FORMAT
2 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
3 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
PLATFORM_ID SUBSTR(D.PLATFORM_NAME,1,30)
----------- ------------------------------------------------------------
ENDIAN_FORMAT
--------------
13 Linux x86 64-bit
Little
根据平台名称,拷贝出文件名称。
convert tablespace xxyy to platform="Linux x86 64-bit" FORMAT '/u01/oradata/servdb/%U';
测试操作过程如下
[oracle@xxtradedb1 servdb]$ rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Wed Apr 18 13:13:04 2012
Copyrigxx (c) 1982, 2007, Oracle. All rigxxs reserved.
connected to target database: SERVDB (DBID=3658273059)
RMAN> convert tablespace xxyy to platform="Linux x86 64-bit" FORMAT '/u01/oradata/servdb/%U';
Starting backup at 18-APR-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=347 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00035 name=/u01/oradata/servdb/datafile/xxyy01.dbf
^[converted datafile=/u01/oradata/servdb/data_D-SERVDB_I-3658273059_TS-XXYY_FNO-35_e1n8o3nc
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:10:55
Finished backup at 18-APR-12
第四步,将文件拷贝到目标库所在的系统上
这里使用 scp ,也可以使用 ftp ,那样会更快。
第五步,在目标库上建用户,导入数据
imp userid=\'sys/sys as sysdba\' file=tbs_exp.dmp log=tba_imp.log transport_tablespace=y datafiles='/dbbackup/servdb_rman/xxyy01.dbf'
第六步,检查表空间状态和调整表空间为读写
虽然目标库是 RAC ,文件又是保存在 ASM 上,但是也不是不能访问文件系统上的文件。
只是文件系统文件无法共享,所以,只能在一个节点上看到。
/dbbackup/servdb_rman@webdg1=>xxzq1$sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Apr 18 16:39:56 2012
Copyrigxx (c) 1982, 2007, Oracle. All Rigxxs Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> set linesize 300
SQL> col name format a50
SQL> r
1* select file#,name,status from v$datafile
FILE# NAME STATUS
---------- -------------------------------------------------- -------
1 +LOGDG/xxzq/system01.dbf SYSTEM
2 +LOGDG/xxzq/undotbs01.dbf ONLINE
3 +LOGDG/xxzq/sysaux01.dbf ONLINE
4 +LOGDG/xxzq/users01.dbf ONLINE
5 +LOGDG/xxzq/undotbs02.dbf ONLINE
6 +LOGDG/xxzq/tbs_yy01.dbf ONLINE
7 /dbbackup/servdb_rman/xxyy01.dbf ONLINE
7 rows selected.
这个结果表空间的数据在其他实例上也操作了,将导致系统宕机,因为其他实例根本不能读写到这个系统上的文件。
我们正常将是设置为读写状态。这是为了将文件从文件系统上迁移到 ASM 上。
SQL> alter tablespace xxyy read write;
如果不将表空间设置为读写状态,则对此表空间文件的 COPY 将出错。开始我也没设置为读写,所以报错了。
RMAN> backup as copy datafile '/dbbackup/servdb_rman/xxyy01.dbf' format '+LOGDG/xxzq/xxyy01.dbf';
Starting backup at 18-APR-12
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 04/18/2012 16:45:25
RMAN-20201: datafile not found in the recovery catalog
RMAN-06010: error while looking up datafile: /dbbackup/servdb_rman/xxyy01.dbf
RMAN> exit
设置为读写后,正常将数据文件拷贝一份到了 ASM 上。
backup as copy datafile '/dbbackup/servdb_rman/xxyy01.dbf' format '+LOGDG/xxzq/xxyy01.dbf';
第七步,将文件离线,在重命名就可以了。
SQL> alter database datafile '/dbbackup/servdb_rman/xxyy01.dbf' offline;
Database altered.
SQL> alter database rename file '/dbbackup/servdb_rman/xxyy01.dbf' to '+LOGDG/xxzq/xxyy01.dbf';
Database altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+LOGDG/xxzq/system01.dbf
+LOGDG/xxzq/undotbs01.dbf
+LOGDG/xxzq/sysaux01.dbf
+LOGDG/xxzq/users01.dbf
+LOGDG/xxzq/undotbs02.dbf
+LOGDG/xxzq/tbs_yy01.dbf
+LOGDG/xxzq/xxyy01.dbf
7 rows selected.
SQL> alter database datafile 7 online;
alter database datafile 7 online
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '+LOGDG/xxzq/xxyy01.dbf'
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database datafile 7 online;
Database altered.
SQL> exit
迁移实际上到这步就结束了。
但最后想到一个问题。
我们将文件使用 copy 拷贝到了 asm 中,然后让实例使用了。
这时, rman 的 catalog 还是认为这个文件是它的一个拷贝,虽然不能删除,但始终是个芥蒂。
/dbbackup/servdb_rman@webdg1=>xxzq1$rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Wed Apr 18 16:20:36 2012
Copyrigxx (c) 1982, 2007, Oracle. All rigxxs reserved.
connected to target database: XXZQ (DBID=485623294)
RMAN> list copy;
using target database control file instead of recovery catalog
specification does not match any archive log in the recovery catalog
List of Datafile Copies
Key File S Completion Time Ckp SCN Ckp Time Name
------- ---- - --------------- ---------- --------------- ----
3 7 A 18-APR-12 98532714754 18-APR-12 +LOGDG/xxzq/xxyy01.dbf
尝试使用 RMAN 的 switch 作数据文件重命名,但 rman 中还是有这个记录,不能除掉。
RMAN> switch datafile '/dbbackup/servdb_rman/xxyy01.dbf' to copy;
最后,想到一个方法。使用 convert 代替 copy 将数据文件复制到 ASM 中。 convert 操作是不在 catalog 中留记录的。
上面列的操作步骤在第四步之后就进行跳转。
第四步中将文件传输到文件系统中后,使用 rman convert 将文件复制一份到 ASM 磁盘组中。
这个 convert 功能在 rman catalog 中不保留记录,可以实现 ASM 和文件系统的文件相互转移。
方法如下:
convert datafile '/dbbackup/servdb_rman/xxyy01.dbf' format '+LOGDG/xxzq/xxyy01.dbf';
这个文件约 5GB ,所用时间为 35 秒。
RMAN> convert datafile '/dbbackup/servdb_rman/xxyy01.dbf' format '+LOGDG/xxzq/xxyy01.dbf';
Starting backup at 19-APR-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=105 instance=xxzq1 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input filename=/dbbackup/servdb_rman/xxyy01.dbf
converted datafile=+LOGDG/xxzq/xxyy01.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:35
Finished backup at 19-APR-12
第五步,在目标库上建用户,导入数据
imp userid=\'sys/sys as sysdba\' file=tbs_exp.dmp log=tba_imp.log transport_tablespace=y datafiles='+LOGDG/xxzq/xxyy01.dbf'
这个步骤和上述用的差别就是文件名称的差别。
第六步,检查表空间状态和调整表空间为读写
因为数据文件本身就在 ASM 磁盘组上, RAC 的两个节点都能访问得到该文件,所以我们先查查文件状态。
SQL> set linesize 300
SQL> col name format a50
SQL> r
1* select file#,name,status from v$datafile
FILE# NAME STATUS
---------- -------------------------------------------------- -------
1 +LOGDG/xxzq/system01.dbf SYSTEM
2 +LOGDG/xxzq/undotbs01.dbf ONLINE
3 +LOGDG/xxzq/sysaux01.dbf ONLINE
4 +LOGDG/xxzq/users01.dbf ONLINE
5 +LOGDG/xxzq/undotbs02.dbf ONLINE
6 +LOGDG/xxzq/tbs_yy01.dbf ONLINE
7 +LOGDG/xxzq/xxyy01.dbf ONLINE
7 rows selected.
所有文件都是 ONLINE 的状态。
我们将其设置为读写状态,这样用户就可以读写迁移过来的表空间中的所有对象了。
SQL> alter tablespace xxyy read write;
我们回到 RMAN 中,使用 list copy 检查一下文件有没有拷贝记录。
/u01/oracle/home@webdg1=>xxzq1$rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Thu Apr 19 09:46:23 2012
Copyrigxx (c) 1982, 2007, Oracle. All rigxxs reserved.
connected to target database: XXZQ (DBID=485623294)
RMAN> list copy;
using target database control file instead of recovery catalog
specification does not match any archive log in the recovery catalog
结果和我们想的一样,在 rman catalog 中没有任何记录。因此该方法应该是首选。
总结
对已大数据量的迁移工作,使用表空间传输的方法实现是效率比较高的一种方法。
exp/expdp 迁移 metadata , rman convert 迁移数据文件。
他们的联合使用,可以支持跨平台、跨文件系统的迁移,这点在环境复杂的项目中非常有用。
发表评论
-
Oracle分区表的分区交互技术实现数据快速转移
2013-01-22 11:48 14866有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33325在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 13008UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3839在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8727这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5311在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢 ... -
db block gets和consistent gets的分析
2012-12-26 18:09 0在Oracle的文档中有这样一段解释: db block g ... -
创建增量同步Oracle物化视图问题
2012-12-25 14:07 15371我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10813在O racle数据库中,通过v$archived_lo ... -
如何删掉临时表空间的文件
2012-12-18 15:40 0Unlike Oracle datafiles which m ... -
Oracle sql性能诊断暨event 10046和10053使用
2012-12-17 10:24 0早上em grid control监控显示数据库的负载增加,其 ... -
查LOB字段占用的空间大小
2012-12-13 16:00 4607查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4088这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 5019Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4419Oracle的监听器服务注册 ... -
Deleting archivelog on physical standby with RMAN in Oracle 10g
2012-11-28 13:25 0Turns out to be quite easy ... -
to_char将number转成string的小技巧
2012-11-27 14:14 10665很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29353(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1940Oracle的data guard创建完成 ...
相关推荐
实施TTS需要注意的事项:在进行TTS操作时,需要特别关注一些关键信息,比如使用lsvg-o命令查看的VG(Volume Group)信息,使用alter tablespace命令调整表空间大小时的计算单位换算,以及在使用RMAN进行备份和传输时...
基于改进粒子群算法的DG储能选址定容优化模型:解决电力系统时序性问题的可靠程序解决方案,基于改进粒子群算法的DG储能选址定容模型优化解决电力系统问题,DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题。下面我将对程序进行详细分析。 首先,程序开始时加载了一些数据文件,包括gfjl、fljl、fhjl1、cjgs和fhbl。这些文件可能包含了电力系统的各种参数和数据。 接下来是一些参数的设置,包括三种蓄电池的参数矩阵、迭代次数、种群大小、速度更新参数、惯性权重、储能动作策略和限制条件等。 然后,程序进行了一些初始化操作,包括初始化种群、速度和适应度等。 接下来是主要的迭代过程。程序使用粒子群算法的思想,通过更新粒子的位置和速度来寻找最优解。在每次迭代中,程序计算了每个粒子的适应度,并更新个体最佳位置和全局最佳位置。 在每次迭代中,程序还进行了一些额外的计算,如潮流计算、储能约束等。这些计算可能涉及到电力系统的潮流计算、功率平衡等知识点。 最后,程序输
数学建模相关主题资源2
内容概要:本文详细介绍了一系列用于科学研究、工程项目和技术开发中至关重要的实验程序编写与文档报告撰写的资源和工具。从代码托管平台(GitHub/GitLab/Kaggle/CodeOcean)到云端计算环境(Colab),以及多种类型的编辑器(LaTeX/Microsoft Word/Overleaf/Typora),还有涵盖整个研究周期的各种辅助工具:如可视化工具(Tableau)、数据分析平台(R/Pandas)、项目管理工具(Trello/Jira)、数据管理和伦理审核支持(Figshare/IRB等),最后提供了典型报告的具体结构指导及其范本实例链接(arXiv/PubMed)。这为实验流程中的各个环节提供了系统的解决方案,极大地提高了工作的效率。 适合人群:高校学生、科研工作者、工程技术人员以及从事学术写作的人员,无论是新手入门还是有一定经验的人士都能从中受益。 使用场景及目标:帮助读者高效地准备并开展实验研究活动;促进团队间协作交流;规范研究报告的形式;提高对所收集资料的安全性和隐私保护意识;确保遵循国际公认的伦理准则进行实验。
四轮毂驱动电动汽车稳定性控制策略:基于滑模与模糊神经网络的转矩分配与仿真研究,四轮毂驱动电动汽车稳定性控制:基于滑模与模糊神经网络的转矩分配策略及联合仿真验证,四轮毂驱动电动汽车稳定性控制,分布式驱动转矩分配。 上层基于滑模,模糊神经网络控制器决策横摆力矩,下层基于动态载荷分配,最优分配,平均分配均可做。 simulink与carsim联合仿真。 ,四轮毂驱动;电动汽车稳定性控制;分布式驱动;转矩分配;滑模控制;模糊神经网络控制器;横摆力矩;动态载荷分配;最优分配;平均分配;Simulink仿真;Carsim仿真,四驱电动稳定性控制:滑模与模糊神经网络决策的转矩分配研究
本资源提供了一份详细的PyCharm安装教程,涵盖下载、安装、配置、激活及使用步骤,适合新手快速搭建Python开发环境。
毕业设计
原版宋体.ttf,原版宋体安装文件,安装方式,直接右键安装。
利用Xilinx FPGA内嵌的软核处理器MicroBlaze,加上自主编写的AXI_IIC控制器,实现对IMX327传感器IIC总线的控制,同时辅以UART调试串口,实现系统状态的实时监控与调试。
在 GEE(Google Earth Engine)中,XEE 包是一个用于处理和分析地理空间数据的工具。以下是对 GEE 中 XEE 包的具体介绍: 主要特性 地理数据处理:提供强大的函数和工具,用于处理遥感影像和其他地理空间数据。 高效计算:利用云计算能力,支持大规模数据集的快速处理。 可视化:内置可视化工具,方便用户查看和分析数据。 集成性:可以与其他 GEE API 和工具无缝集成,支持多种数据源。 适用场景 环境监测:用于监测森林砍伐、城市扩展、水体变化等环境问题。 农业分析:分析作物生长、土地利用变化等农业相关数据。 气候研究:研究气候变化对生态系统和人类活动的影响。
毕业设计
整个文件的代码
名字微控制器_STM32_DFU_引导加载程序_dapboo_1740989527.zip
详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/145991332
anaconda配置pytorch环境
立体仓库控制组态王6.55与三菱PLC联机仿真程序:视频教程与IO表接线图CAD详解,9仓位立体仓库控制系统优化方案:组态王6.55与三菱PLC联机仿真程序视频教程及IO表接线图CAD详解,9仓位立体仓库控制组态王6.55和三菱PLC联机仿真程序+视频+带io表接线图CAD ,关键词:立体仓库;控制组态王6.55;三菱PLC;联机仿真程序;视频;io表接线图;CAD,立体仓库控制组态王与三菱PLC联机仿真程序资源包
基于Maxwwell设计的经典外转子永磁同步电机案例:直流母线24V,大功率与高效率驱动设计,基于Maxwell设计的经典永磁同步电机案例:200W功率,外转子结构,直流母线电压与电机参数详解,基于maxwwell设计的经典200W,2200RPM 外转子,直流母线24V,42极36槽,定子外径81.5 轴向长度15 ,0.86Nm, 永磁同步电机(PMSM)设计案例,该案例可用于生产,或者学习用 ,经典设计案例; 200W; 2200RPM外转子; 直流母线24V; 42极36槽; 定子外径81.5; 轴向长度15; 永磁同步电机(PMSM); 生产学习用。,经典200W永磁同步电机设计案例:Maxwell外转子,高效率2200RPM直流母线系统
C# Modbus RTU协议主站设计工程源码详解:支持多从站访问与多线程实现,带注释开源dll文件,C# Modbus RTU协议主站设计工程源码解析:多线程实现访问多个从站功能的开源dll文件,C# Modbus RTU协议主站设计工程源码带注释,开源dll文件,支持访问多个从站,多线程实现 ,C#; Modbus RTU协议; 主站设计; 工程源码; 注释; 开源dll; 多从站访问; 多线程实现,《C# Modbus RTU主站源码:多线程支持访问多从站开源DLL文件详解》
MATLAB Simulink下的四旋翼无人机PID控制仿真模型研究,MATLAB Simulink下的四旋翼无人机PID控制仿真模型研究,MATLAB Simulink 四旋翼仿真模型 四轴无人机PID控制 ,MATLAB; Simulink; 四旋翼仿真模型; 四轴无人机; PID控制,MATLAB Simulink四旋翼仿真模型中四轴无人机的PID控制研究