oracle 12c使用数据泵复制数据库结构的注意事项有哪些

58次阅读
没有评论

共计 2647 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要为大家展示了“oracle 12c 使用数据泵复制数据库结构的注意事项有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“oracle 12c 使用数据泵复制数据库结构的注意事项有哪些”这篇文章吧。

1. 创建目录

create or replace directory dp_dir as /u02/files

2. 导出用户 SH,HR 的所有结构,不需要数据

vi scott_meta.par

userid= / as sysdba

directory=dp_dir

dumpfile=scott_expdp.dmp

schemas=sh,hr

content=metadata_only

开启 4 个并行来执行导出

expdp parfile=scott_meta.par parallel=4

3. 导出数据库表空间结构

vi scott_tbs.par

userid= / as sysdba

directory=dp_dir

dumpfile=scott_tbs.dmp

include=tablespace

full=y

content=metadata_only

开启 2 个并行来执行导出

expdp parfile=scott_tbs.par parallel=2

4. 复制密码校验规则脚本

源库使用了密码规则,通过修改下面的文件可以获得。

cd $ORACLE_HOME/rdbms/admin

cp utlpwdmg.sql scott_utlpwdmg.sql

根据需要修改脚本内容, 如果只是需要一个密码验证的话可以按照下面的方式来修改。

vi scott_utlpwdmg.sql

… 省去部分内容

ALTER PROFILE DEFAULT LIMIT

/*

PASSWORD_LIFE_TIME 90

PASSWORD_GRACE_TIME 3

PASSWORD_REUSE_TIME 365

PASSWORD_REUSE_MAX 20

FAILED_LOGIN_ATTEMPTS 3

PASSWORD_LOCK_TIME 1

*/

PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

… 省去部分内容

5. 复制 profile 脚本

源库用户有 app_profile 限制,需要手工导出

SYS@cdb select distinct profile from dba_profiles;

PROFILE

—————

APP_PROFILE

DEFAULT

select profile,resource_name,limit from dba_profiles where profile= APP_PROFILE

通过上面的查询结构修改脚本为

vi app_profile.sql

CREATE PROFILE APP_PROFILE LIMIT

CPU_PER_SESSION UNLIMITED

CPU_PER_CALL UNLIMITED

CONNECT_TIME UNLIMITED

IDLE_TIME UNLIMITED

SESSIONS_PER_USER UNLIMITED

LOGICAL_READS_PER_SESSION UNLIMITED

LOGICAL_READS_PER_CALL UNLIMITED

PRIVATE_SGA UNLIMITED

COMPOSITE_LIMIT UNLIMITED

FAILED_LOGIN_ATTEMPTS UNLIMITED

PASSWORD_LOCK_TIME UNLIMITED

PASSWORD_GRACE_TIME UNLIMITED

PASSWORD_LIFE_TIME UNLIMITED

PASSWORD_REUSE_MAX UNLIMITED

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_VERIFY_FUNCTION NULL;

scp  表空间结构脚本、schema 脚本、密码校验脚本、profile 脚本到目标数据库

scp scott_tbs.dmp scott_expdp.dmp scott_utlpwdmg.sql app_profile.sql  oracle@ ip address :/home/oracle/files

目标端

5. 创建一个目录

create or replace directory dp_dir as /home/oracle/files

6. 使用数据泵的 sqlfile 参数将表空间语句导出

impdp \ / as sysdba\ directory=dp_dir dumpfile=scott_tbs.dmp sqlfile=scott_tbs.sql

脚本内容是 create tablespace xxx …

语句执行完毕后会生成名为 scott_tbs.sql 的脚本,包含数据库中创建所有表空间的语句。我们需要将业务所需的表空间(除去安装系统时候自带的 system/sysaux/undo/users/temp)的脚本提取出来。如果目标端磁盘空间较小,需要将数据文件调小后再运行。

7. 创建表空间

SQL @/home/oracle/files/scott_tbs.sql

8. 创建密码约束

SQL @/home/oracle/files/scott_utlpwdmg.sql

9. 创建用户 profile。如果没有这个步骤在在导入脚本创建用户的时候会找不到 profile 而报错。

SQL @/home/oracle/files/app_profile.sql

10. 导入表结构。在这一步会创建用户,授权,创建表等操作。

impdp \ / as sysdba\ directory=dp_dir dumpfile=scott_expdp.dmp logfile=scott_expdp.log parallel 4

总结:

数据泵的 content=metadata_only 选项为导出结构的需求提供了方便。导出对象可以为全库 full=y, 表空间 inclue=tablespace 等等。

使用 impdp 的 sqlfile 参数可以导出 dmp 文件中的创建语句。使用 dbms_metadata.get_ddl 也可以导出表空间、表的创建语句。

在导入具体用户结构之前需要将创建用户所需的密码规则和相关 profile 创建好再 impdp 导入,避免创建用户时出错。

以上是“oracle 12c 使用数据泵复制数据库结构的注意事项有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2647字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)