oracle 搭建 DG 模式详解

本贴最后更新于 2506 天前,其中的信息可能已经时移世易

oracle DG 搭建

安装环境

在主机1上安装数据库软件,并建监听和实例,在主机2上安装数据库软件,并建监听,但不建实例,dg搭建之后数据会同步过去。

png

** 数据库参数优化(也可在spfile文件统一修改)**

注:scope=spfile 表示更改 spfile 文件的值,重启数据库后才能生效

sga,pga 配置

sga:(内存大小*80%)*80% = 128G * 80% * 80% = 82G;

pga:(内存大小*80%)*20% = 128G * 80% * 80% = 20G;

alter system set sga_max_size=82000m scope=spfile;

alter system set sga_target=82000m scope=spfile;

alter system set pga_aggregate_target=20000m scope=spfile;

JOB_QUEUE_PROCESSES 参数

JOB_QUEUE_PROCESSES 参数是 job 的进程个数,默认是 0;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=20;

共享池大小

Shared pool 是 SGA 中最关键的内存片段,共享池主要由库缓存(共享 SQL 区和 PL/SQL 区)和数据字典缓存组成。其中库缓存的作用是存放频繁使用的 sql,pl/sql 代码以及执行计划。数据字段缓存用于缓存数据字典。在内存空间有限的容量下,数据库系统根据一定的算法决定何时释放共享池中的 sql,pl/sql 代码以及数据字典信息。所以 shared_pool_size 不能太小,否则执行效率会很低。

alter system set shared_pool_size=15000m scope = spfile;

** 数据库最大连接数**

数据库的最大可支持的连接数,根据公司逻辑库的实际情况 1500 足够了

alter system set processes=1500 scope = spfile;

** 数据文件个数**

db_files 参数限制了数据库数据文件总的个数,datafiles 数目达到 db_files 指定后数据库不能添加新的数据文件

alter system set db_files=1000 scope=spfile;

** 游标参数**

OPEN_CURSORS 指定一个会话一次最多可以拥有的游标数,不够无法使用游标,过大不会增加系统开销

alter system set open_cursors=2000 scope=both;

alter system set session_cached_cursors=500 scope=spfile;

默认密码期限

Oracle 数据库密码期限是 180,把它改成无限制

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

** 数据库连接超时时间**

默认是 60 秒,60 秒没连接,会报错,把它设置成 0

LSNRCTL> set inbound_connect_timeout 0

LSNRCTL> set save_config_on_stop on 生效

关闭审计

oracle 11g 推出了审计功能,这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,考虑到实际情况,将审计功能关闭

alter system set audit_trail=none scope = spfile;

重启数据库

上述修改都需重启数据库生效

SQL>shutdown immediate

SQL>startup;

主数据库配置(192.168.8.173)

** 开启归档与强制 LOGGING**

Oracle dg 模式需要保证主从库一致,需要传输 archive log 和 redo log 到从库,如果不是归档模式无法保证主从库的数据一致。

SQL> select log_mode,force_logging from v$database;

LOG_MODE FOR


ARCHIVELOG NO

SQL> ALTER DATABASE FORCE LOGGING;

** 创建 redo 和 standy redo 日志**

根据公司平台情况创建6个redo日志组,每个大小1G,创建standby日志组的个数是原日志组个数+1再与thread的积,size不能小于原日志文件的大小,所以这里创建7个standby redo。

redo log 创建和删除

1:select * from v$log; 查看 redo 日志状态

2:alter system switch logfile; 将当前 redo 日志切到下一个执行

3:alter database add logfile group 6 ('/oracle/oradata/dbxxx/redo06.log') size 1024m reuse;

添加新的 redo 日志

4: alter database drop logfile group 1; 删除 redo 日志组(慎用)

standby redo log 的创建只是在 logfile 前加一个 standby

1.alter database add standby logfile group 7('/oracle/oradata/dbxxx/standyredo01.log') size 1024m reuse;

创建主库密码文件

Data Guard 配置中所有数据库必须都拥有独立的密码文件,并且必须保证同一个 Data Guard 配置中所有数据库服务器的 SYS 用户拥有相同密码以保证 redo 数据的顺利传输,因为 redo 传输服务通过认证的网络会话来传输 redo 数据,而会话使用包含在密码文件中的 SYS 用户密码来认证。

orapwd file=ORACLE_SID password=xxxx entries=1 force=y

SPFILE 文件配置(128G 内存数据库)

注:数据库启动时加载 spfile 文件,需对参数进行调整,以及主备配置

SQL> create pfile='/oracle/product/11.2/dbs/initdbxxx.ora' from spfile;

vi /oracle/product/11.2/dbs/initdbxxx.ora

dbxxx.__db_cache_size=66035122176

dbxxx.__java_pool_size=536870912

dbxxx.__large_pool_size=536870912

dbxxx.__oracle_base='/oracle'#ORACLE_BASE set from environment

dbxxx.__pga_aggregate_target=21474836480

dbxxx.__sga_target=83751862272

dbxxx.__shared_io_pool_size=0

dbxxx.__shared_pool_size=15569256448

dbxxx.__streams_pool_size=536870912

*.audit_file_dest='/oracle/admin/dbxxx/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/oracle/oradata/dbxxx/control01.ctl','/oracle/flash_recovery_area/dbxxx/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_files=1000

*.db_name='dbxxx'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=20971520000

*.DB_UNIQUE_NAME='dbxxxpr' *.diagnostic_dest='/oracle'

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

*.FAL_CLIENT='dbxxxpr'

*.FAL_SERVER='dbxxxdg'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbxxxpr,dbxxxdg)'

*.log_archive_dest_1='location=/oracle/oradata/dbxxx/archivelog'

*.log_archive_dest_2='SERVICE=dbxxxdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbxxxdg'

*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'

*.LOG_ARCHIVE_FORMAT='log%t_%s_%r.arc'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=1000

*.pga_aggregate_target=20971520000

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.session_cached_cursors=500

*.sessions=1655

*.sga_target=83751862272

*.STANDBY_FILE_MANAGEMENT='AUTO'

*.undo_tablespace='UNDOTBS1'

SPFILE 文件替换

spfiledbxxx.ora 复制 initdbxxx.ora

rm $ORACLE_HOME/dbs/spfiledbxxx.ora

SQL> create spfile from pfile='/oracle/product/11.2.0/dbs/initdbxxx.ora';

tns 文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

dbxxxpr =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = server173)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbxxx) )

)

dbxxxdg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.174)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbxxx) )

)

listener 文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = server173)(PORT = 1521)) )

)

ADR_BASE_LISTENER = /oracle

SAVE_CONFIG_ON_STOP_LISTENER = ON

INBOUND_CONNECT_TIMEOUT_LISTENER = 0

备数据库配置(192.168.8.174)

文件复制

将主数据库/oracle/product/10.2/network/admin 下的网络配置文件(tnsnames.ora,listener.ora),和/oracle/product/10.2/dbs 下的密码文件 orapwdbxxx 和 initdbxxx.ora 拷贝 scp 到备数据库相同目录下,scp 不行的话用 sz 下载,rz 上传。

initdbxxx.ora 参数配置

注:主备切换对应的名称正好相反,其他配置一样

修改 initdbxxx.ora 文件:

dbxxx.__db_cache_size=66035122176

dbxxx.__java_pool_size=536870912

dbxxx.__large_pool_size=536870912

dbxxx.__oracle_base='/oracle'#ORACLE_BASE set from environment

dbxxx.__pga_aggregate_target=21474836480

dbxxx.__sga_target=83751862272

dbxxx.__shared_io_pool_size=0

dbxxx.__shared_pool_size=15569256448

dbxxx.__streams_pool_size=536870912

*.audit_file_dest='/oracle/admin/dbxxx/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/oracle/oradata/dbxxx/control01.ctl','/oracle/flash_recovery_area/dbxxx/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_files=1000

*.db_name='dbxxx'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=20971520000

*.DB_UNIQUE_NAME='dbxxxdg'

*.diagnostic_dest='/oracle'

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

*.FAL_CLIENT='dbxxxdg'

*.FAL_SERVER='dbxxxpr'

*.local_listener='for_db'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbxxxpr,dbxxxdg)'

*.log_archive_dest_1='location=/oracle/oradata/dbxxx/archivelog'

*.log_archive_dest_2='SERVICE=dbxxxpr LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbxxxpr'

*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'

*.LOG_ARCHIVE_FORMAT='log%t_%s_%r.arc'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=1000

*.pga_aggregate_target=20971520000

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.session_cached_cursors=500

*.sessions=1655

*.sga_target=83751862272

*.STANDBY_FILE_MANAGEMENT='AUTO'

*.undo_tablespace='UNDOTBS1'

创建相关目录

mkdir -p /oracle/fast_recovery_area/dbxxx

mkdir -p /oracle/admin/dbxxx

cd /oracle/admin/dbxxx

mkdir -p adump dpdump pfile

mkdir -p /oracle/oradata/dbxxx/

mkdir -p /oracle/oradata/dbxxx/archivelog

tns 文件配置

修改/oracle/product/10.2/network/admin 目录下的 tnsnames.ora 文件,配置如下:

dbxxxdg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = server174)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbxxx) )

)

dbxxxpr =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.173)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dbxxx) )

)

listener 文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC = (GLOBAL_DBNAME = dbxxx) (ORACLE_HOME = /oracle/product/10.2) (SID_NAME = dbxxx) )

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = server174)(PORT = 1521)) )

)

ADR_BASE_LISTENER = /oracle

启动备库到 nomount

SQL> conn /as sysdba

SQL> create spfile from pfile='/oracle/product/11.2.0/dbs/initgdqxt.ora';

SQL> startup nomount

备数据库还原

[oracle@server174 ~]$ rman target sys/@dbxxxpr auxiliary sys/@dbxxxdg

RMAN> duplicate target database for standby nofilenamecheck from active database;

切换到同步模式

SQL> alter database open;

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

  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 342 关注
  • dbxxx
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 118 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 368 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 3 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 2 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 1 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 555 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 2 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 414 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 3 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 284 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 614 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 15 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    98 引用 • 903 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1282 回帖 • 4 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 3 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖 • 1 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 541 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 559 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 543 回帖 • 2 关注