标签: oracle

dmp导入错误解决方法

单位给了一个dmp文件,导入出现约束之类的错误,提示如下:

即将启用约束条件…
IMP-00017: 由于 ORACLE 错误 2298, 以下语句失败:
“ALTER TABLE “PUB_LOGONLOG” ENABLE CONSTRAINT “FK_LOGONLOG_LOG””
IMP-00003: 遇到 ORACLE 错误 2298
ORA-02298: 无法验证 (PUBDATA.FK_LOGONLOG_LOG) – 未找到父项关键字
成功终止导入, 但出现警告。

网上找了资料后,也有这样子的提示的。

IMP-00017: following statement failed with ORACLE error 2298:
“ALTER TABLE “OPERATE_LOG” ENABLE CONSTRAINT REFEREN”
“CE_WDXC_O””
IMP-00003: ORACLE error 2298 encountered
ORA-02298: cannot validate (REFERENCE_O) – parent keys not found
IMP-00017: following statement failed with ORACLE error 2298:
“ALTER TABLE “STORAGE” ENABLE CONSTRAINT “ORDER_STORAGE_O”
“””
IMP-00003: ORACLE error 2298 encountered
ORA-02298: cannot validate STORAGE_O) – parent keys not found
Import terminated successfully with warnings.

也有一些说是这个原因“出现上面的原因有可能是在导出的时间某个表已经被导出了,可是他外键关联系有数据变化了,导致不一致,所以报错。exp不能保证事务的完整性。如果你导出主表。随后有人在主表增加记录,然后在子表增加记录,提交。”

不能鉴定上面说的是否正确,应该也会发生,不过查了很多资料后又发现,应该是imp导出时少了一个参数。所以解决办法是在导出务份的脚本中加入这个参数consistent=y 默认为no .为的是保持一致的作用。

$ exp system/22222 file=/home/oracle/2222.dmp owner=aaa consistent=y

新装oracle连接不上

完全默认安装完oracle后,会出现连接不上服务器的状况,具体也不明白是怎么回事儿,怎么会设计的这么不人性化呢?不过换句话说,应该安全性也会提高很多。因为不折腾用不成啊,呵呵。
最终是用下面的设置,可以连接上数据库。
用户名SYSTEM
初始密码
Service name : orcl

转载两篇网上的文章:

1. Open the “”/network/admin/listener.ora” file in the host,and you will see:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
2. Add the following lines after the 7th line in the above
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
3. At last the content of the file become to the following section:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
4. Save the file and restart the TNSListener service in the host. That’s OK!

造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始—程序—管理工具—服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始—程序—管理工具—服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性–高级–环境变量—系统变量–新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.