导航

19.2 建立逻辑备用数据库

Posted on 2009-02-19 15:59  毅无涯  阅读(163)  评论(0编辑  收藏  举报

(1) 创建物理备用数据库

(2) 激活主数据库和备用数据加的补充日志特征

(3) 建立逻辑备用控制文件

(4) 复制逻辑备用控制文件到备用数据库

(5) 激活逻辑备用数据库

(6) 修改逻辑备用数据库的数据库名

(7) 改变参数文件的数据库名

(8) 启动逻辑备用数据库, 并修改全局数据库名

 

创建物理备用数据库:

C:\>mkdir c:\standby1

C:\>mkdir d:\standby1

C:\>mkdir d:\standby1\adump

C:\>mkdir d:\standby1\bdump

C:\>mkdir d:\standby1\cdump

C:\>mkdir d:\standby1\udump

C:\>mkdir d:\standby1\archive

C:\>oradim -new -sid standby1 -syspwd orcl
实例已创建。

C:\>sqlplus sys/orcl@demo as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 2月 19 13:50:12 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> create pfile='%oracle_home%\database\initstandby1.ora' from spfile;

文件已创建。

SQL> create pfile='%oracle_home%\database\initdemo.ora' from spfile;

文件已创建。

SQL> create spfile='%oracle_home%\database\spfilestandby1.ora'
  2  from pfile='%oracle_home%\database\initstandby1.ora';

文件已创建。

listener.ora

(SID_DESC =
  (GLOBAL_DBNAME = standby1)
  (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
  (SID_NAME = standby1)
)

 

tnsnames.ora

standby1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = Renovo-Colin)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = standby1)
    )
  )

 

initdemo.ora

db_unique_name='demo'
fal_server=standby1
fal_client=demo
log_archive_dest_1='location=d:\demo\archive valid_for=(all_logfiles,all_roles) db_unique_name=demo'
log_archive_dest_2='location=c:\demo\archive valid_for=(all_logfiles,all_roles) db_unique_name=demo'
log_archive_dest_3='service=standby1 valid_for=(online_logfiles,primary_roles) db_unique_name=standby1'
log_archive_config='dg_config=(demo,standby1)'
standby_file_management=auto

 

initstandby1.ora

db_unique_name=standby1
service_names=standby1
instance_name=standby1
audit_file_dest='D:\standby1\adump'
background_dump_dest='D:\standby1\bdump'
control_files='d:\standby1\control01.ctl'
core_dump_dest='D:\standby1\cdump'
log_archive_dest_1='location=d:\standby1\archive valid_for=(all_logfiles,all_roles) db_unique_name=standby1'
log_archive_dest_2='service=demo valid_for=(online_logfiles,primary_role) db_unique_name=demo'
log_archive_config='dg_config=(demo,standby1)'
fal_server=demo
fal_client=standby1
standby_file_management=auto
db_file_name_convert='d:\demo','d:\standby1'
log_file_name_convert='d:\demo','d:\standby1','c:\demo','c:\standby1'
standby_archive_dest='d:\standby1\archive'
user_dump_dest='D:\standby1\udump'

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> create spfile from pfile;

文件已创建。

SQL> conn sys/orcl@standby1 as sysdba
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

警告: 您不再连接到 ORACLE。
SQL> host lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 19-2月 -2009 14:2
9:08

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。

LSNRCTL> stop
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Renovo-Colin)(PORT=1521)))
命令执行成功
LSNRCTL> start
启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
写入D:\oracle\product\10.2.0\db_1\network\log\listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Renovo-Colin)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Renovo-Colin)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  19-2月 -2009 14:29:22
正常运行时间              0 天 0 小时 0 分 1 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.o
ra
监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Renovo-Colin)(PORT=1521)))
服务摘要..
服务 "ORCL" 包含 1 个例程。
  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "demo" 包含 1 个例程。
  例程 "demo", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "standby1" 包含 1 个例程。
  例程 "standby1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
LSNRCTL> exit

SQL> conn sys/orcl@standby1 as sysdba
已连接到空闲例程。
SQL> conn sys/orcl@demo as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1250380 bytes
Variable Size             281021364 bytes
Database Buffers          314572800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

D:\DEMO\SYSTEM01.DBF
D:\DEMO\UNDOTBS01.DBF
D:\DEMO\SYSAUX01.DBF
D:\DEMO\USERS01.DBF

SQL> alter database begin backup;

数据库已更改。

SQL> host copy D:\DEMO\SYSTEM01.DBF d:\backup
已复制         1 个文件。

SQL> host copy D:\DEMO\UNDOTBS01.DBF d:\backup
已复制         1 个文件。

SQL> host copy D:\DEMO\SYSAUX01.DBF d:\backup
已复制         1 个文件。

SQL> host copy D:\DEMO\USERS01.DBF d:\backup
已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter database create standby controlfile as 'd:\backup\control01.ctl' reuse;

数据库已更改。

SQL> host copy d:\backup\*.dbf d:\standby1\*.*
d:\backup\SYSAUX01.DBF
d:\backup\SYSTEM01.DBF
d:\backup\UNDOTBS01.DBF
d:\backup\USERS01.DBF
已复制         4 个文件。

SQL> host copy d:\backup\*.ctl d:\standby1\*.*
d:\backup\CONTROL01.CTL
已复制         1 个文件。

SQL> conn sys/orcl@standby1 as sysdba
已连接到空闲例程。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1250380 bytes
Variable Size             163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> select name from v$archived_log;

NAME
--------------------------------------------------------------------------------

D:\STANDBY1\ARCHIVE\ARC00125_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00126_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00093_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00094_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00095_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00096_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00097_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00098_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00099_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00100_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00101_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00102_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00103_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00104_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00105_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00106_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00107_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00108_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00109_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00110_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00111_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00112_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00113_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00114_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00115_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00116_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00117_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00118_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00119_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00120_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00121_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00122_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00123_0674493001.001
D:\STANDBY1\ARCHIVE\ARC00124_0674493001.001

已选择34行。

SQL> recover standby database until cancel
ORA-00279: 更改 1966738 (在 02/19/2009 14:31:15 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00122_0674493001.001
ORA-00280: 更改 1966738 (用于线程 1) 在序列 #122 中

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 1967091 (在 02/19/2009 14:42:09 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00123_0674493001.001
ORA-00280: 更改 1967091 (用于线程 1) 在序列 #123 中
ORA-00278: 此恢复不再需要日志文件 'D:\STANDBY1\ARCHIVE\ARC00122_0674493001.001'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 1967112 (在 02/19/2009 14:43:08 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00124_0674493001.001
ORA-00280: 更改 1967112 (用于线程 1) 在序列 #124 中
ORA-00278: 此恢复不再需要日志文件 'D:\STANDBY1\ARCHIVE\ARC00123_0674493001.001'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 1967162 (在 02/19/2009 14:44:32 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00125_0674493001.001
ORA-00280: 更改 1967162 (用于线程 1) 在序列 #125 中
ORA-00278: 此恢复不再需要日志文件 'D:\STANDBY1\ARCHIVE\ARC00124_0674493001.001'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 1967623 (在 02/19/2009 14:47:15 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00126_0674493001.001
ORA-00280: 更改 1967623 (用于线程 1) 在序列 #126 中
ORA-00278: 此恢复不再需要日志文件 'D:\STANDBY1\ARCHIVE\ARC00125_0674493001.001'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 更改 1967626 (在 02/19/2009 14:47:21 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\STANDBY1\ARCHIVE\ARC00127_0674493001.001
ORA-00280: 更改 1967626 (用于线程 1) 在序列 #127 中
ORA-00278: 此恢复不再需要日志文件 'D:\STANDBY1\ARCHIVE\ARC00126_0674493001.001'

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> alter database open;

数据库已更改。

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------

D:\STANDBY1\TEMP01.DBF

SQL> conn sys/orcl@standby1 as sysdba
已连接。
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> select name from v$archived_log where applied='NO';

未选定行

SQL> conn sys/orcl@demo as sysdba
已连接。
SQL> alter database add supplemental log data (primary key,unique index) columns;

数据库已更改。

SQL> conn sys/orcl@standby1 as sysdba
已连接。
SQL> alter database add supplemental log data (primary key,unique index) columns;

数据库已更改。

SQL> select supplemental_log_data_pk,supplemental_log_data_ui from v$database;

SUP SUP
--- ---
YES YES

SQL> conn sys/orcl@demo as sysdba
已连接。
SQL> alter database create logical standby controlfile as 'd:\backup\control01.ctl' reuse;

数据库已更改。
SQL> conn sys/orcl@standby1 as sysdba
已连接到空闲例程。
SQL> host copy d:\backup\control01.ctl d:\standby1
已复制         1 个文件。

SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1250380 bytes
Variable Size             163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。

SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> conn sys/orcl@demo as sysdba
已连接。

SQL> alter system archive log current;

系统已更改。

SQL> conn sys/orcl@standby1 as sysdba
已连接。
SQL> alter database activate standby database;

数据库已更改。

SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1250380 bytes
Variable Size             163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> host nid target=sys/orcl@standby1 dbname=standby1

DBNEWID: Release 10.2.0.1.0 - Production on 星期四 2月 19 15:41:59 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接数据库 DEMO (DBID=3411805505)

已连接服务器版本 10.2.0

数据库中的控制文件数:
    D:\STANDBY1\CONTROL01.CTL

是否将数据库 ID 和数据库名 DEMO 更改为 STANDBY1? (Y/[N]) => y

操作继续进行
将数据库 ID 从 3411805505 更改为 347490440
将数据库名从 DEMO 更改为 STANDBY1
    控制文件 D:\STANDBY1\CONTROL01.CTL - 已修改
    数据文件 D:\STANDBY1\SYSTEM01.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\STANDBY1\UNDOTBS01.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\STANDBY1\SYSAUX01.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\STANDBY1\USERS01.DBF - dbid 已更改, 已写入新名称
    数据文件 D:\STANDBY1\TEMP01.DBF - dbid 已更改, 已写入新名称
    控制文件 D:\STANDBY1\CONTROL01.CTL - dbid 已更改, 已写入新名称
    实例关闭

数据库名已更改为 STANDBY1。
修改参数文件并在重新启动前生成新的口令文件。
数据库 STANDBY1 的数据库 ID 已更改为 347490440。
此数据库的所有以前的备份和归档重做日志均不可用。
数据库无法识别恢复区中以前的备份和归档日志。
数据库已关闭, 用 RESETLOGS 选项打开数据库。
已成功更改数据库名和 ID。
DBNEWID - 已成功完成。

SQL> host del %oracle_home%\database\pwdstandby1.ora

SQL> host orapwd file=%oracle_home%\database\pwdstandby1.ora password=orcl

SQL> create pfile from spfile;
create pfile from spfile
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结束

SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

C:\>sqlplus sys/orcl@standby1 as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 2月 19 15:46:16 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> create pfile from spfile;

文件已创建。

修改initstandby1.ora

db_name='standby1'

SQL> create spfile from pfile;

文件已创建。

SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1250380 bytes
Variable Size             163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> alter database open resetlogs;

数据库已更改。

SQL> alter database rename global_name to standby1;

数据库已更改。

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------

D:\STANDBY1\TEMP01.DBF