前言 业务需要,将原先单实例Oracle数据库的数据全部迁移到全新的RAC环境数据库下
实施步骤
源库 OS版本:Windows server 2016 Oracle 11.2.0.1.0 字符集 AL32UTF8 ##源库和目的库的字符集必须要一致 数据库查询字符集语句: select* from nls_database_parameters where parameter='NLS_CHARACTERSET';
目的rac库 Os版本:Centos 7.4 Oracle 11.2.0.4.0 字符集 AL32UTF8 实例名 orcl1 orcl2 关掉前先create pfile=/recover/orclpfile.orafrom spfile,搞出一个pfile做模板参数文件
1、 源库mount Shutdown immediate Startup mount
2、 对源库做全备 Rmantarget / crosscheckarchivelog all; crosscheckbackup; deleteexpired archivelog all; deleteexpired backup; CONFIGURECONTROLFILE AUTOBACKUP ON; ##开启控制文件和参数文件自动备份
run { allocatechannel d1 type disk; sql'alter system archive log current'; backupformat '/backup/orcl/lacgsfull_%U' database include current controlfile plusarchivelog ; releasechannel d1; } 注:全库备份可能包含多个文件,其中最大的是数据文件,我们可以在rman中输入list backup,分别查看各个文件备份的都是什么
3、 将全库备份文件拷贝到目标库目录/backup/orcl 4、 修改参数文件 vi /recover/orclpfile.ora *.audit_file_dest='/u01/app/oracle/admin/orcl/adump' *.audit_trail='db' *.compatible='11.2.0.4.0' *.control_files='+DATA/orcl/controlfile/current.278.1090241967' *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_domain='' *.db_name='orcl' *.diagnostic_dest='/u01/app/oracle' *.open_cursors=300 *.pga_aggregate_target=21474836480 *.processes=1000 *.remote_login_passwordfile='exclusive' *.sessions=1105 *.sga_max_size=85899345920 *.sga_target=85899345920
5、 启动单节点数据库到nomount状态 startup pfile=/recover/ orclpfile.ora nomount;
6、 恢复控制文件 rman target / restore controlfile from '/backup/orcl/ORCLFULL_0B0FNADC_1_1'; 此时会输出新生成的控制文件的路径和文件名
7、 接上一步,修改参数文件里,将控制文件设置为新生成的路径和文件名
8、 生成spfile create spfile='+DATA/ORCL/spfileorcl.ora'from pfile='/recover/orclpfile.ora'; vi $ORACLE_HOME/dbs/initorcl1.ora #两个节点都做一遍 注:等全部设置完了,如果rac无法做到开机自启的话,可以看下alert文件,是否是该文件被修改了,指向了错误的spfile
9、 启动数据库到mount状态 Shutdowm immediate Startup mount;
10 恢复数据文件 Rman target / catalog start with '/backup/orcl'; #注册放置全库备份的目录
run { setnewname for datafile 1 to '+DATA/ORCL/DATAFILE/SYSTEM01.DBF'; setnewname for datafile 2 to '+DATA/ORCL/DATAFILE/SYSAUX01.DBF'; setnewname for datafile 3 to '+DATA/ORCL/DATAFILE/UNDOTBS01.DBF'; setnewname for datafile 4 to '+DATA/ORCL/DATAFILE/USERS01.DBF'; setnewname for datafile 5 to '+DATA/ORCL/DATAFILE/EXAMPLE01.DBF'; restoredatabase; switchdatafile all; }
11 打开数据库,提示报错ORA-39700 startup upgrade; @$ORACLE_HOME/rdbms/admin/catupgrd.sql; #重新编译数据字典,我就做了这一步 @$ORACLE_HOME/rdbms/admin/utlrp.sql #重新编译失效的object
12 打开数据库 Alter database open
13 两个节点添加日志文件 alterdatabase add logfile thread 1 group 4 ('+DATA') size 1024m; alterdatabase add logfile thread 1 group 5 ('+DATA') size 1024m; alterdatabase add logfile thread 1 group 6 ('+DATA') size 1024m;
14 删除旧的日志文件 Alter system switch logfile Alter system checkpoint 这两步的目的是将redo的状态修改为inactive
此时可以删除 alter database drop logfile group 1 alter database drop logfile group 2 alter database drop logfile group 3
15 分配线程 alter system set instance_number=1 scope=spfile sid='orcl1'; alter system set instance_number=2 scope=spfilesid='orcl2';
16 开启集群模式 show parameter cluster; alter system set cluster_database_instances=2 scope=spfile; alter system set cluster_database=true scope=spfile; 注:重启生效,否则二节点无法启动
17 添加undo表空间 create undo tablespace undotbs2 datafile '+DATA' size 20G; alter system set undo_tablespace='undotbs2' scope=spfilesid='orcl2';
18 重建temp表空间 select name from V$tempfile; 注:文件路径还是windows下的目录,删不掉 create temporarytablespace temp2 tempfile '+DATA' size 512m reuse autoexxtend on next 640k maxsizeunlimited; alter database default temporarytablespace temp2; drop tablespace temp includingcontents and datafiles; create temporarytablespace temp tempfile '+DATA' size 512m reuse autoextend on next 640k maxsize unlimited; alter database default temporarytablespace temp; drop tablespace temp2 includingcontents and datafiles; #这一步我删不掉就放着了
19 启动二节点的实例 Startup
20 添加实例资源 crsctl stat res -t #查看实例是否注册到集群中
添加实例到集群资源中 srvctl add database -d orcl -o/u01/app/oracle/product/11.2/db_1 -p +DATA/ orcl/spfileorcl.ora
添加数据库实例 srvctl add instance -d orcl -i orcl1 -n db01 srvctl add instance -d orcl -i orcl2 -n db02
21 设置开机启动 srvctl enable database -d orcl srvctl enable instance -d orcl -i orcl1 srvctl enable instance -d orcl -i orcl2
22 更改监听参数 alter system set remote_listener='rac-scan:1521' scope=both;
23 集群验证 cluvfy comp crs -n all -verbose 重启主机,再次查看数据库实例有无开机自启,集群状态是否正常
24 业务验证 |