场景:重启数据库,不重启linux系统,所以不用考虑监听程序
Linux系统下输入

$ lsnrctl start
1 数据库关闭
1.1 关闭主库
SQL> SHUTDOWN IMMEDIATE;                                                     Database closed.                                                           Database dismounted.                                                         ORACLE instance shut down.                                                                                                                          
1.2 关闭备库
1、ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2、SHUTDOWN IMMEDIATE;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;           

Database altered.
SQL> SHUTDOWN IMMEDIATE;                                                     Database closed.                                                           Database dismounted.                                                         ORACLE instance shut down.                                                                                                                           2 数据库启动
开启的时候先开备库启动备库监听,再开主库

Linux系统下输入

$ lsnrctl start

2.1 启动备库
#STARTUP MOUNT;
#ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
#ALTER DATABASE OPEN;
#这里不用设置归档,归档设置一次是永久生效的,直接startup启动就行
SQL> STARTUP;

ORACLE instance started.                                                    Total System Global Area 5344731136 bytes
Fixed Size    2213136 bytes
Variable Size 3489663728 bytes
Database Buffers 1811939328 bytes
Redo Buffers   40914944 bytes
Database mounted.                                                         Database opened.  

                                             

2.2 启动主库
SQL> STARTUP ;                                                             ORACLE instance started.                                                     
Total System Global Area 1.1358E+10 bytes
Fixed Size    2216744 bytes
Variable Size 8589937880 bytes
Database Buffers 2751463424 bytes
Redo Buffers   13946880 bytes
Database mounted.                                                       
Database opened.                                                                                                     
/*取代下面的过程,数据库本来就是归档的,所以关闭之后再重启,数据库也是归档的
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;*/

2.3 启动备库应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNETC FROM SESSION; 

这个命令是死命令,会一直卡在这,但是后台其实归档日志已经在同步了,除非人为的关闭 否则 一直是这样的。
ALTER DATABASE OPEN; --备库不是必须处于OPEN状态,启动归档被应用即可,这个命令可以不用执行。

2.4 check查看归档是否及时应用
先检查备库的归档日志同步情况

SQL> SELECT NAME,applied FROM v$archived_log; 
......
NAME
--------------------------------------------------------------------------------
APPLIED
---------
/data/oracle/oradgdata/standby_archive/1_20866_821708334.dbf
YES
/data/oracle/oradgdata/standby_archive/1_20867_821708334.dbf
YES
/data/oracle/oradgdata/standby_archive/1_20868_821708334.dbf
YES

NAME
--------------------------------------------------------------------------------
APPLIED
---------
/data/oracle/oradgdata/standby_archive/1_20869_821708334.dbf
YES
2800 rows selected.
如果发现全部都是YES,证明归档日志已经在同步。

在主库执行check:
SQL> archive log list;                                                       Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /oracle/app/oracle/flash_recovery_area/archivelog
Oldest online log sequence     20869
Next log sequence to archive   20871
Current log sequence       20871

在备库执行check
SQL> archive log list;                                                   Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /data/oracle/oradgdata/standby_archive
Oldest online log sequence     20869
Next log sequence to archive   0
Current log sequence       20871

看到主库备库当前的Current log sequence都是20871,备库上面最新的归档日志applied都是YES,就表明主库备库数据同步一致了。
dataguard重启算是彻底完成了。到这里强行关闭执行2.3的那个sql命令窗口。
下次再执行到2.3这一步骤,就可以在后面加上disconnect from session,就是执行完这个命令后断开这个回话,就是我们所能接受的,可以接着用这个连接执行其他命令了。