oracle DG 搭建
安装环境
在主机1上安装数据库软件,并建监听和实例,在主机2上安装数据库软件,并建监听,但不建实例,dg搭建之后数据会同步过去。
** 数据库参数优化(也可在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_HOME/dbs/orapwORACLE_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;
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于