用户管理的复制数据库

用户管理的复制数据库

环境:linux

数据库版本:11.2.0.1.0

作者QQ:517706685

 

大概步骤

 

1建立备用数据库目录

2从主数据库创建参数文件

3从主数据库中 备份控制文件到trace

4根据参数文件进行修改

5根据备份控制文件进行修改

6主数据库设置开始备份标识

7利用操作系统的命令复制主数据库的数据文件到备用数据库

8主数据库设置结束备份标识

9主数据库切换日志3次

10拷贝主数据库的归档日志到备份数据库目录

11设置备用数据库的ORACLE_SID

12根据创建的参数文件 启动数据库到nomount状态

13创建控制文件

14启动数据库到加载状态

15执行恢复命令

16启动数据到open 重设日志

 

 

 详细步骤

 mkdir–p /opt2/oracle/oradata/demo

mkdir –p /opt2/oracle/pfile

mkdir –p /opt2/oracle/archive_file

mkdir –p /opt2/oracle/flash_recover_area/demo

mkdir –p /opt2/oracle/admin/demo/adump/

 

1.      在主数据库, 我们的实例叫demo

 createpfile=’/opt2/oracle/pfile/initdemo.ora’ from spfile;

 

2.      编辑initdemo.ora,红色部分是修改的地方

oracle@suse11:/opt2/oracle/pfile> viinitdemo.ora

 

demo.__db_cache_size=109051904

demo.__java_pool_size=4194304

demo.__large_pool_size=4194304

demo.__oracle_base='/opt/oracle'#ORACLE_BASEset from environment

demo.__pga_aggregate_target=104857600

demo.__sga_target=314572800

demo.__shared_io_pool_size=0

demo.__shared_pool_size=180355072

demo.__streams_pool_size=8388608

*.audit_file_dest='/opt2/oracle/admin/demo/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/opt2/oracle/oradata/demo/control01.ctl','/opt2/oracle/flash_recovery_area/demo/control01.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='demo'

*.db_recovery_file_dest='/opt2/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=4070572032

*.diagnostic_dest='/opt2/oracle'

*.dispatchers='(PROTOCOL=TCP)(SERVICE=demoXDB)'

*.log_archive_dest_1='location=/opt2/oracle/archive_file'

*.log_archive_format='archive_%t_%s_%r.arc'

*.nls_date_format='yyyy-mm-dd hh24:mi:ss'

*.open_cursors=300

*.pga_aggregate_target=104857600

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=314572800

*.undo_tablespace='UNDOTBS1'

 

3.      备份主数据库控制文件到trace

alter database backup control file to trace;

然后在atert.log 中找到刚才备份的跟踪文件路径

 

例如

cp /opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4528.trc/opt2/oracle/oradata/demo/createCtrl.sql

 

   编辑createCtrl.sql。取消一些注释,只保留类似如下

 

 oracle@suse11:/opt2/oracle/oradata/demo>vi createCtl.sql

 

CREATE CONTROLFILE SETDATABASE "DEMO" RESETLOGS ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'/opt2/oracle/oradata/demo/redo01.log' SIZE 50M BLOCKSIZE 512,

  GROUP 2'/opt2/oracle/oradata/demo/redo02.log' SIZE 50M BLOCKSIZE 512,

  GROUP 3'/opt2/oracle/oradata/demo/redo03.log' SIZE 50M BLOCKSIZE 512

DATAFILE

  '/opt2/oracle/oradata/demo/system01.dbf',

  '/opt2/oracle/oradata/demo/sysaux01.dbf',

  '/opt2/oracle/oradata/demo/undotbs01.dbf',

  '/opt2/oracle/oradata/demo/users01.dbf',

  '/opt2/oracle/oradata/demo/tgh1_01.dbf',

  '/opt2/oracle/oradata/demo/tgh2_01.dbf',

  '/opt2/oracle/oradata/demo/tgh2_02.dbf',

  '/opt2/oracle/oradata/demo/tgh2_03.dbf',

  '/opt2/oracle/oradata/demo/tgh2_04.dbf',

  '/opt2/oracle/oradata/demo/tgh1_index_01.dbf'

CHARACTER SET AL32UTF8

;

 

4.      设置主数据库开始备份

Alter database begin backup;

5. 利用操作系统命令复制数据文件

cp/opt/oracle/oradata/orcl/*.dbf /opt2/oracle/oradata/demo

5.      结束备份

alter database end backup;

6 .  切换日志至少3次

alter systemarchive log current;

6.      拷贝归档日志

cp /opt/oracle/archive_file/* /opt2/oracle/archive_file/

7.      导入ORACLE_SID

export ORACLE_SID=orcl

8.       登录数据库,启动到nomount状态

startup nomount pfile='/opt2/oracle/pfile/initdemo.ora'

9. 创建控制文件

  @/opt2/oracle/oradata/demo/createCtl.sql

   创建成功后会在/opt2/oracle/oradata/demo生产control01.ctl文件

9.      设定归档日志路径

10.   set logsource='/opt/oracle/archive_file'

11.   启动到mount 状态

alter database mount;

12. 执行恢复

   recoverdatabase using backup controlfile until cancel;

   输入

  AUTO

 

 

 

13 . 恢复完成后 按照重设日志打开

 Alterdatabase open resetlogs;

 

 

 

最后验证。

有个疑问,很大教程上针对system表空间的恢复要在nomount状态下,而我根本在这个状态下恢复不了,报数据库没有加载的错误,难道是版本的原因,其它版本没有尝试,期待高人解释。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值