今天在虚拟机中安装了一个WINDOWS系统,用于安装oracle服务器;从安装到使用中出现了很多的问题,把这些问题解决掉,花了不少时间,查了不少的资料。
第一个,我在安装过程中,出现了ORA-00922和ORA-28000报错,这是前面的口令设置上太随意了,没有按照oracle的要求设置口令导致;
ORA-00922选项缺失或无效
错误原因:一般是语句的语法有问题。比如命名不对,关键字写错等等。对于非标准的命名,一般采用双引号来创建。
解决办法:
标识符命名规则:(密码设定规则)
1、必须以字母开始。
2、长度不能超过30个单字节字符。
3、只能包括A-Z,a-z,0-9,_,$和#。
4、不能在相同用户下建立两个同名的对象。
5、不能使用保留字和关键字
ORA-28000:the account is locked
这是属于在前面配置管理员密码的时候,采用了数字开头的密码,Oracle貌似对此不支持。据说包含其他非法特殊字符也可能产生此问题。
即密码开头不能是数字,只能用标识符命名规则的字符,密码要最少要包含大写字母,小写字母和数字。
根据规则设定密码,Oracle实例安装时就不会出现ORA-28000和ORA-00922错误。
我当时是直接重新安装了,查了一下,也有不重新安装的解决办法,我没有尝试过,
方法1:
第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;
第二步:选择myjob,查看users;
第三步:选择system,右击点击“编辑”;
第四步:修改密码,把“帐户被锁住”的勾去掉;
第五步:点击“应用”再点击“关闭”;
第六步:重新登录就可以通过验证了;
第二个,解锁SCOTT用户,此用户是ORACLE自带的一个学习用户,不能直接使用,需要先进行解锁才行;
第一步,进入sqlplus,开始菜单>>所有程序>>Oracle - OraDb11g_home1(oracle的安装文件夹名)>>应用程序开发
点击进去之后就会要求输入用户名和口令,登陆进去之后,执行下面的命令:
SQL> alter user scott
account unlock;
解完以后,使用下面的命令来查看:
SQL>select username,account_status from dba_users WHERE USERNAME='SCOTT'
可以看到scott账户已经解锁,但是状态还是"expired”(密码过期)的意思。
给其赋一个新的口令
SQL>alter user scott identified by xinkouling;
这样就ok了,以后可以使用SCOTT用户了;
第三个,在远程连接SCOTT用户时,报错ORA-12170:TNS:连接超时
第一步,检查网络是否可以PING通,打开oracle客户端的cmd,ping一下服务端IP,ping不通就设置两台电脑的IP与网管,保持一致;
第二步,如果可以ping通,服务器监听服务是否启动,进入服务器cmd,输入命令:lsnrctl status
返回如下信息:
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 14-DEC-2012 15:51:13
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 14-DEC-2012 13:15:28
Uptime 0 days 2 hr. 35 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /database/oracle/product/dbhome/network/admin/listener.ora
Listener Log File /database/oracle/product/dbhome/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wgods)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "gsp" has 2 instance(s).
Instance "gsp", status UNKNOWN, has 1 handler(s) for this service...
Instance "gsp", status READY, has 1 handler(s) for this service...
Service "gspXDB" has 1 instance(s).
Instance "gsp", status READY, has 1 handler(s) for this service...
Service "gsp_XPT" has 1 instance(s).
Instance "gsp", status READY, has 1 handler(s) for this service...
The command completed successfully
说明没有问题;
第三步,检查防火墙,在客户端打开cmd使用命令:tnsping ip(服务端ip)
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 14-12月-2012 15:47:15
Copyright (c) 1997, 2010, Oracle. All rights reserved.
已使用的参数文件:
E:appkerryproduct11.2.0dbhome_1
etworkadminsqlnet.ora
已使用 EZCONNECT 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.150.105)(PORT=1521)))
TNS-12535: TNS: 操作超时
返回了一个报错,说明是防火墙的问题;
解决办法1:关闭服务器防火墙,自己学习使用的,防火墙就无所谓了,可以关闭;别的时候不建议关闭防火墙。
解决办法2:开放oracle的1521端口,允许1521端口被连接;
1.端口的连接命令,telnet,使用方法,telnet ip port(例:192.168.150.105 1521)
一般第一次使用这个命令,会提示telnet不是内部或者外部命令;
解决办法:
1.进入控制面板
2.进入程序和功能
3.从打开的“程序或功能”界面中,点击左上角的“打开或关闭Windows功能”按钮,如图所示:
4.此时将弹出“Windows功能”窗口,从列表中选中“Telnet客户端”项,点击“确定”按钮。
5.接下来“Windows功能”窗口将显示“正在应用所做的更改”界面,耐心等待一会,待更改操作完成后,点击“关闭”按钮即可。
6.“telnet”命令正常运行。
7.再使用telnet ip port报错,连接失败,
解决办法:打开服务器的1521端口。
1>.在弹出的控制面板信息中选择【系统和安全】,然后选择【Windows 防火墙】,如图。
2>.在弹出的防火墙信息中,选择左侧的【高级设置】,如图。
3>.在弹出的【高级安全Windows防火墙】设置中,选择左侧的【入站规则】,在右侧选择【新建规则】,如图。
4>.进入新建入站规则向导中,选择【端口】,点击下一步,如图。
5>.进入新建入站规则向导中,选择TCP规则,然后输入端口号,点击下一步,如图。
6>.在接下来弹出的向导信息中,全部默认选择,点击下一步,在最后一步中吗,输入名称和描述,如图。
7>.查看开放端口的信息,如图使用netstat -a -n命令。查看oracle端口是否开启。
8>.然后使用telnet ip port不在报错,进入一个新的DOS窗口。
8.数据库客户机可以成功连接服务器了。