1.准备工作
首先得准备两个能够PING通,并且装了Oracle软件且已经建库的Linux虚拟机。操作系统不限,至少有一个虚拟机已经建好库,最好两个都建好相同SID的库,这样少很多创建目录的麻烦,这里库的SID都是orcl,Linux严格区分大小写,所以SID的大小写得注意。
我这里有两个名为PD和ST的Linux虚拟机。
PD:192.168.56.42(主库)
ST:192.168.56.43(备库)
2.在主库做一些操作
2.1强制force logging
- SQL> shutdown immediate
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- SQL> startup mount
- ORACLE instance started.
- Total System Global Area 1653518336 bytes
- Fixed Size 2253784 bytes
- Variable Size 1006636072 bytes
- Database Buffers 637534208 bytes
- Redo Buffers 7094272 bytes
- Database mounted.
- SQL> alter database force logging; --修改数据库为强制记日志,这是必须的操作,主库的每一步操作都得记录到日志中去。
- Database altered.
2.2开启主库的归档模式
- SQL> alter database archivelog; --修改数据库为归档模式,因为dg是通过传送归档日志到备库然后应用来保证主备库一致的。
- Database altered.
2.3创建standby redo log
- SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M;
- Database altered.
- SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M;
- Database altered.
- SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M;
- Database altered.
- SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;
- Database altered.
- SQL> select group#,type,member from v$logfile;
- GROUP# TYPE MEMBER
- ---------- ------- --------------------------------------------------
- 3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log
- 2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log
- 1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log
- 4 STANDBY /u01/app/oracle/oradata/orcl/redo04.log
- 5 STANDBY /u01/app/oracle/oradata/orcl/redo05.log
- 6 STANDBY /u01/app/oracle/oradata/orcl/redo06.log
- 7 STANDBY /u01/app/oracle/oradata/orcl/redo07.log
2.4创建pfile
- SQL> create pfile from spfile;--这里创建pfile是为了做一些主库参数的配置,并且还得拷贝到备库再次修改成备库的配置。
- File created.
- SQL> shutdown immediate
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
2.5创建主库归档目录
- [oracle@PD orcl]$ mkdir archivelog --建立这个目录是为了存放主库的归档日志文件,并且这个目录会和其他数据文件等等一起拷贝到备库。
- [oracle@PD orcl]$ cd archivelog/
- [oracle@PD archivelog]$ ls
- [oracle@PD archivelog]$ pwd
- /u01/app/oracle/oradata/orcl/archivelog
2.6在主备库同时创建静态监听listener和tnsname
建议用net manager建立
主库orcl_pd:192.168.56.42
- [oracle@PD admin]$ cat listener.ora
- # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
- # Generated by Oracle configuration tools.
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (GLOBAL_DBNAME = orcl)
- (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
- (SID_NAME = orcl)
- )
- )
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
- )
- )
- ADR_BASE_LISTENER = /u01/app/oracle
- [oracle@PD admin]$ cat tnsnames.ora
- # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
- # Generated by Oracle configuration tools.
- ORCL_ST =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.43)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
- ORCL =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)
- )
- )
- ORCL_PD =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.42)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = orcl)
- )
- )
- [oracle@PD orcl]$ lsnrctl
- LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 21-MAR-2016 00:59:09
- Copyright (c) 1991, 2013, Oracle. All rights reserved.
- Welcome to LSNRCTL, type "help" for information.
- LSNRCTL> status
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- TNS-12541: TNS:no listener
- TNS-12560: TNS:protocol adapter error
- TNS-00511: No listener
- Linux Error: 111: Connection refused
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
- TNS-12541: TNS:no listener
- TNS-12560: TNS:protocol adapter error
- TNS-00511: No listener
- Linux Error: 111: Connection refused
- LSNRCTL> start
- Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
- TNSLSNR for Linux: Version 11.2.0.4.0 - Production
- System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
- Log messages written to /u01/app/oracle/diag/tnslsnr/PD/listener/alert/log.xml
- Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
- Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PD)(PORT=1521)))
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
- STATUS of the LISTENER
- ------------------------
- Alias LISTENER
- Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
- Start Date 21-MAR-2016 00:59:16
- Uptime 0 days 0 hr. 0 min. 0 sec
- Trace Level off
- Security ON: Local OS Authentication
- SNMP OFF
- Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
- Listener Log File /u01/app/oracle/diag/tnslsnr/PD/listener/alert/log.xml
- Listening Endpoints Summary...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PD)(PORT=1521)))
- Services Summary...
- Service "orcl" has 1 instance(s).
- Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
- The command completed successfully
- LSNRCTL> exit
备库orcl_pd:192.168.56.43