Oracle安装

来源:互联网 发布:淘宝订手办流程 编辑:程序博客网 时间:2024/05/02 13:37

Oracle数据库学习实例-1(菜鸟安装篇)


Oracle数据库学习实例

前言:
按照正常人(不包括天才)学习、认知的过程总是由浅到深,从一片茫然到逐渐熟悉。我想要是有一篇学习实例,对我们这些菜鸟就太有帮助了。可是我找遍internet,也没发现类似文章。
本人才开始学习oracle数据库,在网上曾得到很多网友的帮助,十分感激,在此想把我的学习体会写下,由于学习时间不长,其中难免有错误,希望您能指出。

1操作系统的安装
学习oracle最好在UNIX平台上,通过动手才知道其中内容,并且尽量不要使用GUI图形界面。原因很简单,当你的command模式操作自如了,在图形界面下自然a piece of cake.

我用的机器是HP LC3, CPU PII 400MHZ , RAM 128 M , HD 4.0G, OS Solaris8
操作系统我装了几遍,可能是我太笨,光盘弹不出,文件系统被破坏都遇到过。我想,因为UNIX不象WINDOWS那样傻瓜型,在装ORACLE之前多摸一些操作系统。对系统理解有帮助。尽管如此,限于时间关系,我对 Solaris的理解还是很浅显。下面提出几点建议:
1. 1在安装时,分区显得很重要,一定要规划好,因为在事后分区调整很麻烦,尤其对菜鸟们。我在分区时犯了错误,将SWAP区分的过大1G,其后才知400-500M即可。另外,建议单独设一个ORACLE分区,我安装在HOME分区上(对应目录/export/home/oracle),将oracle和数据分别放在此分区中的不同目录中,条理可能清楚些。

1.2 用户注册问题
在添加新用户组(dba)和新用户(oracle)后,用oracle登录,系统会要求Register(这是正常的),但不管选Cancel或是选择More Info->Never或是选择More Info->Later系统都会重新到登录界面。尝试解决(1)pkgrm SUNWsregu
(2) touch /etc/solregis 在文件中添加一行DISABLE=1
系统不在要求Register,而直接重新到登录界面,证明失败。后来发现是用户主目录设置错误。
(在用admintool时,系统提示:此目录已经被占用,命令行设置同样,后用chown –R oracle:dba /export/home/oracle强制执行,成功)

1.3 Oracle的安装要在图形模式下,为了确认您的图形窗口安装是否成功,执行#xclock如果界面上有一个钟出现,就OK了,否则图形窗口安装不正确,找原因吧。

2 oracle安装
我强烈建议您在装oracle之前,先对什么是RDBMS,什么是CLIENT/SERVER结构,oracle的基本层次(物理层、逻辑层、应用界面层),oracle的主要构件都有一个基本的概念,否则,意义不大。
oracle的安装,要求不能以root用户进入,安装过后,我建议不要使用系统默认的数据库,要从数据库创建、设置到优化亲自动手。
2.1 创建oracle用户和dba用户主
2.2 设置/etc/system文件和$HOME/oracle/.profile文件 (网上有)
其中.profile文件有很多环境变量设置,要确保其中正确,我就是有一个ORACLE_SID设置不正确(忘了export ORACLE_SID),结果ORACLE在确认打开数据库时,无法找到正确的数据库参数文件。
2.3 插入oracle安装盘,运行/cdrom/disk1/runInstaller
2.4 摘自网上的oracle安装步骤 (本2.4段)
一.用root用户做:
(1)groupadd dba
(2)useradd -d dba -d $ORACLE_HOME -m -s /bin/sh oracle
(3)修改/etc/group文件的最后一行如下:dba::100racle
(4)修改/etc/passwd文件的最后一行如下:oracle:x:1001:100::/ORACLE_HOME:/bin/sh
(5)mkdir /oracle;chown -R oracle:dba /oracle
(6)# vi /etc/system 在最后一行后加入:
set shmsys:shminfo_shmmax=(0.5*物理内存)*1024*1024的数值
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=100
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=100
set semsys:seminfo_semmns=200
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
set ulimit=3000000
(7) passwd oracle
(8) Reboot
二.用oracle 用户做:
(1)vi /etc/oracle/.profile(.cshrc) 在最后一行加入:

#evn for install oracle
set ORACLE_BASE /data/u01/oracle
set ORACLE_HOME /data/u01/oracle/product/8.1.7
set ORACLE_TERM xsun5
set LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/openwin/lib:/usr/dt/lib
set CLASSPATH .:/data/u01/oracle/product/jdbc/lib/classes111.zip:/data/u01/oracl
e/product/jdbc/lib/nls_charset11.zip:/export/home/oracle/trade_prog
set PATH .:/export/home/oracle/trade_prog:/bin:/usr/openwin/bin:/usr/bin:/usr/uc
b:/usr/local/bin:/data/u01/oracle/product/bin
set NLS_LANG AMERICAN_AMERICA.ZHS16CGB231280
#set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
set ORACLE_SID orcl
set DISPLAY 192.168.0.190:0.0

(2)退出,再用oracle登录,使新的环境生效
(3)cd /cdrom/cdrom0 运行 runInstaller(注意看提示,他会告诉你root.sh的位置的)
(4) 当提示用户输入用户组的时候,以root身份运行/cdrom/cdrom0/oracle8.1.7/OraInstall/orainstRoot.sh脚本(su; ./*.sh)
(5)当安装到100%时,以root身份运行/data/oracle/product/8.1.7/root.sh脚本(注意看提示,他会告诉你root.sh的位置的)

三.安装完毕后用Oracle用户做
(1)运行$ORACLE_HOME/8.1.7/bin/svrmgrl
(2)Connect internal
(3)Shutdown
(4)Startup
(5)如果启动sqlplus可以用internal用户去登陆的


3 oracle数据库创建和设置
3.1 打开数据库
dbstart 打开服务器
sqlplus
connect internal
startup nomount打开数据库

3.2 创建数据库
数据库的信息存储在system表空间中,dba最好保证在system中只有数据字典的系统回滚段。而其他数据最好单独设置表空间,如果你熟悉SYBASE,我想ORACLE的表空间和SYBASE的数据库设备有些类似,只是有些行为不同而已,ORACLE要生成以下表空间。
*系统表空间(必须)
*用户数据表空间(optional) 存放用户数据段
*索引表空间(optional) 存放索引段
*回滚表空间(optional) 存放回滚段
*临时表空间(optional) 存放临时段
如果只有系统表空间,ORACLE会把所有数据库对象存放在SYSTEM TABLESPACE。

CREATE DATABASE "ICDB"
maxdatafiles 100
maxinstances 8
maxlogfiles 32
character set US7ASCII
national character set US7ASCII
DATAFILE '/data/u01/oracle/oradata/ICDB/system01.dbf' SIZE 80M AUTOEXTEND ON NEXT 1024K
logfile '/data/u01/oracle/oradata/ICDB/redo01.log' SIZE 500K,
'/data/u01/oracle/oradata/ICDB/redo02.log' SIZE 500K,
'/data/u01/oracle/oradata/ICDB/redo03.log' SIZE 500K

2. 3创建表
学生资料表
create table student
(student_id varchar2(10) not null,
name varchar2(20) ,
birth_date date,
constraint pk primary key (student_id))
tablespace users
pctfree 20 pctused 50
initrans 1 maxtrans 255
nocache logging
storage (initial 100K next 10k minextents 4 maxextents 300 pctincrease 20);

学科名称表
create table course_note
(course_id varchar2(10) not null,
course_name varchar2 (40),
constraint pk_course_note primary key (course_id))
tablespace users
pctfree 20 pctused 50
initrans 1 maxtrans 255
nocache logging
storage (initial 100K next 10k minextents 4 maxextents 300 pctincrease 20);


学生成绩表
create table record
(student_id varchar2(10) not null,
course_id varchar2(10) not null ,
scores number(10,1),
constraint pk_record primary key (student_id,course_id),
constraint fk_record_1 foreign key (student_id) references student(student_id),
constraint fk_record_2 foreign key (course_id) references course_note(course_id) )
tablespace users
pctfree 20 pctused 50
initrans 1 maxtrans 255
nocache logging
storage (initial 100K next 10k minextents 4 maxextents 300 pctincrease 20);

2.4 创建索引
create index student_id on student(name)
tablespace INDX
pctfree 20
initrans 2 maxtrans 255
logging nosort
storage (initial 100K next 10k minextents 4 maxextents 300 pctincrease 20);

3. 5创建视图