oracle 搭建 DG 模式详解

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

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 回帖 • 364 关注
  • dbxxx
    1 引用

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    150 引用 • 257 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • LeetCode

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

    209 引用 • 72 回帖 • 1 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • Outlook
    1 引用 • 5 回帖 • 1 关注
  • Oracle

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

    107 引用 • 127 回帖 • 364 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 5 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 26 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 169 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 30 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 649 关注
  • 心情

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

    59 引用 • 369 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 34 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 611 关注
  • React

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

    192 引用 • 291 回帖 • 378 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1741 回帖 • 2 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 463 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖 • 1 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 292 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    27 引用 • 196 回帖 • 26 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 158 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 637 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 279 关注
  • Linux

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

    950 引用 • 943 回帖