这里整理了一组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中的路径
因篇幅问题不能全部显示,请点此查看更多更全内容