Oracle 同机数据库复制或克隆经常用于提供测试或开发环境。对于生成的克隆数据库有多种方式,如使用冷备方式进行数据库克隆(需要使用nid修改db_name),热备方式克隆数据库,rman方式克隆数据库等等。由于是同机克隆,因此目标数据库与原数据库必须位于不同的目录,其次,使用不用的数据库名称(db_name)。本文主要列出使用基于用户管理的热备方式来进行数据库克隆的步骤并给出演示。
1、热备克隆步骤
a、创建目标数据库目录
b、创建目标数据库密码文件(orapwd)
c、创建目标数据库参数文件(pfile/spfile)
d、备份原数据库并复制备份文件到目标数据库
e、启动目标数据库到nomount状态并创建控制文件
f、恢复目标数据库(recover)
g、打开目标数据库(open with resetlogs)
h、校验数据库及添加临时数据文件
2、演示热备克隆数据库
-->演示环境
SQL> ho cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
SQL> select * from v$version where rownum<2;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> select name,log_mode,open_mode from v$database;
NAME LOG_MODE OPEN_MODE
--------------------------- ------------ --------------------
SYBO3 ARCHIVELOG READ WRITE
--原数据库名 : sybo3
--目标数据库名: sybo4
--原数据库目录:/u01/database/sybo3
--目标数据库目录:/u01/database/sybo4
--a、创建目标数据库目录
[oracle@linux3 database]$ more sybo4.sh
#!/bin/sh
mkdir -p /u01/database
mkdir -p /u01/database/sybo4/adump
mkdir -p /u01/database/sybo4/controlf
mkdir -p /u01/database/sybo4/flash_recovery_area
mkdir -p /u01/database/sybo4/oradata
mkdir -p /u01/database/sybo4/redo
mkdir -p /u01/database/sybo4/dpdump
mkdir -p /u01/database/sybo4/pfile
mkdir -p /u01/database/sybo4/db_broker
[oracle@linux3 database]$ ./sybo4.sh
--b、创建目标数据库密码文件
$ orapwd file=$ORACLE_HOME/dbs/orapwsybo4 password=oracle entries=10
--c、创建目标数据库参数文件
--从原数据库生成目标数据库的初始化参数文件
SQL> create pfile='/u01/oracle/db_1/dbs/initsybo4.ora' from spfile;
--修改目标数据库参数文件
$ sed -i 's/sybo3/sybo4/g' $ORACLE_HOME/dbs/initsybo4.ora
$ grep sybo3 $ORACLE_HOME/dbs/initsybo4.ora -->校验是否还存在sybo3相关字符
--最终的目标数据库参数文件
$ more $ORACLE_HOME/dbs/initsybo4.ora
sybo4.__db_cache_size=117440512
sybo4.__java_pool_size=4194304
sybo4.__large_pool_size=4194304
sybo4.__oracle_base='/u01/oracle'#ORACLE_BASE set from environment
sybo4.__pga_aggregate_target=150994944
sybo4.__sga_target=226492416
sybo4.__shared_io_pool_size=0
sybo4.__shared_pool_size=92274688
sybo4.__streams_pool_size=0
*.audit_file_dest='/u01/database/sybo4/adump/'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/database/sybo4/controlf/control01.ctl','/u01/database/sybo4/controlf/control02.ctl'
*.db_block_size=8192
*.db_domain='orasrv.com'
*.db_name='sybo4'
*.db_recovery_file_dest='/u01/database/sybo4/flash_recovery_area/'
*.db_recovery_file_dest_size=4039114752
*.dg_broker_config_file1='/u01/database/sybo4/db_broker/dr1sybo4.dat'
*.dg_broker_config_file2='/u01/database/sybo4/db_broker/dr2sybo4.dat'
*.dg_broker_start=FALSE
*.diagnostic_dest='/u01/database/sybo4'
*.log_archive_dest_1=''
*.memory_target=374341632
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
--d、备份原数据库并复制备份文件到目标数据库
--创建一个临时表t用户验证克隆是否成功
SQL> create table t(name varchar2(10),action varchar2(20));
SQL> insert into t select 'Robinson','Transfer DB' from dual;
SQL> commit;
SQL> alter system archive log current;
--准备目标数据库创建控制文件脚本,此trace file位于参数user_dump_dest目录下
SQL> alter database backup controlfile to trace resetlogs;
--备份原数据库,如果数据库文件较多,使用热备脚本来完成
SQL> alter database begin backup;
--复制数据库文件到目标数据库目录
SQL> host cp /u01/database/sybo3/oradata/* /u01/database/sybo4/oradata
SQL> alter database end backup;
--e、启动目标数据库到nomount状态并创建控制文件
$ export ORACLE_SID=sybo4
$ sqlplus / as sysdba
SQL> startup nomount pfile=/u01/oracle/db_1/dbs/initsybo4.ora;
ORACLE instance started.
SQL> get sybo4ctl.sql
1 CREATE CONTROLFILE SET DATABASE "sybo4" RESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/u01/database/sybo4/redo/redo01.log' SIZE 50M BLOCKSIZE 512,
9 GROUP 2 '/u01/database/sybo4/redo/redo02.log' SIZE 50M BLOCKSIZE 512,
10 GROUP 3 '/u01/database/sybo4/redo/redo03.log' SIZE 50M BLOCKSIZE 512
11 DATAFILE
12 '/u01/database/sybo4/oradata/system01.dbf',
13 '/u01/database/sybo4/oradata/sysaux01.dbf',
14 '/u01/database/sybo4/oradata/undotbs01.dbf',
15 '/u01/database/sybo4/oradata/users01.dbf',
16 '/u01/database/sybo4/oradata/example01.dbf'
17 CHARACTER SET AL32UTF8
18* ;
SQL> @sybo4ctl.sql
Control file created.
SQL> alter database mount; -->注意创建控制文件之后,数据库已经被mount,如下我们收到了错误提示
alter database mount
*
ERROR at line 1:
ORA-01100: database already mounted
--上面我们修改了控制文件脚本,使用了set database以及resetlogs方式来创建数据库
--f、恢复目标数据库
SQL> set logsource '/u01/database/sybo3/flash_recovery_area/SYBO3/archivelog/2013_07_24';
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 847086 generated at 07/24/2013 14:42:06 needed for thread 1
ORA-00289: suggestion :
/u01/database/sybo3/flash_recovery_area/SYBO3/archivelog/2013_07_24/o1_mf_1_7_8216
17241.dbf
ORA-00280: change 847086 for thread 1 is in sequence #7
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/database/sybo3/redo/redo01.log
Log applied.
Media recovery complete.
--g、打开目标数据库
SQL> alter database open resetlogs;
Database altered.
--h、校验数据库及添加临时数据文件
SQL> select * from t;
NAME ACTION
---------- --------------------
Robinson Transfer DB
SQL> select name from v$datafile;
NAME
------------------------------------------------------------
/u01/database/sybo4/oradata/system01.dbf
/u01/database/sybo4/oradata/sysaux01.dbf
/u01/database/sybo4/oradata/undotbs01.dbf
/u01/database/sybo4/oradata/users01.dbf
/u01/database/sybo4/oradata/example01.dbf
SQL> col member format a60
SQL> select member from v$logfile;
MEMBER
------------------------------------------------------------
/u01/database/sybo4/redo/redo03.log
/u01/database/sybo4/redo/redo02.log
/u01/database/sybo4/redo/redo01.log
SQL> select name from v$controlfile;
NAME
------------------------------------------------------------
/u01/database/sybo4/controlf/control01.ctl
/u01/database/sybo4/controlf/control02.ctl
--Author : Robinson
--Blog : http://blog.csdn.net/robinson_0612
SQL> select * from v$tempfile;
no rows selected
SQL> select property_name,property_value from database_properties where property_name like '%DEFAULT%';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP
DEFAULT_PERMANENT_TABLESPACE USERS
DEFAULT_EDITION ORA$BASE
DEFAULT_TBS_TYPE SMALLFILE
SQL> select tablespace_name from dba_tablespaces where tablespace_name='TEMP';
TABLESPACE_NAME
------------------------------
TEMP
SQL> alter tablespace temp add tempfile '/u01/database/sybo4/oradata/tempfile.dbf' size 50m autoextend on;
--建立服务器参数文件,之后建议一致性关闭数据库,备份数据库,添加数据库到/etc/oratab,配置监听器等
SQL> create spfile from pfile;
3、小结
a、对于基于用户管理热备数据库的克隆有点类似于创建一个新的数据库,因为我们需要准备创建整个数据库所需的全部过程
b、注意理解Oracle数据库启动步骤(nomount,mount,open)及每一步骤所需要的相关文件与在不同阶段所完成的动作,见Oracle数据库实例启动关闭过程
c、注意理解几类不同文件的作用,即:Oracle 参数文件,Oracle 密码文件,Oracle 控制文件以及最终打开的数据库文件
d、对于数据库热备复制到目标数据库目录后等同于还原操作,也就是相当于 rman 的 restore 操作
e、数据库恢复操作使用了using backup controlfile方式,因为控制文件与数据文件不一致。可参考,理解 using backup controlfile
f、由于归档日志位于原数据库归档位置,因此在恢复期间使用了set logsource子句用于指定归档日志所在的位置
g、创建控制文件时,由于是一个新的db,因此必须使用resetlog方式,否则收到ORA-01223: RESETLOGS must be specified to set a new database name
相关参考
Oracle 冷备份
Oracle 热备份
Oracle 备份恢复概念
Oracle 实例恢复
Oracle 基于用户管理恢复的处理
SYSTEM 表空间管理及备份恢复
SYSAUX表空间管理及恢复
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
RMAN 概述及其体系结构
RMAN 配置、监控与管理
RMAN 备份详解
RMAN 还原与恢复
RMAN catalog 的创建和使用
基于catalog 创建RMAN存储脚本
基于catalog 的RMAN 备份与恢复
RMAN 备份路径困惑
自定义 RMAN 显示的日期时间格式
只读表空间的备份与恢复
Oracle 基于用户管理的不完全恢复
理解 using backup controlfile
使用RMAN实现异机备份恢复(WIN平台)
使用RMAN迁移文件系统数据库到ASM
基于Linux下 Oracle 备份策略(RMAN)
Linux 下RMAN备份shell脚本
使用RMAN迁移数据库到异机
RMAN 提示符下执行SQL语句
Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
分享到:
相关推荐
1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration Assistant 创建数据库 1.7 完成数据库配置 1.7.1 创建表空间 1.7.2 执行数据字典配置脚本 1.7.3 建立另外的回退段 1.7.4 修改 ...
仪表板 •基于QR的食品企业订单管理工具。 •用户扫描生成的QR码,然后进入从数据库获取的在线菜单。 •通过移动网络应用程序下订单,该应用程序显示菜单,所选项目和价格。 •所有者可以实时查看订单,生成表格的QR...
本资源是一个基于SSM+Vue的快餐店线上点餐系统,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统介绍: ...
本资源是一个基于SSM+Vue的家政预约管理系统,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统介绍: 该...
本资源是一个基于SSM+Vue的记账管理系统,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统介绍: 该记账...
5. 订单管理:用户可以在线预订图书产品,完成订单支付等操作。 数据库: 本系统的数据库采用MySQL数据库,包含以下几个表: 1. user表:存储用户的基本信息,如用户名、密码、邮箱等。 2. book_history表:存储...
5. 订单管理:用户可以在线预订旅游产品,完成订单支付等操作。 数据库: 本系统的数据库采用MySQL数据库,包含以下几个表: 1. user表:存储用户的基本信息,如用户名、密码、邮箱等。 2. travel_history表:...
4.人事管理:权限管理、角色管理、用户管理; 5.其他: ## 安装步骤: 1.git克隆或者直接下载 2.运行sql目录下的warehouse.sql文件 3.启动项目后运行locahost:8080跳转到登录界面即可 切换端口或者修改数据库...
4.人事管理:权限管理、角色管理、用户管理; 5.其他: 安装步骤: 1.git克隆或者直接下载 2.运行sql目录下的warehouse.sql文件 3.启动项目后运行locahost:8080跳转到登录界面即可 切换端口或者修改数据库、...
12.7.1用户管理备份 12.7.2导入导出工具数据泵 12.7.3跨平台数据迁移 12.7.4可传输表空间 12.7.5使用RMAN工具复制数据库 12.8本章小结 第13章 RAC恢复 13.1恢复技术基础 13.1.1恢复解决方案 13.1.2 SCN时间...
- 管理员管理用户,包括禁用用户和删除用户 ## 系统设计 本系统采用MVC架构,将业务逻辑、数据处理和视图分离。具体实现如下: - 模型层:使用MySQL数据库存储用户和留言信息,使用PHP的PDO扩展进行数据库操作。 ...
本资源是一个基于SSM+Vue的健身俱乐部网站,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统介绍: 该...
本资源是一个基于SSM+Vue的基于Word自动出题系统,该系统采用了Word模板和Java代码进行题目生成。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统...
1. 用户管理   用户可以注册、登陆、退出,修改头像,查看某个用户的主页,其包括某个用户的关注、粉丝、获得的点赞数、发布的帖子,用户自己能查看自己发表的评论。 2. 帖子管理   普通...
该口腔护理网站旨在为用户提供便捷的口腔护理信息查询和管理功能。用户可以通过系统了解口腔护理知识、产品推荐、在线咨询等信息,方便用户选择适合自己的口腔护理方案。同时,系统还提供了在线预约、支付等功能,...
这是一个基于Spring Boot和Vue的家庭食谱管理系统,旨在帮助用户轻松地管理自己的食谱和食材清单。 ## 功能 该系统提供了以下功能: - 食谱管理:用户可以创建、编辑和删除自己的食谱,包括名称、图片、食材和...
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...
本资源是一个基于SSM+Vue的考研指导平台,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 系统介绍: 该考研...