impdp如何自动创建用户前提条件与应用场景
小编给大家分享一下impdp如何自动创建用户前提条件与应用场景,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
impdp命令在导入数据时,如果用户存在,则会自动创建该用户,因为expdp导出的dmp文件中包含了创建用户的脚本信息(包括密码,缺省表空间,临时表空间等)。
impdp自动创建用户有一个前提条件,就是需要首先创建用户的缺省表空间和临时表空间,如果缺省表空间或者临时表空间不存在,则自动创建用户会失败,导致导入数据的失败。
下面通过实验来描述impdp自动创建用户的前提条件和应用场景
[@more@]
一.创建表空间和用户
SQL> createtablespace aidu datafile '/oradata/gridctl/aidu01.dbf' size 128m extentmanagement local segment space management auto logging;
Tablespacecreated.
SQL> createtemporary tablespace temp2 tempfile '/oradata/gridctl/temp021.dbf' size 128mextent management local;
Tablespacecreated.
SQL> create useraidu profile default identified by "aidutest" default tablespace aidutemporary tablespace temp2 account unlock;
Usercreated.
SQL> grantresource,connect to aidu;
Grant succeeded.
SQL> connaidu/aidutest
Connected.
SQL> create tabletest (id number(10) not null,name varchar2(20));
Table created.
SQL> insert intotest values(1,'first');
1 row created.
SQL> insert intotest select id+1,name from test;
1 row created.
SQL> insert intotest select id+2,name from test;
2 rows created.
SQL> select * fromtest;
ID NAME
------------------------------
1 first
2 first
3 first
4 first
SQL> commit;
Commitcomplete.
二.创建DIRECTORY,导出用户的数据
##为expdp,impdp建立directory
SQL>createdirectory impdp as '/oradata/gridctl' ;
SQL>grantread,write on directory impdp to aidu;
[oracle@primarydb ~]$expdp system/****** schemas=aidu directory=impdp dumpfile=aidu2.dmp
Export:Release 10.2.0.4.0 - 64bit Production on Friday, 11 February, 2011 8:36:18
Copyright(c) 2003, 2007, Oracle. All rightsreserved.
Connectedto: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bitProduction
Withthe Partitioning, OLAP, Data Mining and Real Application Testing options
Starting"SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** schemas=aidu directory=impdpdumpfile=aidu.dmp
Estimatein progress using BLOCKS method...
......
Processingobject type SCHEMA_EXPORT/TABLE/TABLE
. .exported "AIDU"."TEST" 5.304 KB 4 rows
Mastertable "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfullyloaded/unloaded
******************************************************************************
Dumpfile set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
/oradata/aidu.dmp
Job"SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at08:36:36
[oracle@primarydboradata]$ ls -lt aidu*
-rw-r-----1 oracle oinstall 155648 Feb 11 08:36 aidu.dmp
三.删除用户,删除用户的表空间和临时表空间
SQL> drop useraidu cascade;
User dropped.
SQL> droptablespace aidu including contents;
Tablespace dropped.
SQL> droptablespace temp2 including contents;
Tablespace dropped.
SQL> exit
四.导入用户数据,测试是否可以自动创建用户
[oracle@primarydboradata]$ impdp system/****** directory=impdp dumpfile=aidu.dmp
。。。。。。
Mastertable "SYSTEM"."SYS_IMPORT_FULL_01" successfullyloaded/unloaded
Starting"SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=impdpdumpfile=aidu2.dmp
Processingobject type SCHEMA_EXPORT/USER
ORA-39083:Object type USER failed to create with error:
ORA-00959:tablespace 'AIDU' does not exist
Failing sqlis:
CREATE USER "AIDU" IDENTIFIED BYVALUES 'FBF36F881A20141D' DEFAULT TABLESPACE "AIDU" TEMPORARYTABLESPACE "TEMP2"
Processingobject type SCHEMA_EXPORT/SYSTEM_GRANT
ORA-39083:Object type SYSTEM_GRANT failed to create with error:
ORA-01917:user or role 'AIDU' does not exist
Failingsql is:
GRANTUNLIMITED TABLESPACE TO "AIDU"
。。。。。。
Processingobject type SCHEMA_EXPORT/TABLE/TABLE
ORA-39083:Object type TABLE failed to create with error:
ORA-01918:user 'AIDU' does not exist
Failingsql is:
CREATETABLE "AIDU"."TEST" ("ID" NUMBER(10,0) NOT NULLENABLE, "NAME" VARCHAR2(20)) PCTFREE 10 PCTUSED 40 INITRANS 1MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOLDEFAULT) TABLESPACE "AIDU"
Processingobject type SCHEMA_EXPORT/TABLE/TABLE_DATA
Job"SYSTEM"."SYS_IMPORT_FULL_01" completed with 7 error(s) at09:26:51
可以看到自动创建用户时,因为用户表空间和临时表空间不存在,所以创建用户失败,报错为:
Failing sqlis:
CREATE USER "AIDU" IDENTIFIED BYVALUES 'FBF36F881A20141D' DEFAULT TABLESPACE "AIDU" TEMPORARYTABLESPACE "TEMP2"
笔者曾经尝试只建立用户表空间aidu,但不去建立临时表空间,尝试导入用户数据,自动创建用户仍然失败.所以用户表空间和临时表空间都需要在导入前存在.
五.创建用户表空间和临时表空间,为导入数据做好准备
SQL> createtablespace aidu datafile '/oradata/gridctl/aidu01.dbf' size 128m reuse extentmanagement local segment space management auto logging;
Tablespace created.
SQL> createtemporary tablespace temp2 tempfile '/oradata/gridctl/temp021.dbf' size reuse128m extent management local;
Tablespace created.
六.使用impdp导入用户数据,自动创建用户成功.
[oracle@primarydboradata]$ impdp system/aidu2010 directory=impdp dumpfile=aidu.dmp
。。。。。。
Mastertable "SYSTEM"."SYS_IMPORT_FULL_01" successfullyloaded/unloaded
Starting"SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=impdpdumpfile=aidu.dmp
Processingobject type SCHEMA_EXPORT/USER
Processingobject type SCHEMA_EXPORT/SYSTEM_GRANT
Processingobject type SCHEMA_EXPORT/ROLE_GRANT
Processingobject type SCHEMA_EXPORT/DEFAULT_ROLE
Processingobject type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processingobject type SCHEMA_EXPORT/TABLE/TABLE
Processingobject type SCHEMA_EXPORT/TABLE/TABLE_DATA
. .imported "AIDU"."TEST" 5.304 KB 4 rows
Job"SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at08:49:42
[oracle@primarydboradata]$ sqlplus aidu/aidutest
SQL>select * from test;
ID NAME
------------------------------
1 first
2 first
3 first
4 first
总结:
impdp是可以自动创建用户,但有一个前提条件:用户的缺省表空间和临时表空间要先创建好(存在).
使用impdp自动创建用户应用场景:
1.数据库数据迁移或者升级到另外一个数据库环境,并且数据库中有很多用户,DBA无法知道每一个用户的密码,只能查到用户的缺省表空间和临时表空间.
2.DBA不能重设用户的密码,重设密码将会导致很多旧的应用系统需要进行配置,存在一定的风险.
3.新的数据库的IP,PORT都与旧的相同,应用系统机会不需要做任何修改.
通过impdp创建用户可以保留用户的密码信息,应用系统不需要进行配置.
附查询用户缺省表空间与临时表空间的SQL语句:
SQL> selectusername,default_tablespace,temporary_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------------------------------------ ------------------------------
AIDU AIDU TEMP2
OUTLN SYSTEM TEMPTS1
SYS SYSTEM TEMPTS1
SYSTEM SYSTEM TEMPTS1
DBSNMP SYSAUX TEMPTS1
MGMT_VIEW MGMT_TABLESPACE TEMPTS1
SYSMAN MGMT_TABLESPACE TEMPTS1
WMSYS SYSAUX TEMPTS1
TSMSYS USERS TEMPTS1
DIP USERS TEMPTS1
ORACLE_OCM USERS TEMPTS1
以上是“impdp如何自动创建用户前提条件与应用场景”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。