Oracle常见错误汇总

时间:2022-09-17 10:08:00

Oracle学习手册:新手常见错误小集

没有人会否认ORACLE是全球最有影响的数据库产品之一;不过好的东西似乎总有那么好用的时候,甚至有些无情--总会给layman们一个个无情的错误号。下面是我个人的总结,条条有用,希望能给初学者一点启示。

  1、ORA-12541:TNS:没有监听器

  原因:没有启动监听器或者监听器损坏。如果是前者,使用命令net start OracleOraHome81TNSListener(名字可能有出入)即可;如果是后者,则使用"Net8 Configuration Assistant"工具向导之"监听程序配置"增加一个监听器即可(基本不用写任何信息,一路OK。在添加之前可能需要把所有的监听器先删除!)

  2、ORA-12500:TNS:监听程序无法启动专用服务器进程

  或

  ORA-12560:TNS:协议适配器错误

  原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。

  3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:

  1)ORADIM -DELETE -SID oradb删除数据库服务项

  2)ORADIM -NEW -SID oradb新增数据库服务项

  注:这个过程中如果出错,就重启计算机!

  4、ORA-12154:TNS:能解析服务名

  原因:ORACLE的网络服务名没有正确配置。请使用"Net8 Configuration Assistant"工具向导之"本地网络服务名配置"配置TNS即可。如果仍没有解决,请继续向下看。

  5、ORA-1034 :TNS:ORACLE不可用

  原因:ORACLE的数据库服务正确启动,但是数据库没有打开!

  使用命令:

  1)svrmgrl启动服务管理器

  2)connect internalinternal身份登陆

  3)startup打开数据库

  6、ORA-12560:TNS:协议适配器错误(顽固性的)

  原因:未知。

  解决:必杀技--打开"Windows任务管理器",杀死ORACLE.exeORADIM.exe进程,书写自己的ora_startup.bat,执行之!

  PS:

  1、我的ora_startup.bat:

  net start OracleOraHome81TNSListener

  net start ORACLESERVICEORADB

  svrmgrl一般情况下不用,不过有时少不了它的,具体步骤见第5步。

  2、我的ora_shutdown.bat:

  net stop OracleOraHome81TNSListener

  net stop ORACLESERVICEORADB

  3ORACLE相关服务名请参见"管理工具""服务"中以ORACLE开头的服务名。

·Oracle 10g绿色客户端 plus PL/SQL Developer-搭建方便的Oracle客户端使用环境

Oracle的官方网站上边有10g的绿色版的简易客户端……

http://www.oracle.com/technology/tech/oci/instantclient/index.html

Oracle的官方网站下载软件是要帐户的,这个申请一个就是了,本人没有网上的空间存放相关的软件,即使有也没有官网上的可靠和持久,所以就只给一个链接了。

http://www.allroundautomations.nl/plsqldev.html

PL/SQL Developer是一个开发与数据库相关工程的软件,msFree的,不大了解,只不过看到很多开发Oracle相关数据库的人都在用,我一般只用来当作与数据库服务器交互用的Client界面……,最多的时候主要是开一个窗口敲SQL语句,(杀鸡用牛刀了……

下边是安装的过程,由于是免安装的,所以要自己配置一些环境变量和文件,比较麻烦……

首先将下载的Oracle客户端的压缩包解压到一个路径,在本机上解压到了E:\OracleClient下边,所以,实际上Oracle客户端的路径是E:\OracleClient\instantclient_10_2

然后进入instantclient_10_2文件夹,新建一个network文件夹,并在network文件夹下新建admin文件夹,在admin文件夹中新建名为tnsnames.ora文件,这个文件是用来配置连接远程数据库的登录信息的(客户端软件都会从这个相对路径下的文件中获取连接数据库的信息),内容如下:

databasename =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = ip address)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = database name)

)

)

例如我链接实验室数据库的对应文件内容是:

TCM =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = TCM)

)

)

IP我就不写出来了,我所用的数据库名为TCMso……

然后安装PL/SQL Developer,过程是傻瓜式的。进入PL/SQL后(开始进入时会要求登录数据库,但是现在PL/SQL现在还找不到你的Oracle客户端,所以登录是不会成功的,但是可以进入软件),选择Tools->Preferences,在Oracle Home OCI Library两栏中分别填入Oracle客户端的路径和OCI文件的路径(oci.dll文件直接在instantclient_10_2文件夹下),所以我在这两个选项中填写的内容是"E:\OracleClient\instantclient_10_2""E:\OracleClient \instantclient_10_2\oci.dll"。这时再登录就可以登录成功了。如若还不行就重启一下PL/SQL

绿色版的客户端可能会出现对于中文支持的问题,这主要是因为服务器端指定的字符集和客户端所默认的字符集是不相同的导致的,只要找到服务器端的字符集设置,然后将客户端的字符集设置与服务器端保持一致就好了。修改客户端字符集设置的方法有好几种,可以修改注册表,也可以用环境变量的方法解决。不过我这里介绍的客户端是绿色版的,只是解压到某一个路径而已,所以注册表的方法在这里不是很适用,所以我写了一个启动脚本,在启动PL/SQL之前,先建一个临时环境变量 nls_lang,并给变量赋值,再启动软件。(我曾经做过实验,通过建立系统环境变量的方法在这里是行不通的,具体的原因我说不清楚><

我的脚本plsql.bat的内容如下:

set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

cd "c:\Program Files\PLSQL Developer"

PLSQLDev.exe

其中第二行进入的路径是PL/SQL Developer安装到的路径。

我这里的实际情况是服务器端的字符集设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,所以我将这个值赋给nls_lang。通过运行plsql.bat脚本就可以正常的访问服务器数据库了。