欢迎光临
我们一直在努力

生产系统32BITORACLE10G到64BIT迁移

为了达到提升SGAPGA得目的我会调整参数,还由于为了最小化误操作顺利的完成数据迁移工作,我会在各个步骤中给中具体的参数值、命令和需要建立的目录。这里说明一下对于新的服务器经过分析我准备为SGA分配16GB内存,PGA分配到3GB,剩余的5GB来分配给系统使用。


1、迁移前几天停止现有DATA GUARD,提前安装好备库服务器的系统和数据库软件。


2、迁移前一天停止RMAN脚本中的DELETE ALL INPUT来停止删除归档日志文件。


3、全备前使用V$LOG来确定当前的日志序列号,为确定恢复所需要的归档日志文件做好准备。


4、在当前服务器中新建目录(/??)来保存RMAN备份文件


5、使用RMAN全备命令进行完整的RMAN备份,指定目录到新建的目录(/??)中。同时保存RMAN备份日志,用来过后确定ORACLE控制文件所在的备份集备份片。


命令如下:


         run {


            backup format “/??/db_%s_%p_%T”


            database plus archivelog


            format “/??/arch_%s_%p_%T”;


  }


6、在原数据库中使用CREATE PFILE FROM SPFILE来更新PFILE,保证所有的参数设置都是最新的


7、在目标服务器中通过DBCA新建数据库,数据库的名字和原数据库一样,我们的生产库就为POMSPRO,但是其他的文件位置不需要更改,因为这个步骤只是为了建立初始实例(INSTANCE)


8、建立完成后删除所有数据文件,日志文件,控制文件,同时删除SPFILE


9、在目标服务器中新建目录,此目录和原服务器中的目录一样,及和第5步中的目录一样(/??),用来存放RMAN全备的备份集备份片。


10、通过FTP传输所有备份集备份片到目标服务器中新建的目录中及/??目录中。


11、修改目标服务器中数据库的PFILE,要求和原数据库PFILE一样。然后修改部分参数,如下:


log_archive_dest_1=’LOCATION=/u01/oradata/gelcprod10g


VALID_FOR=(ALL_LOGFILES,ALL_ROLES)’


pga_aggregate_target = 3221225472


sga_max_size= 17179869184


sga_target= 17072495001


data guard 参数


    12、启动数据库到NOMOUNT状态,此时实例已经启动内存已经分配。


    13、在目标服务器中新建目录用来存在恢复的控制文件,参照PFILE中的配置及建立如下目录


/oradata/gelcprod10g/GELCPRO/


    14、使用命令恢复控制文件,命令如下


         restore  controlfile from ‘/??/??’


         ??代表的是第5步确定的控制文件所在的备份片


    15、启动数据库到MOUNT状态,此时数据库已经加载了控制文件。


16、在目标服务器中新建数据文件目录,日志目录,归档目录,同时建立各种TRACE


文件目录。我们需要建立的目录如下


/u01/oradata/gelcprod10g  归档位置


/oradata/gelcprod10g/GELCPRO/ 数据文件所在位置


/oradata/gelcprod10g/GELCPRO/ 日志文件组1所在位置


/u01/oradata/gelcprod10g/GELCPRO/ 日志文件组2所在位置


/home/oraprod/admin/GELCPRO/adump


/home/oraprod/admin/GELCPRO/bdump


/home/oraprod/admin/GELCPRO/cbump


/home/oraprod/admin/GELCPRO/udump


/home/oraprod/admin/GELCPRO/dpdump


/home/oraprod/admin/GELCPRO/pfile


这些目录用来存放各种TRACE


17、通过RESOTRE DATABASE来进行数据文件还原


到此准备工作完成,下面的步骤需要断开所有应用,停止所有业务进行操作


18、关闭应用,确定不会再有新的数据写入到数据库。


19、迁移前提取原库的对象信息,使用命令如下


select count(*) from user_tables;


       select count(*) from user_indexes;


       select count(*) from user_views;


       select count(*) from user_synonyms;


       select OBJECT_TYPE, count(*)


       from user_objects


       group by OBJECT_TYPE


having OBJECT_TYPE not in (‘TABLE’, ‘INDEX’, ‘VIEW’,’SYNONYM’);


       select count(*) from dba_users;


       select count(*) from dba_db_links;


       select count(*) from user_jobs;


 


20、进行多次日志切换,确保所有更改的数据都已经写入到归档日志,我们的日志组为3组所以进行4-6次切换保证所有的数据都进入了归档日志,使用日下命令 ALTER SYSTEM SWITCH LOGFILE


21、通过在原数据库查看V$LOG来确定当前日志序列(SEQUENCE#,判断出需要拷贝的归档日志文件,为了更加安全可以在最早的归档以前再多取几个。


22、通过FTP拷贝原服务器归档日志到目标服务器相应的目录中,及拷贝到目录/u01/oradata/gelcprod10g中。


23、通过应用归档日志文件进行恢复。命令如下


    recover database until logseq **


    **代表最后一个归档日志文件的SEQUENCE#


24、使用ALTER DATABASE OPEN RESETLOGS来打开数据库。


25、使用命令SHUTDOWN IMMEDIATE来关闭数据库。


26、使用命令STARTUP MIGRATE启动数据库。


27、运行rdbms/admin 下的utlirp.sql脚本


28、使用命令SHUTDOWN IMMEDIATE来关闭数据库。


29、使用命令STARTUP来启动数据库。


30、运行rdbms/admin 下的utlrp.sql脚本


31、使用命令SHUTDOWN IMMEDIATE来关闭数据库。


32、使用命令STARTUP来启动数据库。


到此数据迁移工作完成,下面的步骤进行IP切换和监听配置,此时需要关闭原库并且禁用网络服务,避免IP冲突


33、关闭原生产服务器网络服务使用命令如下


    service network stop


34、修改/etc/sysconfig/network-scripts/ ifcfg-eth0参数如下


    DEVICE=eth0


BOOTPROTO=static


BROADCAST=192.168.8.255


IPADDR=192.168.8.9


NETMASK=255.255.255.0


NETWORK=192.168.8.0


ONBOOT=yes


TYPE=Ethernet


35、修改/etc/hosts中主机名所对应的IP 192.168.8.9


36、使用命令重启网络服务,命令如下


    service network restart


37、通过FTP拷贝原数据库的listener.oratnsnames.ora文件到目标服务器的network/admin目录下


38、通过命令来重启ORACLE监听器,命令如下


    Lsnrctl stop


    Lsnrctl start


到此IP切换工作完成,下面的步骤是进行对象的验证,作为DBA只能对数据库中的各种对象进行验证,而不会对具体的数据进行验证


39、验证用户所拥有的表数量,使用如下命令


select count(*) from user_table;


40、验证用户所拥有的索引数量,使用如下命令


select count(*) from user_indexes;


41、验证用户所拥有的视图数量,使用如下命令


select count(*) from user_views;


42、验证用户所拥有的同义词数量,使用如下命令


select count(*) from user_synonyms;


43、验证其他一些对象,包括过程,函数,触发器等,使用如下命令


select OBJECT_TYPE, count(*)


from user_objects


group by OBJECT_TYPE


having OBJECT_TYPE not in (‘TABLE’, ‘INDEX’, ‘VIEW’);


    44、验证所有用户使用如下命令


         select count(*) from dba_users;


    45、验证所用Dblink使用如下命令


select count(*) from dba_db_links;


    46、验证用户拥有的JOB使用如下命令


select count(*) from user_jobs;


         至此我们DBA所能做的数据验证结束,需要开发人员进行详细的数据抽样验证,等到数据验证完成我们就可以启动应用。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。