下载,准备
我建议将安装文件放在windows的盘符下,共享文件夹,通过mount -t smbfs方式来让linux访问windows下共享的文件夹来进行安装,对虚拟linux来说,就不需要占用那么大的空间.
需要保证虚拟就机linux和windows之间的网络畅通,用root用户给linux设置ip地址,方法:root登录图形界面,开始菜单->system settings->network
虚拟linux磁盘空间8g以上,linux 2.8g,oracle 2.85g,数据库2g;
虚拟机内存,我自己安装分配了512m,速度还比较块,我看别人用256m,很慢.
如果上面的具备了,可以进行下面的步骤了.
环境配置,安装
1)添加用户组,用root用户登录
groupadd orainstall
groupadd oradba
groupadd oraoper
useradd ora -g orainstall,oradba
可以根据自己的情况用不同的用户名字和组,根据自己喜好.
2)切换到root用户
vi /etc/sysctl.conf
然后在最后添加一行
kernel.shmmax = 261986254
如果遗漏这步,安装的最后一步会报ora-27123: unable to attach to shared memory segment错误.
3)在.bash_profile中添加环境变量
然后用ora用户登录,在该文件中添加如下的内容:
#oracle
export ld_assume_kernel=2.4.1
export oracle_base=/home/ora/ora9
export oracle_home=/home/ora/ora9/oracle
export ora_nls33=$oracle_home/ocommon/nls/admin/data
#nouse
export oracle_sid=linuxdb
export oracle_term=xterm
export tns_admin=$oracle_home/network/admin
export nls_lang=american_america.us7ascii
#lib,class
ld_library_path=$oracle_home/lib:/lib:/usr/lib
ld_library_path=$ld_library_path:/usr/local/lib
export ld_library_path
export path=$path:$oracle_home/bin
classpath=$classpath:$oracle_home/jre:$oracle_home/jlib:$oracle_home/rdbms/jlib
classpath=$classpath:$oracle_home/network/jlib
export classpath
修改.bash_profile之后,重新登录,或者source .bash_profile就可以是上面配置的环境变量生效.
4)解压缩文件
在windows下,将存放安装文件的文件夹oracle共享,设置共享权限为可读可写,然后执行如下命令:
mount -t smbfs -o username=cl,password=chenli,ip=192.168.1.100 -l //chenli/oracle /home/ora/setup
命令解释:
上面命令中,username=cl,password=chenli中cl是windows用户,chenli是cl用户的密码
ip=192.168.1.100 中192.168.1.100 是windows主机的ip地址
//chenli/oracle 中,chenli是windows主机的主机名,oracle是共享文件夹
/home/ora/setup 是linux下的目录路径,必须存在,可以根据自己的需要,设定不同的路径.
解压文件,顺序执行下面的命令:
cd /home/ora/setup
gunzip ship_9204_linux_disk1.cpio.gz
gunzip ship_9204_linux_disk2.cpio.gz
gunzip ship_9204_linux_disk3.cpio.gz
cpio -idmv cpio -idmv cpio -idmv 执行完了之后,会出现disk1,disk2,disk3三个目录
5)安装
用ora用户登录到linux的图形化界面
进入/home/ora/setup/disk1目录
执行./runinstaller
注意,有些时候显示的安装界面是乱码的,我的red hat linux 9的简体中文版,安装程序都是英文的,这个时候可以通过执行如下命令来解决问题:
export lc_all=c
export lang=c
然后再执行./runinstaller就不会有乱码了.
错误总结:
我在安装过程中出现了一些问题,在这儿跟大家分享.
1)弹出对话框,显示错误信息:thrown when the ip address of a host cannot be determined
这时候需要用root用户打开/etc/hosts 编辑该文件,ip地址和主机名字的对应关系,尽量简单,在第二列,即主机名列,不要出现ip地址形式x.x.x.x的主机名
2)在安装的最后,安装agent工具的时候出现如下的错误信息:
parameter orahome = /oracle/product/9.2.0
parameter nodeinfo = no_value
agent service failed
这个问题是没有打补丁引起的,不过该问题不会影响到数据库的使用,只是agent工具不可用.
下载p2617419_220_generic.zip p3006854_9204_linux.zip p3238244_9204_linux.zip
然后安装,需要重新执行oracle的安装./runinstaller,所以最好在安装前打一下这个补丁.
启动数据库
用ora用户登录linux
首先执行命令:sqlplus / as sysdba
显示sql>执行命令startup,启动数据库;执行shutdown,关闭数据库.
启动监控程序,在普通命令行下执行如下命令
lsnrctl start 启动监控
lsnrctl stop 停止监控
使用数据库
用ora用户登录主机
执行sqlplus /as sysdba 以系统dba的身份登录数据库.
然后创建表空间,创建用户,给用户授予权限
1)然后创建表空间
create tablespace devbase
datafile '/home/ora/tbspace/devbase_20080121.dbf' size 500m
autoextend on
next 100m
maxsize 1000m;
要确保/home/ora/tbspace目录存在,有权限,足够的空间存放表空间文件
2)创建用户
create user dev
identified by dev123
default tablespace devbase
temporary tablespace temp;
创建用户dev,密码是否dev123,默认表空间为devbase
注意,这个时候还不能用dev登录数据库,因为dev用户还没有create session,connect,resource权限,还不能登录;
3)给用户授予权限
grant resource,connect to dev;
grant create session to dev;
grant create table to dev;
grant create tablespace to dev;
grant create view to dev;
这时你可以用dev用户进行登录了.
4)修改用户密码
用sys或者system用户登录,执行如下的sql修改用户密码
alter user dev identified by chenli;
最后还因为注意一个小问题,修改oracle_home/network/admin/tnsnames.ora,将配置该文件中所有host的值,全部由ip地址替换,这样在登录数据库的过程总,减少了主机名字=>ip地址的解析过程,有些时候,会提高一下登录的速度.
在普通linux用户下建立开发环境
配置环境变量,搜索路径中可以找到oracle程序.
vi .bash_profile 添加如下的配置
#oracle
export oracle_base=/home/ora/ora9
export oracle_home=/home/ora/ora9/oracle
export oracle_sid=linuxdb
export oracle_term=xterm
#ld_library_path
ld_library_path=$ld_library_path:/usr/lib:/usr/local/lib:$oracle_home/rdbms/demo
path=$path:/usr/bin:/usr/sbin:/usr/local/bin:.
path=$path:$oracle_home/bin
export path
建立普通用户在路径$oracle_home/bin,$oracle_home/include,$oracle_home/lib上所有目录的xr读执行权限,这样该登录用户才能使用$oracle_home/bin目录下的一些oracel程序.并且要保证在开发过程中,可以使用oracle下的头文件,库文件.
1)创建seq对象
create sequence seq_staff_id
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 20;
2)创建表
create table staff_info
(
staff_id number(10),
staff_name varchar2(20),
addr varchar2(200)
);
ok,一个基本的oracle数据库就可以使用了.
注意的问题:
很早以前写的安装文档
1.确保rpm开发包,使用下面命令查看是否已安装这些包
rpm -q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
2.oracle官方网站下载oracle9i安装文件为:linux9i_disk1.cpio.gz,linux9i_disk2.cpio.gz,linux9i_disk3.cpio.gz
三个文件,进行解压,,
zcat linux9i_disk1.cpio.gz | cpio -idmv
zcat linux9i_disk2.cpio.gz | cpio -idmv
zcat linux9i_disk3.cpio.gz | cpio -idmv
然后有disk1 disk2 disk3三个目录
3.设置内核参数
vi /etc/sysctl.conf,加入下面参数
kernel.shmmax=4294967295 内存512m
计算方法为:kernel:shmmax=1024*1024*ram(m)/2
或者
编辑/etc/sysctl.conf
kernel.shmmax=4294967295
以上为512mb内存,所以设置这个数值。可根据实际情况设置。
这个shmmax是定义共享内存段的最大尺寸参数shmmax建议的设定值为物理内存的一半
执行sysctl -p生效
4.修改oracle用户能够打开的文件总数
vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
4.建立数据目录和用户
以root的身份,使用groupadd命令增加dba组;
#groupadd dba
对于oracle9i,还需要增加oinstall组,用来分配在数据仓库中安装软件的权限
#groupadd oinstall
对于oracle9i,使用oinstall和dba组作为默认组创建oracle账号
#useradd -g oinstall -g dba oracle
设置oracle账号的口令
#passwd oracle
为oracle建立的相应目录
#mkdir /opt/oracle
#mkdir /opt/oracle/product
#mkdir /opt/oracle/product/9.2.0
为使oracle账号在安装期间使用这些安装位置,必须具有适当的权限。将安装位置的所有权限更改为oracle账号。
#chown -r oracle.oinstall /opt/oracle
#mkdir /var/opt/oracle
#chown oracle.dba /var/opt/oracle
#chmod 755 /var/opt/oracle
5.使用oracle账号的.bash_profile插入下列环境变量
vi .bash_profile 设置变量
export ld_assume_kernel=2.4.1
export oracle_base=/opt/oracle
export oracle_home=/opt/oracle/product/9.2.0
export oracle_sid=ora9
export oracle_term=xterm
export tns_admin=$oracle_home/network/admin
export nls_lang=american_america.zhs16gbk
export ora_nls33=$oracle_home/ocommon/nls/admin/data
ld_library_path=$oracle_home/lib:/lib:/usr/lib
ld_library_path=$ld_library_path:/usr/local/lib
export ld_library_path
export path=$path:$oracle_home/bin
classpath=$oracle_home/jre:$oracle_home/jlib:$oracle_home/rdbms/jlib
classpath=$classpath:$oracle_home/network/jlib
export classpath
(1)export tns_admin=$oracle_home/network/admin
这样设置不会频频遭遇监听报错
重新用oracle用户登录,环境就可以生效
