当系统由于某种原因重启,而Oracle DB并没有设置成自动启动,那么你就需要手动启动Oracle DB了。
1. 确保$ORACLE_HOME与$ORACLE_SID设置成了正确的值;
安装Oracle 12c之后,以下3个脚本文件默认会在/usr/local/bin目录下,
dbhome
oraenv
coraenv
运行dbhome可以知道ORACLE_HOME的目录。运行oraenv可以设置ORACLE_SID以及ORACLE_HOME的值。如果没有正确设置ORACLE_SID的值,那么第2步启动database就会失败。具体见下一步。
2. 启动Oracle DB
bash-4.2$
bash-4.2$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 3 02:24:53 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
SQL> connect / as sysdba;
Connected to an idle instance.
SQL>
SQL> startup
ORACLE instance started.
Total System Global Area 1.9126E+10 bytes
Fixed Size 12341344 bytes
Variable Size 2751467424 bytes
Database Buffers 1.6307E+10 bytes
Redo Buffers 54763520 bytes
Database mounted.
Database opened.
SQL>
如果之前没有正确设置ORACLE_SID,则会得到如下错误,
bash-4.2$
bash-4.2$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 3 02:24:53 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
SQL> connect / as sysdba;
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
SQL>
3. 启动listener
启动之前可以检查listener是否已经启动了。
一般oracle listener默认监听1521端口,所以可以用"netstat -nap | grep 1521"检查是否有进程在监听1521。另外也可以用命令“$ORACLE_HOME/bin/lsnrctl status”来检查listener的状态。如果确定listener没有启动,则可以用命令"$ORACLE_HOME/bin/lsnrctl start"来启动。之后用“$ORACLE_HOME/bin/lsnrctl services”来检查database services是否成功注册到listener上。有时要等一小会(< 1 minute)才会注册成功。
如果启动listener失败,得到了错误消息“TNS-00525: Insufficient privilege for operation”,那说明之前有人曾用root启动过listener。这时需要删除目录/var/tmp/.oracle/里面的文件,然后再重新启动listener。
4. 有时如果database services不能成功注册到listener上,可以尝试如下命令,
bash-4.2$
bash-4.2$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on Wed May 3 02:41:09 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL>
SQL>
SQL> alter system register;
System altered.
SQL>
SQL> alter system set local_listener='';
System altered.
SQL>
--END--





