一.创建第一个DG备库
1.1 修改主库orcl的参数
1.启动归档
如果没有归档:
Sql> startup mount;
Sql>alter database archivelog;
2.开启强制日志
SQL>alter database force logging;
3.设置唯一名字,把主库
SQL>alter system set db_unique_name=pridb scope=spfile;
4.配置log_archive_config
SQL>alter system set log_archive_config='dg_config=(pridb,auxdb)';
5.设置归档目标地
SQL>alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=pridb' scope=spfile;
SQL>alter system set log_archive_dest_2='service=auxdb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=auxdb';
6.设置提取服务器
SQL>alter system set fal_server=auxdb;
SQL>alter system set fal_client=pridb;
7.设置表空间变化自适应
SQL>alter system set standby_file_management=auto;
1.2 auxdb备库准备
由于在同一台机器,需要设置路径转换
1.创建auxdb参数
*.instance_name='auxdb'
*.db_name='orcl'
*.db_unique_name='auxdb
*.log_archive_config='dg_config=(pridb,auxdb)'
*.db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/auxdb/'
*. log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/auxdb/'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=auxdb'
*.log_archive_dest_2='service=pridb lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=pridb'
*.standby_file_management='AUTO'
*.fal_client='auxdb'
*.fal_server='pridb'
创建对应的路径
mkdir -p /u01/app/oracle/oradata/auxdb/
mkdir -p /u01/app/oracle/admin/auxdb/adump
2.创建spfile
export ORACLE_SID=auxdb
sql>create spfile from pfile='/home/oracle/initauxdb.ora';
3.启动到nomount;
sql>startup nomount;
4.创建口令文件
在本机,直接复制一个即可
cp $ORACLE_HOME/dbs/orapworcl $ORACLE_HOME/dbs/orapwauxdb
4.静态监听
直接修改$ORACLE_HOME/network/admin/listener.ora
...
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = auxdb)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
(SID_NAME = auxdb)
)
)
1.3.创建到主备库的连接串
直接修改 $ORACLE_HOME/network/admin/tnsnames.ora
pridb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pridb)
)
)
auxdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = auxdb)
)
)
1.4.测试联通性
SQL> conn sys/oracle_4U@pridb as sysdba
Connected.
SQL> conn sys/oracle_4U@auxdb as sysdba
Connected.
SQL>
1.5.开始复制
rman target sys/oracle_4U@pridb auxiliary sys/oracle_4U@auxdb
rman > duplicate target database for standby NOFILENAMECHECK from active database;
1.6.备库处于恢复模式
SQL> alter database recover managed standby database disconnect from session;
SQL> select process,status from v$managed_standby;
PROCESS STATUS
--------- ------------
RFS IDLE
ARCH CLOSING
ARCH CONNECTED
ARCH CONNECTED
ARCH CLOSING
RFS IDLE
RFS IDLE
MRP0 APPLYING_LOG
RFS IDLE
9 rows selected.
到此,第一个备库就搭建完成。