oracle表空间创建多张表判断表是否存在,不存在执行当前创建语句,存在跳过执行下一条语句

赶紧恢复表空间和数据表然后運行sql

myeclipse10破解和不破解有什么区别?你知道吗
不破解,用一阵子就不让用了

你对这个回答的评价是


    源数据库里的HCPROD用户使用了表空间qz_prod而目标数据库里不存在表空间qz_prod
    以schemas作业模式执行expdpexpdp不会创建表空间qz_prod的对象类型到导出文件里,这样impdp时就不能导出文件里的表空间qz_prod的對象类型来在目标数据库里创建一个名为qz_prod表空间这个数据库对象。而目标数据库里又不存在表空间qz_prod所以,执行impdp时就会提示ORA-00959:

    只要参数schema、参数tablespace、参数table(以及其他数据库对象类型)三种作业模式的值是expdp时存在的,expdp都会为这些值创建对应的对象类型(即数据库对象的元数据)也就是说,参数schema对应创建的对象类型包含有用户元数据;参数tablespace,对应创建的对象类型包含有表空间元数据(和用户元数据)。这样
    impdp里的参数schema的值即用户如果在被导入的数据库里不存在,则impdp这个程序会自动创建impdp里的参数tablespace的值即表空间如果在被导入的数据库里不存在,则impdp这个程序也会自动创建

    exist(表空间不存在),此时就需要调整REMAP_SCHEMA参数 改为


    只要参数schema、参数tablespace、参数table(以及其他数据库对象类型)三种作業模式的值是expdp时存在的,expdp都会为这些值创建对应的对象类型(即数据库对象的元数据)也就是说,参数schema对应创建的对象类型包含有用戶元数据;参数tablespace,对应创建的对象类型包含有表空间元数据(和用户元数据)。这样
    impdp里的参数schema的值即用户如果在被导入的数据库里不存在,则impdp这个程序会自动创建impdp里的参数tablespace的值即
    表空间如果在被导入的数据库里不存在,则impdp这个程序也会自动创建
    impdp里的参数tablespace、参数schema列出嘚是要(从导出文件里)导入的方案名。如果方案名不是在expdp时要导出的方案名则会提示出错。impdp里的参数table(以及其他数据库对象类型)也類似

    参数schema、参数tablespace、参数table(以及其他数据库对象类型)三者关系:


    schema下的table(以及其他数据库对象类型)可以存放在多个不同的tablespace里。
    schema使用多个鈈同的tablespace来存放属于自己的table(以及其他数据库对象类型)
    所以,三者使用形式只能为:
    impdp里三者都不写出来时则默认(从导出文件里)导叺在expdp时expdp参数schema里所列出的所有的方案名

    impdp里三者都不写出来时,则默认(从导出文件里)导入在expdp时expdp所使用的那一种作业模式(即参数schema、参数tablespace、參数table(以及其他数据库对象类型)三者中的一个)下的所有数据库对象 expdp里三者都不写出来时则默认导出用于执行expdp这个程序的用户(即expdp admuser1/密碼)下的所有数据库对象,即schema作业模式就table=时,则默认导出用于执行expdp这个程序的用户(即expdp admuser1/密码)下的表



    这个说明参数schema、参数tablespace、参数table(以忣其他数据库对象类型)三者不能同时出现,一次只能出现一个参数的作业模式

    1.2导入表csdn5到目标数据库,目标数据库原先不存在名为dong的用戶







    说明tables作业模式时不会自动创建处理(原先不存在于目标数据库里的)用户这个对象类型(即在执行一次impdp命令后在其打印出的结果里没有唎如“处理对象类型
    ORA-00942: 表或视图不存在(因为上述处理对象类型 TABLE_EXPORT/TABLE/TABLE(指的是表的元数据即表结构)失败而未创建表结构成功所以导致这里的錯误)


    1.2续、目标数据库原先不存在名为dong的用户




    impdp里三者都不写出来时,则默认(从导出文件里)导入在expdp时expdp所使用的那一种作业模式(即参数schema、参数tablespace、参数table(以及其他数据库对象类型)三者中的一个)下的所有数据库对象

    说明tables作业模式时不会自动创建处理(原先不存在于目标数據库里的)用户这个对象类型(即在执行一次impdp命令后在其打印出的结果里没有例如“处理对象类型

    、remap_*参数一般都是在impdp时用到即将从后缀dmp嘚导出文件里要导入到目标数据库里的数据库对象的属性重新映射,即改变其属性值:
    参数tables(以及其他数据库对象类型)时首先可以使鼡的是“remap_table=导出文件里要导入到目标数据库里的表A的表名:目标数据库里已存在的想要被导入的表B的表名。如果表B所在的用户名B与表A所在嘚用户名A不同则用remap_schema。如果表B所在的用户名B用于存放表B的表空间B的名字与表A所在的用户名A用于存放表A的表空间A的名字不同则remap_tablespace
    参数schema时上述三个remap_*参数也都可以用使用remap_tablespace的意思是将用户名A存放在表空间A里的所有数据库对象改存放在表空间B里。
    总结说remap_*参数都是针对数据库对象嘚三个属性(即所属的schema、tablespace、table)。
    remap_data参数是在impdp和expdp时都用到的唯一一个remap_*参数例如,expdp时remap_data参数表示从数据库里的表A的列A上的数据导出到后缀dmp的導出文件里表B的列B上。正文:

REMAP_SCHEMA可以定义用户的切换其格式为:

在使用impdp时,会发现有很多参数选项与imp不同,比如说找不到了fromuser和touser参数,也找不到了ignore参数indexes等参数也不再存在。

当然这些功能都还在而且更加强大,impdp有了不少新的替代参数

REMAP_SCHEMA可以定义用户的切换,其格式为:

如果数据结构已经存在可以指定CONTENT=DATA_ONLY仅导入数据。

而关于索引的排除可以使用EXCLUDE参数:

如果导入时遇到如下错误,就需要调整REMAP_SCHEMA参数:


在plsql工具中执行以下语句可建立oracle表空间表空间。

 内容来源于网络

我要回帖

更多关于 oracle 的文章

 

随机推荐