window2012 oracle 迁移 centos6 oracle

本文目的:

  oracle是大型数据库旺旺年限和版本及环境都比较陈旧,性能影响了业务正常,近日公司需求从Windows2003 32bit的Oracle服务器上将数据迁移到Windows2012/Linux Redhat 64bit Oracle,就涉及一个转码

 

Oracle 架构:

  Oracle Server = 实例 + 数据库 (Instance和Database是相互独立的)

运行原理:

  举个例子来看看Oracle RDBMS是怎么运作的 
这里写图片描述

这里写图片描述

    1. User访问Oracle Server之前提交一个请求(包含了db_name、instance_name、username、password等信息),Oracle Server接收到请求并通过Password File的验证后,分配SGA内存池,启动后台进程同时创建并启动实例。
    2. 在启动实例之后User Process与Server Process建立Connect。
    3. 再通过Server process和Oracle Instance完成建立Sesscion。
    4. 用户执行SQL语句,由server process接收到并直接与Oracle交互。
    5. SQL语句通过Server Process到达Oracle Instance,再将SQL载入数据库缓冲区。
    6. Server Process通知Oracle Database将与SQL语句相关的数据块副本加载到缓冲区中。
    7. 在数据库缓存区执行SQL语句,并产生”脏缓冲区”。
    8. 由CKPT检查点进程检查到”脏缓冲区”,并调用DBWn数据库写进程,但在DBWn执行之前,应该由LGWR先将数据文件的原始状态、数据库的改变等信息记录到Redo Log Files。
    9. 将更新的内容写入到磁盘中的数据文件。
    10. 返回结果给用户

具体也不赘述了;详细可参考http://blog.csdn.net/Jmilk/article/details/51583799

 


首先配置好迁移目标Linux服务器参数,参考http://www.zhongweicheng.com/?p=827

确认:

  selinux、iptables、sysctl、limits.conf 等

SPOOL c:test.sql             //c:test.sql  这是文件保存的位置,从SPOOL开始所有的操作记录到SPOOL OFF结束
select * from tablename;
SPOOL OFF

//查看当前数据库系统平台和当前数据库版本支持的平台
C:\> sqlplus / as sysdba

SQL> col platform_name for a50
SQL> set pages 100
SQL> select platform_name from v$database;

PLATFORM_NAME
--------------
Microsoft Windows IA (64-bit)

SQL> select PLATFORM_NAME,ENDIAN_FORMAT from v$transportable_platform order by 1,2;

PLATFORM_NAME ENDIAN_FORMAT
————————————————– ————–
AIX-Based Systems (64-bit) Big
Apple Mac OS Big
HP IA Open VMS Little
HP Open VMS Little
HP Tru64 UNIX Little
HP-UX (64-bit) Big
HP-UX IA (64-bit) Big
IBM Power Based Linux Big
IBM zSeries Based Linux Big
Linux IA (32-bit) Little
Linux IA (64-bit) Little
Linux x86 64-bit Little
Microsoft Windows IA (32-bit) Little
Microsoft Windows IA (64-bit) Little
Microsoft Windows x86 64-bit Little
Solaris Operating System (x86) Little
Solaris Operating System (x86-64) Little

 

1.建立测试表(Windows)

create table pp(num int);
begin
         for j in 1 .. 100 loop
             insert into pp  values ( j );
         end loop;
         commit;
 end;
 /

2.创建rman用户(Windows)

sql sysdba

create tablespace rman datafile 'e:\app\rman.dat' size 100m autoextend on next 10m; 
create user rman identified by rman default tablespace rman; 
grant recovery_catalog_owner to rman; 
grant connect,resource to rman; 
rman 

connect catalog rman/rman 
create catalog;
rman catalog rman/rman@orcl target sys/密码@网络连接服务名; 
register database; 

3.进入只读

run 
{
select PLATFORM_NAME from v$database;  //系统平台
select PLATFORM_NAME,ENDIAN_FORMAT from v$transportable_platform order by 1,2;  //数据库支持平台

shutdown immediate  //进入只读
startup mount
alter database open read only;

set serveroutput on  

declare
v_check boolean;
begin
v_check:=dbms_tdb.check_db('Linux x86 64-bit',dbms_tdb.skip_none);
end;
/

declare
v_ext boolean;
begin
v_ext:=dbms_tdb.check_external;
end;
/
}

4.进入RMAN备份转码(Windows源端使用RMAN convert将数据文件转换成"Linux x86 64-bit")

rman target /
convert database new database 'orcl' transport script 'e:\bak\trans.sql' to platform 'Linux x86 64-bit' db_file_name_convert 'e:\app\Administrator\oradata\orcl' 'e:\bak';

5.将备份导出到

e:\bak 下的所有数据以及INIT_00SDUAAM_1_0.ORA文件上传至Linux服务器中分别的位置/home/oracle/app/oradata/orcl和INIT_00SDUAAM_1_0.ORA对应的目录下
修改INIT_00SDUAAM_1_0.ORA文件中的路径和内存大小

6.导入数据(Linux ,需要的目录要手动创建,通过pfile来创建spfile)

sqlplus / as sysdba
STARTUP NOMOUNT PFILE='INIT_00SDUAAM_1_0.ORA'
create spfile from pfile='INIT_00SDUAAM_1_0.ORA';
startup force nomount


CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS  NOARCHIVELOG
      MAXLOGFILES 16
      MAXLOGMEMBERS 3
      MAXDATAFILES 100
      MAXINSTANCES 8
      MAXLOGHISTORY 292
LOGFILE
    GROUP 1 '/home/oracle/app/oradata/orcl/redolog01.log'  SIZE 50M,
    GROUP 2 '/home/oracle/app/oradata/orcl/redolog02.log'  SIZE 50M,
    GROUP 3 '/home/oracle/app/oradata/orcl/redolog03.log'  SIZE 50M
DATAFILE
    '/home/oracle/app/oradata/orcl/SYSTEM01.DBF',
    '/home/oracle/app/oradata/orcl/UNDOTBS01.DBF',
    '/home/oracle/app/oradata/orcl/SYSAUX01.DBF',
    '/home/oracle/app/oradata/orcl/USERS01.DBF',
    '/home/oracle/app/oradata/orcl/EXAMPLE01.DBF'
CHARACTER SET ZHS16GBK;



ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/app/oradata/orcl/temp01.dbf' SIZE 20971520  AUTOEXTEND ON;
SHUTDOWN IMMEDIATE 
 STARTUP UPGRADE 
 @?/rdbms/admin/utlirp.sql

7.验证(Linux)

sqlplus / as sysdba
startup
conn mologa/mologa
select * from tab;
select * from pp;

 

转载于:https://www.cnblogs.com/mologa-jie/p/7503081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值