现在的位置: 首页 > 综合 > 正文

centos 6.x 下oracle 11g 安装配置 [简单记录]

2018年01月21日 ⁄ 综合 ⁄ 共 10150字 ⁄ 字号 评论关闭

      以前都是用oracle 10g 现在也顺便用用11g 顺便就帖上安装过程,简单记录一下,做一个存档。            

一、   安装数据库软件

1.         创建oracle用户

groupadd oinstall

 groupadd dba

 useradd -g oinstall -G dba oracle

 id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

 passwd oracle # set password "oracle"

2.         创建相关目录及授权

cd  /data                       

mkdir u01 u03 u04 u05           

chown oracle:oinstall u01 u03 u04 u05

mkdir -p /data/u01/app/oracle   

chown -R oracle:oinstall /data/u01/app/oracle

chmod -R 775 /data/u01/app/oracle

3.         配置内核参数

 

vim /etc/sysctl.conf 然后添加下列参数

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.aio-max-nr = 1048576

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 2097152

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_syn_retries = 3

net.ipv4.tcp_synack_retries = 3

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 7000

net.core.netdev_max_backlog = 2000

net.core.rmem_default = 8388608

net.core.wmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_rmem = 4096     87380   16777216

net.ipv4.tcp_wmem = 4096     65536   16777216

net.ipv4.igmp_max_memberships = 1000

net.core.optmem_max = 40960

然后

sysctl -p

使配置生效

4.         修改用户限制

vim /etc/security/limits.conf

添加内容

oracle soft nproc 16384

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

5.         修改安全限制

vim  /etc/pam.d/login

增加:

session required /lib64/security/pam_limits.so

6.         设置环境变量

su - oracle

 

vi /home/oracle/.bash_profile

注释

#PATH=$PATH:$HOME/bin

#export PATH

添加:

export ORACLE_TERM=xterm

export ORACLE_TERM=xterm

export TMP=/tmp

export ORACLE_SID=psprd1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/1020

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=$ORACLE_HOME/bin:/usr/bin:/bin:/usr/local/bin:$PATH:$HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

umask 022

 

 vim .bashrc

添加:

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8export

 

vim /etc/profile

添加:

HISTFILESIZE=2000

HISTSIZE=2000

HISTTIMEFORMAT="%Y%m%d-%H:%M:%S:"

export HISTTIMEFORMAT

7.         检查依赖包

可以使用下列命令查看需要安装的包:

rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils \

compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc \

glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel

以及

rpm -q gcc make binutils openmotif setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel libXp

8.         安装oracle 软件

  1. 载安装包并解压

[版本 11.2.0.1.0]

下载地址:官网下载地址

 这里下载的是 

 linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip

然后解压就可以。

unzip linux.zseries64_11gR2_database_1of2.zip && unzip linux.zseries64_11gR2_database_2of2.zip

解压后会生成一个database文件夹,两个压缩文件都会解压到database文件夹中

  1. 图形化界面安装

切换到图像界面 startx 或vnc都可以 root 下 xhost +

cd database

./runInstaller 或者 ./runInstaller –ignoreSysPrereqs

 

这里需要你填写邮件地址,可以不填报错没关系。

 

这里选择只安装oracle 软件即可

选择单库安装,如果你是rac就选择下面那个选项

 

增加中文的支持

 

选择安装的版本,这里选择企业版

 

指定base和home目录,保证两个目录以及存在并具有写权限

 

下一步

 

环境检查,如果有问题需要开启另外的会话修改后重新检查直到最后剩下图里面的哪些包,然后忽略即可。

 

下一步

 

下一步

 

切换到root用户按顺序执行下述两个文件即可

 

 

看到这里,Oracle 11g数据库软件就安装完成了。

二、   图形化界面创建数据库

还是那句话,一切为了方便!

切换到oracle 用户下 su  - oracle

执行dbca 然后就创建吧,主要注意的就是SGA设置大概60-65% ,

PGA 16-20% 的物理内存,同时注意字符集建议使用Unicode utf8最大兼容中文,这里就不截图了。

三、   配置监听和本地服务名

1,配置监听

进入/data/u01/app/oracle/product/11.2.0.2/network/admin

创建监听文件vim listener.ora 添加如下内容:

LISTENER =

  (ADDRESS_LIST=

        (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.253.150)(PORT=1521))

        (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)

)

)

启动并查看监听状态:

lsnrctl start

过5分钟后查看状态

lsnrctl status

看到这样的内容差不多就算配置成功:

Service "orcl" has 1 instance(s).

  Instance "orcl", status READY, has 1 handler(s) for this service...

Service "orclXDB" has 1 instance(s).

  Instance "orcl", status READY, has 1 handler(s) for this service...

The command completed successfully

2,配置本地服务名

进入/data/u01/app/oracle/product/11.2.0.2/network/admin

创建监听文件vim tnsnames.ora 添加如下内容:

vba1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.253.150)(PORT =1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

测试本地服务名是否可用

tnsping vba1

看到如下内容说明配置成功:

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =10.1.253.15)(PORT =1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

OK (10 msec)

3,添加oracle自启动

1,  Root用户修改/etc/oratab 添加

2,  Root用户修改$ORACLE_HOME/bin/dbstart和dbshut

找到ORACLE_HOME_LISTNER=$1将此处改为

ORACLE_HOME_LISTNER=$ORACLE_HOME

3,root用户下创建/etc/init.d/oracle 文件然后添加如下内容:

#==================Script File Start==================

#!/bin/bash

#

#chkconfig: 345 51 49

#description: init script to start/stop oracle database 10G,TNS listener

#match these values to your environment.

 

export ORACLE_TERM=xterm

export TMP=/tmp

export ORACLE_SID=orcl

export ORACLE_OWNER=oracle

export ORACLE_USER=oracle

export ORACLE_BASE=/data/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.2

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=$ORACLE_HOME/bin:/usr/bin:/bin:/usr/local/bin:$PATH:$HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

#see how we are called:

 

case "$1" in

   start)

        echo -n "Starting oracle"

        su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart" &

        su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"

        touch /var/lock/subsys/oracle

        echo

        ;;

   stop)

        echo -n "Shutting down oracle"

        su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut" &

        su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"

        rm -f /var/lock/subsys/oracle

        echo

        ;;

   restart)

        echo -n "Restarting oracle"

        $0 stop

        $0 start

        echo

        ;;

   *)

   echo "Usage: basename $0 {start|stop|restart}"

   exit 1

esac

exit 0

#====end============================

然后chmod +x /etc/init.d/oracle

最后chkconfig --add oracle

四、   参数的调整

在调整参数前记得先备份一份spfile和init.ora

相关目录如下:

/data/u01/app/oracle/admin/orcl/pfile

cp  init.ora.3172014132717  init.ora.3172014132717.bak

 

sqlplus  sys用户登陆导数据

 

SQL> show parameter control files;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time        integer     7

control_files                        string      /data/u02/orcl/control01.ctl,

                                                 /data/u01/app/oracle/flash_rec

                                                 overy_area/orcl/control02.ctl

control_management_pack_access       string      DIAGNOSTIC+TUNING

如果觉得备份保留时间太长可以调整

SQL> alter system set control_file_record_keep_time  = 3 scope=both;

 

参数调整后记得备份一份spfile或创建一份pfile保存到相应目录下即可。

SQL>create pfile='/data/u04/pfile_dir/orclpfile.ora' from spfile;

另外如果备份时间觉得太长的话可以适当加到large pool size 的大小,这里就不一一列出。

附注

0, 创建表空间(临时)设置自动扩展

create tablespace vba datafile '/data/u03/oradata/orcl/vba1.dbf'  size 10G autoextend on next 100m maxsize 30G, '/data/u03/oradata/orcl/vba2.dbf'  size 10G autoextend on next 100m maxsize 30G, '/data/u03/oradata/orcl/vba3.dbf'  size 10G autoextend on next 100m
maxsize 30G;

 

#删除表空间及其对应的文件

drop tablespace stream_tbs including contents and datafiles

# 创建streams管理员帐号并授予权限("DEFAULT" 必须是大写)

create user  vba  profile "DEFAULT" identified by xxx default tablespace vba_tmp quota unlimited on vba;

1,创建dump目录:

create directory dump_dir  as  '/data/u04/dump_dir';

grant read,write on directory dump_dir to vba;

select * from  dba_directories;

2,备份spfile:

create pfile='/data/u04/pfile_dir/orclpfile.ora' from spfile;

3,创建oracle命令行帮助:

su –oracle 进入cd $ORACLE_HOME/sqlplus/admin/help

Sqlplus system/xxx 登陆

执行@helpbld.sql会提示输入两个参数,第一个输入. 表示当前目录

第二个是helpus.sql 文件然后回车执行即可

4,Undo表空间预估大小语句 :

SELECT TRUNC(((UR * (UPS * DBS)) + (DBS * 24))/1024,2) ||' MB' AS "UNDO ESTIMATES SIZE"

FROM (SELECT VALUE AS UR FROM V$PARAMETER WHERE NAME = 'undo_retention'),

(SELECT (SUM(UNDOBLKS)/SUM(((END_TIME - BEGIN_TIME)*86400))) AS UPS FROM V$UNDOSTAT),

(SELECT BLOCK_SIZE AS DBS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME=

(SELECT UPPER(VALUE) FROM V$PARAMETER WHERE NAME = 'undo_tablespace'));

5,查询表结构:

select DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') from dual;

6,查看导入导出job情况:

select owner_name,job_name ,state from dba_datapump_jobs;

expdp ATTACH=job_name

impdp ATTACH=job_name

7,常用备份脚本

导出

expdp xxxx/xxxx@vba1 dumpfile=dp_reporttemp%U.dmp schemas=reporttemp logfile=dump_reporttemp_exp.log directory=DATA_PUMP_DIR job_name=vreporttemp_dump_job PARALLEL=2 compression=all

导入

impdp xxxx/xxxx@vba1 dumpfile=dp_reporttemp01.dmp,dp_reporttemp02.dmp schemas=reporttemp logfile=dump_reporttemp_exp.log directory=DUMP_DIR job_name=reporttemp_imdp_job PARALLEL=4 TABLE_EXISTS_ACTION=replace

8,杀死会话

SELECT 'alter system kill session ''' || c.sid || '' || ',' || c.serial# ||''';',         a.object_id, a.session_id, b.object_name, c.*   FROM v$locked_object a, dba_objects b, v$session c   WHERE a.object_id = b.object_id   AND a.SESSION_ID = c.sid(+)   AND
schemaname = 'Unmi'  ORDER BY logon_time;

9,查询表空间的大小

select a.tablespace_name,total,free,total-free used from  

( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files  

group by tablespace_name) a,  

( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space  

group by tablespace_name) b  

where a.tablespace_name=b.tablespace_name;

 #查看表空间和用户的关系

select tablespace_name, owner,sum(bytes) from dba_segments 

group by tablespace_name, owner

#查看表空间资源限制

  select * from dba_ts_quotas

ps:如果之前某个用户具有dba权限,后来进行回收那么需要资源控制赋权

grant   unlimited   tablespace   to  user_name;

 或

alter user user_name  quota unlimited on tablespace_name;

否则会出现空间不足的问题 ,回收用 

  revoke unlimited tablespace from user_name;

10,查看段的大小

Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name  ;

11,查询oracle正在执行的语句及用户信息

set linesize 200;

col sid for 99999;

col username for a10;

col  sql_text for a25;

col  machine for a15;

SELECT b.sid , 

       b.username , 

       spid  ,

       sql_text , 

       b.machine   

FROM v$process a, v$session b, v$sqlarea c 

WHERE a.addr = b.paddr 

   AND b.sql_hash_value = c.hash_value; 

或者下面这个更好

Set linesize 200;

Col OSUSER for a10;

Col PROGRAM for a30;

Col SCHEMANAME for a15;

Col Cpu_Time for 999999999.99;

Col STATUS for a10;

Col SQL_TEXT for a25;

SELECT OSUSER, 

       PROGRAM, 

       USERNAME, 

       SCHEMANAME, 

       B.Cpu_Time, 

       STATUS, 

       B.SQL_TEXT

FROM V$SESSION A 

LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS 

                   AND A.SQL_HASH_VALUE = B.HASH_VALUE 

ORDER BY b.cpu_time DESC;

12,查询sql锁情况

 SELECT 'alter system kill session'||' '''||l.session_id||',' || s.serial# ||' '';' as killsql,

       l.session_id sid, 

       s.serial#, 

       l.locked_mode  , 

       l.oracle_username  , 

       l.os_user_name  , 

       s.machine  , 

       s.terminal , 

       o.object_name 被锁对象名, 

       s.logon_time  

FROM v$locked_object l, all_objects o, v$session s 

WHERE l.object_id = o.object_id 

   AND l.session_id = s.sid 

ORDER BY sid, s.serial#;

完!

抱歉!评论已关闭.