2023年8月1日发(作者:)

Oracle错误ora-12514解决⽅法成功连到数据库上之后,查看listener状态:lsnrctl statusstatus READY 状态,需要由⾮归档转为归档模式,故操作如下:1.关闭数据库shutdown immediate 正常关闭;2.启动数据库到mount状态,startup mount,发⽣报错:3.此时查看listener状态: lsnrctl status为status BLOCKED状态,⽹上搜索解决⽅法4.重写⽂件(蓝⾊为增加部分)SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc)

(ORACLE_HOME = f:oracleproduct10.1.0Db_1) (PROGRAM = extproc)

) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = f:oracleproduct10.1.0Db_1) (SID_NAME = orcl) ))5.重启监听:lsnrctl start;查看状态lsnrctl status:为status UNKNOWN状态。6.连到实例,关闭数据库,启动数据库到mount状态,均正常!查看某服务是动态注册或是静态注册。可以使⽤命令lsnrctl status 来查看数据库是动态注册还是静态注册。实例状态为UNKNOWN时,表⽰此服务是静态注册的设置,监听器表明他不知道关于该实例的任何信息,只有当⽤户发出连接请求时,他才检查该实例是否存在。⽽动态注册的数据库通过状态信息中的状态为READY或BLOCKED来指明。不管何时关闭数据库,动态注册的数据库都会动态的从监听器中注销掉,⽽与之相关的信息将会从状态列表消失,这样不管数据库是在运⾏还是已经关闭,监听器都知道他的状态。待补充。。。************************************************************ORACLE XE 修改⽅法解决办法: 修改⽬录E:Oracle10gXEUnivapporacleproduct10.2.0serverNETWORKADMIN下的⽂件、将这两个⽂件中HOST后⾯的主机都修改为127.0.0.1然后重启OracleServiceXE、OracleXETNSListener服务这时pl/sql developer连接oracle时报出“ORA-12514: TNS: 监听程序当前⽆法识别连接描述符中请求的服务”的错误,再次修改⽂件,修改前该⽂件内容为SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) )

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )

DEFAULT_SERVICE_LISTENER = (XE)

修改的⽅式是:再在该⽂件中添加⼀个需要连接的数据库实例的描述,就是添加⼀个SID_DESC,我⾃⼰连接的数据库实例是XE,添加后的⽂件内容为:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = XE) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server))/*红⾊字体部分即为新加的数据库实例XE的实例描述,注意该实例描述的ORACLE_HOME后⾯不能像其它实例那样加(PROGRAM = extproc),否则会报“ORA-28547: TNS: 连接服务器失败,可能是Net8管理错误。”*/ )

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )

DEFAULT_SERVICE_LISTENER = (XE)

2023年8月1日发(作者:)

Oracle错误ora-12514解决⽅法成功连到数据库上之后,查看listener状态:lsnrctl statusstatus READY 状态,需要由⾮归档转为归档模式,故操作如下:1.关闭数据库shutdown immediate 正常关闭;2.启动数据库到mount状态,startup mount,发⽣报错:3.此时查看listener状态: lsnrctl status为status BLOCKED状态,⽹上搜索解决⽅法4.重写⽂件(蓝⾊为增加部分)SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc)

(ORACLE_HOME = f:oracleproduct10.1.0Db_1) (PROGRAM = extproc)

) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = f:oracleproduct10.1.0Db_1) (SID_NAME = orcl) ))5.重启监听:lsnrctl start;查看状态lsnrctl status:为status UNKNOWN状态。6.连到实例,关闭数据库,启动数据库到mount状态,均正常!查看某服务是动态注册或是静态注册。可以使⽤命令lsnrctl status 来查看数据库是动态注册还是静态注册。实例状态为UNKNOWN时,表⽰此服务是静态注册的设置,监听器表明他不知道关于该实例的任何信息,只有当⽤户发出连接请求时,他才检查该实例是否存在。⽽动态注册的数据库通过状态信息中的状态为READY或BLOCKED来指明。不管何时关闭数据库,动态注册的数据库都会动态的从监听器中注销掉,⽽与之相关的信息将会从状态列表消失,这样不管数据库是在运⾏还是已经关闭,监听器都知道他的状态。待补充。。。************************************************************ORACLE XE 修改⽅法解决办法: 修改⽬录E:Oracle10gXEUnivapporacleproduct10.2.0serverNETWORKADMIN下的⽂件、将这两个⽂件中HOST后⾯的主机都修改为127.0.0.1然后重启OracleServiceXE、OracleXETNSListener服务这时pl/sql developer连接oracle时报出“ORA-12514: TNS: 监听程序当前⽆法识别连接描述符中请求的服务”的错误,再次修改⽂件,修改前该⽂件内容为SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) )

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )

DEFAULT_SERVICE_LISTENER = (XE)

修改的⽅式是:再在该⽂件中添加⼀个需要连接的数据库实例的描述,就是添加⼀个SID_DESC,我⾃⼰连接的数据库实例是XE,添加后的⽂件内容为:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = XE) (ORACLE_HOME = E:Oracle10gXEUnivapporacleproduct10.2.0server))/*红⾊字体部分即为新加的数据库实例XE的实例描述,注意该实例描述的ORACLE_HOME后⾯不能像其它实例那样加(PROGRAM = extproc),否则会报“ORA-28547: TNS: 连接服务器失败,可能是Net8管理错误。”*/ )

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )

DEFAULT_SERVICE_LISTENER = (XE)