当前位置:   article > 正文

oracle12c dataguard搭建及切换_oracle12c dg 切换

oracle12c dg 切换


准备工作:
主节点(centos7.9 + oracle 12.2): 安装数据库软件,建库(实例名 lo666)
从节点(centos7.9 + oracle 12.2): 安装数据库软件,不建库 (后续从主库同步,实例名stdlo777)


1. 创建用户和用户组(两个节点,root用户执行)

  1. groupadd oinstall
  2. groupadd dba
  3. groupadd oper
  4. useradd -g oinstall -G dba,oper oracle
  5. echo 'oracle' | passwd --stdin oracle

2. 创建数据库安装目录和数据存储目录(两个节点,root用户执行)

  1. mkdir -p /u01/oracle
  2. chown -R oracle.oinstall /u01
  3. chmod -R 775 /u01
  4. mkdir -p /data/arch
  5. chown -R oracle.oinstall /data

3. 安装依赖包(两个节点,root用户执行)

yum install libstdc++ libstdc++-devel gcc ksh glibc-devel libaio libaio-devel gcc-c++ compat-libcap1 sysstat smartmontools binutils rlwrap unzip 

4. 设置oracle用户的环境变量
vi .bash_profile  主节点,oracle用户添加如下内容

  1. export ORACLE_BASE=/u01
  2. export ORACLE_HOME=$ORACLE_BASE/oracle
  3. export ORACLE_SID=lo666
  4. export PATH=$ORACLE_HOME/bin:$PATH
  5. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  6. export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  7. stty erase ^H
  8. alias sysdba='rlwrap sqlplus / as sysdba'
  9. alias rmant='rlwrap rman target /'


vi .bash_profile  从节点,oracle用户添加如下内容

  1. export ORACLE_BASE=/u01
  2. export ORACLE_HOME=$ORACLE_BASE/oracle
  3. export ORACLE_SID=stdlo777
  4. export PATH=$ORACLE_HOME/bin:$PATH
  5. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  6. export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  7. stty erase ^H
  8. alias sysdba='rlwrap sqlplus / as sysdba'
  9. alias rmant='rlwrap rman target /'

5. 设置swap(两个节点,root用户执行)

  1. dd if=/dev/zero of=/opt/swap.file bs=1G count=10
  2. mkswap /opt/swap.file
  3. swapon /opt/swap.file

设置swap开机自动挂载(两个节点,root用户执行)

  1. chmod +x /etc/rc.d/rc.local
  2. swapon /opt/swap.file

6. 配置hosts(两个节点,root用户执行)

  1. vi /etc/hosts
  2. 192.168.1.225 dg225
  3. 192.168.1.226 dg226

7. 配置sysctl.conf和limits.conf (两个节点,root用户执行)

  1. vi /etc/sysctl.conf
  2. kernel.sem=250 32000 100 128
  3. fs.aio-max-nr = 1048576
  4. fs.file-max = 6815744
  5. kernel.shmall = 2097152
  6. kernel.shmmax = 6208434176
  7. kernel.shmmni = 4096
  8. kernel.sem = 250 32000 100 128
  9. net.ipv4.ip_local_port_range = 9000 65500
  10. net.core.rmem_default = 262144
  11. net.core.rmem_max = 4194304
  12. net.core.wmem_default = 262144
  13. net.core.wmem_max = 1048576

  1. vi /etc/security/limits.conf
  2. oracle  soft    nofile  65536
  3. oracle  hard    nofile  65536
  4. oracle  soft    nproc   2047
  5. oracle  hard    nproc   16384
  6. oracle  soft    stack   10240

8. 重启系统(两个节点,root用户执行)
reboot

9. 解压数据库(两个节点,root用户执行)
cd /opt
unzip Oracle_12C_liunx_64.zip
chown oracle.oinstall database -R

10. 两节点静默安装数据库(两个节点,oracle用户执行)
/opt/database/runInstaller -silent -responseFile /opt/12c_only_dbsw.rsp
cat /opt/12c_only_dbsw.rsp

  1. oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
  2. oracle.install.option=INSTALL_DB_SWONLY
  3. UNIX_GROUP_NAME=oinstall
  4. INVENTORY_LOCATION=/u01/tmp/oraInventory
  5. ORACLE_HOME=/u01/oracle
  6. ORACLE_BASE=/u01
  7. oracle.install.db.InstallEdition=EE
  8. oracle.install.db.OSDBA_GROUP=dba
  9. oracle.install.db.OSOPER_GROUP=oper
  10. oracle.install.db.OSBACKUPDBA_GROUP=dba
  11. oracle.install.db.OSDGDBA_GROUP=dba
  12. oracle.install.db.OSKMDBA_GROUP=dba
  13. oracle.install.db.OSRACDBA_GROUP=dba
  14. oracle.install.db.rac.configurationType=
  15. oracle.install.db.CLUSTER_NODES=
  16. oracle.install.db.isRACOneInstall=false
  17. oracle.install.db.racOneServiceName=
  18. oracle.install.db.rac.serverpoolName=
  19. oracle.install.db.rac.serverpoolCardinality=0
  20. oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
  21. oracle.install.db.config.starterdb.globalDBName=
  22. oracle.install.db.config.starterdb.SID=
  23. oracle.install.db.ConfigureAsContainerDB=false
  24. oracle.install.db.config.PDBName=
  25. oracle.install.db.config.starterdb.characterSet=
  26. oracle.install.db.config.starterdb.memoryOption=false
  27. oracle.install.db.config.starterdb.memoryLimit=
  28. oracle.install.db.config.starterdb.installExampleSchemas=false
  29. oracle.install.db.config.starterdb.password.ALL=
  30. oracle.install.db.config.starterdb.password.SYS=
  31. oracle.install.db.config.starterdb.password.SYSTEM=
  32. oracle.install.db.config.starterdb.password.DBSNMP=
  33. oracle.install.db.config.starterdb.password.PDBADMIN=
  34. oracle.install.db.config.starterdb.managementOption=DEFAULT
  35. oracle.install.db.config.starterdb.omsHost=
  36. oracle.install.db.config.starterdb.omsPort=0
  37. oracle.install.db.config.starterdb.emAdminUser=
  38. oracle.install.db.config.starterdb.emAdminPassword=
  39. oracle.install.db.config.starterdb.enableRecovery=false
  40. oracle.install.db.config.starterdb.storageType=
  41. oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
  42. oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
  43. oracle.install.db.config.asm.diskGroup=
  44. oracle.install.db.config.asm.ASMSNMPPassword=
  45. MYORACLESUPPORT_USERNAME=
  46. MYORACLESUPPORT_PASSWORD=
  47. SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
  48. DECLINE_SECURITY_UPDATES=true
  49. PROXY_HOST=
  50. PROXY_PORT=
  51. PROXY_USER=
  52. PROXY_PWD=
  53. COLLECTOR_SUPPORTHUB_URL=

主节点,静默创建数据库(主节点,oracle用户执行)

  1. [oracle@dg225 opt]$ dbca -silent -createDatabase -responseFile 12c_dbca_lo666.rsp
  2. [oracle@dg225 opt]$ cat 12c_dbca_lo666.rsp
  3. responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
  4. gdbName=lo666
  5. sid=lo666
  6. databaseConfigType=SI
  7. RACOneNodeServiceName=
  8. policyManaged=false
  9. createServerPool=false
  10. serverPoolName=
  11. cardinality=
  12. force=false
  13. pqPoolName=
  14. pqCardinality=
  15. createAsContainerDatabase=false
  16. numberOfPDBs=0
  17. pdbName=
  18. useLocalUndoForPDBs=true
  19. pdbAdminPassword=
  20. nodelist=
  21. templateName=/u01/oracle/assistants/dbca/templates/General_Purpose.dbc
  22. sysPassword=
  23. systemPassword=
  24. serviceUserPassword=
  25. emConfiguration=DBEXPRESS
  26. emExpressPort=5500
  27. runCVUChecks=false
  28. dbsnmpPassword=
  29. omsHost=
  30. omsPort=0
  31. emUser=
  32. emPassword=
  33. dvConfiguration=false
  34. dvUserName=
  35. dvUserPassword=
  36. dvAccountManagerName=
  37. dvAccountManagerPassword=
  38. olsConfiguration=false
  39. datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
  40. datafileDestination=/data/oradata/{DB_UNIQUE_NAME}/
  41. recoveryAreaDestination=
  42. storageType=FS
  43. diskGroupName=
  44. asmsnmpPassword=
  45. recoveryGroupName=
  46. characterSet=ZHS16GBK
  47. nationalCharacterSet=AL16UTF16
  48. registerWithDirService=false
  49. dirServiceUserName=
  50. dirServicePassword=
  51. walletPassword=
  52. listeners=
  53. variablesFile=
  54. variables=DB_UNIQUE_NAME=lo666,ORACLE_BASE=/u01,PDB_NAME=,DB_NAME=lo666,ORACLE_HOME=/u01/oracle,SID=lo666
  55. initParams=undo_tablespace=UNDOTBS1,processes=480,nls_language=AMERICAN,pga_aggregate_target=1184MB,sga_target=3552MB,dispatchers=(PROTOCOL=TCP) (SERVICE=lo666XDB),db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_LO666,compatible=12.2.0,control_files=("/data/oradata/{DB_UNIQUE_NAME}/control01.ctl", "/data/oradata/{DB_UNIQUE_NAME}/control02.ctl"),db_name=lo666,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
  56. sampleSchema=true
  57. memoryPercentage=40
  58. databaseType=MULTIPURPOSE
  59. automaticMemoryManagement=false
  60. totalMemory=0


配置主节点: 

  1. [oracle@dg225 ~]$ alias sysdba
  2. alias sysdba='rlwrap sqlplus / as sysdba'
  3. [oracle@dg225 ~]$ sysdba
  4. SQL*Plus: Release 12.2.0.1.0 Production on Sat Jun 22 21:16:38 2024
  5. Copyright (c) 1982, 2016, Oracle.  All rights reserved.
  6. Connected to an idle instance.
  7. SQL> startup mount
  8. ORACLE instance started.
  9. Total System Global Area 3724541952 bytes
  10. Fixed Size                  8627296 bytes
  11. Variable Size             939527072 bytes
  12. Database Buffers         2768240640 bytes
  13. Redo Buffers                8146944 bytes
  14. Database mounted.
  15. SQL> alter database archivelog;         -- 修改归档模式
  16. Database altered.
  17. SQL> alter database open;       -- 打开数据库
  18. Database altered.
  19. SQL> alter database force logging;       -- 打开force logging; 
  20. Database altered.
  21. SQL> alter database add standby logfile ('/data/oradata/lo666/stdredo01.log') size 200M;         -- 添加standby redo log
  22. Database altered.
  23. SQL> alter database add standby logfile ('/data/oradata/lo666/stdredo02.log') size 200M;         -- 添加standby redo log
  24. Database altered.
  25. SQL> alter database add standby logfile ('/data/oradata/lo666/stdredo03.log') size 200M;         -- 添加standby redo log
  26. Database altered.
  27. SQL> alter database add standby logfile ('/data/oradata/lo666/stdredo04.log') size 200M;         -- 添加standby redo log
  28. Database altered.
  29. SQL> col MEMBER for a50
  30. SQL> set linesize 200
  31. SQL> select group#,type,member  from v$logfile where type='STANDBY';
  32.     GROUP# TYPE    MEMBER
  33. ---------- ------- --------------------------------------------------
  34.          4 STANDBY /data/oradata/lo666/stdredo01.log
  35.          5 STANDBY /data/oradata/lo666/stdredo02.log
  36.          6 STANDBY /data/oradata/lo666/stdredo03.log
  37.          7 STANDBY /data/oradata/lo666/stdredo04.log
  38. SQL> select GROUP#, DBID,THREAD#,SEQUENCE#,STATUS from v$standby_log;
  39.     GROUP# DBID                                        THREAD#  SEQUENCE# STATUS
  40. ---------- ---------------------------------------- ---------- ---------- ----------
  41.          4 UNASSIGNED                                        0          0 UNASSIGNED
  42.          5 UNASSIGNED                                        0          0 UNASSIGNED
  43.          6 UNASSIGNED                                        0          0 UNASSIGNED
  44.          7 UNASSIGNED                                        0          0 UNASSIGNED
  45. SQL> alter system set log_archive_config='DG_CONFIG=(lo666,stdlo777)' scope=spfile;          --- 修改dg参数
  46. System altered.
  47. SQL> alter system set log_archive_dest_1='LOCATION=/data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lo666' scope=both;
  48. System altered.
  49. SQL> alter system set log_archive_dest_2='SERVICE=stdlo777 LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdlo777' scope=spfile;
  50. System altered.
  51. SQL> alter system set db_file_name_convert='/data/oradata/stdlo777/','/data/oradata/lo666/' scope=spfile;
  52. System altered.
  53. SQL> alter system set log_file_name_convert='/data/oradata/stdlo777/','/data/oradata/lo666/' scope=spfile;
  54. System altered.
  55. SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=enable scope=spfile;
  56. System altered.
  57. SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=enable scope=spfile;
  58. System altered.
  59. SQL> alter system set FAL_CLIENT=lo666 scope=spfile;
  60. System altered.
  61. SQL> alter system set FAL_SERVER=stdlo777 scope=spfile;
  62. System altered.
  63. SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile;
  64. System altered.
  65. SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
  66. System altered.
  67. SQL> create pfile from spfile;       --- 创建pfile
  68. File created.
  69. SQL> 
  70. [oracle@dg225 dbs]$ cat /u01/oracle/dbs/initlo666.ora
  71. lo666.__data_transfer_cache_size=0
  72. lo666.__db_cache_size=2768240640
  73. lo666.__inmemory_ext_roarea=0
  74. lo666.__inmemory_ext_rwarea=0
  75. lo666.__java_pool_size=16777216
  76. lo666.__large_pool_size=50331648
  77. lo666.__oracle_base='/u01'#ORACLE_BASE set from environment
  78. lo666.__pga_aggregate_target=1241513984
  79. lo666.__sga_target=3724541952
  80. lo666.__shared_io_pool_size=201326592
  81. lo666.__shared_pool_size=671088640
  82. lo666.__streams_pool_size=0
  83. *.audit_file_dest='/u01/admin/lo666/adump'
  84. *.audit_trail='db'
  85. *.compatible='12.2.0'
  86. *.control_files='/data/oradata/lo666/control01.ctl','/data/oradata/lo666/control02.ctl'
  87. *.db_block_size=8192
  88. *.db_file_name_convert='/data/oradata/stdlo777/','/data/oradata/lo666/'
  89. *.db_name='lo666'
  90. *.diagnostic_dest='/u01'
  91. *.dispatchers='(PROTOCOL=TCP) (SERVICE=lo666XDB)'
  92. *.fal_client='LO666'
  93. *.fal_server='STDLO777'
  94. *.log_archive_config='DG_CONFIG=(lo666,stdlo777)'
  95. *.log_archive_dest_1='LOCATION=/data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lo666'
  96. *.log_archive_dest_2='SERVICE=stdlo777 LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stdlo777'
  97. *.log_archive_dest_state_1='ENABLE'
  98. *.log_archive_dest_state_2='ENABLE'
  99. *.log_archive_format='%t_%s_%r.arc'
  100. *.log_file_name_convert='/data/oradata/stdlo777/','/data/oradata/lo666/'
  101. *.nls_language='AMERICAN'
  102. *.nls_territory='AMERICA'
  103. *.open_cursors=300
  104. *.pga_aggregate_target=1184m
  105. *.processes=480
  106. *.remote_login_passwordfile='EXCLUSIVE'
  107. *.sga_target=3552m
  108. *.standby_file_management='AUTO'
  109. *.undo_tablespace='UNDOTBS1'

拷贝pfile至从节点
 

[oracle@dg225 dbs]$ scp initlo666.ora 192.168.1.226:/u01/oracle/dbs/initstdlo777.ora

 主节点配置监听

  1. [oracle@dg225 admin]$ cat listener.ora
  2. # listener.ora Network Configuration File: /u01/oracle/network/admin/listener.ora
  3. # Generated by Oracle configuration tools.
  4. LISTENER =
  5.   (DESCRIPTION_LIST =
  6.     (DESCRIPTION =
  7.       (ADDRESS = (PROTOCOL = TCP)(HOST = dg225)(PORT = 1521))
  8.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  9.     )
  10.   )
  11. SID_LIST_LISTENER =
  12.   (SID_LIST =
  13.     (SID_DESC =
  14.       (GLOBAL_DBNAME = lo666)
  15.       (ORACLE_HOME = /u01/oracle)
  16.       (SID_NAME = lo666)
  17.     )
  18.   )
  19. ADR_BASE_LISTENER = /u01/
  20. [oracle@dg225 admin]$ cat tnsnames.ora
  21. lo666 =
  22.   (DESCRIPTION =
  23.     (ADDRESS = (PROTOCOL = TCP)(HOST = dg225)(PORT = 1521))
  24.     (CONNECT_DATA =
  25.       (SERVER = DEDICATED)
  26.       (SERVICE_NAME = lo666)
  27.     )
  28.   )
  29. stdlo777 =
  30.   (DESCRIPTION =
  31.     (ADDRESS = (PROTOCOL = TCP)(HOST = dg226)(PORT = 1521))
  32.     (CONNECT_DATA =
  33.       (SERVER = DEDICATED)
  34.       (SID = stdlo777)
  35.     )
  36.   )
  37. ADR_BASE_LISTENER = /u01/


从节点配置参数文件:
修改 参数文件

  1. vi /u01/oracle/dbs/initstdlo777.ora
  2. lo666.__data_transfer_cache_size=0
  3. lo666.__db_cache_size=2768240640
  4. lo666.__inmemory_ext_roarea=0
  5. lo666.__inmemory_ext_rwarea=0
  6. lo666.__java_pool_size=16777216
  7. lo666.__large_pool_size=50331648
  8. lo666.__oracle_base='/u01'#ORACLE_BASE set from environment
  9. lo666.__pga_aggregate_target=1241513984
  10. lo666.__sga_target=3724541952
  11. lo666.__shared_io_pool_size=201326592
  12. lo666.__shared_pool_size=671088640
  13. lo666.__streams_pool_size=0
  14. *.audit_file_dest='/u01/admin/stdlo777/adump'
  15. *.audit_trail='db'
  16. *.compatible='12.2.0'
  17. *.control_files='/data/oradata/stdlo777/control01.ctl','/data/oradata/stdlo777/control02.ctl'
  18. *.db_block_size=8192
  19. *.db_file_name_convert='/data/oradata/lo666/','/data/oradata/stdlo777/'
  20. *.db_name='lo666'
  21. *.diagnostic_dest='/u01'
  22. *.dispatchers='(PROTOCOL=TCP) (SERVICE=stdlo777XDB)'
  23. *.fal_server='LO666'
  24. *.fal_client='STDLO777'
  25. *.log_archive_config='DG_CONFIG=(stdlo777,lo666)'
  26. *.log_archive_dest_1='LOCATION=/data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stdlo777'
  27. *.log_archive_dest_2='SERVICE=lo666 LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=lo666'
  28. *.log_archive_dest_state_1='ENABLE'
  29. *.log_archive_dest_state_2='ENABLE'
  30. *.log_archive_format='%t_%s_%r.arc'
  31. *.log_file_name_convert='/data/oradata/lo666/','/data/oradata/stdlo777/'
  32. *.nls_language='AMERICAN'
  33. *.nls_territory='AMERICA'
  34. *.open_cursors=300
  35. *.pga_aggregate_target=1184m
  36. *.processes=480
  37. *.remote_login_passwordfile='EXCLUSIVE'
  38. *.sga_target=3552m
  39. *.standby_file_management='AUTO'
  40. *.undo_tablespace='UNDOTBS1'
  41. *.DB_UNIQUE_NAME=stdlo777

从节点配置监听

  1. [oracle@dg226 admin]$ cat listener.ora
  2. LISTENER =
  3.   (DESCRIPTION_LIST =
  4.     (DESCRIPTION =
  5.       (ADDRESS = (PROTOCOL = TCP)(HOST = dg226)(PORT = 1521))
  6.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  7.     )
  8.   )
  9. SID_LIST_LISTENER =
  10.   (SID_LIST =
  11.     (SID_DESC =
  12.       (GLOBAL_DBNAME = stdlo777)
  13.       (ORACLE_HOME = /u01/oracle)
  14.       (SID_NAME = stdlo777)
  15.     )
  16.   )
  17. ADR_BASE_LISTENER = /u01/
  18. [oracle@dg226 admin]$ cat tnsnames.ora
  19. lo666 =
  20.   (DESCRIPTION =
  21.     (ADDRESS = (PROTOCOL = TCP)(HOST = dg225)(PORT = 1521))
  22.     (CONNECT_DATA =
  23.       (SERVER = DEDICATED)
  24.       (SERVICE_NAME = lo666)
  25.     )
  26.   )
  27. stdlo777 =
  28.   (DESCRIPTION =
  29.     (ADDRESS = (PROTOCOL = TCP)(HOST = dg226)(PORT = 1521))
  30.     (CONNECT_DATA =
  31.       (SERVER = DEDICATED)
  32.       (SID = stdlo777)
  33.     )
  34.   )
  35. ADR_BASE_LISTENER = /u01/
  36. [oracle@dg226 admin]$ lsnrctl start

从节点配置必要的目录, 启动至nomount

  1. [oracle@dg226 ~]$ mkdir -p /u01/admin/stdlo777/adump
  2. [oracle@dg226 ~]$ mkdir -p /data/oradata/stdlo777
  3. [oracle@dg226 ~]$ mkdir -p /data/arch
  4. [oracle@dg226 ~]$ sysdba
  5. SQL*Plus: Release 12.2.0.1.0 Production on Sat Jun 22 22:33:22 2024
  6. Copyright (c) 1982, 2016, Oracle.  All rights reserved.
  7. Connected to an idle instance.
  8. SQL> startup nomount             --- 使用参数文件开启数据库到nomount状态
  9. ORACLE instance started.
  10. Total System Global Area 3724541952 bytes
  11. Fixed Size                  8627296 bytes
  12. Variable Size             939527072 bytes
  13. Database Buffers         2768240640 bytes
  14. Redo Buffers                8146944 bytes
  15. SQL>

主节点 duplicate数据库至从节点:

  1. [oracle@dg225 ~]$ scp /u01/oracle/dbs/orapwlo666 192.168.1.226:/u01/oracle/dbs/orapwstdlo777   --- 拷贝密码文件
  2. [oracle@dg225 admin]$ rlwrap rman target sys/Oracle123@lo666 AUXILIARY sys/Oracle123@stdlo777  
  3. Recovery Manager: Release 12.2.0.1.0 - Production on Sun Jun 23 17:14:01 2024
  4. Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
  5. connected to target database: LO666 (DBID=645469506)
  6. connected to auxiliary database: LO666 (not mounted)
  7. RMAN> duplicate target database for standby from active database dorecover nofilenamecheck;   --- 将主库duplicate到从库
  8. Starting Duplicate Db at 23-JUN-24
  9. using target database control file instead of recovery catalog
  10. allocated channel: ORA_AUX_DISK_1
  11. channel ORA_AUX_DISK_1: SID=128 device type=DISK
  12. current log archived
  13. contents of Memory Script:
  14. {
  15.    backup as copy reuse
  16.    targetfile  '/u01/oracle/dbs/orapwlo666' auxiliary format
  17.  '/u01/oracle/dbs/orapwstdlo777'   ;
  18. }
  19. executing Memory Script
  20. Starting backup at 23-JUN-24
  21. allocated channel: ORA_DISK_1
  22. channel ORA_DISK_1: SID=134 device type=DISK
  23. Finished backup at 23-JUN-24
  24. contents of Memory Script:
  25. {
  26.    restore clone from service  'lo666' standby controlfile;
  27. }
  28. executing Memory Script
  29. Starting restore at 23-JUN-24
  30. using channel ORA_AUX_DISK_1
  31. channel ORA_AUX_DISK_1: starting datafile backup set restore
  32. channel ORA_AUX_DISK_1: using network backup set from service lo666
  33. channel ORA_AUX_DISK_1: restoring control file
  34. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
  35. output file name=/data/oradata/stdlo777/control01.ctl
  36. output file name=/data/oradata/stdlo777/control02.ctl
  37. Finished restore at 23-JUN-24
  38. contents of Memory Script:
  39. {
  40.    sql clone 'alter database mount standby database';
  41. }
  42. executing Memory Script
  43. sql statement: alter database mount standby database
  44. contents of Memory Script:
  45. {
  46.    set newname for tempfile  1 to
  47.  "/data/oradata/stdlo777/temp01.dbf";
  48.    switch clone tempfile all;
  49.    set newname for datafile  1 to
  50.  "/data/oradata/stdlo777/system01.dbf";
  51.    set newname for datafile  3 to
  52.  "/data/oradata/stdlo777/sysaux01.dbf";
  53.    set newname for datafile  4 to
  54.  "/data/oradata/stdlo777/undotbs01.dbf";
  55.    set newname for datafile  7 to
  56.  "/data/oradata/stdlo777/users01.dbf";
  57.    restore
  58.    from  nonsparse   from service
  59.  'lo666'   clone database
  60.    ;
  61.    sql 'alter system archive log current';
  62. }
  63. executing Memory Script
  64. executing command: SET NEWNAME
  65. renamed tempfile 1 to /data/oradata/stdlo777/temp01.dbf in control file
  66. executing command: SET NEWNAME
  67. executing command: SET NEWNAME
  68. executing command: SET NEWNAME
  69. executing command: SET NEWNAME
  70. Starting restore at 23-JUN-24
  71. using channel ORA_AUX_DISK_1
  72. channel ORA_AUX_DISK_1: starting datafile backup set restore
  73. channel ORA_AUX_DISK_1: using network backup set from service lo666
  74. channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
  75. channel ORA_AUX_DISK_1: restoring datafile 00001 to /data/oradata/stdlo777/system01.dbf
  76. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
  77. channel ORA_AUX_DISK_1: starting datafile backup set restore
  78. channel ORA_AUX_DISK_1: using network backup set from service lo666
  79. channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
  80. channel ORA_AUX_DISK_1: restoring datafile 00003 to /data/oradata/stdlo777/sysaux01.dbf
  81. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
  82. channel ORA_AUX_DISK_1: starting datafile backup set restore
  83. channel ORA_AUX_DISK_1: using network backup set from service lo666
  84. channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
  85. channel ORA_AUX_DISK_1: restoring datafile 00004 to /data/oradata/stdlo777/undotbs01.dbf
  86. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
  87. channel ORA_AUX_DISK_1: starting datafile backup set restore
  88. channel ORA_AUX_DISK_1: using network backup set from service lo666
  89. channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
  90. channel ORA_AUX_DISK_1: restoring datafile 00007 to /data/oradata/stdlo777/users01.dbf
  91. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
  92. Finished restore at 23-JUN-24
  93. sql statement: alter system archive log current
  94. current log archived
  95. contents of Memory Script:
  96. {
  97.    restore clone force from service  'lo666'
  98.            archivelog from scn  1847821;
  99.    switch clone datafile all;
  100. }
  101. executing Memory Script
  102. Starting restore at 23-JUN-24
  103. using channel ORA_AUX_DISK_1
  104. channel ORA_AUX_DISK_1: starting archived log restore to default destination
  105. channel ORA_AUX_DISK_1: using network backup set from service lo666
  106. channel ORA_AUX_DISK_1: restoring archived log
  107. archived log thread=1 sequence=7
  108. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
  109. channel ORA_AUX_DISK_1: starting archived log restore to default destination
  110. channel ORA_AUX_DISK_1: using network backup set from service lo666
  111. channel ORA_AUX_DISK_1: restoring archived log
  112. archived log thread=1 sequence=8
  113. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
  114. channel ORA_AUX_DISK_1: starting archived log restore to default destination
  115. channel ORA_AUX_DISK_1: using network backup set from service lo666
  116. channel ORA_AUX_DISK_1: restoring archived log
  117. archived log thread=1 sequence=9
  118. channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
  119. Finished restore at 23-JUN-24
  120. datafile 1 switched to datafile copy
  121. input datafile copy RECID=1 STAMP=1172423729 file name=/data/oradata/stdlo777/system01.dbf
  122. datafile 3 switched to datafile copy
  123. input datafile copy RECID=2 STAMP=1172423729 file name=/data/oradata/stdlo777/sysaux01.dbf
  124. datafile 4 switched to datafile copy
  125. input datafile copy RECID=3 STAMP=1172423729 file name=/data/oradata/stdlo777/undotbs01.dbf
  126. datafile 7 switched to datafile copy
  127. input datafile copy RECID=4 STAMP=1172423729 file name=/data/oradata/stdlo777/users01.dbf
  128. contents of Memory Script:
  129. {
  130.    set until scn  1847958;
  131.    recover
  132.    standby
  133.    clone database
  134.     delete archivelog
  135.    ;
  136. }
  137. executing Memory Script
  138. executing command: SET until clause
  139. Starting recover at 23-JUN-24
  140. using channel ORA_AUX_DISK_1
  141. starting media recovery
  142. archived log for thread 1 with sequence 7 is already on disk as file /data/arch/1_7_1172347332.arc
  143. archived log for thread 1 with sequence 8 is already on disk as file /data/arch/1_8_1172347332.arc
  144. archived log for thread 1 with sequence 9 is already on disk as file /data/arch/1_9_1172347332.arc
  145. archived log file name=/data/arch/1_7_1172347332.arc thread=1 sequence=7
  146. archived log file name=/data/arch/1_8_1172347332.arc thread=1 sequence=8
  147. archived log file name=/data/arch/1_9_1172347332.arc thread=1 sequence=9
  148. media recovery complete, elapsed time: 00:00:02
  149. Finished recover at 23-JUN-24
  150. Finished Duplicate Db at 23-JUN-24
  151. RMAN>
  152. 从库:
  153. [oracle@dg226 admin]$ sysdba
  154. SQL*Plus: Release 12.2.0.1.0 Production on Sun Jun 23 17:16:56 2024
  155. Copyright (c) 1982, 2016, Oracle.  All rights reserved.
  156. Connected to:
  157. Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  158. SQL> select status from v$instance;
  159. STATUS
  160. ------------
  161. MOUNTED
  162. SQL> alter database open read only;                 --- 从库以只读的方式打开
  163. Database altered.
  164. SQL> alter database recover managed standby database using current logfile disconnect from session;          --- 开启从库的日志应用
  165. Database altered.
  166. SQL>
  167. SQL> alter database recover managed standby database cancel;       --- 可停止从库的日志应用
  168. Database altered.

---------------dg 已搭建完成,数据已可自动同步到备节点 --------------------------------------------


--------------- 开始切换switchover ----------------------------------------------------

主节点检查:

  1. SYS@lo666> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database; -- 角色为PRIMARY,可切换
  2. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  3. --------- -------------------- -------------------- ---------------- ----------- --------------------
  4. LO666 READ WRITE MAXIMUM PERFORMANCE PRIMARY 645608162 TO STANDBY
  5. SYS@lo666> select process,status,client_process,sequence#,block# from v$managed_standby; -- LGWR 在写 WRITING
  6. PROCESS STATUS CLIENT_P SEQUENCE# BLOCK#
  7. --------- ------------ -------- ---------- ----------
  8. ARCH CLOSING ARCH 24 2048
  9. DGRD ALLOCATED N/A 0 0
  10. DGRD ALLOCATED N/A 0 0
  11. ARCH CLOSING ARCH 24 1
  12. ARCH CLOSING ARCH 22 251904
  13. ARCH CONNECTED ARCH 0 0
  14. DGRD ALLOCATED N/A 0 0
  15. LGWR WRITING LGWR 25 365

备节点检查:

  1. SYS@stdlo777> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database; -- 角色为PHYSICAL STANDBY ,可切换
  2. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  3. --------- -------------------- -------------------- ---------------- ----------- --------------------
  4. LO666 READ ONLY WITH APPLY MAXIMUM PERFORMANCE PHYSICAL STANDBY 645608162 NOT ALLOWED
  5. SYS@stdlo777> select process,status,client_process,sequence#,block# from v$managed_standby; -- 备库MRP0在应用日志 APPLYING_LOG
  6. PROCESS STATUS CLIENT_P SEQUENCE# BLOCK#
  7. --------- ------------ -------- ---------- ----------
  8. ARCH CONNECTED ARCH 0 0
  9. DGRD ALLOCATED N/A 0 0
  10. DGRD ALLOCATED N/A 0 0
  11. ARCH CONNECTED ARCH 0 0
  12. ARCH CONNECTED ARCH 0 0
  13. RFS IDLE Archival 0 0
  14. ARCH CLOSING ARCH 24 2048
  15. RFS IDLE UNKNOWN 0 0
  16. RFS IDLE LGWR 25 414
  17. MRP0 APPLYING_LOG N/A 25 416
  18. 10 rows selected.

主节点切换:

  1. SYS@lo666> alter database commit to switchover to physical standby with session shutdown ; -- 将主节点切换为备,关闭主节点
  2. Database altered.

备节点接管:

  1. SYS@stdlo777> select process,status,client_process,sequence#,block# from v$managed_standby; -- 此时MRP0 为等待日志
  2. PROCESS STATUS CLIENT_P SEQUENCE# BLOCK#
  3. --------- ------------ -------- ---------- ----------
  4. ARCH CLOSING ARCH 25 1
  5. DGRD ALLOCATED N/A 0 0
  6. DGRD ALLOCATED N/A 0 0
  7. ARCH CONNECTED ARCH 0 0
  8. ARCH CONNECTED ARCH 0 0
  9. ARCH CLOSING ARCH 24 2048
  10. MRP0 WAIT_FOR_LOG N/A 26 0
  11. 7 rows selected.
  12. SYS@stdlo777> alter database commit to switchover to primary with session shutdown; -- 切换为主primary
  13. Database altered.
  14. SYS@stdlo777> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database;
  15. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  16. --------- -------------------- -------------------- ---------------- ----------- --------------------
  17. LO666 MOUNTED MAXIMUM PERFORMANCE PRIMARY 0 NOT ALLOWED
  18. SYS@stdlo777> alter database open;
  19. Database altered.
  20. SYS@stdlo777> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database; -- 角色已经切换为主
  21. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  22. --------- -------------------- -------------------- ---------------- ----------- --------------------
  23. LO666 READ WRITE MAXIMUM PERFORMANCE PRIMARY 645973944 FAILED DESTINATION

原主节点,现启动作为备节点:

  1. SYS@lo666> startup mount
  2. ORACLE instance started.
  3. Total System Global Area 3724541952 bytes
  4. Fixed Size 8627296 bytes
  5. Variable Size 939527072 bytes
  6. Database Buffers 2768240640 bytes
  7. Redo Buffers 8146944 bytes
  8. Database mounted.
  9. SYS@lo666> alter database open read only; -- read only 打开数据库,作为备库准备接收日志
  10. Database altered.
  11. SYS@lo666> set line 200
  12. SYS@lo666> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database; -- 角色为备库,需要recovery
  13. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  14. --------- -------------------- -------------------- ---------------- ----------- --------------------
  15. LO666 READ ONLY MAXIMUM PERFORMANCE PHYSICAL STANDBY 0 RECOVERY NEEDED
  16. SYS@lo666> alter database recover managed standby database using current logfile disconnect from session; -- 开始应用日志
  17. Database altered.
  18. SYS@lo666> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database;
  19. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  20. --------- -------------------- -------------------- ---------------- ----------- --------------------
  21. LO666 READ ONLY WITH APPLY MAXIMUM PERFORMANCE PHYSICAL STANDBY 645973944 NOT ALLOWED
  22. SYS@lo666>

新主节点已切换成功,并将日志同步给备节点:

  1. SYS@stdlo777> select name,open_mode,protection_mode,database_role, switchover#,switchover_status from v$database; -- 新主节点状态
  2. NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER# SWITCHOVER_STATUS
  3. --------- -------------------- -------------------- ---------------- ----------- --------------------
  4. LO666 READ WRITE MAXIMUM PERFORMANCE PRIMARY 645973944 TO STANDBY
  5. SYS@stdlo777> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; -- 检查日志是否被备库应用
  6. SEQUENCE# APPLIED
  7. ---------- ---------
  8. 7 YES
  9. 8 YES
  10. 9 YES
  11. 10 YES
  12. 11 YES
  13. 12 YES
  14. 13 YES
  15. 13 YES
  16. 14 YES
  17. 14 YES
  18. 15 YES
  19. SEQUENCE# APPLIED
  20. ---------- ---------
  21. 15 YES
  22. 16 YES
  23. 16 YES
  24. 17 YES
  25. 17 YES
  26. 18 YES
  27. 18 YES
  28. 19 YES
  29. 19 YES

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/976418
推荐阅读
  

闽ICP备14008679号