逻辑standby的限制条件:
可以和主库同时打开,可以分流查询,可以作数据修改。
不支持的数据类型:
clob
ncob
long
long raw
rowid
urowid

不支持的表:
SELECT DISTINCT OWNER,TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED;

如果存在没有主键或者唯一键的表:
alter database add SUPPLEMENTAL LOG DATA;

不支持的操作:
ALTER DATABASE
ALTER SESSION
ALTER SNAPSHOT
ALTER SNAPSHOT LOG
ALTER SYSTEM SWITCH LOG
CREATE CONTROL FILE
CREATE DATABASE
CREATE DATABASE LINK
CREATE PFILE FROM SPFILE
CREATE SCHEMA AUTHORIZATION
CREATE SNAPSHOT
CREATE SNAPSHOT LOG
CREATE SPFILE FROM PFILE
CREATE TABLE AS SELECT FROM A CLUSTER TABLE
DROP DATABASE LINK
DROP SNAPSHOT
DROP SNAPSHOT LOG
EXPLAIN
LOCK TABLE
RENAME
SET CONSTRAINTS
SET ROLE
SET TRANSACTION

准备转换角色:(由物理到逻辑)
从库中停止管理恢复进程
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

在主库中创建logical standby需要的数据字典
EXECUTE DBMS_LOGSTDBY.BUILD; --可能会01555

主库做一次归档,使字典信息能传送到从库
alter system switch logfile;
--alter system archive log current;

物理standby转逻辑standby:
alter database recover to logical standby db_name; --指定数据库名称,可以和主库不同

重新启动从库(resetlogs)
shutdown immediate
startup mount
alter database open resetlogs;

启动sql apply
alter database start logical standby apply;

为从库添加standby redo logfile
alter database add standby logfile '/u1/oracle/oradata/standby/redo04.log' size 50m;

启动real time sql apply(日志实时应用)
alter database start logical standby apply immediate;

查看逻辑standby操作日志:(只保留100条操作)
select event_time,status,event from dba_logstdby_events;

查看日志应用情况:
select sequence#,first_change#,next_change#,timestamp,applied from dba_logstdby_log;

停止sql应用:
alter database stop logical standby apply;