ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
oracle centos 重启后报错ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
1、查看监听状态lsnrctl start
2、通过sqlplus / as sysdba ,执行startup来启动数据库,发现报错,initORCL.ora不存在。
3、进入对应目录,打开spfileorcl.ora,发现db_name=orcl,
4、查看环境变量 cat ~/.bash_profile,发现ORACLE_SID=ORCL
5、conn / as sysdba,然后startup nomount
startup nomount选项启动实例,但不安装数据库。当数据库以这个模式启动时,
参数文件被读取;后台进程和内存结构被启动;
但它们不被附加或与数据库的磁盘结构进行通信。
当实例处于这个状态时,数据库是不可使用的。
通常启动到这里可以做create database ,create or recreate control file
或者是mount standby database等动作,修改parameter也是可以的。
6、alter database mount; alter database open;
oracle数据库启动分三个步骤:nomount,mount,open;
而startup是数据库从开始阶段的启动,需要经过上述三个步骤。
alter database open是数据库处于mount状态,从mount状态打开数据库的命令。
因此,执行startup nomount,alter database mount; alter database open;正是依次执行启动数据库
7、show parameter name;
通过该命令可以查看数据库一些参数,从而判断是否是因为参数配置问题导致。
8、发现oracleName等参数为orcl
9、vi ~/.bash_profile将ORACLE_SID的值改为小写,
即orcl,并执行source ~/.bash_profile来使得配置生效。
10、修改ORACLE_HOME下network/admin下的listener.ora与客户端对应的tnsnames.ora
11、重启监听lsnrctl start
12、登录数据库:sqlplus system/oracle@//localhost:1521/orcl;