Oracle数据迁移的方法是什么
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容介绍了"Oracle数据迁移的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文的
千家信息网最后更新 2025年02月02日Oracle数据迁移的方法是什么
本篇内容介绍了"Oracle数据迁移的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
本文的环境都使用相同的操作系统:Oracle Linux 7.5。11g数据文件存放在文件系统上,而19c的数据文件存放在ASM上,中间使用NFS暂存数据文件,然后通过rman的可传输表空间特性进行迁移。
1、源端检查
由于rman不能自动迁移目录、外部表以及BFILEs,所以必须使用下面的命令进行检查,然后手工在目标端创建:
[oracle@rhndb ~]$ sqlplus "/as sysdba"SQL> set serveroutput on;SQL> declare x boolean;begin x:=dbms_tdb.check_external;end; 2 /The following directories exist in the database:SYS.DMP, SYS.XMLDIR, SYS.ORACLE_OCM_CONFIG_DIR2, SYS.ORACLE_OCM_CONFIG_DIR,SYS.DATA_PUMP_DIRPL/SQL procedure successfully completed.SQL> set linesize 300SQL> col directory_name for a25SQL> col directory_path for a70SQL> select directory_name,directory_path from dba_directories;
2、重启数据库至只读状态
SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 3206836224 bytesFixed Size 2257520 bytesVariable Size 738200976 bytesDatabase Buffers 2449473536 bytesRedo Buffers 16904192 bytesDatabase mounted.SQL> alter database open read only;Database altered.
3、DBMS_TDB.CHECK_DB检查数据库状态
SQL> set serveroutput on;SQL> declare db_ready boolean; 2 begin 3 db_ready :=dbms_tdb.check_db('Linux x86 64-bit',dbms_tdb.skip_none); 4 end; 5 /PL/SQL procedure successfully completed.
4、列出需要转换和不需要转换的数据文件
SQL> select file_name "Datafiles requiring Conversion" from dba_data_files where tablespace_name in (select distinct tablespace_name from dba_rollback_segs);Datafiles requiring Conversion------------------------------------------------------------/u02/oradata/rhndb/undotbs01.dbf/u02/oradata/rhndb/system01.dbfSQL> select file_name "Files NOT requiring Conversion" from dba_data_files where tablespace_name not in (select distinct tablespace_name from dba_rollback_segs);Files NOT requiring Conversion------------------------------------------------------------/u02/oradata/rhndb/users01.dbf/u02/oradata/rhndb/sysaux01.dbf/u02/oradata/rhndb/spw01.dbf
5、复制源数据库的数据文件至目标端
这里的目标端使用了ASM,所以不能直接存放。因此使用了NFS文件系统临时存放源端数据文件。
[oracle@rhndb ~]$ cp /u02/oradata/rhndb/* /u03/orabak
6、创建目标库参数文件并启动至nomont
SQL> create pfile='/tmp/initrhndb.ora' from spfile;[oracle@rhndb ~]$ scp /tmp/initrhndb.ora db02:$ORACLE_HOME/dbs--修改参数文件中的audit_file_dest,control_files,db_name,db_recover_file_dest,diagnostic_dest[oracle@rhndb ~]$ vi $ORACLE_HOME/dbs/initrhndb.orarhndb.__db_cache_size=2516582400rhndb.__java_pool_size=16777216rhndb.__large_pool_size=33554432rhndb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentrhndb.__pga_aggregate_target=1073741824rhndb.__sga_target=3221225472rhndb.__shared_io_pool_size=0rhndb.__shared_pool_size=620756992rhndb.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/rhndb/adump'*.audit_trail='db'*.compatible='11.2.0.4.0'*.control_files='+DATA/rhndb/controlfile/control01.ctl','+FRA/rhndb/controlfile/control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='rhndb'*.db_recovery_file_dest='+FRA'*.db_recovery_file_dest_size=4385144832*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=rhndbXDB)'*.open_cursors=300*.pga_aggregate_target=1073741824*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.sga_target=3221225472*.undo_tablespace='UNDOTBS1'*._allow_resetlogs_corruption=true--启动时nomount状态[oracle@db02 ~]$ sqlplus "/as sysdba"SQL> startup nomount pfile=/tmp/initrhndb.oraORACLE instance started.Total System Global Area 3221222464 bytesFixed Size 8901696 bytesVariable Size 671088640 bytesDatabase Buffers 2533359616 bytesRedo Buffers 7872512 bytes
7、数据文件转换
不论两个平台的endian format是否相同,都需要进行转换操作。根据第四步的信息,在rman中执行转换操作,如下:
[oracle@db02 ~]$ rman target /--转换操作RMAN> convert from platform 'Linux x86 64-bit' parallelism 22> datafile '/u03/orabak/system01.dbf' format '+data'3> datafile '/u03/orabak/undotbs01.dbf' format '+data';Starting conversion at target at 28-APR-2019 19:03:38using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=135 device type=DISKallocated channel: ORA_DISK_2channel ORA_DISK_2: SID=198 device type=DISKchannel ORA_DISK_1: starting datafile conversioninput file name=/u03/orabak/undotbs01.dbfchannel ORA_DISK_2: starting datafile conversioninput file name=/u03/orabak/system01.dbfconverted datafile=+DATA/RHNDB/DATAFILE/system.258.1006801423channel ORA_DISK_2: datafile conversion complete, elapsed time: 00:01:35converted datafile=+DATA/RHNDB/DATAFILE/undotbs1.257.1006801423channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:01:55Finished conversion at target at 28-APR-2019 19:05:36--通过rman复制数据文件至ASM磁盘组RMAN> convert parallelism 3 2> datafile '/u03/orabak/users01.dbf' format '+data'3> datafile '/u03/orabak/sysaux01.dbf' format '+data'4> datafile '/u03/orabak/spw01.dbf' format '+data';Starting conversion at target at 28-APR-2019 19:07:32using channel ORA_DISK_1using channel ORA_DISK_2allocated channel: ORA_DISK_3channel ORA_DISK_3: SID=2 device type=DISKchannel ORA_DISK_1: starting datafile conversioninput file name=/u03/orabak/spw01.dbfchannel ORA_DISK_2: starting datafile conversioninput file name=/u03/orabak/sysaux01.dbfchannel ORA_DISK_3: starting datafile conversioninput file name=/u03/orabak/users01.dbfconverted datafile=+DATA/RHNDB/DATAFILE/users.261.1006801653channel ORA_DISK_3: datafile conversion complete, elapsed time: 00:00:03converted datafile=+DATA/RHNDB/DATAFILE/sysaux.260.1006801653channel ORA_DISK_2: datafile conversion complete, elapsed time: 00:00:25converted datafile=+DATA/RHNDB/DATAFILE/spacewalk.259.1006801653channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:01:35Finished conversion at target at 28-APR-2019 19:09:08RMAN> exit
8、创建目标端的控制文件
在源端使用下面的命令创建目标端的控制文件:
SQL> alter database backup controlfile to trace resetlogs;
生成的trace文件路径可以通过alter日志进行查看,然后根据实际情况进行修改。修改完后在目标端执行,如下:
[oracle@db02 ~]$ sqlplus "/as sysdba"SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 28 19:14:24 2019Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SQL> CREATE CONTROLFILE REUSE DATABASE "RHNDB" RESETLOGS NOARCHIVELOG 2 MAXLOGFILES 16 3 MAXLOGMEMBERS 3 4 MAXDATAFILES 100 5 MAXINSTANCES 8 6 MAXLOGHISTORY 2920 7 LOGFILE 8 GROUP 1 '+DATA/rhndb/redo01.log' SIZE 50M BLOCKSIZE 512, 9 GROUP 2 '+DATA/rhndb/redo02.log' SIZE 50M BLOCKSIZE 512, 10 GROUP 3 '+DATA/rhndb/redo03.log' SIZE 50M BLOCKSIZE 512 11 -- STANDBY LOGFILE 12 DATAFILE 13 '+DATA/RHNDB/DATAFILE/system.258.1006801423', 14 '+DATA/RHNDB/DATAFILE/undotbs1.257.1006801423', 15 '+DATA/RHNDB/DATAFILE/users.261.1006801653', 16 '+DATA/RHNDB/DATAFILE/sysaux.260.1006801653', 17 '+DATA/RHNDB/DATAFILE/spacewalk.259.1006801653' 18 CHARACTER SET AL32UTF8;Control file created.
另外复制源库的密码文件至目标库的指定目录:
[oracle@rhndb dbs]$ scp orapwrhndb db02:/u01/app/oracle/product/19.0.0/db_1/dbs/
9、以 resetlogs upgrade 方式打开数据库并创建临时表空间
SQL> startup mountORACLE instance started.Total System Global Area 3221222464 bytesFixed Size 8901696 bytesVariable Size 671088640 bytesDatabase Buffers 2533359616 bytesRedo Buffers 7872512 bytesDatabase mounted.SQL> alter database open resetlogs upgrade;Database altered.SQL> alter tablespace temp add tempfile '+data' size 50M autoextend on next 100m maxsize unlimited;Tablespace altered.
10、创建SPFILE
SQL> create spfile='+data' from pfile;--新建的spfile名称可以在asm磁盘组中查看[oracle@rhndb dbs]$ mv initrhndb.ora initrhndb.ora.old[oracle@db02 dbs]$ echo 'SPFILE='+data/rhndb/parameterfile/spfile.267.1006905749''>initrhndb.ora
11、执行upgrade
使用dbupgrade进行升级操作:
[oracle@db02 ~]$ dbupgrade -u sys
在升级过程中,会遇到下面的错误:
ORA-02290: check constraint (SYS.JAVA_DEV_DISABLED) violated
dbupgrade会话结束后,使用下面的命令启用:
SQL> exec dbms_java_dev.enable;
此命令执行完后,会重启数据库至migrate模式,然后运行下面的命令即可完成升级。
SQL> @?/rdbms/admin/utlirp.sqlSQL> shutdown immediateSQL> startupSQL> @?/rdbms/admin/utlrp.sql
如果还有java相关的invalid对象,请参考官方的metalink(文档 ID 2262919.1)。
使用下面的命令检查组件信息:
SQL> col comp_name for a40SQL> set wrap offSQL> set pagesize 999SQL> select comp_name,version, status from dba_registry;
12、注册数据库资源(可选)
[oracle@db02 ~]$ srvctl add database -db rhndb -oraclehome /u01/app/oracle/product/19.0.0/db_1 -spfile '+data/rhndb/parameterfile/spfile.267.1006814727' -pwfile /u01/app/oracle/product/19.0.0/db_1/dbs/orapwrhndb -role primary -dbname rhndb -diskgroup 'data,fra'[oracle@db02 ~]$ srvctl config database -db rhndbDatabase unique name: rhndbDatabase name: rhndbOracle home: /u01/app/oracle/product/19.0.0/db_1Oracle user: oracleSpfile: +data/rhndb/parameterfile/spfile.267.1006814727Password file: /u01/app/oracle/product/19.0.0/db_1/dbs/orapwrhndbDomain: Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICDisk Groups: DATA,FRAServices: OSDBA group: OSOPER group: Database instance: rhndb
"Oracle数据迁移的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
文件
目标
命令
数据库
面的
检查
状态
系统
升级
方法
相同
内容
参数
实际
情况
更多
目录
知识
磁盘
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
剑网三 道长数据库
fq服务器是什么
苹果12苹果服务器验证失败
湖南初到互联网科技宣传
实时通讯服务器
数据库连接一直转圈
中国网络技术审查与认证中心
王者服务器可以玩了吗
网络技术笔记本排行
oracle数据库分离
海南网络技术开发采购
北京品质软件开发标准
数据库备份恢复软件绿色免费版
生态网络技术大学生
网络安全法条款的重点内容
国家网络安全基本知识竞赛题库
mysql数据库结构
网络安全普及内容
惠普服务器 自检过不去
配备win10系统的云服务器
国家网络安全周是第几周
软件开发谈失败一个项目
PGI.S数据库
国防部新网络安全举措
ar眼镜软件开发买什么号
网络技术物联网技术的毕业设计
搭建ftp服务器工具
加推科技公司 互联网公司
无锡软件开发服务费
dell机架服务器产品线