oracle导入dmp文件

xiaoxiao2021-02-28  65

安装好oracle后,打开对应的SQL plus,然后使用系统用户登录,如:用户名:system 密码:(实例:用户名:system;密码:Aa123456)安装过程中设置的密码,接着按照下面步骤进行导入 1、创建表空间 命令:create tablespace 表空间名 datafile '要创建的文件名' size 空间大小 autoextend on next 每次扩展大小 maxsize 最大空间大小  实例: create tablespace TEST datafile 'D:\Oracle\oradata\niu\TEST.dbf' size 1500M autoextend on next 100M maxsize unlimited; 2、创建用户 命令:create user 用户名 identified by 密码 default tablespace 上面创建的目标空间 temporary tablespace temp profile default; 注:最好设置目标空间,如果不设置,则默认为USERS空间, 如命令:create user 用户名 identified by 密码;运行该命令后,则为默认目标空间USERS,建议最好设置目标空间; 实例: 1、create user niu identified by Aa123456 default tablespace CS temporary tablespace temp profile default; 2、alter user niu quota unlimited on CS; 3、为创建的用户赋权限 命令:grant 权限属性 to 用户名; 实例: grant connect, create session, imp_full_database, alter tablespace to niu; imp_full_database:给用户全库导入和全库导出的角色权限 4、开始导入dmp文件,打开"开始->运行",输入cmd进入dos界面,输入以下命令 命令:imp 用户名/密码@目标数据库 file=文件名 buffer=大小 log=filename.log full=y 实例:imp niu/Aa123456@niu file=E:\tab_taobao_bill_201211.dmp buffer=819200 log=E:\taobao.log full=y (目标数据库为安装时配置的数据库名称,默认情况下是:"orcl",可以通过打开“配置和移植工具”中的“Database Configuration Assistant”进行重新创建新的数据库,如实例创建的为:niu) 导入过程中可能出现一些错误,常见的有: 1、用户或者角色 '***' 不存在; 如:IMP-00017: 由于 ORACLE 错误 1917,以下语句失败 “GRANT SELECT ON "TB_CCSTBASICINFO" TO "SDP"” IMP-00003: 遇到 ORACLE 错误 1917,以下语句失败 ORA-01917: 用户或者角色 'SDP' 不存在 成功终止导入,但出现警告。 则进入SQL plus,使用创建用户命令创建对应用户,并使用赋权限命令对用户进行赋权限; 如: 1、create user SDP identified by Aa123456 default tablespace CS temporary tablespace temp profile default; 2、grant connect, create session, imp_full_database, alter tablespace to SDP; 2、遇到 ORACLE 错误 1950;ORA-01950: 表空间'空间名'中无权限 如:IMP-00003: 遇到 ORACLE 错误 1950 ORA-01950: 表空间'CS'中无权限 成功终止导入,但出现警告。 是因为创建用户时设置用户表空间为CS,但没有为用户授权表空间权限导致; 需要打开SQL plus,使用系统用户登录,输入如下命令(以上述实例为例): 1、conn system/Aa123456 as sysdba;//使用系统用户连接并设置为sysdba,如果不是系统用户则不要添加as sysdba 2、alter user niu quota unlimited on CS;//通过系统用户为niu用户添加CS表空间权限,quota unlimited 表示指标不受限制 如果出现了第一种错误,而创建的用户,可能也需要运行该命令为其设置表空间权限 3、遇到ORA-12899错误,一般情况下是字符集有问题,因为汉字在ZHS16GBK中占2个字节,在UTF8中占3个字节 修改方法: 进入SQL splus终端,输入一下命令修改字符集 conn system/Aa123456 as sysdba; //若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器, shutdown immediate;  startup mount      alter session set sql_trace=true;  alter system enable restricted session;  alter system set job_queue_processes=0;  alter system set aq_tm_processes=0;  alter database open;  alter database character set ZHS16GBK ERROR at line 1:ORA-12712: operation cannot execute when other sessions are active //若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查: alter database character set INTERNAL_USE ZHS16GBK; --修改字符集AL32UTF8->ZHS16GBK  shutdown immediate;        --再次关闭数据库  STARTUP select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';  KO16KSC5601 4、遇到: 由于ORA-1452错误,以下语句失败: “CREATE UNIQUE INDEX "PK_CCSTBASICINFO" ON "TB_CCSTBASICINFO ("CUST_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 1048576 FREELISTS 1 FREE LIST GROUPS 1)” 遇到ORACLE错误 1452, 无法CREATE UNIQUE INDEX;找到重复的关键字 IMP-00003: 遇到 ORACLEtable_name= 错误 1452 ORA-01452: 无法 CREATE UNIQUE INDEX; 找到重复的关键字 IMP-00017: 由于 ORACLE 错误 2437, 以下语句失败: "ALTER TABLE "TB_CCSTBASICINFO" ADD  CONSTRAINT "PK_CCSTBASICINFO" PRIMARY KEY ("" "CUST_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 F" "REELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "PIIAPSPACE" L" "OGGING ENABLE " IMP-00003: 遇到 ORACLE 错误 2437 ORA-02437: 无法验证 (TEST.PK_FH_USER_T_QX) - 违反主键   这种错误主要是因为有重复数据导致 查找重复数据: SELECT CUST_ID from TB_CCSTBASICINFO group by CUST_ID having count(CUST_ID)>1; 可以通过删除有重复数据的表; drop table TB_CCSTBASICINFO; 删除重复数据只留一行 DELETE from 表 WHERE (CUST_ID) IN ( SELECT CUST_ID FROM 表 GROUP BY CUST_ID HAVING COUNT(CUST_ID) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY CUST_ID HAVING COUNT(*) > 1); 5、遇到ORA-01659错误 查看表空间是否已经达到32G大小,如果没有达到可以将表空间大小修改为自动扩展 alter database datafile 'D:\Oracle\oradata\niu\CS.dbf' autoextend on next 100M maxsize unlimited; 如果已达到32G大小:因为oracle数据库的数据文件大小是有限制的,按照Oracle文档的描述,每个datafile的最大容量为(2^22-1)个block,即4194303个block,而当前数据库的block大小是8k,也就是说最大的文件大小是32G,要建大于32G的表空间就会报错,为了解决数据文件大小的问题,Oracle10g专门引入了bigfile tablespace,在bigfile tablespace里Oracle使用32位来存储block号,即比之前增大了1024倍,其最大文件大小从128G增加到128T。当然如果使用bigfile tablespace,则需要注意OS的文件大小限制,如在windows下单个文件最大限制如下: FAT12           8M    FAT16           2G      FAT32           4G    NTFS            64GB    NTFS5.0         2TB 命令: 1、先删除之前创建的空间 drop tablespace test_data including contents and datafiles; 2、添加bigfile参数重新创建空间 create bigfile tablespace CS datafile 'D:\Oracle\oradata\niu\CS.dbf' size 1500M autoextend on next 100M maxsize unlimited; 出现错误并修改后,再次运行导入命令,如果运行导入命令时提示:****表已存在,导入失败;则在命令最后添加 ignore=y,用来忽略已经创建的表等;如: imp niu/Aa123456 file=E:\tab_taobao_bill_201211.dmp buffer=819200 log=filename.log full=y ignore=y
转载请注明原文地址: https://www.6miu.com/read-26378.html

最新回复(0)