龙空技术网

oracle常见问题处理

码农大侠 235

前言:

现时各位老铁们对“oracle登录报错12541无监听程序”都比较关注,我们都需要学习一些“oracle登录报错12541无监听程序”的相关资讯。那么小编同时在网络上网罗了一些有关“oracle登录报错12541无监听程序””的相关知识,希望小伙伴们能喜欢,姐妹们一起来了解一下吧!

前置条件:

处理环境为linux环境。oracle为docker的工具安装。

问题处理:

ORA-12528:TNS:监听程序:所有适用例程无法建立新连接

解决方案:

使用命令docker exec -it {容器id} bash进入到容器内:查找find / -name "listener.ora"文件进入到指定目录中,并打开 vi listener.ora文件:添加红框内的代码,然后保存退出:

SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (GLOBAL_DBNAME = helowin)      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_2)      (SID_NAME = helowin)    )  )
步骤同上,修改tnsnames.ora文件,添加(UR=A)
HELOWIN =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = helowin)      (UR=A)    )  )

连接数据库,执行命令:

SQL>alter database mount;SQL>alter database open;

至此,ora-12528问题解决。

ORA-12541:TNS 无监听程序

解决方案:

进入到容器内部,运行命令 lsnrctl status,查看监听程序的运行状态:

lsnrctl status
如果监听程序未运行,执行lsnrctl start启动监听程序。
lsnrctl start
如有启动异常,查看报错信息,我这里的报错信息是,listener.ora 文件的GLOBAL_DBNAME、ORACLE_HOME、SID_NAME三个配置不正确,修改后,可正常启动。ORA-01033 oracle正在初始化或者关闭

解决方案:

进入到容器内部,并通过命令conn / as sysdba连接数据库:执行命令 shutdown immediate,出现以下信息:执行命令 startup这里出来ORA-00214的错误,当解决完ORA-00214后,数据库就可正常连接。ORA-00214控制版本导致错误,也就是说control01.ctl和control02.ctl两个文件的信息不一致,如control01.ctl的版本是1075,而control02.ctl的版本是841

解决方案:

修改初始化参数文件进入到control01.ctl目录里将control01.ctl,复制到control02.ctl目录下

进入control02.ctl目录下,删除原先的control02.ctl,将复制过来的control01.ctl改名为control02.ctl,这样两个文件的版本就会保持一致重启docker的服务,问题解决。

The password for system@192.168.8.141:1521/helowin has expired

解决办法:

该报错信息,我本地是因为oracle服务启动已经超过180天,也就是半年,这是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。

进入到容器内,并登录成功数据库,运行sql查询,可得知180天的过期时间

SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
修改默认的180天为不限制
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;
当我们修改为不限制后,还需要更改数据库密码,如果你还是对原来的密码比较熟悉,改完密码后,再改回来即可。成功登录进去。

标签: #oracle登录报错12541无监听程序