oracle表导出TXT文件,Oracle导入dmp文件、导出为txt文件
一、问题
现在手里有一个数据集是dmp格式的。因为不方便直接处理,所以需要将分块其读取到txt文件中。
dmp文件是oracle数据库的备份文件。
一、问题
二、Oracle登录
三、Scott 密码过期
四、导入dmp文件
五、表空间大小限制
六、导出数据
二、Oracle登录
Oracle的下载和安装过程都很顺利,所以现在的第一个问题是登录oracle。
在安装好oracle以后会弹出来一个Database Configuration Assistant 的窗口,我在这里的口令管理中修改了sys和system的密码,同时这里也可以解锁其他账户(比如scott)。
在开始菜单中的oracle目录下能找到sql plus,这是主要的操作界面。另外,也可以通过cmd窗口进入到sqlplus:
C:\Users\John Smith>sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 3月 23 16:49:38 2018
Copyright (c) 1982, 2010, Oracle. All rights reserved.
请输入用户名:
需要注意几点:
sys以外的账户可以直接输入用户名和密码进入oracle,而sys不行。
sys登录必须指明角色为sysdba(数据库管理员)或者sysoper(数据库操作员),可以在cmd窗口下输入sqlplus sys/password as sysdba来登录,其中password为之前设置的密码。登录语句的具体语法是{[/][@]|/}[AS}{SYSDBA|SYSOPER}],其中connect_identifier默认通常为orcl。
在cmd窗口中输入sqlplus /nolog可以进入到sqlplus的界面而不登录到oracle,如果这个时候要登录到oracle则需要使用指令conn sys/password as sysdba。
如果在之前没有给scott用户解锁,是不能够使用scott/tiger登录的。给该用户解锁的命令为:
alter user scott account unlock;
三、Scott 密码过期
在执行导入命令的时候我尝试了使用scott账户,出现了以下问题:
ERROR:
ORA-28001: the password has expired
那么就是字面意思,这个账户密码过期了无法使用。我在cmd窗口下执行了sqlplus scott/tiger也是同样提示,但是会让输入new password,之后就没问题了。
但是问题是这个账户我刚刚unlock,oracle也是今天下载的,怎么会出现过期的问题呢?
四、导入dmp文件
使用下面的命令将dmp文件导入到数据库:
imp system/password file=D:\data.dmp full=y
注:这条命令是在cmd窗口中执行的,而且用的是system账户。sys账户需要指明sysdba身份。
在导入过程中有一条错误一直重复出现。出现的错误为:
IMP-00003: 遇到 ORACLE 错误 959
ORA-00959: 表空间 'TR_GPSTRACK_CZC_SPACE' 不存在
解决这个问题的方法也是比较多的,比如:
https://blog.csdn.net/lwei_998/article/details/6587339
我是通过新增加了一个名为TR_GPSTRACK_CZC_SPACE的tablespace来解决这个问题的:
SQL> create tablespace TR_GPSTRACK_CZC_SPACE datafile 'TR_GPSTRACK_CZC_SPACE.dbf' size 30000m;
一开始的时候导入没问题。第二天我来看结果的时候发现另外一个错误:表空间不足。
五、表空间大小限制
发生错误时的提示为:
IMP-00003: 遇到 ORACLE 错误 1659
ORA-01659: 无法分配超出 1 的 MINEXTENTS (在表空间 TR_GPSTRACK_CZC_SPACE 中)
从
https://docs.oracle.com/cd/E11882_01/server.112/e17766/e1500.htm#sthref843上找到的文档显示该错误的具体内容为:
ORA-01659: unable to allocate MINEXTENTS beyond string in tablespace string
Cause: Failed to find sufficient contiguous space to allocate MINEXTENTS for the segment being created.
Action: Use ALTER TABLESPACE ADD DATAFILE to add additional space to the tablespace or retry with smaller value for MINEXTENTS, NEXT or PCTINCREASE
因此我决定根据提示再添加一个datafile:
SQL> alter tablespace TR_GPSTRACK_CZC_SPACE add datafile 'TR_GPSTRACK_CZC_SPACE_2.dbf' size 30000m;
然后又报以下错误:
IMP-00058: 遇到 ORACLE 错误 1688
ORA-01688: 表 SYSTEM.TR_GPSTRACK_CZC_20140818 分区 PAR1_TR_GPSTRACK_CZC_20140818 无法通过 8192 (在表空间 TR_GPSTRACK_CZC_SPACE 中) 扩展
IMP-00003: 遇到 ORACLE 错误 1658
ORA-01658: 无法为表空间 TR_GPSTRACK_CZC_SPACE 中的段创建 INITIAL 区
官方文档仍然提示Use ALTER TABLESPACE ADD DATAFILE to add additional space to the tablespace 来解决问题。我的硬盘上面确实又分出去了30G给数据库,但仍然不行,看来一时半会是不能完全导入数据库了。
接下来我将尝试读取部分数据。
六、导出数据
首先下载一个navicat for oracle:
http://www.navicat.com.cn/products/navicat-for-oracle
新建连接后尝试登陆,发现报错:ORA-12541:TNS:无监听程序
启用监听器后就可以了,具体步骤参考:
https://blog.csdn.net/hao134838/article/details/51475380
navicat for oracle打开表以后可以直接导出为txt文件,操作十分方便。
打开navicat之后发现可以导入数据泵,可能比之前的操作简单许多,说不定也能避免出错。
更多推荐
所有评论(0)