Oracle数据库问题集

浏览次数:359

基础知识:部署方式2种:单机独立和RAC(多个Oracle服务器联网组成一个数据库,类似云数据库);
网站群和移动一般只用单机模式,此模式下一台服务器上,一个实例对应配对一个数据库,即启动后,连接实例即连接相应数据库,使用上可以把实例名和数据库名看作没区别;
各个数据库间文件,账户、权限等完全独立

一、启动数据库

oracle用户命令行下
1、lsnrctl start                     启动监听(首先启动,防止tnsnames.ora没有配置静态监听不到,在数据库启动是也可以依靠动态注册到监听)
2、sqlplus / as sysdba        登录验证:如果有多个数据库,export ORACLE_SID=orcl,更改实例名切换
3、startup                           启动数据库
4、emctl start dbconsole    备选,如果用到em控制台启动,否则不用启动

二、关闭数据库
oracle用户命令行下
1、sqlplus / as sysdba        登录验证:如果有多个数据库,export ORACLE_SID=orcl,更改实例名切换
2、shutdown immediate     关闭数据库


三、自启动
root用户命令行下,/oracle/app/oracle/product/11.2.0/dbhome_1为oracle目录,视现场情况而定
1、vi /etc/oratab
找到如下
orcl:/oracle/app/oracle/product/11.2.0/dbhome_1:N
orcl02:/oracle/app/oracle/product/11.2.0/dbhome_1:N

将末尾的N改成Y
orcl:/oracle/app/oracle/product/11.2.0/dbhome_1:Y
orcl02:/oracle/app/oracle/product/11.2.0/dbhome_1:Y

2、vi /etc/rc.d/rc.local
添加以下
su oracle -lc /oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start
su oracle -lc /oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
su oracle -lc /oracle/app/oracle/product/11.2.0/dbhome_1/bin/emctl start dbconsole     这一行为需要启动em控制台的情况下添加,否则不需要


四、启动或关闭数据库时出现??????的问号
修改或定义环境变量NLS_LANG为数据库使用的语言
例如 export NLS_LANG=American_America.AL32UTF8


五、ORA-12519: TNS:no appropriate service handler found 错误
有时候连得上数据库,有时候又连不上,可能是数据库上当前的连接数目已经超过了它能够处理的最大值。
1、查看当前连接数以及最大连接数
selectcount(*from v$process --当前的连接数
select value from v$parameter where name ='processes'--数据库允许的最大连接数

2、修改最大连接数:
alter system set processes =300 scope = spfile;

3、spfile方式,所以需要重启生效
重启数据库:
shutdown immediate;
startup;