Oracle复制数据库(单个oracle用户对应的数据库)基本操作

这里以数据库仓库34复制到数据库仓库36为例

1.分配权限

在linux界面oracle账号下执行

sqlplus / as sysdba;

oracle数据库中执行:

create or replace directory DUMP_DIR as  '/backup/zqw/dump';
grant read,write on directory DUMP_DIR to wmwhse34,wmwhse36;

2.导出(/仓库34)

linux界面oracle账户下执行

expdp wmwhse34/WMwhSql34  DIRECTORY=DUMP_DIR  DUMPFILE=wmwhse34.DMP schemas=wmwhse34  logfile=exp_wmwhse34.log;

3.备份(/仓库36)

linux界面oracle账户下执行

expdp wmwhse36/WMwhSql36 DIRECTORY=DUMP_DIR  DUMPFILE=wmwhse36.DMP schemas=wmwhse36 logfile=exp_wmwhse36.log;

4.停WMS应用

5.删除原有仓库用户

删除原有仓库用户(/仓库36) --删除整个仓库数据,用户所有的数据(包括在表空间中的数据),谨慎操作!!
进入sqlplus / as sysdba里面操作,需要等待,不要动任何操作!

drop user wmwhse36 cascade;

如果删除过程出现如下错误:
ORA-01940: cannot drop a user that is currently connected
则需要判断应用是否停止,是否有开发在连接使用数据库等等。
强制杀死进程即可删除仓库

SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='WMWHSE1';查询数据中用户WMWHSE1是否在使用
//select username,default_tablespace,TEMPORARY_TABLESPACE from dba_users where username = 'ENTERPRISE';查询表空间名字

alter system kill session '1922,39146,@1';//杀死进程。如果是单台,不需要@1

在这里插入图片描述

6.创建用户

进入sqlplus / as sysdba里面操作

create user wmwhse36 PROFILE SCEUSER identified by WMwhSql36 DEFAULT TABLESPACE wmwhse36_DATA TEMPORARY TABLESPACE wmwhse36_TEMPDATA;

授权

grant create any table to  wmwhse36;
grant dba to wmwhse36;
grant execute on DBMS_LOCK to wmwhse36;
grant select on DBA_OBJECTS to wmwhse36;
grant create any sequence to wmwhse36;
grant read,write on directory DUMP_DIR to wmwhse36;

7.导入仓库数据

注意:在oracle账号界面执行!

impdp wmwhse36/WMwhSql36 DIRECTORY=DUMP_DIR DUMPFILE=wmwhse34.DMP REMAP_SCHEMA=wmwhse34:wmwhse36 remap_tablespace=wmwhse34_DATA:wmwhse36_DATA  TRANSFORM=segment_attributes:n,OID:n EXCLUDE=STATISTICS logfile=imp_wmwhse36.log;

8.回收权限

数据库中执行

--revoke exp_full_database from wmwhse36;

如果没有表空间,创建表空间如下

1.1.创建表空间
create tablespace WMWHSE36_DATA datafile '+DATADG' size 3424m autoextend on next 512m maxsize unlimited extent management local segment space management auto;
1.2.创建临时表空间
create temporary tablespace WMWHSE36_TEMPDATA tempfile '+DATADG' size 512m reuse autoextend on next 256m maxsize unlimited extent management local uniform size 1m;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中。 在很多生产环境中,经常遇到一些大量得数据,这些数据只用作查询统计功能。例如:历史告警,历史性能指标,历史事件,等等。这种数据的特点是:只读不写,数据量相当大,一旦查询大结果集的数据时,对数据库的IO,内存缓存占用相当大,会严重影响同一个数据库的其他会话的操作,表现为整个数据库反应迟缓,业务功能不可用。采用复制技术后,将这些大型数据复制到另外一个数据库中,对这些大数据的查询统计操作放在另外的一台数据库服务器上进行,即使受影响,也只是影响局部的查询统计功能,其他正常的业务处理不受影响。 但是,使用复制技术的话,意味着一个系统中,至少存在两个数据库(集群的数据库也当成一个数据库),对应的应用程序也需要建立多个数据库连接,能够根据业务需要,访问不同的数据库ORACLE数据库自身提供有复制功能,只需要进行配置即可实现。 ORACLE提供有三种复制技术: 高级复制(Advanced Replication) 流复制(Streams Replication) 备库(Dataguard) 备库的方式,就是数据库数据库的备份方式,主要是解决容灾的,不讨论此话题。 流复制主要是利用ORACLE的归档日志,进行增量备份来实现的,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml。可以复制到表,用户数据库级别。 高级复制主要是基于触发器的原理来触发数据同步的,因此,高级复制无法实现用户数据库级别的对象复制,只能做些表、索引和存储过程的复制。 如果出于容灾整个数据库的考虑,高级复制相当复杂,而且并不一定能做好,流复制的配置相对简单。流复制是后来产生的复制技术,是基于日志挖掘技术实现的,对数据库的影响较低。但在稳定性方面较差,实时性没有高级复制强(因为高级复制是基于触发器的)。如果系统意外的话,流复制的恢复将会需要较长时间,特别是意外时间越长,恢复时间成倍增长。 下面使用相同的环境,分别对两种复制功能进行配置介绍,并进行性能压力测试比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值