ITPub博客

首页 > Linux操作系统 > Linux操作系统 > redhat开源版本(如centos)oracle安装事宜

redhat开源版本(如centos)oracle安装事宜

原创 Linux操作系统 作者:kidking2010 时间:2011-07-26 19:27:30 0 删除 编辑
--安装oracle前的准备:

-1.hareware required:
at least 1G  physical memory        (移动的海量内存250G)
swap  >  physical memory *1.5
/tmp >400m

补丁patch:
rpm -ivh compat-oracle-rhel4-1.05.i386.rpm            可打可不打,在生产环境中最好打,需网络下载

rpm -ivh /mnt/cdrom/redhat/rpms/libaio-0.3.102-1.i386.rpm        也是一个补丁,也是可打可不打,这两个包不影响现在的安装

yum install -y libXp                    这个包要装,否则装oracle和运行都会出现问题

-2.create database:
groupadd dba
groupadd oinstall                
useradd oracle -g oinstall -G dba            
passwd oracle


mkdir -p /opt/oracle/product/10g
mkdir /opt/oracle/database
chown -R oracle.oinstall /opt/oracle
chmod 755 -R /opt/oracle

-3.configure environment 变量
vi ~/.bash_profile

export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/10g
export ORACLE_SID=orcl                    SID不要超过8位,超过8位会自动只取前8位
export PATH=$ORACLE_HOME/bin:$PATH

source ~/.bash_profile                   source一下使他生效

-4.modify kernel parameter
vi /etc/sysctl.conf            

kernel.shmmax = 2148483648
kernael.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144    
net.core.wmem_max = 262144        


sysctl -p    使生效

配置这些参数是为了更好的支持oralce,具体意思要查询相关文档,如果用oralce公司的linux系统就不用了,它已经调好了

注意这些参数写的时候等号两边要有空格,否则用vim看sysctl文件颜色会变                                            


-5.vi /etc/pam.d/login
session    required    /lib/security/pam_limits.so


vi /etc/security/limits.conf            文件限制
    oracle    soft    nproc    2047
    oracle    hard    nporc     16384
    oracle    soft    nofile    1024
    oracle    hard    nofile    65536    

然后把oracle的安装包拷过来10201_database_linux32.zip     
解压unzip 10201_database_linux32.zip  -d /opt/oracle/    下         也可以解压到别的地方  不要解压到/opt/oracle/product/10g下,因为这是数据库10g的家目录

然后在root用户下用xhost + 给oralce用户一个图形安装界面

再su - oracle切换到oralce用户

cd /opt/oracle/database
有一个runinstaller的文件
./runinstaller    就可以用图形安装了             (见图1)
                设置一个密码,要求以字符开头的密码,数字开头的不行
                上面的是基础安装,下面的是高级安装,这里默认就用上面的基础安装
                点下一步
    --(问题:当打开图形时出现的乱码情况,就要去root用户查看一下语言环境,并改为中文,vi /etc/sysconfig/i18n 或者export lang=en_US )
(见图2)   直接下一步
(见图3) 这里会check你的安装要求是否都通过,通过的有succeeded,错误会显示error,或者警告warning 信息,并会在下方显示,根据他的提示来修改
(见图4)这里点password management 可以改密码,(见图5)看到目前只有SYS和SYSTEM两个管理用户是解锁的,别的用户都是锁着的,这里先不解锁点OK到下一步
安装完后,会提示要用root用户再运行这两个脚本(也可以安装完后再做),这时可以再开一个终端用root用户运行完这两个脚本(运行时会告诉你这两个脚本做了什么,只是改了下目录权限和确认了一下环境变量等),再点OK完成安装
 


 
sqlplus  "/as sysdba"   能登录表示安装OK


装完后
要支持在oracle命令里支持上下翻页要装三个包
IO-Tty-1.07.tar.gz Term-ReadLine-Gnu-1.16.tar.gz uniread-1.01.tar.gz
cd $IO-Tty/
cd $Term-ReadLine-Gnu/
cd $uniread/
perl Makefile.PL;make;make install  这三个软件都要编译
whereis uniread   看是否有这个命令 
su - oracle
~/.bash_profile
    加一句 alias sql="uniread sqlplus"
source .bash_profile  使之生效   
然后要用sql "/as sysdba"去登录才能翻页,  因为sql命令是uniread sqlplus的别名
用sqlplus "/as sysdba"也能登录,但不能翻页

--############################################################
linux下完全卸载oralce 10g   (在AIX系统下也可行,别的系统还未经测试)

-1.$ORACLE_HOME/bin/localconfig delete        用root用户执行
-2.rm -rf $ORACLE_BASE/ *                    用oracle用户执行               
-3.rm -rf /etc/oraInst.loc    /etc/oratab            用root用户执行
-4.rm -rf /etc/oracle                            用root用户执行
-5.rm -rf /usr/local/bin/coraenv /usr/local/bin/dbhome    /usr/local/bin/oraenv        用root用户执行
-6.userdel oracle               groupdel dba        groupdel oinstall                要完全卸载就要把用户和组也删掉


上面都是安装时要写入的文件,要这样来卸载, 直接rm 掉oracle家目录是不行

--##############################################################


管理员职责:管理数据库正常可用。
    根据开发要求设计创建数据库
    管理物理结构
    管理与设计规划存储
    管理与维护安全性
    网络配置与管理 (net8协议)
    备份与恢复保证数据的完整与可靠性。
    数据库性能监控与调整。


DG:数据的保护与容灾。 data guard    (standby database)

RAC  :real application cluster    实现instance集群



开发方向的DBA:plsql  java  php  c/c++  EBS
oracle软件是30%c/c++和70%java


学习:   熟练它的结构;
 熟练所有的操作命令(非图形);
熟练性能维护的视图或工具,如:statspack/wait interface event
         

逻辑结构,体系结构。

oracle启动脚本:

dbstart
dbshut

要用上面的脚本,要更改下面两个配置文件。
[oracle@stu140 bin]$ vi /etc/oratab
orcl:/opt/oracle/db/10g:Y
[oracle@stu140 bin]$ vi $ORACLE_HOME/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME


也可以自己手动写脚本:
sql /nolog <conn /as sysdba
startup
EOF


sql /nolog <conn /as sysdba
shutdown immediate
EOF

--#####################################################################################################################

oracle安装后的组件介绍:

$ORACLE_HOME/bin  目录下   包括了很多工具(其中就有重要的sqlplus)

sqlplus "/as sysdba" 或者sqlplus '/as sysdba' 或者sqlplus / as sysdba  (/后面有个空格)  这里不用密码登录上,因为是用oracle用户去登录的,它是属于dba组的(前面装oracle时做过这个步骤)

$ORACLE_HOME/network/admin  目录下是做网络配置的        可以直接vi 来改,也可以用netmgr这个命令来图形配置(不过用这个命令配置的话,先确认这个目录下没有listener.ora和tnsname.ora文件,这样才可以去用图形新建)

host 写上主机名或者IP   注意主机名不要写错,否则会启不了监听    --(见图7)    
上面选database service    下面点add database   --(见图8)

改一下global database name   确认家目录 和SID没错  --(见图9)

再改tnsname.ora

选择tnsname.ora后  点左上角的绿色+号   写一个网络服务名,随便写,比如我要连66就写一个o66  --(见图10)

选择连接方式,这里有三种方式,这里选择TCP  下一步  --(见图11)

填写远端服务器IP或者地址        --(见图12)

填写远端服务器库名  下面选择dedicated server      (也可以选择共享模式)  --(见图13)

再点finish完成,最后点右上角的X     会问你是否保存,保存退出



配好后 可以看一下
vi listener.ora        这是监听文件,如果是服务器端只要配这个就可以了

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /opt/oracle/product/10g)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521))--(这是本机的主机名,监听端口默认为1521,用TCP连接)
  )


vi tnsname.ora        客户端远程登录别人要配置这个

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = li.lll.com)(PORT = 1521))        --(这就表示能登录li.lll.com这台主机,或者写上IP,)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

o212 =                                    --(随便改个名,远程登录时要用,这是网络服务名,是客户端自己给远程服务器取的名)
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.212)(PORT = 1521))    --(这里表示能登录10.1.1.212,这一大段是把上面一段直接拷一份修改就行)   
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)                --(这里是服务器端的服务名)
    )
  )


lsnrctl     start  命令启动监听     然后netstat -ntl | grep 1521  看到端口起来了
lsnrctl    stop    关闭监听
lsnrctl    stat    查看监听状态

远程登录方法:
sqlplus sys/oracle@o212 as sysdba        来远程登录


 这就是一个C/S模式, 有时会给你一个测试库的IP和密码  让你去做一份工作,  远程登录就是第一步

如果客户机没有,

ORACLE支持大并发(支持几千个session并发,比如10086的查话费余额,在移动里还算小的库,并发也是几千的)


--#################################################################

数据库的三种
RDBMS 关系型数据管理系统  mysql是这种  做一个插件能支持对象中的类
ODBMS 对象数据管理系统  
ORDBMS 又是关系又是对象   oracle是这种
sqlplus /nolog   不连接登陆
conn /as sysdba    用超级管理员身份连上
startup  可以启动
shutdown immediate 关闭
SQL> alter user scott identified by tiger account unlock; 选择scott用户密码为tiger 并解锁  在10i里是锁的  9i里是默认没锁的
SQL> conn scott/tiger  用scott用户连入  或者直接在最外面用sql scott/tiger连

SQL语句

先用scott这个用户来测试(ORACLE创建的用来测试的用户,这个用户下有几张表用来做测试的,默认是锁的,要解锁)

SQL> alter user scott identified by tiger account unlock;    设置scott用户密码为tiger,并解锁  (不过默认它的密码也是tiger)

User altered.

SQL> grant connect,resource to scott;              授权

Grant succeeded.

conn scott/tiger            用scott用户连接

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE

SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)



SQL> select ename,sal,hiredate from emp;                    不区分大小写

ENAME             SAL HIREDATE
---------- ---------- ---------
SMITH              800 17-DEC-80
ALLEN            1600 20-FEB-81
WARD             1250 22-FEB-81
JONES            2975 02-APR-81            --(字符串和时间类型是默认是左对齐,数值是右对齐,这里是复制的,所以不够齐~.~)
MARTIN          1250 28-SEP-81
BLAKE            2850 01-MAY-81           
CLARK            2450 09-JUN-81
SCOTT            3000 19-APR-87
KING               5000 17-NOV-81
TURNER         1500 08-SEP-81
ADAMS            1100 23-MAY-87

ENAME             SAL HIREDATE
---------- ---------- ---------
JAMES             950 03-DEC-81
FORD             3000 03-DEC-81
MILLER           1300 23-JAN-82

14 rows selected.

                       
SQL结构查询语言
包括DQL 数据查询语言  主要指select
   DDL 数据定义语言  主要指create alter drop rename truncate (这些语句一执行不能回退)
   DCL 数据控制语言  主要指grant revoke
   DTL 数据事物语言  主要指commit rollback  savepoint
   DML 数据操纵语言  主要指 insert update delete merge



列的别名:三种方法
空格后接别名
as 别名
“别名”      当别名里有空格或者特殊字符时就用双引号括起


字符串:
日期和字符只能在单引号出现

SQL> select ename|| ' sal is '||sal from emp;        连接符

ENAME||'SALIS'||SAL
----------------------------------------------------------
SMITH sal is 800
ALLEN sal is 1600
WARD sal is 1250
JONES sal is 2975
MARTIN sal is 1250
BLAKE sal is 2850
CLARK sal is 2450
SCOTT sal is 3000
KING sal is 5000
TURNER sal is 1500
ADAMS sal is 1100

ENAME||'SALIS'||SAL
----------------------------------------------------------
JAMES sal is 950
FORD sal is 3000
MILLER sal is 1300

14 rows selected.

SQL>select sal.(sal+100)*12 from emp;  (把sal加上一百再12倍)
有+ - * / ()等运算

SQL>select sal.(sal+100)*12 asal from emp; (别名为asal,但默认为大写)
SQL>select sal.(sal+100)*12 “asal“ from emp; (这样别名就为小写的asal,sql语句不区分大小写,但在单或者双引号下就区分大小写)

SQL>clear screen  清屏命令  支持简写  可以SQL>cle scr

不属于SQL语句的可以不用; SQL语句就要用;

SQL>spool /vmware/oracle/bak/emp.txt
SQL>select ename,sal from emp;
SQL>spool off
这三句可以把emp表的ename,sal项的内容写到emp.txt里

SQL>ho  cat /vmware/oracle/bak/emp.txt 用ho接shell命令直接调用shell的命令
SQL>!    打完!号再可以输入shell命令

当写错了 替换方法
SQL>select ename,sa from emp;  这一句sa写错了
SQL>l 1  选择1
SQL>c/sa/sal  sa换成sal
SQL>/

SQL>/
SQL>run
SQL>r    这三条命令是执行前一次执行的SQL语句

SQL>select empno..............................from emp;  很长的一条SQL语句
SQL>save /vmware/oracle/bak/1.sql  把这个很长的语句保存下来方便下次用   要以.sql结尾
SQL>@ /vmware/oracle/bak/1.sql    执行它  最后用1或者1.sql都可以
SQL>start /vmware/oracle/bak/1    这种也可以 最后1或者1.sql
SQL>get /vmware/oracle/bak/1   这种也可以 get只是把它读到缓存里还没执行
SQL>l 1 查看发现读进来了   可以看清是要执行的再用run / r 三种之一执行  
SQL>run



SQL书写标准 
    大小写不区分,单引或者双引里的要区分
    关键字不能省略 如select from
    可以分行写,但关键字和单双引内的不能分行写
    别名一般用双引
    字符串用单引


别名的好处
SQL>select ename as "ename",job from emp;
1,非法语句合法化     30个字符以上的名字会报错  用别名就不会
2.
3.做子查询的别名,让子查询语句可以执行

去除重复行
SQL>select distinct deptno from emp;  去掉deptno里的重复行  这个要排序
SQL>select unique deptno from emp;  也是去掉重复行  这个不要排序 效率要高点

SQL>select ename from emp where sal>3000;   用where做查询限制  查出所有工资大于3000的
SQL>select ename from emp where sal between 2000 and 3000;  查工资大于2000小于3000的 
SQL>select ename from emp where sal sal>=2000 and sal<=3000; 用运行符查
SQL>select ename from emp where sal in(3000,5000); 查工资为3000或者5000的
SQL>select ename from emp where ename like 'A%'; 查询匹配A开头的    -  短横匹配一个字符   %多个字符  s-转义  s%转义
SQL>select ename from emp where ename like '--A'; 查询三个字符 第三个字符为A的项
SQL>insert into emp (empno,ename,sal) values (51,'B%123',10000); 
SQL>select ename from emp where comm is not null; 查询非空值   有奖金的员工 空值这里没有资金  空值也会占一个位   只是现在没有值


SQL优先级别
1算术
2|| (连接字符串用)
3关系
4 is null/is not null, like ,in  
5 between
6 not   (取反)
7 and
8 or 


SQL>select sal from emp order by sal asc;  升序排列
SQL>select sal from emp order by sal desc; 降序排列
SQL>select sal from emp order by sal 2 desc;


小练习:
查询部门为30的员工名字,职位,薪水
SQL> select ename,job,sal from emp where deptno=30;

查询字符最后为N的员工的上级领导是哪个
SQL> select mgr from emp where ename like '%N';

显示员工名字,上班日期,反序排列
SQL> select ename,hiredate from emp order by hiredate desc;

显示10部门员工 按照ename "sal is:"sal,
SQL> select ename||' sal is: '||sal||' ,comm is:'||comm from emp;

今天一个同事问我在安装数据库的时候出现了
Exception in thread "main"java.lang.InternalError: Can't connect to X11 window
serverusing ':0.0' as the value of the DISPLAY variable.

这个错误是为什么,其实我知道是由于当前用户不是oracle或者环境变量设置的不正确导致的,因为每次都是用oracle用户解压,安装,没有遇到这个问题,所以也没有仔细研究过这个错误,今天正好同事问到我这个问题,如果不回答清楚了显的我很不专业,呵呵,在这里简单说明一下自己的理解:

cause:
X-Windows emulation is not yet correctly configured or is being mis-used.
solution:
1.Make sure that "DISPLAY” is set properly as either:
     :0.0
          or
     :0.0
note:In this example, ip_address/hostnameis the host name or IP address of the system that you want to use to display Oracle Universal Installer (your workstation or PC).
eg.[root@rac1 ~]# xhost +
access control disabled, clients can connect from any host
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ export DISPLAY=192.16.2.98:0.0
[oracle@rac1 ~]$ cd database/
[oracle@rac1 database]$ ./runInstaller
Starting Oracle Universal Installer... 
Checking installer requirements... 
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
                                      Passed 
All installer requirements met. 
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-03-05_03-36-28PM. Please wait ...[oracle@rac1 database]$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999,2005, Oracle. All rights reserved.

2. Oracle Customer Support has seen instances where use of the UNIX/Linux “su” command, even “su - oracle” has caused this “Can't connect to X11 window server” error. Therefore, please be sure that you are LOGGED ON as the oracle account. Log directly into the install session. Do not use any variety of “su”.
     use oracle log on , not "su - oracle"
eg. [oracle@rac1 database]$ ./runInstaller

3.Oracle Customer Support has seen instances where the incorrect “ulimit” setting for number of files (aka “-n”, aka “nofiles”) has caused this “Can't connect to X11 window server” error. Therefore, please be sure that your values for “nofiles” in the output of “ulimit -a” is at least 65536.

备注:前2个办法只需要满足其中一个就可以避免这个错误了:直接用oracle登陆,不能su - oracle  or 设置display=ip_address_that you want to use to display Oracle Universal Installer:0.0


注意在给了xhost +以后

图形安装直接这样 su oracle

然后执行安装脚本


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23141985/viewspace-703165/,如需转载,请注明出处,否则将追究法律责任。

下一篇: CentOS 配置 ntp
请登录后发表评论 登录
全部评论

注册时间:2011-02-27

  • 博文量
    110
  • 访问量
    307912