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

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

场景:在cmd窗口输入:sqlplus "/as sysdba"想打开数据库时报的错;

原因:没有启动Oracle服务器;

解决:WIN+R,跳出运行窗口,输入"",打开服务窗口;找到OracleServiceORACLE服务,查看是否为启动,右键启动即可。

2、ORA-12541:TNS:no listener

场景:用pl/sql developer客户端连接数据库;

原因:监听器没有启动;

解决:打开服务,启动OracleOraDB12Home1TNSListener。

3、ORA-28547:connection to server failed,probable Oracle Net admin error

场景:将监听器配置文件:中的SID_NAME 更改后导致的;

原因:多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的;

解决:将SID_NAME修改为原来的名称。

4、ORA-01438

因为插入的数值大于所在的列的最大允许精度。

5、ORA-12899

字符值大于此列指定的允许精度

6、ORA-00942:表或视图不存在

表或试图不存在

7、ORA-01400: 无法将 NULL 插入 ("SCOTT"."ITEMS"."ITEMNAME")

因向表中插入数据时,主键/约束的列为空。

8、ORA-00001: 违反唯一约束条件 (_ITEMS)

因想表中插入数据时,某列设置了唯一约束,插入的值,表中已经存在了。

9、ORA-01017: 用户名/口令无效; 登录被拒绝

有可能用户名或者密码错误

10、ORA-01507

有可能是关系数据库后,启动的时候没有加载数据库,如:startup nomount就是启动实例不加载数据库的

11、ORA-01034: ORACLE not available

数据库处于关闭状态。

12、ORA-01045: user MENG lacks CREATE SESSION privilege; logon denied

该用户没有连接到数据库的权限,解决:grant connect, resource to 用户名;

13、ORA-28000: the account is locked

账户被锁定;

使用命令解锁用户。命令为:alter user username account unlock;

重置用户密码。命令为:alter user username identified by password;其中username为用户名,password为新密码。

14、ORA-00904: "EMP": 标识符无效

答:①数据库中引用到的列和自己SQL中书写的列名是否一致;

②对于某些工具生成的SQL,可能导致列名和期望不符的情况,比如cmd使用双引号会报错,使用单引号'';

15、ORA-00936: 缺失表达式

答:一般是关键字的问题。

如:select id,name, from test_index; 问题是多了一个逗号导致的。

16、ORA-01109 数据库未打开(先试一下红色字体的命令)

答:造成上述问题的原因是误把'F:'这个数据文件删掉了,这种删法是不正常的,如果删掉了用户及表空间,然后再把数据文件删除应该是没问题的,但这次只是把数据文件删掉了,用户及表空间还在。

解决方法:

1) MOUNT数据库:

STARTUP MOUNT ; 2) OFFLINE DROP数据文件:

ALTER DATABASE DATAFILE '' OFFLINE DROP;

3) 打开数据库:

ALTER DATABASE OPEN;

ps:这时候再open数据库就ok了

4) 删除表空间:

DROP TABLESPACE INCLUDING CONTENTS;

ps:如果是误删的,只需重建表空间即可。

具体操作:

SQL> startup mount

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它

SQL> shutdown immediate

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 167775108 bytes

Database Buffers 436207616 bytes

Redo Buffers 7135232 bytes

数据库装载完毕。

SQL> alter database datafile 'F:'offline drop

2 ;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> drop tablespace oradb including contents;

表空间已删除。

17、ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER

(1)情况一:使用sqlplus登录 口令+as sysdba

(2)情况二:使用PL/SQL登录

登录界面的时候,将“连接为”选项框的Normal改为SYSDBA或SYSOPER

18、ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/'

答:将$ORACLE_BASE/admin/orcl/pfile目录下的.7形式的文件copy到$ORACLE_HOME/dbs目录下,然后把文件名改为;最后更改文件的权限。

例如命令如下:

cp /u01/app/oracle/admin/orcl/pfile/* /u01/app/oracle/product/11.2.0/db_1/dbs

mv

.*

chmod -R oracle:oinstall

19、ORA-12170:TNS:连接超时

客户端连接Linux数据库报错,一般情况是端口问题。

修改iptables,开放1521端口,允许1521端口被连接,

vi /etc/sysconfig/iptables

#允许21端口通过防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

20、ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

原因:监听配置文件中可以不必指定监听的服务名(安装Oracle10g后也是没有指定的)。正常情况下一般只要数据库启动,客户端连接数据库也没有什么问题,但是有时重复启动关闭也会出现ORA-12514错误。

解决:

(1)通过重启服务的方式启动数据库,再次连接尝试。

(2)

正确添加;

重新启动了oracle服务器,并检查oracle所有服务是否启动;

oracle客户端Net Cofiguration Assistant正确添加或重新配置实例名, 如:(红色粗体部分是添加进去的,注意:一定要放进蓝色括号内不然会导致启动不了监听器)

# Network Configuration File: D:DatabaseOracleproductinstantclient_11_

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = D:Databaseoracleproduct11.2.0dbhome_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:D:Databaseoracleproduct11.2.0dbhome_")

)

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = D:Databaseoracleproduct11.2.0dbhome_1)

(SID_NAME = ORCL)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

)

)

ADR_BASE_LISTENER = D:Databaseoracle

21、ORA-00937: 不是单组分组函数 select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,否则语法通不过。

例如:

SELECT deptno,COUNT(empno)

FROM emp;

会报错,添加group by后就不会报错

SELECT deptno,COUNT(empno)

FROM emp

GROUP BY deptno;

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

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

场景:在cmd窗口输入:sqlplus "/as sysdba"想打开数据库时报的错;

原因:没有启动Oracle服务器;

解决:WIN+R,跳出运行窗口,输入"",打开服务窗口;找到OracleServiceORACLE服务,查看是否为启动,右键启动即可。

2、ORA-12541:TNS:no listener

场景:用pl/sql developer客户端连接数据库;

原因:监听器没有启动;

解决:打开服务,启动OracleOraDB12Home1TNSListener。

3、ORA-28547:connection to server failed,probable Oracle Net admin error

场景:将监听器配置文件:中的SID_NAME 更改后导致的;

原因:多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的;

解决:将SID_NAME修改为原来的名称。

4、ORA-01438

因为插入的数值大于所在的列的最大允许精度。

5、ORA-12899

字符值大于此列指定的允许精度

6、ORA-00942:表或视图不存在

表或试图不存在

7、ORA-01400: 无法将 NULL 插入 ("SCOTT"."ITEMS"."ITEMNAME")

因向表中插入数据时,主键/约束的列为空。

8、ORA-00001: 违反唯一约束条件 (_ITEMS)

因想表中插入数据时,某列设置了唯一约束,插入的值,表中已经存在了。

9、ORA-01017: 用户名/口令无效; 登录被拒绝

有可能用户名或者密码错误

10、ORA-01507

有可能是关系数据库后,启动的时候没有加载数据库,如:startup nomount就是启动实例不加载数据库的

11、ORA-01034: ORACLE not available

数据库处于关闭状态。

12、ORA-01045: user MENG lacks CREATE SESSION privilege; logon denied

该用户没有连接到数据库的权限,解决:grant connect, resource to 用户名;

13、ORA-28000: the account is locked

账户被锁定;

使用命令解锁用户。命令为:alter user username account unlock;

重置用户密码。命令为:alter user username identified by password;其中username为用户名,password为新密码。

14、ORA-00904: "EMP": 标识符无效

答:①数据库中引用到的列和自己SQL中书写的列名是否一致;

②对于某些工具生成的SQL,可能导致列名和期望不符的情况,比如cmd使用双引号会报错,使用单引号'';

15、ORA-00936: 缺失表达式

答:一般是关键字的问题。

如:select id,name, from test_index; 问题是多了一个逗号导致的。

16、ORA-01109 数据库未打开(先试一下红色字体的命令)

答:造成上述问题的原因是误把'F:'这个数据文件删掉了,这种删法是不正常的,如果删掉了用户及表空间,然后再把数据文件删除应该是没问题的,但这次只是把数据文件删掉了,用户及表空间还在。

解决方法:

1) MOUNT数据库:

STARTUP MOUNT ; 2) OFFLINE DROP数据文件:

ALTER DATABASE DATAFILE '' OFFLINE DROP;

3) 打开数据库:

ALTER DATABASE OPEN;

ps:这时候再open数据库就ok了

4) 删除表空间:

DROP TABLESPACE INCLUDING CONTENTS;

ps:如果是误删的,只需重建表空间即可。

具体操作:

SQL> startup mount

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它

SQL> shutdown immediate

ORA-01109: 数据库未打开

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 167775108 bytes

Database Buffers 436207616 bytes

Redo Buffers 7135232 bytes

数据库装载完毕。

SQL> alter database datafile 'F:'offline drop

2 ;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> drop tablespace oradb including contents;

表空间已删除。

17、ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER

(1)情况一:使用sqlplus登录 口令+as sysdba

(2)情况二:使用PL/SQL登录

登录界面的时候,将“连接为”选项框的Normal改为SYSDBA或SYSOPER

18、ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/'

答:将$ORACLE_BASE/admin/orcl/pfile目录下的.7形式的文件copy到$ORACLE_HOME/dbs目录下,然后把文件名改为;最后更改文件的权限。

例如命令如下:

cp /u01/app/oracle/admin/orcl/pfile/* /u01/app/oracle/product/11.2.0/db_1/dbs

mv

.*

chmod -R oracle:oinstall

19、ORA-12170:TNS:连接超时

客户端连接Linux数据库报错,一般情况是端口问题。

修改iptables,开放1521端口,允许1521端口被连接,

vi /etc/sysconfig/iptables

#允许21端口通过防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

20、ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

原因:监听配置文件中可以不必指定监听的服务名(安装Oracle10g后也是没有指定的)。正常情况下一般只要数据库启动,客户端连接数据库也没有什么问题,但是有时重复启动关闭也会出现ORA-12514错误。

解决:

(1)通过重启服务的方式启动数据库,再次连接尝试。

(2)

正确添加;

重新启动了oracle服务器,并检查oracle所有服务是否启动;

oracle客户端Net Cofiguration Assistant正确添加或重新配置实例名, 如:(红色粗体部分是添加进去的,注意:一定要放进蓝色括号内不然会导致启动不了监听器)

# Network Configuration File: D:DatabaseOracleproductinstantclient_11_

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = D:Databaseoracleproduct11.2.0dbhome_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:D:Databaseoracleproduct11.2.0dbhome_")

)

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = D:Databaseoracleproduct11.2.0dbhome_1)

(SID_NAME = ORCL)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

)

)

ADR_BASE_LISTENER = D:Databaseoracle

21、ORA-00937: 不是单组分组函数 select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,否则语法通不过。

例如:

SELECT deptno,COUNT(empno)

FROM emp;

会报错,添加group by后就不会报错

SELECT deptno,COUNT(empno)

FROM emp

GROUP BY deptno;