备库是只读的。
--查看主库: SQL> select log_mode,open_mode ,database_role from v$database; LOG_MODE OPEN_MODE DATABASE_ROLE ------------ ------------------------------------ ARCHIVELOG READ WRITE PRIMARY --备库: SQL> select log_mode,open_mode ,database_role from v$database; LOG_MODE OPEN_MODE DATABASE_ROLE ------------ ------------------------------------ ARCHIVELOG READ ONLY PHYSICAL STANDBY --启动real-time apply: SQL> alter database recover managedstandby database using current logfile disconnect from session; Database altered. SQL> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY WITH APPLY
14 验证DG
--在主库创建一个table: SQL> alter session set container=pcndba; Session altered. SQL> create table cndba as select * fromdba_users; create table cndba as select * fromdba_users * ERROR at line 1: ORA-01109: database not open SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ---------------------------------------- ---------- 3 PCNDBA MOUNTED SQL> alter database open; Database altered. SQL> create table cndba as select * fromdba_users; Table created. SQL> alter system switch logfile; alter system switch logfile * ERROR at line 1: ORA-65040: operation not allowed fromwithin a pluggable database
注意:这里可以看到,对于12c的库,日志的切换只能在CDB中进行,也就是我们前面讲的,DG 是在CDB 级别进行的。
SQL> alter system switch logfile; System altered.
备库查询:
SQL> select count(1) from cndba; select count(1) from cndba * ERROR at line 1: ORA-00942: table or view does not exist
提示表不存在,实际上,我们是在PDB里创建的,切换到对应的PDB下,就可以查询到了:
SQL> alter session container=pcndba; alter session container=pcndba * ERROR at line 1: ORA-00922: missing or invalid option SQL> alter session set container=pcndba; Session altered. SQL> select count(1) from cndba; COUNT(1) ---------- 36
?