linux下oracle安装运行常见问题

来源:互联网 发布:mac怎么连接安卓手机 编辑:程序博客网 时间:2024/04/27 19:56

如何修改linux中oracle数据库的最大连接数


用putty连接linux服务器,切换到
   su - oracle
   sqlplus /nolog 连接到数据库;
   conn / as sysdba
   show parameter session
   alter system set sessions = values(比如400) scope = spfile;//注意此处的分号;
   show parameter process
   alter system set processes = values(比如450)scope = spfile;//注意此处的分号;
   show parameter license   //查看最大的process;
   重新启动服务器;
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
               sessions=(1.1*process+5)
但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,
需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。
semmns的计算公式为:SEMMNS>processes+instance_processes+system

processes=数据库参数processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch)
system=系统所占用信号量。系统所占用信号量可用下列命令查出:#ipcs -sb


ora-00845 MEMORY_TARGET not supported on this system



解决办法:用root用户运行下列命令
# mount -o remount,size=4G /dev/shm
 详细:http://space.itpub.net/20570073/viewspace-566773

sqlplus下用户操作的命令

#su - oracle
$ sqlplus /nolog
SQL> connect / as sysdba
--//创建临时表空间
create temporary tablespace test_temp
tempfile '/data/oracle/oradata/test/test_temp01.dbf' --//Linux下的文件系统
size 64m
autoextend on
next 64m maxsize 2048m
extent management local;

--//创建数据表空间
create tablespace test_data
logging
datafile '/data/oracle/oradata/test/test_data01.dbf' --//Linux下的文件系统
size 64m
autoextend on
next 65m maxsize 2048m
extent management local;

--//创建用户并指定表空间 用户名和密码均为"test"
create user test identified by test
default tablespace test_data
temporary tablespace test_temp;


--//给用户授予权限

grant connect,resource to test;

--//删除表空间
drop tablespace test_temp including CONTENTS and datafiles;

--//修改用户密码
alter user test identified by new_password;

--//删除用户
drop user 用户名 cascade; --//执行该语句请小心,会级联删除该用户下所有对象。


--//给用户分配权限

SQL> grand connect to test_user;
SQL> grand resource to test_user;
SQL> grand create view to test_user;

 

使数据库实例和linux系统一起启动

在/etc/rc.d/rc.local中加入如下语句即可实现同系统启动实例:
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"

用dbstart和dbshut启动和关闭数据库实例时要修改的两个文件

 
先启动监听 lsnrctl start
启动实例  dbstart
 
使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:
 
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME

 

原因:
dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=$1,修改为
ORACLE_HOME_LISTNER=$ORACLE_HOME


然后保存退出,此时再运行dbstart,已经不报错了,但是没有任何反应,ps一下进程,没有oracle的进程,说明oracle实例没有正常启动。
 
此时的原因是在/etc/oratab的设置问题,我们vi一下,发现
zgz:/home/oracle/product/10g:N
最后设置的是"N"(我的环境中只有一个实例,因此只有一行配置语句),我们需要把“N”修改为“Y”。
 
以上的工作做好之后,dbstart就可以正常使用了:

 

 

oracle lrm-00109: could not open parameter file '/opt/oracle

今天开发服务器突然连接不上,sqlplus /nolog、conn /as sysdba、startup命令后显示

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle10g/product/10.2/db_1/dbs/initORA10G.ora'

查找文件,果然不存在。估计是非法关机造成的。

 

这是因为在oracle9i和oracle10g中,oracle默认将使用spfile启动数据库,如果spfile不存在,则就会出现上述错误。

 

解决方法1(已经验证):
将$ORACLE_BASE/admin /数据库名称/pfile目录下的init.ora.012009233838形式的文件copy到$ORACLE_HOME/dbs目录下 initoracle.ora即可。(注:initoracle.ora中的oracle为你的实例名 ORACLE_SID)

 

解决方法2:

用oraenv命令來改變當前環境的SID,然後用pfile重新產生spfile,就可以啟動數據庫了.
改變SID:
[oracle@willie root]$ source oraenv
ORACLE_SID = [oracle] ? test1
bash: /root/.bashrc: Permission denied
重新產生spfile:
SQL> create spfile from pfile;
File created.

SQL> startup
ORACLE instance started.

 

 

 

附:Linux下oracle操作命令

 

重启oracle

lsnrctl stop
sqlplus /nolog
conn /as sysdba
shutdown (startup)
exit
lsnrctl start

 

启动oracle
sqlplus /nolog
conn /as sysdba
startup
exit

lsnrctl start


关闭oracle
lsnrctl stop
sqlplus /nolog
conn /as sysdba
shutdown
exit

 

查看Oracle是否启动

netstat -an |grep 1521

 

 

重要提示:手工启动关闭数据库时,linux会读取系统的ORACLE_SID系统变量。 如果存在多个数据库,在操作之前应该修改一下ORACLE_SID变量使之指向要操作的数据库 。如 export ORACLE_SID=OANET,则启动、关闭的都是OANET实例。

附加:启动时的SID要与dbs下的“initSID.ora”中的SID一致。这样才能相对应。如果没有需从$ORACLE_BASE/admin /数据库名称/pfile目录下copy init.ora.012009233838形式的文件,后把ora改成对应的SID.


原创粉丝点击