ADG数据库迁移方案

news2024/10/6 20:44:08
一、环境说明

源库

目标库

IP

192.168.37.201

192.168.37.202

系统版本

RedHat 7.9

RedHat 7.9

数据库版本

19.3.0.0.0

19.3.0.0.0

SID

pri

std

hostname

primary

standby

数据量

整个库

说明:源库已经创建数据库实例,目标库只有数据库软件。

二、备份
2.1.日志清理(源端)
cd $ORACLE_BASE/diag/rdbms/pri/pri/trace
find ./ -name "*.trc" -ctime +15|xargs rm -f
find ./ -name "*.trm" -ctime +15|xargs rm -f
2.2.监听日志清理(源端)
cd /u01/app/oracle/diag/tnslsnr/primary/listener/alert
find ./ -name "*.xml" -ctime +15 |xargs rm -f

2.3.审计日志文件清理(源端)
cd /u01/app/oracle/admin/pri/adump
find ./ -name "*.aud" -ctime +15 |xargs rm -f
2.4.数据库目录备份(源端)
su – oracle
cd $ORACLE_HOME
cd ..
tar -cvzf db_home.tar.gz db/	#压缩至db同一目录

三、源端配置
3.1.开启归档模式
su – oracle
sas
startup
archive log list

--启动至mount状态
startup mount;
--将归档的位置修改
alter system set log_archive_dest_1='location=/u01/app/archive';

--启用归档
alter database archivelog;
alter database force logging;
alter database open;
3.2.创建standby日志组
--查询redo日志
col MEMBER for a30;
select group#,type,member from v$logfile;

--查询日志容量大小 
select group#,bytes/1024/1024 as MB,status from v$log;

--创建日志组
alter database add standby logfile
  group 6 ('/u01/app/oracle/oradata/PRI/standby_redo04.log') size 200m reuse,
  group 7 ('/u01/app/oracle/oradata/PRI/standby_redo05.log') size 200m reuse, 
  group 8 ('/u01/app/oracle/oradata/PRI/standby_redo06.log') size 200m reuse, 
  group 9 ('/u01/app/oracle/oradata/PRI/standby_redo07.log') size 200m reuse;
--查看结果
select group#,status,used from v$standby_log;

3.3.配置文件传输
--创建pfile配置文件
sas
create pfile from spfile
quit
--修改源端配置文件
cd $ORACLE_HOME/dbs/
vi initpri.ora
#原内容清空,插入以下
pri.__data_transfer_cache_size=0
pri.__db_cache_size=2785017856
pri.__inmemory_ext_roarea=0
pri.__inmemory_ext_rwarea=0
pri.__java_pool_size=0
pri.__large_pool_size=33554432
pri.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
pri.__pga_aggregate_target=1577058304
pri.__sga_target=3674210304
pri.__shared_io_pool_size=134217728
pri.__shared_pool_size=704643072
pri.__streams_pool_size=0
pri.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/pri/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/PRI/control01.ctl','/u01/app/oracle/oradata/PRI/control02.ctl'
*.db_block_size=8192
*.db_name='pri'
*.db_unique_name='pri'
*.fal_client='pri'
*.fal_server='std'
*.log_archive_config='dg_config=(pri,std)'
*.log_archive_dest_1='LOCATION=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=pri'
*.log_archive_dest_2='service=std lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=std'
*.log_archive_format='%t_%s_%r.arc'
*.db_file_name_convert='/u01/app/oracle/oradata/STD/','/u01/app/oracle/oradata/PRI/'
*.log_file_name_convert='/u01/app/oracle/oradata/STD/','/u01/app/oracle/oradata/PRI/'
STANDBY_FILE_MANAGEMENT=AUTO
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=priXDB)'
*.log_archive_dest_1='location=/u01/app/archive'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=1500m
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3500m
*.undo_tablespace='UNDOTBS1'
--启用新的配置文件
shutdown immediate;
create spfile from pfile;
startup;
--将配置文件传输至目标端
cd $ORACLE_HOME/dbs/
cp orapwpri /soft/orapwstd

cp initpri.ora /soft/initstd.ora

cd /soft
scp orapwstd oracle@standby:/soft
scp initstd.ora oracle@standby:/soft

--去目标端查看

3.4.配置监听(源端&目标端)
--源端配置
cd /u01/app/oracle/product/19.3.0/db/network/admin
vi tnsnames.ora
#将以下添加进去
PRI =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pri)
    )
  )

LISTENER_ORACLE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))

STD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = std)
    )
  )

--配置listener.ora
vi listener.ora
#将以下添加进去
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
     (GLOBAL_DBNAME = pri)
     (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db)
     (SID_NAME = pri)
    )
   )

--监听重载
lsnrctl start
lsnrctl reload

--目标端配置
cd /u01/app/oracle/product/19.3.0/db/network/admin
vi tnsnames.ora
#将以下添加进去
PRI =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pri)
    )
  )

LISTENER_ORACLE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = primary)(PORT = 1521))

STD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = std)
    )
  )

--配置listener.ora

vi listener.ora

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

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

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

    )

  )

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

     (GLOBAL_DBNAME = std)

     (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db)

     (SID_NAME = std)

    )

   )

--监听重载

lsnrctl start

lsnrctl reload



--分别在源、目标端测试

tnsping primary

tnsping standby

四、配置目标端
4.1.修改配置文件
cd /soft
vi initstd.ora
#清空内容,将以下内容插入
pri.__data_transfer_cache_size=0
pri.__db_cache_size=2785017856
pri.__inmemory_ext_roarea=0
pri.__inmemory_ext_rwarea=0
pri.__java_pool_size=0
pri.__large_pool_size=33554432
pri.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
pri.__pga_aggregate_target=1577058304
pri.__sga_target=3674210304
pri.__shared_io_pool_size=134217728
pri.__shared_pool_size=704643072
pri.__streams_pool_size=0
pri.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/std/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/STD/control01.ctl','/u01/app/oracle/oradata/STD/control02.ctl'
*.db_block_size=8192
*.db_name='pri'
*.db_unique_name='std'
*.fal_client='std'
*.fal_server='pri'
*.log_archive_config='dg_config=(std,pri)'
*.log_archive_dest_1='LOCATION=/u01/app/archive valid_for=(all_logfiles,all_roles) db_unique_name=std'
*.log_archive_dest_2='service=std lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=pri'
*.log_archive_format='%t_%s_%r.arc'
*.db_file_name_convert='/u01/app/oracle/oradata/PRI/','/u01/app/oracle/oradata/STD/'
*.log_file_name_convert='/u01/app/oracle/oradata/PRI/','/u01/app/oracle/oradata/STD/'
STANDBY_FILE_MANAGEMENT=AUTO
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=priXDB)'
*.log_archive_dest_1='location=/u01/app/archive'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=1500m
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3500m
*.undo_tablespace='UNDOTBS1'

--创建相关文件目录
因为备库只有软件,没有实例,所以我们需要手动创建相关目录
mkdir -p /u01/app/oracle/admin/std/adump
mkdir -p /u01/app/oracle/oradata/STD
4.2.启动目标端
sas
create spfile from pfile;
startup nomount;
alter system set standby_file_management=MANUAL;
五、构建
5.1.源端登录rman
--登录rman
rman target sys/oracle@pri auxiliary sys/oracle@std

--执行
run {
allocate channel ch001 type disk;
allocate channel ch002 type disk;
allocate channel ch003 type disk;
allocate channel ch004 type disk;
allocate auxiliary channel ch005 type disk;
allocate auxiliary channel ch006 type disk;
duplicate target database for standby from active database nofilenamecheck using compressed backupset;
release channel ch001;
release channel ch002;
release channel ch003;
release channel ch004;
release channel ch005;
release channel ch006;
}
--查看目标端状态
select open_mode from v$database;

--open
alter database open;

--查看相关文件
col MEMBER for a40;
select group#,type,member from v$logfile order by 2,1;

--开启日志应用
alter database recover managed standby database using current logfile disconnect;

--验证
select process,status from v$managed_standby;

六、主备交换
6.1.查看源端状态
select database_role, switchover_status from v$database;
 

--如果是to standby:
alter database commit to switchover to physical standby;

--其他:
alter database commit to switchover to physical standby with session shutdown;
6.2.重启源端
startup nomount;
alter database mount standby database;
alter database open read only;
alter database recover managed standby database using current logfile disconnect;

6.3.查看目标端状态
select database_role, switchover_status from v$database;

--如果是to primary:
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

--其他
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
Alter database open;

select name,DATABASE_ROLE from v$database;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯— —小明的背包问题

小明的背包问题 小明的背包1 — — (01背包) 友情链接:小明的背包1 题目: 输入样例: 5 20 1 6 2 5 3 8 5 15 3 3 输出样例: 37思路: 对于01背包问题,其中一个重要的条件是每一种物品只有一个…

git查看单独某一个文件的历史修改记录

git查看单独某一个文件的历史修改记录 git log -p 文件具体路径 注意,Windows下默认文件路径分隔符是 \,在git bash 里面需要改成 /。 git基于change代码修改与提交_git change-CSDN博客文章浏览阅读361次。git cherry-pick:复制多个提交comm…

2023全国青少年信息素养大赛总决赛C++小学组真题

2023 全国青少年信息素养大赛总决赛C小学组真题 第一题 给定一个五位数x,你需要重复做以下操作: 把数的各个数位进行由大到小排序和由小到大排序,得到的最大值和最小值,进行求差后作为新的x。 可以证明,在经过有限次操作后&…

代码随想录算法训练营33期 第三十一天(补29) | 491. 非递减子序列、46. 全排列、47. 全排列 II

491. 非递减子序列 class Solution { public:vector<int> path;vector<vector<int>> result;void BackTracking(vector<int>& nums, int index){if(path.size()>2){result.push_back(path);}unordered_set<int> usedSet;for (int iindex…

爬取日本常用汉字秘籍

前言 昨天投简历时遇到了这样的一个笔试。本以为会是数据结构算法之类的没想到直接发了一个word直接提需求&#xff0c;感觉挺有意思就写了这篇文章&#xff0c;感兴趣的朋友可以看看。 1. 网页内容解析 首先&#xff0c;我们通过请求网页获取到日本常用汉字的链接列表。然后…

多线程java

多线程的创建 前两种方法无法返回直接结果,而有的线程执行完毕后需要返回结果 方式一:java是通过java.lang.Thread类的对象来代表线程的 启动线程必须调用strat方法,不是调用run方法不要把主线程任务放在启动子线程之前 //1.让子类继承Thread线程类 public class MyThread …

逻辑卷和磁盘配额

文章目录 一、逻辑卷二、磁盘配额 一、逻辑卷 为什么会出现技术&#xff1f; 分区的缺点&#xff1a; 没有备份功能无法扩容性能取决于硬盘本身 相关概念 LVM 是 Logical Volume Manager 的简称&#xff0c;译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。…

HarmonyOS开发学习:【DevEco Device Tool 安装配置(问题全解)】

本文介绍如何在Windows主机上安装DevEco Device Tool工具。 坑点总结&#xff1a; 国内部分网络环境下&#xff0c;安装npm包可能会很慢或者超时&#xff0c;推荐使用国内npm源&#xff08;如淘宝源、华为源等&#xff09;&#xff1b;serialport这个npm包安装的过程中需要编…

STC8H8K64U 库函数学习笔记 —— GPIO 点灯

STC8H8K64U 库函数学习笔记 —— GPIO 点灯 环境说明&#xff1a; 芯片&#xff1a;STC8H8K64U 软件&#xff1a; KeilC51 μVersion V5.38.00STCAI-ISP (V6.94) 不得不说&#xff0c;Keil 是我用过的 IDE 中&#xff0c;最让人头疼的事情&#xff0c;写代码就像是在记事本里编…

【进阶篇】三、Java Agent实现自定义Arthas工具

文章目录 0、客户端代码1、JMX2、实现&#xff1a;查看内存使用情况3、实现&#xff1a;查看直接内存4、实现&#xff1a;生成堆内存快照5、实现&#xff1a;打印栈信息6、实现&#xff1a;打印类加载器的信息7、实现&#xff1a;打印类的源码8、需求&#xff1a;打印方法的耗时…

OpenHarmony开发学习:【源码下载和编译】

本文介绍了如何下载鸿蒙系统源码&#xff0c;如何一次性配置可以编译三个目标平台&#xff08;Hi3516&#xff0c;Hi3518和Hi3861&#xff09;的编译环境&#xff0c;以及如何将源码编译为三个目标平台的二进制文件。 坑点总结&#xff1a; 下载源码基本上没有太多坑&#xff…

HarmonyOS开发实例:【菜单app】

简介 分布式菜单demo 模拟的是多人聚餐点菜的场景&#xff0c;不需要扫码关注公众号等一系列操作&#xff0c;通过分布式数据库可以方便每个人可及时查看到订单详情&#xff0c;数量&#xff0c;总额等&#xff1b;效果如下 demo效果 工程目录 完整的项目结构目录如下 ├…

2024年DeFi的四大主导趋势:Restaking、Layer3、AI和DePin

DeFi&#xff08;去中心化金融&#xff09;行业在2024年将继续呈现快速增长的势头&#xff0c;驱动这一增长的主要因素将是四大主导趋势&#xff1a;Restaking、Layer3、AI和DePin。这些趋势将推动DeFi生态系统的发展&#xff0c;为用户提供更多的机会和创新。 趋势1&#xff…

雨云:不只是一阵清风,更是一场暴雨的力量

引言 在网络时代&#xff0c;服务器是任何在线业务的核心。无论你是运营一家小型博客还是承载着数百万用户的大型电商平台&#xff0c;都需要一个稳定、高效的服务器来支持你的业务。然而&#xff0c;在众多服务器提供商中&#xff0c;有一家备受推崇&#xff0c;那就是雨云。 …

【C语言】双向链表详解

文章目录 关于双向链表双向链表的初始化双向链表的打印双向链表方法调用 - 尾删为例双向链表的查找 - 指定位置之后插入为例双向链表结束 - 链表的销毁小结及整体代码实现 关于双向链表 首先链表有8种基本分法 其中在笔者之前文章种详细介绍的 单链表 是不带头单项不循环链表…

快速解锁3D Web渲染引擎HOOPS Communicator轻量化技术

在当今数字化时代&#xff0c;三维模型的使用已经成为许多行业中不可或缺的一部分。然而&#xff0c;随着模型复杂性的增加和数据量的膨胀&#xff0c;如何在Web浏览器中高效加载和渲染这些模型成为了一个挑战。慧都3D Web渲染引擎HOOPS Communicator通过其先进的轻量化技术&am…

测试过程和测试生命周期

软件测试过程是一系列有计划、有组织的活动&#xff0c;旨在识别和解决软件产品中的问题。这个过程通常包括多个阶段&#xff0c;每个阶段都有其特定的目标和方法。 需求分析&#xff1a; 分析软件需求和测试需求&#xff0c;确定测试的目标和范围。理解用户需求和业务目标&…

MM-Grounding-DINO的训练推理(待更新)

1、简单介绍 继前面发布的 GroundingDino 和 Open-GroundingDino的推理 和 Open-GroundingDino的训练实现&#xff0c;作为 GroundingDino延续性的文本检测网络 MM-Grounding-DINO 也发布了较详细的 训练和推理实现教程&#xff0c;而且操作性很强。作为学习内容&#xff0c;也…

我对硬技能与软技能的认知

今天看到一个很有意思的一段话&#xff0c;假设一个人的技能有两种&#xff0c;分别是&#xff1a;硬技能和软技能。 硬技能通常指的是与工作直接相关的、可以通过教育和培训获得的技能&#xff0c;如编程语言、会计知识等,这些技能往往有明确的衡量标准&#xff0c;容易通过考…

java 将 json 数据转为 java 中的对象

一、准备 json 数据 {"name": "mike","age": 17,"gender": 1,"subject": ["math","english"] }二、对应的java对象 package com.demo.controller;import lombok.Data; import java.util.List;Data pu…