ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (手动建立 physical datagurad)

oracle实验记录 (手动建立 physical datagurad)

原创 Linux操作系统 作者:fufuh2o 时间:2009-07-22 09:43:50 0 删除 编辑

1建立物理datagurad的前提条件

archivelog, 开启 强制日志alter database force logging  意思 primary无论什么情况都做redo,通过select force_logging from v$database可以看到当前数据库强制日志模式的状态

备份主库
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF d:\os备份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF d:\os备份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF d:\os备份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF d:\os备份;
host copy F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF d:\os备份;
host copy D:\自建表空间数据文件\TESTTB.DBF d:\os备份;         脚本内容

SQL> alter database begin backup;

数据库已更改。

SQL> @D:\oracle实验脚本\os备份数据文件.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter database create standby controlfile as 'D:\os备份\control01.ctl';

数据库已更改。                                                                           建立standby控制文件

SQL> host mkdir d:\standbyphysical

SQL> host mkdir d:\standbyphysical\bdump

SQL> host mkdir d:\standbyphysical\cdump          建立 prysical standby目录

SQL> host mkdir d:\standbyphysical\archive

SQL> host mkdir d:\standbyphysical\udump

C:\>oradim -new -sid standby1 -intpwd a831115
例程已创建。
             建立standby instance

C:\>
接下来就是比较重要的 配置 instance 参数,primary,stanby 2个库的参数都需要配置 目的为了可以互换

SQL> create pfile from spfile;

文件已创建。
先primary库

*._allow_resetlogs_corruption=TRUE
*.background_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\bdump'
*.compatible='10.1.0.2.0'
*.control_files='F:\oracle\product\10.1.0\oradata\xhtest\control01.ctl','F:\oracle\product\10.1.0\oradata\xhtest\control02.ctl','F:\oracle\product\10.1.0\oradata\xhtest\control03.ctl'
*.core_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_create_file_dest='d:\自建表空间数据文件'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='xhtest'
*.db_recovery_file_dest='F:\oracle\product\10.1.0\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='xhtest'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xhtestXDB)'
*.fal_client='xhtest'
*.fal_server='standby1'
*.java_pool_size=50331648
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_config='dg_config=(xhtest,standby1)'
*.log_archive_dest_1='location=F:\归档备份 valid_for=(all_logfiles,all_roles) db_unique_name=XHTEST'
*.log_archive_dest_2='service=standby1 valid_for=(online_logfiles,primary_role) db_unique_name=standby1'
*.open_cursors=300
*.os_authent_prefix='OPS$'
*.os_roles=FALSE
*.pga_aggregate_target=25165824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=83886080
*.sort_area_size=65536
*.standby_file_management='auto'
*.tracefile_identifier='xh080729'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='F:\oracle\product\10.1.0\admin\xhtest\udump'


SQL> create spfile from pfile;

文件已创建。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes

数据库装载完毕。
数据库已经打开。
SQL>


建立standby 参数文件
*._allow_resetlogs_corruption=TRUE
*.background_dump_dest='d:\standbyphysical\bdump'
*.compatible='10.1.0.2.0'
*.control_files='d:\standbyphysical\control01.ctl'
*.core_dump_dest='d:\standbyphysical\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_create_file_dest='D:\standbyphysical'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='xhtest'
*.db_recovery_file_dest='D:\standbyphysical\archive'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=xhtestXDB)'
*.java_pool_size=50331648
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_dest_1='location=D:\standbyphysical\archive valid_for=(all_logfiles,all_roles) db_unique_name=standbyphysical'
*.open_cursors=300
*.os_authent_prefix='OPS$'
*.os_roles=FALSE
*.pga_aggregate_target=25165824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=83886080
*.sort_area_size=65536
*.tracefile_identifier='xh080729'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\standbyphysical\udump'
*.log_archive_dest_2='service=xhtest valid_for=(online_logfiles,primary_role) db_unique_name=xhtest'
*.fal_server=xhtest
*.fal_client=standbyphysical
*.standby_file_management=auto
*.log_archive_config='dg_config=(xhtest,standbyphysical)'
*.db_unique_name=standbyphysical
*.service_names=standbyphysical
*.instance_names=standbyphysical
*.standby_archive_dest='D:\standbyphysical\archive'
*.db_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','d:\standbyphysical','D:\自建表空间数据文件','d:\standbyphysical'
*.log_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','d:\standbyphysical'


SQL> create spfile='d:\参数文件\spfilestandby1.ora' from pfile='d:\参数文件\init
standby1.ora';

文件已创建。
C:\>set oracle_sid=standby1

C:\>sqlplus "/ as sysdba"
SQL> startup nomount;
ORACLE 例程已经启动。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes\
将数据文件 考到 standby位置~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··(包含控制文件)
SQL> alter database mount;

数据库已更改。
注意必须要配置监听程序与网络服务名


配置好listener后
lsnrctl stop
lsnrctl start才可以

tnsping standby1
tnsping xhtest   来检查primary库与standby库

TNSNAME
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

XHTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xhtest)
    )
  )

STANDBY1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = STANDBY1)
    )
  )


 LISTENER
LISTENER3 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
      )
    )
  )

LISTENER1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = F:\oracle\product\10.1.0\db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = FUFU)(PORT = 1521))
    )
  )

检查应用

primary库
SQL> alter system switch logfile;

系统已更改。
standby库

SQL> select name from v$archived_log;

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

D:\STANDBYPHYSICAL\ARCHIVE\ARC00032_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00028_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00029_0660924396.001
D:\STANDBYPHYSICAL\ARCHIVE\ARC00031_0660924396.001

 


一些参数的分析
db_file_name_convert 与 standby_archive_dest

先看一下实验环境

SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
xhtest                         PRIMARY


SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
standby1                       PHYSICAL STANDBY

 

xhtest 为主库,standby1 为备用库

SQL> create tablespace testtb2 datafile 'D:\自建表空间数据文件\testtb2' size 10m
;

表空间已创建。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已选择8行。                     主库上建立一个新的表空间

 

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

数据库已更改。
SQL> alter database recover managed standby database cancel
  2  ;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已选择7行。                 
SQL> select file_name from dba_data_files;

FILE_NAME
-------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF

已选择6行。
SQL> show parameter standby

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      auto

 没有新加的数据文件,因为日志没有传过来,log_archive_dest_2='service 原因在这 默认是arcn当主库归档时候传给standby 若要同步改成lgwr,一会我们实验下

SQL> alter system switch logfile;  主库上(xhtest) 归档下

系统已更改。


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

数据库已更改。  standby应用下传过来的归档日志

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已选择8行。

SQL> select file_name from dba_data_files;

FILE_NAME
-----------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB2_495L0K3F_.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF

已选择7行。                                   自动同步了 这是由于standby_file_management=auto开启了 自动管理


SQL> create tablespace testtb3 datafile 'D:\testtb3' size 10m;

SQL> alter system switch logfile;

系统已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已选择9行。            主库又建立一个表空间 

 

SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已选择9行。

SQL> select file_name from dba_data_files;

FILE_NAME
------------------------------------------------------------------------------

D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB2_495L0K3F_.DBF        名字错误 已经配置 db_file_name_convert ,是由于配置了db_create_file_dest造成
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\STANDBY1\DATAFILE\O1_MF_TESTTB3_495LHV5V_.DBF

已选择8行。                                                   也可以 那么  文件的同步主要由standby_file_management来管理 设置为 auto 后
                                                               那么 db_file_name_convert 究竟啥目的呢 为什么 新建立的2个表空间文件,在
                                                               standby库的名字难识别呢,db_file_name_convert就是用来转换名字的 ~~~文件名字
                                                                log_file_name_convert 意思一样


SQL> show parameter db_file_name  (在standby库上)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      F:\oracle\product\10.1.0\orada                    已经配置了呀,但还是 没有映射过来.
                                                                                                    由于配置了db_create_file_dest造成
                                                 ta\xhtest, d:\standbyphysical,
                                                  D:\自建表空间数据文件, d:\sta
                                                 ndbyphysical
构建干净的实验环境
SQL> select DB_UNIQUE_NAME ,DATABASE_ROLE,OPEN_MODE from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- ----------
xhtest                         PRIMARY          READ WRITE

SQL> select DB_UNIQUE_NAME ,DATABASE_ROLE,OPEN_MODE from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
------------------------------ ---------------- ----------
standby1                       PHYSICAL STANDBY READ ONLY


主库上操作
SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4
TESTTB5

已选择11行。

SQL> drop tablespace testtb2 including contents and datafiles;

表空间已删除。

SQL> drop tablespace testtb3 including contents and datafiles;

表空间已删除。

SQL> drop tablespace testtb4 including contents and datafiles;

表空间已删除。

SQL> drop tablespace testtb5 including contents and datafiles;

表空间已删除。

SQL> alter system switch logfile;

 

standby库上 查询

C:\>set oracle_sid=standby1

C:\>sqlplus "/ as sysdba"

SQL*Plus: Release 10.1.0.2.0 - Production on 星期一 8月 4 11:34:18 2008

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

已连接到空闲例程。

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

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。
数据库已经打开。
SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已选择7行。                          由于standby_file_management 为auto自动的删除了 在standby库

SQL>

在 standby库
SQL> create pfile from spfile;

文件已创建。
db_file_name_convert=('F:\oracle\product\10.1.0\oradata\xhtest','D:\standbyphysical','D:\自建表空间数据文件','D:\standbyphysical')

SQL> create spfile from pfile;

文件已创建。

 

主库 primary
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。
数据库已经打开。

SQL> create tablespace testtb2 datafile 'd:\自建表空间数据文件\testtb2.dbf' size
 10m;

表空间已创建。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已选择8行。

SQL> alter system checkpoint;

系统已更改。

db_create_file_dest ='' 变为空!!!!!!!!!!!!!!!!!(standby 库上)


standby库上


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

数据库已更改。
SQL> alter database open;

数据库已更改。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已选择7行。

SQL>                 名字对了          db_file_name_convert 经过实验 并不是什么 大小写,括号的问题,第一次也配置结果没有成功的原因是因为 standby库开了                                                db_create_file_dest omf这个 导致文件建立在这个路径下,这个路径又不包含在 db_file_name_convert 中.

 

*.db_file_name_convert='F:\oracle\product\10.1.0\oradata\xhtest','D:\standbyphysical' D:\自建表空间数据文件','D:\standbyphysical'
看 现在是这样也没大写,也没有 括号 \之类


主库
SQL> create tablespace testtb3 datafile 'd:\自建表空间数据文件\testtb3.dbf' size
 10m;

表空间已创建。

SQL> alter system switch logfile;

系统已更改。

standby库上


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

数据库已更改。
SQL> alter database open;

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF                                     看见没跟大小些,括号没关系

 


下面主库上建立一个 表空间 位置不在db_file_name_convert 所包含的路径里
SQL> create tablespace testtb4 datafile 'd:\testtb4.dbf' size 10m; 位置不在 db_file_name_convert中

表空间已创建。

SQL> select name from v$datafile;

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

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空间数据文件\TESTTB.DBF
D:\自建表空间数据文件\TESTTB2.DBF
D:\自建表空间数据文件\TESTTB3.DBF
D:\TESTTB4.DBF

SQL> alter system switch logfile;

 

standby库                                               一个不知名的文件添加进了standby库 写入了一个不知名的位置 ,所以
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00009              ~~~~由于该文件在主库建立时 没有在db_file_name_convert 所以应用归档日志添加进standby库时候 写入控制文件时有问题

 

由于net传输及其不稳定造成恢复不~~~此STANDBY需要重新建立

用第一次的备份文件,但控制文件是新建立的~因为 控制文件中添新数据文件信息了 。


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

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。
SQL> select name from v$archived_log;

未选定行

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

数据库已更改。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF                  实际目录没这写文件

D:\TESTTB4.DBF

已选择9行。
ALTER system switch logfile;主库  

SQL> select name from v$archived_log; standby

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

D:\STANDBYPHYSICAL\ARCHIVE\ARC00039_0661538341.001                经检查是通着的,但问题在于~~~日志不全了~~恢复不了了~全的话可以在standby库
                                                                  alter  database register physical logfile ''

 

重新建立吧              primary的环境

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已选择10行。

SQL> drop tablespace testtb2 including contents and datafiles;

表空间已删除。

SQL> drop tablespace testtb3 including contents and datafiles;

表空间已删除。

SQL> drop tablespace testtb4 including contents and datafiles;

表空间已删除。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB

已选择7行。

SQL> alter database begin backup;

数据库已更改。

SQL> @d:\oracle实验脚本\备份数据文件.txt
SP2-0310: 无法打开文件 "d:\oracle实验脚本\备份数据文件.txt"
SQL> @d:\oracle实验脚本\os备份数据文件.txt
已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

已复制         1 个文件。

SQL> alter database end backup;

数据库已更改。


SQL> alter database create standby controlfile as 'D:\os备份\control01.ctl' reus
e
  2  ;

数据库已更改。

 


把备份的文件 包含控制文件拷贝 到  standby库目录


数据库已更改。

SQL> ALTER system switch logfile;

系统已更改。

SQL> ALTER system switch logfile;

系统已更改。
 
SQL>                主库

 


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

Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。
SQL> select name from v$archived_log;

未选定行

SQL> select name from v$archived_log;

未选定行

SQL> select name from v$archived_log;

未选定行

SQL> alter database recover managed standby database disconnect from session; 开启应用

数据库已更改。

SQL> select name from v$archived_log;

未选定行

SQL> select name from v$archived_log;

未选定行

SQL> select name from v$archived_log;

未选定行

SQL> select name from v$archived_log;

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

D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001                 standby库 过了这么半天才收到,,网络很不稳定
D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001

SQL>

SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database open;

SQL> select name ,applied from v$archived_log;

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

APP
---
D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001                查看 2个日志已经应用
YES

 

SQL> alter system switch logfile;  primary库

系统已更改。

 

SQL> select name ,applied from v$archived_log;         standby库 open 下就不应用日志了 

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

APP
---
D:\STANDBYPHYSICAL\ARCHIVE\ARC00040_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00041_0661538341.001
YES

D:\STANDBYPHYSICAL\ARCHIVE\ARC00042_0661538341.001
NO                                                                     没有应用日志

 

主库添加文件 ,但不在db_file_name_convert位置中 standby_file_management     standby_file_management AUTO 的情况下不能进行alter database rename
第 1 行出现错误:
ORA-01511: 重命名日志/数据文件时出错
ORA-01275: 自动进行备用文件管理时, 不允许进行 RENAME 操作。             。。。。。。。。。。。。。。。。。。。。。

SQL> show parameter standby_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      AUTO                            在standby库上查询的

SQL> create tablespace testtb2 datafile 'd:\testtb2.dbf' size 5m;

表空间已创建。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。                                       主库添加数据文件 不在db_file_name_convert位置中,db_create_file_dest也没设置


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

数据库已更改。
                                                  
SQL> select applied from v$archived_log;(standby库已经不应用日志了)

APP
---
YES
YES
YES
NO 
NO
alter database recover managed standby database cancel
*
第 1 行出现错误:
ORA-16136: 受管备用恢复未激活                           失败,日志未应用完


在standby库查看日志为什么没应用恢复

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00007

已选择7行。                                 一个不知名字的文件填加进来了

查看standby库的 alert.log
Tue Aug 05 11:51:37 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3976.trc:
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file                 也是因为这个问题 ~~~
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00007' as 'd:\st
andbyphysical\testtb2.dbf';                                    在正确位置 改名字建立~~~~~~~~~新文件

数据库已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
NO
NO

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF         

已选择7行。

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

数据库已更改。

SQL> select applied from v$archived_log;

APP
---
YES                
YES
YES
YES
YES                                            全都应用了

SQL>                          


SQL> alter database recover managed standby database cancel;

数据库已更改。                                                     成功了
 


现在实验下standby_file_management 为manual的情况

 

查下standby          
SQL> show parameter standby_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------
standby_archive_dest                 string      D:\standbyphysical\archive
standby_file_management              string      MANUAL                    已经改为手动了


SQL> create tablespace testtb3 datafile 'd:\自建表空间数据文件\testtb3.dbf' reus    主库建立 数据文件
e;

表空间已创建。

 

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

数据库已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
NO            注意 刚刚传过来这个日志没有应用

 


SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00008                     但standby库一个不知名的文件添加进来了跟主库建文件未在db_file_name_convert中情况一样


SQL> alter database recover managed standby database cancel;
alter database recover managed standby database cancel
*
第 1 行出现错误:
ORA-16136: 受管备用恢复未激活                     日志没应用完你也关不了
standby alert.log的记录                              问题很清楚,一个不知名的文件加入因为sTANDBY_FILE_MANAGEMENT is set to MANUAL ,所以应用日志时失败
Tue Aug 05 14:23:04 2008
Media Recovery Log D:\STANDBYPHYSICAL\ARCHIVE\ARC00046_0661538341.001
Media Recovery Log D:\STANDBYPHYSICAL\ARCHIVE\ARC00047_0661538341.001
File #8 added to control file as 'UNNAMED00008' because
the parameter STANDBY_FILE_MANAGEMENT is set to MANUAL
The file should be manually created to continue.
MRP0: Background Media Recovery terminated with error 1274
Tue Aug 05 14:23:11 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_2136.trc:
ORA-01274: cannot add datafile 'D:\自建表空间数据文件\TESTTB3.DBF' - file could not be created

Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Tue Aug 05 14:23:11 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_2136.trc:
ORA-01274: cannot add datafile 'D:\自建表空间数据文件\TESTTB3.DBF' - file could not be created

 

 

SQL> alter system set standby_file_management='auto' ;

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
NO                                  改回auto还是不行哦

已选择8行。


解决方法跟
主库建文件未在db_file_name_convert中情况一样

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\st
andbyphysical\testtb3.dbf';
alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\standby
physical\testtb3.dbf'
*
第 1 行出现错误:
ORA-01275: 自动进行备用文件管理时, 不允许进行 CREATE DATAFILE 操作。   刚才改回standby_file_management改回auto 造成不能 CREATE DATAFILE

 

SQL> alter system set standby_file_management='manual' ;

系统已更改。

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      manual
SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00008' as 'd:\st
andbyphysical\testtb3.dbf';

数据库已更改。

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

数据库已更改。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF

已选择8行。

SQL> select applied from v$archived_log;

APP
---
YES
YES
YES
YES
YES
YES
YES
YES

已选择8行。

SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3

已选择9行。

SQL>                OK 全部解决通过以上实验我们充分理解了standby_file_management,db_file_name_convert,log_file_name_convert的 意义
                   db_file_name_convert,log_file_name_convert  主要是映射名字 这样可以primary文件名一样,但primary建文件时候必须包含这之中,否则出现错误
                   一个不知名的数据文件加入控制文件
                   若开启db_create_file_dest在用日志向standby库添加数据文件时候,oracle会自动建立文件 但名字与primary库的不同
                   若primary库与standby库在2台机器 且目录结构完全一样db_file_name_convert,log_file_name_convert可以不配置

                  
standby_file_management,   manual删除主库表空间及其数据文件

1  standby_file_management    auto 下 (standby库) 主库 删除表空间及数据文件

SQL> select tablespace_name from user_tablespaces; standby

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已选择10行。

SQL> select name from v$datafile;standby

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB3.DBF
D:\STANDBYPHYSICAL\TESTTB4.DBF

 

 

SQL> select tablespace_name from user_tablespaces;primary

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4

已选择10行。

SQL>  select name from v$datafile;primary

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

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空间数据文件\TESTTB.DBF
D:\TESTTB2.DBF
D:\自建表空间数据文件\TESTTB3.DBF
D:\自建表空间数据文件\TESTTB4.DBF

已选择9行。

 

SQL> show parameter standby_file_          (standby库)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto
SQL>

SQL> drop tablespace testtb3 including contents  and  datafiles; (primary库)

表空间已删除。
SQL>  select name from v$datafile;  (primary库)

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

F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\USERS01.DBF
F:\ORACLE\PRODUCT\10.1.0\ORADATA\XHTEST\EXAMPLE01.DBF
D:\自建表空间数据文件\TESTTB.DBF
D:\TESTTB2.DBF
D:\自建表空间数据文件\TESTTB4.DBF

已选择8行。

SQL> select tablespace_name from user_tablespaces;(primary库)

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB4

已选择9行。

SQL> alter system switch logfile;

系统已更改。

SQL>

SQL> select  applied from v$archived_log;(standby)


APP
---
YES
NO  刚传过来的未应用

已选择35行。
SQL> select applied from v$archived_log;


YES  都应用了

已选择35行。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF                         该文件没有了,并且实际文件夹里也没有了.
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\TESTTB4.DBF

已选择8行。                                    

 


standby_file_management manual下(standby库)
SQL> alter system set standby_file_management='manual'; (standby库)

系统已更改。
SQL> show parameter standby_file(standby库)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------
standby_file_management              string      manual

SQL> drop tablespace testtb4 including contents  and  datafiles;(primary库)

表空间已删除。

SQL> alter system switch logfile;(primary库)

系统已更改。

SQL> select applied from v$archived_log;


 YES                  最新的是第36 一直开着应用,直接应用了

已选择36行。

SQL> select name from v$datafile;(standby库) 文件也删除了

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已选择7行。                   注意manual文件也删除,关键问题在于 文件夹里 文件还在 testtb4,dbf还在 需要手动删除

 


删除primary 表空间 不包含在 db_file_name_convert中
删除testtb2表空间~~~其数据文件不在db_file_name_convert中primary位置D:\TESTTB2.DBF

SQL> drop tablespace testtb2 including contents  and  datafiles;(primary库)

表空间已删除。

SQL> alter system switch logfile;(primary库)

系统已更改。


SQL> alter system set standby_file_management='auto';(standby库)

系统已更改。

SQL> select applied from v$archived_log;(standby库)

APP
---

YES 新的归档文件已经应用

已选择37行。

SQL> select name from v$datafile;

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

D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF                     该文件已经删除,并且文件夹里也实际删除


总结 删除 只与standby_file_management有关系,manual也删除 该表空间在standby ,也删除 数据文件 (逻辑上)但实际文件夹里该文件还有需要手动删除。
auto,全都删除,表空间,数据文件(查询中)实际文件夹里也删除

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
关于db_create_file_dest的 补充  08.08.27
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在standby_file_management  auto,manual下

 

 SQL> select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
standby1                       PHYSICAL STANDBY                          

 

 

SQL>  select db_unique_name,database_role from v$database;

DB_UNIQUE_NAME                 DATABASE_ROLE
------------------------------ ----------------
xhtest                         PRIMARY


SQL> show parameter log_archive_dest_2(xhtest)

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service=standby1 lgwr valid_fo
                                                 r=(online_logfiles,primary_rol
                                                 e) db_unique_name=standby1

 


SQL> show parameter db_recovery_                                               standby的一些参数

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 2G

SQL> show parameter standby_archive_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些参数
standby_archive_dest                 string
SQL> select * from v$standby_log;

未选定行

SQL> show parameter standby_file_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些参数
standby_file_management              string      manual

SQL> show parameter db_create

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------standby的一些参数
db_create_file_dest                  string      D:\standbyphysical\datafile


SQL> alter system switch logfile;

系统已更改。

 

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 NO  ARCH
1

 


SQL> create tablespace testtb2 datafile 'D:\自建表空间数据文件\testtb2.dbf' size
 10m;

表空间已创建。

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2

已选择8行。

SQL> alter system switch logfile;

系统已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 NO  ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 NO  LGWR
1

 

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

数据库已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 YES ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 NO  LGWR~~~~~~~~~~~~~~~~~~~~~~~~~~~应用失败

 


Wed Aug 27 11:48:39 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3088.trc:
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'C:\WINDOWS\SYSTEM32\UNNAMED00007'

 


SQL> select name from v$datafile;(STANDBY1)

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
C:\WINDOWS\SYSTEM32\UNNAMED00007

已选择7行。

 


SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00007' as 'd:\st
andbyphysical\testtb2.dbf';

数据库已更改。

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

数据库已更改。

SQL> select name,applied,creator from v$archived_log;

NAME                                               APP CREATOR
-------------------------------------------------- --- -------
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00069_0663689986.00 YES ARCH
1

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00070_0663689986.00 YES LGWR
1


SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF

已选择7行。

 

standby_file_management auto 下,

SQL> alter system set standby_file_management='auto'
  2  ;

系统已更改。

SQL> show parameter standby_file_management

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      auto

 

prmary建立2个表空间


 SQL> create tablespace testtb3 datafile 'D:\自建表空间数据文件\testtb3.dbf' size
 10m;

表空间已创建。

SQL> create tablespace testtb4 datafile 'D:\testtb4.dbf' size 10m;~~~~~~~~~~~~~~~~~~~~~~~~~~~未包含在db_file_name_convert 中

表空间已创建。

SQL>


SQL> alter system switch logfile;

系统已更改。

SQL>

SQL> select name,applied,creator from v$archived_log;
D:\STANDBYPHYSICAL\ARCHIVE1\ARC00072_0663689986.00 YES LGWR~~~~~~~~~~~~~~~~~~~~~~~~~~~收到并应用
1

NAME                                               APP CREATOR
-------------------------------------------------- --- -------

 

 


SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在db_create_file_dest
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在db_create_file_dest~~~~这个不在db_file_name_convert的也建立了没有错误

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF


已选择9行。


SQL> alter system set db_create_file_dest='';

系统已更改。

SQL> show parameter db_create_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string


SQL> create tablespace testtb5 datafile 'D:\testtb5.dbf' size 10m;

表空间已创建。

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

数据库已更改。

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING
RFS       LGWR             74 WRITING
RFS       UNKNOWN           0 RECEIVING~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~应用进程开不了

 

SQL> select name,applied,creator from v$archived_log;
NAME                                               APP CREATOR
-------------------------------------------------- --- -------

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00073_0663689986.00 NO  LGWR~~~~~~~~~~~~~~~~~~~~~~~~最新的 但无法应用
1


看下alert.log
File #10 added to control file as 'UNNAMED00010'.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~信息
Originally created as:
'D:\TESTTB5.DBF'
Recovery was unable to create the file as:
'D:\TESTTB5.DBF'
MRP0: Background Media Recovery terminated with error 1274
Wed Aug 27 14:33:07 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3020.trc:
ORA-01274: cannot add datafile 'D:\TESTTB5.DBF' - file could not be created
ORA-01119: error in creating database file 'D:\TESTTB5.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了 选项, 但文件已经存在

Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Wed Aug 27 14:33:08 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_3020.trc:
ORA-01274: cannot add datafile 'D:\TESTTB5.DBF' - file could not be created
ORA-01119: error in creating database file 'D:\TESTTB5.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了 选项, 但文件已经存在

Wed Aug 27 14:36:37 2008
alter database recover managed standby database disconnect from session
MRP0 started with pid=18, OS id=1224
Managed Standby Recovery not using Real Time Apply
MRP0: Background Media Recovery terminated with error 1111
Wed Aug 27 14:36:43 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_1224.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'

Wed Aug 27 14:36:44 2008
Errors in file d:\standbyphysical\bdump\standby1_mrp0_1224.trc:
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01111: name for data file 10 is unknown - rename to correct file
ORA-01110: data file 10: 'C:\WINDOWS\SYSTEM32\UNNAMED00010'

SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF

C:\WINDOWS\SYSTEM32\UNNAMED00010~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~错误文件

已选择10行。


SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\st
andbyphysical\testtb5.dbf';
alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\standby
physical\testtb5.dbf'
*
第 1 行出现错误:
ORA-01275: 自动进行备用文件管理时, 不允许进行 CREATE DATAFILE 操作。~~~~~~~~~~~~~~~~standby_file_management必须为 manual才可以重命


SQL>

SQL> alter system set standby_file_management='manual';

系统已更改。

SQL> alter database create datafile 'C:\WINDOWS\SYSTEM32\UNNAMED00010' as 'd:\st
andbyphysical\testtb5.dbf';

数据库已更改。


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

数据库已更改。

SQL> select  PROCESS,CLIENT_PROCESS,SEQUENCE#,STATUS from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE# STATUS
--------- -------- ---------- ------------
ARCH      ARCH              0 CONNECTED
ARCH      ARCH              0 CONNECTED
RFS       UNKNOWN           0 RECEIVING
RFS       LGWR             74 WRITING
RFS       UNKNOWN           0 RECEIVING
MRP0      N/A              74 WAIT_FOR_LOG

 


SQL> select name,applied,creator from v$archived_log;
NAME                                               APP CREATOR
-------------------------------------------------- --- -------

D:\STANDBYPHYSICAL\ARCHIVE1\ARC00073_0663689986.00 YES LGWR
1

SQL> select name from v$datafile;

NAME
--------------------------------------------------
D:\STANDBYPHYSICAL\SYSTEM01.DBF
D:\STANDBYPHYSICAL\UNDOTBS01.DBF
D:\STANDBYPHYSICAL\SYSAUX01.DBF
D:\STANDBYPHYSICAL\USERS01.DBF
D:\STANDBYPHYSICAL\EXAMPLE01.DBF
D:\STANDBYPHYSICAL\TESTTB.DBF
D:\STANDBYPHYSICAL\TESTTB2.DBF
D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M
F_TESTTB3_4C9VCCM1_.DBF

D:\STANDBYPHYSICAL\DATAFILE\STANDBY1\DATAFILE\O1_M

NAME
--------------------------------------------------
F_TESTTB4_4C9VCK9R_.DBF

D:\STANDBYPHYSICAL\TESTTB5.DBF

已选择10行。

 


SQL> alter database recover managed standby database cancel;

数据库已更改。

 

SQL> select tablespace_name from user_tablespaces;~(standby1)

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
TESTTB
TESTTB2
TESTTB3
TESTTB4
TESTTB5

已选择11行。

SQL>

 

结论:
当standby_file_management为 manual时候即便有这个参数,primary添加新数据文件,standby应用时候也会出错,应用不下去,一个未知名的数据文件添加到控制文件中,用重命名可以解决,当为 auto时候,可是primary建立的新数据文件不在db_file_name_convert 中这样转换不过来位置名称,也应用不下去,一个未知名的数据文件添加到控制文件中,
这个时候如果有db_create_file_dest 就可以比免这个错误,直接建立到db_create_file_dest中,但是如果正常auto下,primary 也建立在db_file_name_convert中包含的位置,那么standby应用日志建立primary新建立的数据文件,就会建立在db_create_file_dest中,不会按照db_file_name_convert中映射到standby的位置建立,名字也不对.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-609862/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    426941