在数据库管理领域,数据库迁移是一项重要的任务。它涉及到将一个或多个数据库或应用程序从一个环境转移到另一个环境,通常是迁移基础架构或托管提供商、更新版本或平台或合并数据库。虽然Oracle数据库迁移是一项繁琐的任务,但必须完成此任务,既确保数据的完整性,又确保数据的安全性。在本文中,我们将分享一些Oracle数据库迁移的技巧,以帮助您在迁移过程中快速移动数据。
成都创新互联公司专注于汕尾网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供汕尾营销型网站建设,汕尾网站制作、汕尾网页设计、汕尾网站官网定制、微信小程序定制开发服务,打造汕尾网络公司原创品牌,更为您提供汕尾网站排名全网营销落地服务。
准备工作
在开始Oracle数据库迁移之前,必须先进行一些准备工作。这些准备工作包括:
1.存储备份和日志文件
在迁移过程中,您需要备份整个数据库和日志文件。因此,您需要有足够的存储空间,以便存储这些文件。备份数据库和日志文件可以帮助您在迁移过程中避免数据丢失。
2.确认迁移目标环境
在迁移之前,您需要确认目标数据库环境是否符合要求。目标环境需要具有足够的存储空间、性能和安全性,以保持新数据库的平稳运行。此外,新环境必须具有足够的权限,以允许您完成迁移。
3.创建迁移计划
创建迁移计划可以帮助您规划迁移过程的步骤和时间。此外,迁移计划还应包括备份和还原方案、验证和测试计划以及后续支持和维护计划。
快速move数据的技巧
1.使用Oracle Data Pump
Oracle Data Pump是一种快速移动数据的工具,它允许将数据以二进制格式从源数据库导出并导入到目标数据库。使用Data Pump可以大大加快数据的迁移速度。此外,Data Pump还可以将数据导出到平面文件中,以便在迁移过程中进行手动处理。
2.使用Oracle GoldenGate
Oracle GoldenGate是一种高性能、高可用性的数据复制和同步工具,它允许在不影响源数据库的情况下将数据复制到目标数据库。GoldenGate可以在不同的操作系统、数据库版本和架构之间进行复制。使用GoldenGate可以减少数据迁移的停机时间,并提高迁移的效率。
3.使用Oracle Transportable Tablespaces
Oracle Transportable Tablespaces允许在同一操作系统上的不同Oracle数据库之间移动数据。使用Transportable Tablespaces可以避免在目标数据库中重新创建表和索引,并减少数据迁移的时间。此外,Transportable Tablespaces还可以使迁移过程更加容易,因为您不必重新安装任何软件或创建新的数据库实例。
4.使用Oracle RMAN
Oracle Recovery Manager(RMAN)是一种备份和还原数据库的工具。使用RMAN可以将整个数据库备份到磁盘或磁带,并快速还原到目标数据库中。此外,使用RMAN还可以在备份和还原过程中对数据进行压缩,从而减少数据迁移的时间和存储空间。
在Oracle数据库迁移过程中,快速移动数据是至关重要的。使用Oracle Data Pump、Oracle GoldenGate、Oracle Transportable Tablespaces和Oracle RMAN等工具可以大大加快数据的迁移速度。此外,在启动迁移之前做好充分的准备工作和规划,可以帮助您避免中断和数据丢失,并确保数据库迁移的安全和完整性。
成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!
我今天学习oracle也到这儿,发现敲了命令,在相应的磁盘没看到dbf文件,此时我用的是pl/sql developer 里的命令窗口
后来销山仔我使用亏汪sqlplus来进行同样的操作,发现在相应的磁盘中找到了dbf文件,我觉得可能是使用工具的问题。
自己的一点心得,不知道对与否,希望对你有帮唯码助
是能移走的枣肆铅呀,不应该没反映的。记雹洞得移走之后还要rename datafile.
例如:
SQL> select file_name from dba_data_files;
FILE_NAME
/u01/oracle/oradata/oradb/users01.dbf
/u01/oracle/oradata/oradb/undotbs01.dbf
/u01/oracle/oradata/oradb/sysaux01.dbf
/u01/oracle/oradata/oradb/system01.dbf
/u01/oracle/oradata/oradb/encrypted_ts01.dbf
SQL> alter tablespace users offline;
Tablespace altered.
SQL> alter tablespace users rename datafile ‘/u01/凳好oracle/oradata/oradb/users01.dbf’ to ‘/u01/oracle/users02.dbf’;
Tablespace altered.
SQL> alter tablespace users online;
Tablespace altered.
SQL> select file_name from dba_data_files;
FILE_NAME
/u01/oracle/users02.dbf
/u01/oracle/oradata/oradb/undotbs01.dbf
/u01/oracle/oradata/oradb/sysaux01.dbf
/u01/oracle/oradata/oradb/system01.dbf
/u01/oracle/oradata/oradb/encrypted_ts01.dbf
SQL> !ls -a /u01/oracle/users02.dbf
/u01/oracle/users02.dbf
SQL> !ls -a /u01/oracle/oradata/oradb/users01.dbf
ls: /u01/oracle/oradata/oradb/users01.dbf: No such file or directory
我倒,host命缓中令就是在sql/plus中执迅哪携行操作系统的命令,如果被移动的表空间文件处于在在线状亩伏态,当然不能让你移动了!这个时候你可以把表空间文件设置为冷备份状态,这个时候可以移动。
我也遇到这个问凯雹芹题,后来发现是因为在PL/SQL developer中运盯毕行这条肆备命令就无效,在sqlplus中运行才有效
当我们想重建LOB类型的索引的时候,就会出现报错,重现如下:
create table test
( id int,
txt clob
);
SQL> select * from user_segments;
SEGMENT_NAMEPARTITION_NAME SEGMENT_TYPETABLESPACE_NAME
BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_POOL
—
–
TESTTABLEUSERS
DEFAULT
SYS_ILC00002$$ LOBINDEXUSERS
DEFAULT
SYS_LOBC00002$$ LOBSEGMENTUSERS
DEFAULT
alter index SYS_ILC00002$$ rebuild tablespace users ONLINE NOLOGGING
ORA-02327: 无法以数据类型 LOB 的型伍表达式创建索引
我们先回忆一下相关辩伏知识,以下来自ORACLE 9I&10G编程艺术
lobindex和lobsegment,它们做什么用?创建这些段是为了支持我们的LOB列。我们的实际LOB数据就存储在lobsegment中(确实,LOB数据也有可能存储在表T中,不过稍后讨论
ENABLE STORAGE IN ROW子句时还会更详细地说明这个内容)。lobindex用卜灶或于执行LOB的导航,来找出其中的某些部分。创建一个LOB列时,一般来说,存储在行中的这是一个指针(
pointer),或LOB定位器(LOB locator)。我们的应用所获取的就是这个LOB定位器。当请求得到LOB的“12.000~2,000字节”时,将对lobindex使用LOB定位器来找出这些字节存
储在哪里,然后再访问lobsegment。可以用lobindex很容易地找到LOB的各个部分。由此说来,可以把LOB想成是一种主/明细关系。
表中的LOB实际上只是指向lobindex,lobindex再指向LOB本身的各个部分。为了得到LOB中的N~M字节,要对表中的指针(LOB定位器)解除引用,遍历lobindex结构来找到所需的
数据库(chunk),然后按顺序访问。这使得随机访问LOB的任何部分都能同样迅速,你可以用同样快的速度得到LOB的最前面、中间或最后面的部分,因为无需再从头开始遍历LOB
。
ORACLE也说:The LOB index is an internal structure that is strongly associated with the LOB storage. 也就是说不让直接重建
但是我觉得可以明确INDEX是用来确定LOBSEGMENT的位置,如果经常对表中的行进行DML或者对大字段进行DML,我觉得重建还是用必要的。
既然是索引就要遵守索引的原则。大量的DML必然使索引的页节点越来越多,深度越来越大,但是其中包含了空闲空间。
ORACLE METALINK 说 Use the ALTER TABLE … MOVE command which will rebuild the indexes ,也就是使用ALTER TABLE MOVE语句来进行REBUILD索引。
下面就测试一下:
首先理解几个概念,才能了解实验结果:
1、IN ROW 默认的这个子句是(ENABLE STORAGE IN ROW),也就是小于4000字节就存储在表段中,如果大于4000字节就存储在lob段中,同时使用LOBINDEX来指定位置,我这里使
用DISABLE STORAGE IN ROW,也就是不管多大都存在LOBSEGMENT中。
2、CHUNK 表示最小LOGSEGMENT最小的存储单元,而且一个CHUNK只限于一个SEGMENT行使用,如果一个CHUNK设置为32K,你的SEGMENT行只有2K那就要浪费30k。
3、CACHE 表示是否把读取写入LOGSEGMENT记录到缓存,默认是NOCACHE,可以是CACHE和CACHE READS,前者读写都保存,后者读保存,写是直接写。而NOCACHE,就是直接读写。
下面是我建立表的语句。
CREATE TABLE “PPTEST”.”TEST2″
( “ID” NUMBER(*,0),
“TXT” CLOB
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIALNEXTMINEXTENTS 1 MAXEXTENTS
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE “USERS”
LOB (“TXT”) STORE AS (
TABLESPACE “USERS” DISABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
NOCACHE
STORAGE(INITIALNEXTMINEXTENTS 1 MAXEXTENTS
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))
我这里DISABLE STORAGE IN ROW CHUNK 8192,CHUNK是8K。
现在我插入数据
SQL> insert into test2
2 select * from test;
rows inserted
这里有58W多行,计算一下SEGMENTS占用空间。589824*8K=4.5G
查看一下:
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX. 3968
SYS_LOBC00002$$LOBSEGMENT.95328
TESTTABLE0. 2432
确实我们的LOGSEGMENT是4.5G。
现在我们收集统计信息,并且对索引进行分析如下:
SQL> execute dbms_stats.gather_schema_stats(ownname => ‘PPTEST’,cascade => true);
PL/SQL procedure successfully completed
yze index SYS_ILC00002$$ validate structure;
yze index SYS_ILC00002$$ compute statistics;
过后查看都没有发现LOGINDEX的结构信息,不知道为何。
但是考虑进行了大量的DML够后进行REBULIDING索引的大小肯定会减少。
现在我们来进行REBULDING实验。
首先模拟大量删除插入,
delete test2;
insert into test2
select id,txt from (select rownum rn, id, txt from test) where mod(rn, 8) = 0;
先全部删除,然后再插入1/8的数据。(过程巨慢)
SQL> delete test2;
rows deleted
查看
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX.240
SYS_LOBC00002$$LOBSEGMENT.03520
TESTTABLE0. 2432
索引的块大量增加,占用空间也大量增加,这里我也不太明白为何大量增加。这时其实没有任何数据了。
然后进行了插入。
SQL> insert into test2
2 select id,txt from (select rownum rn, id, txt from test) where mod(rn, 8) = 0;
73728 rows inserted
查看
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX.1264
SYS_LOBC00002$$LOBSEGMENT.69056
TESTTABLE0. 2432
其实这个时候数据只是以前的1/8 但是LOGSEGMENT和LOBINDEX 却更大。所以有大量的浪费空间。
我们直接重建TEST2表
SQL> alter table test2 move tablespace users;
查看
SYS_ILC00002$$ LOBINDEX.1264
SYS_LOBC00002$$LOBSEGMENT.69056
TESTTABLE0. 384
只是重建了TEST2段
使用语句
ALTER TABLE test2 MOVE
TABLESPACE users
LOB (TXT) STORE AS lobsegment
(TABLESPACE users );
进行重建
重建期间可以看到临时对象如下:
4.TEMPORARY. 80
4.TEMPORARY.7408
4.TEMPORARY. 128
显然表本身,LOBSEGMENT和LOBINDEX都再重建
然后查看
SQL> select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SEGMENT_NAMESEGMENT_TYPE GB BLOCKS
TESTTABLE0. 384
LOBSEGMENT LOBSEGMENT.74496
SYS_ILC00002$$ LOBINDEX. 512
因为我这里使用 lobsegment所以以前的SYS_LOBC00002$$ 变为了LOBSEGMENT,可以看到这个时候容量正常了。0.56G刚好是以前的1/8.
如果想单独重建会报错。METALINK上记录如下:
Explanation
The ‘ALTER TABLE foo MODIFY LOB (lobcol) …’ syntax does not allow
for a change of tablespace
ALTER TABLE my_lob
MODIFY LOB (a_lob)
(TABLESPACE new_tbsp);
(TABLESPACE new_tbsp)
*
ORA-22853: invalid LOB storage option specification
You have to use the MOVE keyword instead as shown in the examples.
结论:
1、LOGSEGMENT不会重用HWM以下的空间,所以大量DML会不断增加它的大小。
2、进行LOBsegment和LOBINDEX重建很有必要,使用语法如下:
ALTER TABLE test2 MOVE
TABLESPACE users
LOB (TXT) STORE AS lobsegment
(TABLESPACE users );
必须和表一起重建,单独重建LOBSEGMENT或者LOGINDEX没有办法。
分两种情况,一种是移动普简桐通索引,另一种是移动分区索引。
oracle移动普通索引到其他表空间语法:拦饥坦
alter index 索引名 rebuild tablespace 其他表空间;
oracle移动分区索引到其他表空间语法:
alter table 表名 move partition 分区名 tablespace 其他表空间肢弊;
oracle数据库 move的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle数据库 move,Oracle数据库迁移指南:快速move数据的技巧,学习oracle视频,看到指定表空间数据文件移动到指定位置遇到问题,host move执行无任何效果,如何重建LOB类型的索引和LOB段的信息别忘了在本站进行查找喔。
四川成都云服务器租用托管【创新互联】提供各地服务器租用,电信服务器托管、移动服务器托管、联通服务器托管,云服务器虚拟主机租用。成都机房托管咨询:13518219792
创新互联(www.cdcxhl.com)拥有10多年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验、开启建站+互联网销售服务,与企业客户共同成长,共创价值。
网页题目:Oracle数据库迁移指南:快速move数据的技巧(oracle数据库move)
网站URL:http://www.mswzjz.cn/qtweb/news30/484530.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能