首页 > 数据库 >Oracle 11g Windows迁移至linux方案

Oracle 11g Windows迁移至linux方案

时间:2023-08-06 22:02:57浏览次数:35  
标签:11g database Windows 数据库 standby linux type alter channel

1.前言

根据迁移规范要求,特编写xxx数据库迁移至linux环境操作方案。

2.方案描述

2.1 环境描述

源库数据量为20T,操作系统为Windows Server 2008 64 bit,数据库版本为oracle 11.2.0.1,目标库操作系统为Linux redhat 7.6,数据库版本为11.2.0.4。

详细信息如下:

源端数据库:

业务系统  

数据库 

IP

归档  

强制日志  

附加日志  

操作系统  

版本信息          

存储容量(TB)

归档空间

(GB)           

xxx

YWRZDB     

190.168.1.200   

NO

YES

YES

Windows

11.2.0.1 单机

20T

1T

目标端数据库

业务系统   

数据库                 

IP                     

归档   

强制日志  

  附加日志

操作系统   

版本信息            

存储容量(TB)

归档空间

(GB)

xxx

YWRZDB

190.168.1.2

YES

YES

YES

RHEL7.6

11.2.0.4 单机

20T

1T

2.2 操作描述

针对XXX系统数据库现有环境分析,本次迁移属于异构平台不同版本数据库迁移,可通过ORACLE DATAGUARD技术实现生产数据库无缝迁移至linux环境。

操作过程如下:

准备阶段,开启归档,后在Linux环境搭建ORACLE DATAGUARD,建立Windows与Linux数据同步机制。该操作涉及调整生产环境部份数据库参数,搭建过程将申请停机作业。停机时间约一小时。

同步机制维护阶段,ORACLE DATAGUARD搭建完成后,应对同步机制进行检查,确保数据库同步机制正常运行,保障后续数据库具备主备切换条件。

数据库割接,当应用具备割接条件时,按客户确认的割接操作时间,完成Windows数据库(主库)与Linux数据库(备库)的切换工作,并交付给应用使用。

应用上线,数据库切换成功并交付应用使用后,应用进行相应测试,确认是否具备上线条件,客户最终确认应用切换成功,则数据库运行在Linux环境,否则按回退方案进行回退处理。

回退过程,客户决定回退至原生产环境,数据库侧将进行Linux数据库(主库)切换至原Windows数据库(备库)操作,操作完成后,应用侧修改数据库连接配置,回退至原生产环境,启动应用交付使用。

3.准备阶段

3.1 生产环境操作

1)主库环境检查

检查事项

检查方法

检查结果

调整方法

归档开启

Archive log list

YES

shutdown immediate # 关闭数据库

startup mount # 启动实例并挂载数据库

alter database archivelog; # 更改数据库为归档模式

alter database open; # 打开数据库

FORCE LOGGING

select force_logging from v$database;

YES

alter database force logging;

remote_login_passwordfile

show parameter remote_login_passwordfile

NONE

alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile sid='*';

shutdown immediate;

startup;

2)TNS配置

lfjyzw =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 190.168.1.200)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = lfjyzw)

)

)

lfjyzwdg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 190.168.1.2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = lfjyzwdg)

)

)

3)SQLNET白名单配置

vi /u01/11.2.0/grid/network/admin/sqlnet.ora

#add

4)TNSPING检查

tnsping shywrzdb

5)密码文件

Oracle 11.0.2.0.1 WINDOWS路径 C:\app\liqi\product\11.2.0\dbhome_1\database

6)添加Standby logfiles

a)日志检查:

set lines 200 pages 300

col member for a60

select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#

union all

select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;

THREAD# GROUP# MEMBER TYPE MB

---------- ---------- ------------------------------------------------------------ -------------- ----------

1 3 C:\APP\LIQI\ORADATA\TOMDB\REDO03.LOG ONLINE 50

1 2 C:\APP\LIQI\ORADATA\TOMDB\REDO02.LOG ONLINE 50

1 1 C:\APP\LIQI\ORADATA\TOMDB\REDO01.LOG ONLINE 50

1 4 C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG1 STANDBY 50

1 5 C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG2 STANDBY 50

1 6 C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG3 STANDBY 50

1 7 C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG4 STANDBY 50

已选择7行。

b)添加语句示例:

alter database add standby logfile thread 1

group 4 ' C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG1 ' size 50M,

group 5 ' C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG2' size 50M,

group 6 ' C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG13' size 50M,

group 7 ' C:\APP\LIQI\ORADATA\TOMDB\STANDREDOLOG14' size 50M;

xxx数据库还未完成添加,该步骤需要修改路径。

7)主库参数调整

备份spfile:

create pfile=' C:\dbbak \0211.ora' from spfile;

修改以下参数,其中yzdb,yzdbdg分别为primary,standby的db_unqiue_name/TNS-Alias,详见参数详解部分:

alter system set log_archive_cnotallow='dg_cnotallow=(lfjyzw,lfjyzwdg)';

alter system set log_archive_dest_1='locatinotallow=F:/arch/ valid_for=(all_logfiles,all_roles) db_unique_name=ywrzdb';

alter system set log_archive_dest_2='service=lfjyzwdg lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=lfjyzwdg';

alter system set log_archive_max_processes=30;#根据需求调整个数

--确认以下参数,若不为默认值则修改:

alter system set remote_login_passwordfile=exclusive scope=spfile sid='*';

# remote_login_passwordfile=exclusive/shared

alter system set log_archive_dest_state_1=enable sid='*';

alter system set log_archive_dest_state_2=enable sid='*';

--可修改归档日志格式,与datafile区分:

alter system set log_archive_format='%t_%s_%r.dbf' scope=spfile sid='*';

--备角色参数:

alter system set fal_server=standby sid='*';

alter system set standby_file_management=auto sid='*';

alter system set db_file_name_cnotallow='+DATADG/ywrzdb','+DATADG/shywrzdb' scope=spfile sid='*';

alter system set log_file_name_cnotallow='+arcdg/ywrzdb','+arcdg/shywrzdb' scope=spfile sid='*';

注:以上参数,指定spfile修改的,在实例重启后生效。

8)rman全库备份

configure maxsetsize to 1024G;

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

allocate channel c5 type disk;

allocate channel c6 type disk;

allocate channel c7 type disk;

allocate channel c8 type disk;

allocate channel c9 type disk;

allocate channel c10 type disk;

backup as compressed backupset full database FORMAT 'Z:\data_%T_%s';

backup current controlfile for standby format 'Z:\control.bak';

release channel c1;

release channel c2;

release channel c3;

release channel c4;

release channel c5;

release channel c6;

release channel c7;

release channel c8;

release channel c9;

release channel c10;

}

至此,主库备份完成。

3.2 linux备库环境操作

1)配置环境变量

export ORACLE_SID= lfjyzwdg

2)监听配置

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 190.168.1.2)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=lfjyzwdg)

(ORACLE_HOME=/home/u01/app/oracle/product/11.2.0)

(SID_NAME=lfjyzwdg))

)

DIAG_ADR_ENABLED_LISTENER=OFF

3)TNS配置

lfjyzw =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 190.168.1.200)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = lfjyzw)

)

)

lfjyzwdg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 190.168.1.2)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = lfjyzwdg)

)

)

4)SQLNET白名单复制至备库

5)TNSPING检查

lsnrctl reload

tnsping lfjyzw

tnsping lfjyzwdg

6)创建相关目录

3.创建目录

在各节点创建相关目录(oracle):

mkdir -p $ORACLE_BASE/admin/ywrzdbdg/{adump,dpdump,pfile}

7)参数文件处理

4.参数文件

用primary的pfile加以修改,以保证某些参数与primary保持一致,注意主备库内存的大小适当的调整内存相关参数。

0211.ora

修改pfile为需要的standby pfile,特别注意以下事例的参数设定:

*.db_file_name_cnotallow='E:\LFJYZW','/oradata/datafile'

*.log_file_name_cnotallow='C:\LFJYZW','/oradata/redolog'

*.fal_server='lfjyzwdg'

*.db_unique_name='lfjyzwdg'

*.log_archive_dest_1='LOCATION=/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lfjyzwdg'

*.log_archive_dest_2='SERVICE=lfjyzw LGWR ASYNC REOPEN NET_TIMEOUT=300 VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=lfjyzw'

db_name=lfjyzw

*.log_archive_cnotallow='DG_CONFIG=(lfjyzw,lfjyzwdg)'

*.compatible='11.2.0.4.0'

*.standby_file_management='AUTO'

lfjyzwdg.__db_cache_size=70598524928

lfjyzwdg.__java_pool_size=268435456

lfjyzwdg.__large_pool_size=268435456

lfjyzwdg.__oracle_base='/home/u01/app'#ORACLE_BASE set from environment

lfjyzwdg.__pga_aggregate_target=41339060224

lfjyzwdg.__sga_target=76772540416

lfjyzwdg.__shared_io_pool_size=0

lfjyzwdg.__shared_pool_size=5100273664

lfjyzwdg.__streams_pool_size=0

*.audit_file_dest='/home/u01/app/oracle/admin/lfjyzwdg/adump'

*.audit_trail='db'

*.control_files='/oradata/control01.ctl','/oradata/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_files=1024

*.db_name='lfjyzw'

*.db_recovery_file_dest='/oradata/fast_recover_area'

*.db_recovery_file_dest_size=4102029312

*.dispatchers='(PROTOCOL=TCP) (SERVICE=lfjyzwXDB)'

*.log_archive_dest_1='locatinotallow=/oradata/arch/'

*.memory_target=118111600640

*.open_cursors=300

*.processes=3000

*.remote_login_passwordfile='EXCLUSIVE'

*.sessinotallow=1105

*.sga_max_size=96636764160

*.undo_tablespace='UNDOTBS1'

SQL> startup nomount pfile='/home/oracle/0211.ora';

8)数据库恢复

a).恢复standby controlfile

SQL> startup nomount;

RMAN> RESTORE STANDBY CONTROLFILE FROM '/home/oracle/enmo/dbbak/CONTROL.BAK';

b).alter database mount;

c).恢复数据文件

查询primary database的数据文件信息:

set lines 300 pages 300

col name for a60

col member for a60

select file#,name from v$datafile

union all

select file#,name from v$tempfile;

恢复数据文件:

激活备份

catalog start with '/home/oracle/enmo/dbbak';

RMAN> run{

allocate channel d1 type disk;

allocate channel d2 type disk;

allocate channel d3 type disk;

allocate channel d4 type disk;

allocate channel d5 type disk;

allocate channel d6 type disk;

allocate channel d7 type disk;

allocate channel d8 type disk;

allocate channel d9 type disk;

allocate channel d10 type disk;

set newname for database to ' /oradata/datafile/%b';

restore database;

switch datafile all;

switch tempfile all;

recover database;

release channel c1;

release channel c2;

release channel c3;

release channel c4;

release channel c5;

release channel c6;

release channel c7;

release channel c8;

release channel c9;

release channel c10;

}

查看standby database log file:

set lines 200 pages 300

col member for a60

select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$log a,v$logfile b where a.group#=b.group#

union all

select a.thread#,a.group#,b.member,b.type,a.bytes/1024/1024 MB from v$standby_log a,v$logfile b where a.group#=b.group#;

c.创建spfile

SQL> create spfile='+DATA' from pfile='?/dbs/initstandby1.ora';

关闭数据库实例,修改各节点pfile,然后以spfile启动数据库:

SQL> shutdown immediate

以spfile启动实例到mount阶段(Data Guard)阶段;

--启动到mount:

startup mount

--应用日志

alter database recover managed standby database using current logfile disconnect from session;

备库查看应用日志延迟时间:

col name for a25

col value for a20

col unit for a30

set lines 200

select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

select process,client_process,sequence#,status from v$managed_standby;

4 同步机制维护阶段

1)观察日志传输

跟踪primary,standby database的alert log,观察是否有错误发生,也可以看到应用日志的相关信息。

确认standby是否应用日志:

--primary端多切几次日志,观察alert log信息。

alter system switch logfile;

alter system switch logfile;

--观察主备库日志序列号

archive log list;

--primary端查询v$archived_log视图,确认日志是否被应用:

set lines 300 pages 300

col name for a20

select name,dest_id,thread#,sequence#,standby_dest,applied,registrar,completion_time from v$archived_log

where standby_dest='YES'

order by thread#,sequence#;

--primary端查询primary,standby的最大日志序列号是否一致:

select 'Primary :' "DB Role",thread#,max(sequence#)

from v$archived_log

where standby_dest='NO'

group by thread#

union

select 'Standby :' "DB Role",thread#,max(sequence#)

from v$archived_log

where standby_dest='YES' and applied='YES'

group by thread#

order by thread#;

5 数据库割接

1)验证DG同步机制

1、检查主备角色

select database_role,switchover_status from v$database;

切换主库前状态为to_standby为正常。

2、在主备库上分别检查同步进程LNS/RFS/MRP:

set echo off

set lines 500 pages 40

set heading on

set verify off

col process for a7 heading 'PROCESS'

col pid for 999999 heading 'OS PID'

col status for a15 heading 'PROCESS_STATUS'

col client_process for a7 heading 'CLIENT|PROCESS'

col client_pid for a10 heading 'CLIENT|PID'

col g_t for a5 heading 'GROUP|THREAD'

col blocks for 999999999

col block# for 999999999

select a.process,

a.pid,

a.status,

a.client_process,

a.client_pid,

a.group#||'.'||a.thread# g_t,

a.sequence#,

a.block#,

a.blocks,

a.delay_mins,

a.known_agents,

a.active_agents

from v$managed_standby a;

2)主备库切换

a)在关闭前,确认备库无延时

col name for a25

col value for a20

col unit for a30

set lines 200

select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');

select process,client_process,sequence#,status from v$managed_standby;

b)原主库

alter database commit to switchover to physical standby ;

c)原备库

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

alter database open;

3)执行数据库升级脚本

[oracle@dbserver admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 20 22:49:22 2023

Copyright (c) 1982, 2013, Oracle. All rights reserved.

SQL> alter database open upgrade;

ORACLE instance started.

SQL> select status from v$instance;

STATUS

------------

OPEN MIGRATE

SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql 说明:此脚本在该库无数据的情况下耗时15min

备注:以上catupgrd.sql脚本执行完后会shutdown immediate数据库,重启数据库即可。

3.4.8、编译失效对象

3.4.8.1、查询失效对象

SQL> select * from dba_objects where status !='VALID';

SQL> select count(*) from dba_objects where status='INVALID';

COUNT(*)

----------

453

3.4.8.2、编译失效对象

运行utlrp.sql编译失效对象

SQL> @?/rdbms/admin/utlrp

至此数据库已经升级完成。重启数据库没有问题就是升级成功。

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

至此,数据库割接完成。

6 应用测试及上线

数据库恢复后,应用进行测试并确认上线或回退。

7 回退过程

原window failover为主库

1、备库停止日志应用

alter database recover managed standby database cancel;

//关闭日志传输

alter database recover managed standby database finish force;

2、查看备库状态

//此时应该是TO PRIMARY

select switchover_status from v$database;

3、备库切换到主库

alter database commit to switchover to primary with session shutdown;

//这里如果存在gap,会报ORA-16139,需要强制切换

alter database activate physical standby database;

4、开启新主库

alter database open;

//查看新主库状态

select open_mode,database_role,switchover_status from v$database;

标签:11g,database,Windows,数据库,standby,linux,type,alter,channel
From: https://blog.51cto.com/u_13482808/6986762

相关文章

  • Linux之SSH
    目录一、SSH概述1.1SSH基础1.1.1SSH概述1.1.2SSH优点1.1.3SSH功能1.2SSH原理1.3SSH服务端二、免密登录一、SSH概述1.1SSH基础1.1.1SSH概述SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其......
  • Linux网络服务之SSH服务
    目录SSH服务1.ssh基础2.ssh原理3.实际操作SSH服务1.ssh基础SSH(SecureShell)协议是一种安全通道协议对通信数据进行了加密处理,用于远程管理作用:主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的......
  • Tails Linux 镜像站分享
    TailsBoum是一个便携式Linux操作系统,可以防止监视和审查.Tails镜像站列表:tails.net/mirrors.jsonTails镜像站(速度较快):tails.mirror.iphh.net......
  • 4 Linux网络编程
    4Linux网络编程4.1网络结构模式C/S结构:服务器/客户机,即Client-Server(C/S)结构。B/S结构:浏览器/服务器,即Browser/Server(B/S)结构4.2MAC地址、IP地址和端口4.2.1MAC地址MAC地址(MediaAccessControlAddress),在OSI模型中,第三层网络层负责IP地址,第二层数据链路层......
  • Linux文本处理三剑客之awk
    工欲善其事,必先利其器。掌握了Linux文本三剑客,可谓是事半功倍。对于刚接触Linux的同学来说,Linux的各种命令真的时让人望而生畏。工作中看到大神们一通操作猛如虎,各种命令以及参数眼花缭乱。当我们用过一些命令,但又不熟悉得情况下,这个时候就得从全局入手,看看Linux有哪几类命令,先......
  • linux基础:编译
    程序编译在linux中,gnu项目提供了gcc编译器、g++编译器和gdb调试器。C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++语言编写的源代码。编译过程:预处理、编译、汇编、链接预处理:将所有的#include头文件、#......
  • Linux下Nacos安装与配置
    Nacos作注册中心与配置中心准备Nacos依赖Java环境来运行Java环境下载&配置GIT环境安装Mysql环境安装1、安装:从https://nacos.io/zh-cn/index.html下载最新版并解压tar-xvfnacos-server-1.4.0.tar.gz或从git拉取gitclonehttps://github.com/alibaba/naco......
  • Linux系统目录结构
    Linux系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树。Linux与windows目录结构对比wi......
  • Linux系统中DNS
    1.什么是DNSDNS是域名系统(DomainNameSystem)的缩写。DNS是域名系统的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个唯一的IP地址,在Internet上域名与IP地址之间是一对应的,DNS就是进行域名解析的服务器。2......
  • Linux6
    查看权限控制信息1.认知权限信息通过ls-l可以以列表形式查看内容,并显示权限细节序号1,表示文件、文件夹的权限控制信息序号2,表示文件、文件夹所属用户序号3,表示文件、文件及所属用户组权限细节共分为10个槽位 举例:drwxr-xr-x,表示:这是一个文件夹,首字母d表......