您的当前位置:首页正文

快速复制数据库

2021-05-24 来源:我们爱旅游
在现场实施或者搭建测试环境的过程中,我们需要将一个数据库快速复制到另外一个数据库,

这里整理了一组SQL语句用于快速复制

1、在源数据库上执行EXP全导出

exp userid=system/system file=d:\\full.dmp log=d:\\full.log full=y direct=y buffer=65536

2、在源数据库上执行以下SQL语句,生成源数据库所有表空间的创建命令,将结果在目标

库上执行

select 'CREATE SMALLFILE TABLESPACE \"'|| t.tablespace_name

|| '\" DATAFILE ''e:\\oradata\\HIS3\\' ||t.tablespace_name

|| '01'' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 8G LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;'

from dba_tablespaces t where t.contents <> 'UNDO' and t.tablespace_name not in

('SYSTEM','SYSAUX','TEMP','USERS');

注意: 这里可以根据目标库的磁盘配置情况,自行更改目标库的数据文件存放目录,示例

放在e:\\oradata\\HIS3\\下;

其他参数也可根据实际情况适当调整

3、在源数据库上执行以下SQL语句,向所有表空间添加数据文件,将结果在目标库上执行

select 'ALTER TABLESPACE \"'|| t.tablespace_name || '\" ADD DATAFILE ''e:\\oradata\\HIS3\\'

||t.tablespace_name

|| '02'' SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 8G;'

from dba_tablespaces t where t.contents <> 'UNDO' and t.tablespace_name not in

('SYSTEM','SYSAUX','TEMP','USERS');

注意: 这里可以根据目标库的磁盘配置情况,自行更改目标库的数据文件存放目录,示例

放在e:\\oradata\\HIS3\\下;

如果需要向表空间添加多个数据文件,可以多次执行该SQL语句,只需依次修改02为03、04、05......

其他参数也可根据实际情况适当调整;

4、在源数据库上执行以下SQL语句,获取源数据库上所有用户的创建命令,将结果在目标

库上执行

select 'CREATE USER \"'|| t.username ||'\" PROFILE \"DEFAULT\" IDENTIFIED BY \"'||

lower(t.username) ||'\" DEFAULT TABLESPACE \"'

|| t.default_tablespace ||'\" TEMPORARY TABLESPACE \"' || t.temporary_tablespace || '\"

ACCOUNT UNLOCK;'

from dba_users t where t.default_tablespace not in ('USERS', 'SYSAUX','SYSTEM');

5、在源数据库上执行以下SQL语句,生成权限脚本,将结果在目标库上执行

select 'GRANT \"DBA\" TO \"' || t.username || '\" ;' from dba_users t where t.default_tablespace not

in ('USERS', 'SYSAUX','SYSTEM');

将结果在目标库上执行。

注意:这里给每个用户赋予了DBA权限,一般用于测试库或者其他非生产系统,生产系统

可以适当调整

6、在源数据库上执行以下SQL语句,生成目标库导入命令,将结果在目标库上执行

select 'imp userid=system/system file=d:\\full.dmp fromuser=' || t.username || ' touser=' ||

t.username || ' ;'

from dba_users t where t.default_tablespace not in ('USERS', 'SYSAUX','SYSTEM')

注意:这里的导出dmp文件位置请自行调整为步骤1中的路径

因篇幅问题不能全部显示,请点此查看更多更全内容