手工管理在复制数据库

 手工创建复制数据库时,必须备份复制数据库所需的所有数据文件。其中system 和undo表空间的数据文件是必须的。必须使用CREATER CONTROLFILE 命令创建备份数据库的控制文件。可以将主数据库的控制文件备份到控制文件里。

下面 创建复制数据库DUPDB1 ,主数据库名为ORACL

1)复制主数据库的数据文件。

ORACL> select name from v$datafile;
NAME                                                                           
--------------------------------------------------------------------------------
F:\APP\YANG\ORADATA\ORACL\SYSTEM01.DBF                                         
F:\APP\YANG\ORADATA\ORACL\SYSAUX01.DBF                                         
F:\APP\YANG\ORADATA\ORACL\UNDOTBS01.DBF                                        
F:\APP\YANG\ORADATA\ORACL\USERS01.DBF                                          
F:\APP\YANG\ORADATA\ORACL\EXAMPLE01.DBF                                        
F:\APP\YANG\ORADATA\ORACL\TEST.DBF                                             
F:\APP\YANG\ORADATA\ORACL\TEST1.DBF                                            
已选择7行。

2)备份主数据库的数据文件和控制文件                                    
ORACL> alter database begin backup;
数据库已更改。

ORACL> host copy f:\app\yang\oradata\oracl\*.dbf f:\hotbackup\*.dbf

ORACL> alter database end backup;
数据库已更改。

ORACL> alter system archive log current;---归档当前日志
系统已更改。
ORACL> alter database backup controlfile to trace resetlogs;--备份到跟踪文件里
数据库已更改。
ORACL> @f:\sql\gettrace.sql---获取跟踪文件 脚本在文章最后给出
TRACE_FILE__NAME                                                               
--------------------------------------------------------------------------------
f:\app\yang\diag\rdbms\oracl\oracl\trace/oracl_ora_3560.trc                    
 

3)建立存放复制数据库的各种目录

4)建立例程服务 在windows系统下,使用如下命令,

oradim -new -sid  dupdb1 -intpwd oracle

5)

1。 建立参数文件。先建立pfile文件,然后根据实际情况进行修改。
ORACL> create pfile='F:\app\yang\product\11.1.0\db_1\database\initdupdb1.ora' from spfile;
文件已创建。

2。修改initdupdb1.ora文件。修改db_name,instance_name,service_names,control_files ,*_dest 等初始化参数。部分参数如下(基本上这些就够了)

*.db_name='dupdb1'
*.instance_name='dupdb1'
*.service_names='dupdb1'
*.user_dump_dest='d:\dupdb1\udump'
*.background_dump_dest='d:\dupdb1\bdump'
*.db_recovery_file_dest='d:\dupdb1\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.log_archive_dest_1='location=d:\dupdb1\archive'
3。根据修改的INITDUPDB1.ORA 创建spfile文件

ORACL>create spfile='F:\app\yang\product\11.1.0\db_1\database\spfileDUPDB1.ora'
  2  from pfile='F:\app\yang\product\11.1.0\db_1\database\initdupdb1.ora';
create spfile='F:\app\yang\product\11.1.0\db_1\database\spfileDUPDB1.ora'
*
第 1 行出现错误:
ORA-01078: 处理系统参数失败
ORA-32003: 处理参数 'service_name' 时出错----第一次做的时候 name少了个s
LRM-00101: unknown parameter name 'service_name'

ORACL>create spfile='F:\app\yang\product\11.1.0\db_1\database\spfileDUPDB1.ora'
  2  from pfile='F:\app\yang\product\11.1.0\db_1\database\initdupdb1.ora';
文件已创建。

6)复制主数据库的数据文件到复制数据库的目录。

ORACL>host copy f:\hotbackup\*.dbf d:\dupdb1

ORACL>create spfile='F:\app\yang\product\11.1.0\db_1\database\spfileDUPDB1.ora'
  2  from pfile='F:\app\yang\product\11.1.0\db_1\database\initdupdb1.ora';
文件已创建。

以下是在复制数据库上的操作。

7)启动复制数据库的例程。

C:\>SET ORACLE_SID=DUPDB1

C:\>sqlplus  sys/oracle as sysdba

DUPDB1>startup nomount
ORA-02778: Name given for the log directory is invalid

---第一次时的错误,由于初始化参数配置的问题,你在做的时候,一定要仔细检查目录和路径是否正确。
修改后,重新启动。可以了。

8)要根据从获取跟踪文件中修改相应的路径,来重建控制文件。

DUPDB1>startup nomount
ORACLE instance started.
Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             150995860 bytes                                      
Database Buffers          377487360 bytes                                      
Redo Buffers                5844992 bytes                                      
DUPDB1>@f:\sql\crtdupdbctlret.sql
Control file created.

DUPDB1>startup mount--启动到mount状态,
ORACLE instance started.
Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             150995860 bytes                                      
Database Buffers          377487360 bytes                                      
Redo Buffers                5844992 bytes                                      
Database mounted.
DUPDB1>select instance_name ,status from v$instance;
INSTANCE_NAME    STATUS                                                        
---------------- ------------                                                  
dupdb1           MOUNTED       

9)由于数据库是在open状态下做的备份,是非一致性的备份,所以在重建控制文件后,要做复制数据库上进行恢复,用主数据库的归档日志,并在最后的日志使用完后,取消。                                                
DUPDB1>set logsource 'F:\app\yang\archive1'--用主数据库的归档日志
DUPDB1>recover database using backup controlfile until cancel
ORA-00279: change 3430744 generated at 06/04/2010 17:57:21 needed for thread 1
ORA-00289: suggestion : F:\APP\YANG\ARCHIVE1\28_1_720218966.LOG
ORA-00280: change 3430744 for thread 1 is in sequence #28
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 3430948 generated at 06/04/2010 18:00:46 needed for thread 1
ORA-00289: suggestion : F:\APP\YANG\ARCHIVE1\29_1_720218966.LOG
ORA-00280: change 3430948 for thread 1 is in sequence #29
ORA-00278: log file 'F:\APP\YANG\ARCHIVE1\28_1_720218966.LOG' no longer needed
for this recovery
ORA-00308: cannot open archived log 'F:\APP\YANG\ARCHIVE1\29_1_720218966.LOG'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

--出现这个情况是由于以resetlogs方式打开创建控制文件的(脚本在最后给出),以前的归档不能使用(参考我的以前的日志,重建控制文件http://space.itpub.net/22664653/viewspace-663963)要应用当前的重做日志文件。这里我把重做日志拷贝到复制数据库的目录下了。也可以不拷贝。输入路径就好。
DUPDB1>recover database using backup controlfile until cancel
ORA-00279: change 3430948 generated at 06/04/2010 18:00:46 needed for thread 1
ORA-00289: suggestion : F:\APP\YANG\ARCHIVE1\29_1_720218966.LOG
ORA-00280: change 3430948 for thread 1 is in sequence #29
Specify log: {=suggested | filename | AUTO | CANCEL}
d:\dupdb1\redo01.log
ORA-00310: archived log contains sequence 28; sequence 29 required
ORA-00334: archived log: 'D:\DUPDB1\REDO01.LOG'
DUPDB1>recover database using backup controlfile until cancel
ORA-00279: change 3430948 generated at 06/04/2010 18:00:46 needed for thread 1
ORA-00289: suggestion : F:\APP\YANG\ARCHIVE1\29_1_720218966.LOG
ORA-00280: change 3430948 for thread 1 is in sequence #29
Specify log: {=suggested | filename | AUTO | CANCEL}
d:\dupdb1\redo02.log
Log applied.
Media recovery complete.-----成功的标志

10)在恢复数据库之后用resetlogs方式打开数据库,系统会自动建立所有重做日志
DUPDB1>alter database open resetlogs;

Database altered.
DUPDB1>select instance_name ,status from v$instance;
INSTANCE_NAME    STATUS                                                        
---------------- ------------                                                  
dupdb1           OPEN     

至此,手工在同一台主机上创建复制数据库 成功。。

附:

1 crtdupdbctlret.sql 的脚本

STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "DUPDB1" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'D:\DUPDB1\REDO01.LOG'  SIZE 50M,
  GROUP 2 'D:\DUPDB1\REDO02.LOG'  SIZE 50M,
  GROUP 3 'D:\DUPDB1\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'D:\DUPDB1\SYSTEM01.DBF',
  'D:\DUPDB1\SYSAUX01.DBF',
  'D:\DUPDB1\UNDOTBS01.DBF',
  'D:\DUPDB1\USERS01.DBF',
  'D:\DUPDB1\EXAMPLE01.DBF',
  'D:\DUPDB1\TEST.DBF',
  'D:\DUPDB1\TEST1.DBF'
CHARACTER SET ZHS16GBK; 

2: gettrace.sql的脚本

select
  d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc' trace_file__name
from
    (select p.spid
     from sys.v$mystat m,sys.V$session s,sys.v$process p
     where m.statistic# =1 and s.sid =m.sid and p.addr = s.paddr) p,
    (select t.instance from sys.v$thread t ,sys.v$parameter v
      where  v.name = 'thread' and (v.value =0 or t.thread#=to_number(v.value))) i,
    (select value from sys.v$parameter where name='user_dump_dest') d
 /

1.jpg

时间: 2024-07-30 03:57:35

手工管理在复制数据库的相关文章

使用rman 管理的复制数据库遇到的问题

在使用rman执行复制数据库时遇到如上问题:在解决这个问题的过程中要谢谢 网友lizisor1 的帮助. 很可能是的备份不全,duplicate在restore时候找不到恢复点. 回复 #7 lizisor1 的帖子你分析的是正确的,的确在我rman备份时,说归档日志是不完整的.RMAN>backup database include current controlfile plus archivelog format ='f:\rman\full-%u_%s.bak'; 在执行的时候就报错说归

备份恢复12——复制数据库与备用数据库

1.建立复制数据库: 分为用户管理的方式建立复制数据库和rman建立复制数据库. 对于用户管理的复制数据库来说,还可以分为本机建立复制数据库和不在本机建立复制数据库,但是这两个方式区别不大,建立 数据库的方法步骤与建库的方法基本类似.不写了,自己参照书  P257 页做吧. 重点写写rman管理的方式建立复制数据库吧,这个才是重点.当使用rman管理的方式建立复制数据库时,必须首先使用rman备份主数据库的多有数据文件.控制文件和归档日志.示例如下:C:\> rman target sys/li

使用rman复制数据库

数据|数据库 -------------------------------------------- 实验环境:windows + oracle 10.1.0.2.0 原数据库:ning[归档模式]  复制数据库:test Author:NinGoo    2005-3-27 -------------------------------------------   在同一台server上使用rman的Duplicate Database创建复制数据库.   1.    创建新的instanc

oracle中如何通过RMAN复制数据库

通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库.这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆). ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称.使用RMAN的复制数据库特性,可以从RMAN备份创建一个新的数据库,并为这个副本数据库保留已有的数据库名称或者赋予新的名称. RMAN术语和命令: A. 辅助数据库(Auxiliary database):RMAN将目标数据库复制到该数据库实例.要创建该数据库的参数文件

基于用户管理的同机数据库克隆

      Oracle 同机数据库复制或克隆经常用于提供测试或开发环境.对于生成的克隆数据库有多种方式,如使用冷备方式进行数据库克隆(需要使用nid修改db_name),热备方式克隆数据库,rman方式克隆数据库等等.由于是同机克隆,因此目标数据库与原数据库必须位于不同的目录,其次,使用不用的数据库名称(db_name).本文主要列出使用基于用户管理的热备方式来进行数据库克隆的步骤并给出演示.   1.热备克隆步骤    a.创建目标数据库目录    b.创建目标数据库密码文件(orapwd)

IT管理必备:数据库审计产品部署介绍

本文讲的是IT管理必备:数据库审计产品部署介绍,随着美国金融危机爆发引发的全球经济危机,让我们越来越深刻地认识到违规操作.疏于监管带来的危害,于是审计作为现在监管比较普遍.实用且成熟的专业迎来了又一次事业的高峰. 经历了几十年的传统审计,虽然成熟,但是一直都是采用手工的方式进行工作的.而信息化技术的出现以及大量的信息通过信息系统处理,使得通过人工审计的方式逐渐捉襟见肘,利用信息技术手段实现或辅助审计的呼声越来越高. 审计重要的是通过记录数据审计行为,严防舞弊.违规操作.财务欺诈等行为,因此数据的

[原创]RMAN复制数据库

  RMAN复制数据库 通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库.这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆).ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称.使用RMAN的复制数据库特性,可以从RMAN备份创建一个新的数据库,并为这个副本数据库保留已有的数据库名称或者赋予新的名称. RMAN术语和命令: A.                辅助数据库(Auxiliary database):RMAN将目

手工重新创建8i数据库

创建|数据|数据库 手工重新创建8i数据库  作者:llmmysun 1.查看原来的数据库文件,保存其位置和大小 SYSTEM/home/ora817/oradata/clubcore/system01.dbf   800M TOOLS/home/ora817/oradata/clubcore/tools01.dbf  250M RBS/home/ora817/oradata/clubcore/rbs01.dbf   1024M TEMP/home/ora817/oradata/clubcore

Oracle中使用RMAN 异机复制数据库

RMAN 异机复制和同机复制操作步骤是一样的,不同的是我们需要把备份的文件copy到辅助库上 实验平台: REDHAT linux 4.7 + oracle 10g 目标库信息: ORACLE_BASE: /u01/app/oracle ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1 ORACLE_SID:orcl IP: 192.168.1.20 辅助库信息: ORACLE_BASE: /u01/app/oracle ORACLE_HOME: