日期:2014-05-16  浏览次数:20956 次

导入很久前的dmp文件的操作日志
以前做了一个项目,很久都没有用了,最近想翻出来看看,但是原来从数据库导出来的文件不知道使用什么用户导出来的,只是模糊的记得使用oracle9i导出来的,而且我的电脑是刚刚装的数据库,没有装pl/sql,而且装好数据库后,因为某种需要,我又修改了电脑主机名称。于是就有了下面我遇到的各种问题及各种问题的解决方法。

遇到的问题及解决方法如下:

1.oracle tnslistener和orcale服务能启动,但是登陆不了
解决方法:
原来Oracle的监听程序OracleOraHome92TNSListener使用的配置文件用到了电脑的名字,
在Oracle9i的安装路径下,找到:【例如安装在D盘根目录下】
盘符:/oracleora92/network/admin 找到并修改以下几个文件:
listener.ora文件 、tnsnames.ora文件、snmp_ro.ora文件 ,把其中的有关
(ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521))
把HOST换为对应的电脑的名称即可。listener.ora文件必须修改,后两个文件有可能没有用到计算机名称,所以可不用修改。

2.现在oracle服务可以启动了,但是机子上没有装pl/sql,想直接用用sqlplus,但是以前没有用过,登陆的时候登陆不了,主要是不知道那个登陆窗口中的主机字符串不知道该怎么添,以前用pl/sql的时候没有遇到要添写主机字符串的问题?

解决方法:用sys用户登陆直接 写上 sys as sysdba就可以,其他的应该是 operator、normal即可


3.现在进去sql plus了,但是要到入数据库的dmp文件不知道导出的时候是用那个用户、那个版本的导出的,所以这些信息要查看一下dmp文件,有两种方法,
<1.>在 window下,用ultraEdit打开dmp文件(如果dmp文件不是很大的话可以),在最上面几行可以看到如下图,注意不要修改这个dmp文件,修改后可能导致导入数据出错,
就能够看到用来导出该dmp文件的工具,和用户

<2.>在linux下
[root@localhost icms_data_20120302_100g]# head -10 /home/icms_data_20120302_100g/EXP20120301.DMP |strings
TEXPORT:V09.02.00
DDBA_EXP
RENTIRE
1024
                                        Thu Mar 1 2:1:1 2012/baceldba/dbaLog/EXP20120301.DMP
#G#G
#G#G
+08:00
BYTE
INTERPRETED
[root@localhost icms_data_20120302_100g]#

第一行是导出版本
第二行是导出用户名 DDBA_EXP,第一个D貌似是用户前缀,真正的用户名是DBA_EXP
RENTIRE    导出方式,如果是以表的方式则是:RTABLES

查询当前数据库连接情况
select machine,program,count(*) from v$session group by machine,program;

4.登进去创建好表空间和用户(第四步得到的用户名称),给用户授予相应的权限,然后用这个用户登陆,测试一下是否能够登陆成功,好,现在新建的用户成功登陆进去了,向重新登陆sys用户,但是用
conn sys/xxx@orcl 登陆不了?


解决方法:
sqlplus /nolog
conn sys/xxx@orcl as sysdba
就能登进去了

5.好了,现在表空间和用户都建好了,开始在命令行窗口导入数据
但是遇到了IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在,我在命令行的导入命令是这么写的 imp xxx/xxx@orcl file=d:\XXx.dmp fromuser=xxx touser=xxx;

解决方法:把导入语句的最后的那个分号给去掉就行了,上面的是一条cmd下的命令,不是oracle的plsql的命令,不需要加最后那个';'

去掉之后,最终把数据库给导进去了