您的位置:首页 > 数据库 > Oracle

CentOS6.5下安装Oracle11g

2015-08-26 14:38 661 查看

在Linux下安装Oracle

一、安装前系统准备

1. 修改主机名

#sed -i "s/HOSTNAME=localhost.localdomain/HOSTNAME=oracledb/" /etc/sysconfig/network

2.添加主机名与IP对应记录

# vi /etc/hosts

192.168.1.160 oracledb

3.关闭Selinux

#sed -i
"s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

# setenforce 0

4.安装依赖包

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

5.创建用户和组

[root@oracledb ~]# groupadd oinstall

[root@oracledb ~]# groupadd dba

[root@oracledb ~]# useradd -g oinstall -G dba
oracle

[root@oracledb ~]# passwd oracle

6.创建安装目录

[root@oracledb ~]# mkdir -p
/opt/oracle/app/

[root@oracledb ~]# mkdir -p /opt/oracle/oradata/

[root@oracledb ~]# chmod 755/opt/oracle/

[root@oracledb ~]# chmod 775/opt/oracle/app/

将该目录的所有者设置为oracle : [root@oracledb ~]# chown oracle.oinstall -R
/opt/oracle/

7.修改内核参数

#vim/etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

运行#sysctl -p ,即可马上生效。

运行 #sysctl -p 命令报错

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

error: "net.bridge.bridge-nf-call-iptables" is an unknown key

error: "net.bridge.bridge-nf-call-arptables" is an unknown key

解决方法,执行如下命令:

#modprobe bridge

#lsmod|grep bridge

8. 修改用户的SHELL的限制

#vim/etc/security/limits.conf

在最后面添加如下内容:

oracle soft
nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

# vi/etc/pam.d/login

session required
pam_namespace.so #下面添加一条pam_limits.so

session required pam_limits.so

# vi/etc/profile

在末尾添加如下语句:

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

umask 022

fi

9.设置oracle的环境变量

切换到oracle用户下:

# vi ~/.bash_profile

umask 022

export ORACLE_BASE=/opt /oracle/app

export
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=zydev

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

export
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

[oracle@oracledb ~]$ source
.bash_profile #立即生效

二、
安装oracle

1.上传文件

上传文件到/usr/local/src下

2.解压文件

[root@oracledb~]# unzip /usr/local/src/linux.x64_11gR2_database_1of2.zip

[root@oracledb~]# unzip /usr/local/src/linux.x64_11gR2_database_2of2.zip

3.安装向导

解决字符集问题

export LANG=en_US

/usr/local/src/database# ./ runInstaller

#输入接受一些安全问题的邮件地址,选择不接受

# 选择安装数据库软件并创建数据,也可以选择第二项仅安装数据库软件

#选择服务器版本

#单实例数据库

#高级模式安装

#添加支持的语言

#选择要安装的版本

#选择你要安装的服务

#安装数据库目录

#数据库名及服务名 #开启自动内存管理 #设置默认编码为UTF8

#启用Oracle企业管理控制台OEM

#选择数据库文件目录

#自动备份设置

#设置数据库用户名和密码

#授权的组

#检查Oracle一些安装要求,包都已经安装,直接忽略

#开始安装

安装完成后,会出来一个对话框,提示使用root用户执行这两个脚本/opt/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

opt/oracle/oraInventory/orainstRoot.sh

至此整个数据库安装完成。

三、oracle基本知识

1.Oracle常用命令

[root@oracledb ~]# su –oracle

[oracle@oracledb ~]# sqlplus / as sysdba

SQL> startup #启动数据库实例

SQL> shutdown immediate #关闭数据库实例

SQL> select * from tab; #查看所有表

SQL> select name from v$datafile #查看数据库存放目录

SQL> show parameter service #查看服务名

SQL> select * from v$instance; #查看实例名

SQL> select name from v$database; #查看数据库名

SQL> select * fromdba_users; #查看所有用户信息

SQL> select username,password from dba_users; #只查询用户和密码

SQL> select * fromv$pwfile_users; #查看具有sysdba权限的用户

SQL> select * fromdba_ustats; #查看当前用户信息

SQL> select * fromuser_sys_privs #查看当前用户系统权限

SQL> select * fromuser_role_privs #查看当前用户角色

SQL> select * fromdba_sys_privs #查看指定用户所具有的系统权限

SQL> select * fromv$version #查看oracle版本

SQL> select * fromuser_views #查看视图信息

[root@oracledb ~]# lsnrctl start #开启远程监听端口

###远程连接信息

2.
oracle用户

#sys和system用户区别

1>.存储数据重要性不同

sys存放数据字典的基表和视图,由数据库自己维护,任何用户都不能手动更改,sys用户拥有dba、sysdba、sysoper等角色或权限,是oracle权限最高用户。

而system用户只存放一些一级的内部数据,如oracle的一些特性或工具的管理信息。用于数据库管理,System用户拥有普通dba角色权限。

2>.权限不同

sys用户具有sysdba或sysoper系统权限,登录em也只能用这两个身份,不能用normal。

system用户只能用normal身份登录em,除非你对它授予了sysdba的系统权限或syspoer系统权限。

#sysdba和sysoper两个系统权限区别

normal是普通用户

sysdba拥有最高的系统权限,登录后是sys

sysoper主要用来启动、关闭数据库,sysoper登录后用户是public

#dba和sysdba的区别

先了解下oracle服务的创建过程:创建实例 --> 启动实例 --> 创建数据库

启动过程:实例启动 --> 装载数据库 --> 打开数据库

sysdba是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,它就已经存在,以sysdba身份登录,装载数据库,打开数据库。只有数据库打开了,或者整个数据库完全启动后,dba角色才有存在的基础。

四、Oracle 管理实用案例

1.Oracle 监听

1.1检查 Oracle 监听状态

在 Oracle 用户下执行查询命令

su
- oracle

lsnrctl
status

查询结果会显示监听到的实例名称及数量。

1.2启动 Oracle 监听

在启动 Oracle 监听前,先检查
Oracle 监听状态,如果已经启动,需要先停止, 再重启

su
- oracle

lsnrctl
start

启动过程中,会自动检测监听到的实例名称及数量。

1.3停止 Oracle 监听

su
- oracle

lsnrctl
stop

检查 Oracle 监听状态,查看是否停止。

2.Oracle 服务

2.1.检查 Oracle 服务是否启动

方法一:检查 oracle
进程是否启动

ps
-ef | grep oracle

方法二:查看 Oracle
实例启动状态

su
- oracle

export
ORACLE_SID=SINDEV

sqlplus
/nolog

conn
/ as sysdba

select
instance_name,status from v$instance;

exit

查看 status 状态,为 OPEN 即说明该实例已经启动。

2.2.启动 Oracle 服务

先检查 Oracle 服务是否启动,如果已经启动,需要先停止 Oracle 服务再启动;

启动 Oracle服务命令:

su
- oracle

export
ORACLE_SID=SINDEV

sqlplus
/nolog

conn
/ as sysdba

startup

select
instance_name,status from v$instance;

exit

查看 status 状态,为 OPEN 即说明该实例已经启动。

2.3停止 oracle 服务

停止Oracle 服务命令

su
- oracle

export
ORACLE_SID=SINDEV

sqlplus
/nolog

conn
/ as sysdba

shutdown
immediate

exit

3.Oracle 存储空间管理

3.1表空间压缩

以 sysdba 的角色登录数据库,执行
SQL:

select
t.file#,

'alter database datafile ''' || t.NAME || ''' resize ' ||

(nvl(round((select max(a.block_id) * 8 / 1024

from dba_extents a

where a.file_id = t.FILE#)),0) +
10) || 'M;',

t.name,

t.BYTES / 1024 / 1024 size_M,

nvl(round((select max(a.block_id) * 8 / 1024

from dba_extents a

where a.file_id = t.FILE#)),0) +
10

from v$datafile t;

对查询结果进行分析,将可压缩量大的表空间进行重分配大小。

3.2清理数据库轨迹日志

进入到 $ORACLE_BASE$/diag/rdbms/$sid/$sid
目录下,可以对 trace 目录下的轨迹日志文件进行清理,释放一定的存储空间:

find
trace -ctime +30 | xargs rm -fr

参数 +30 意思是保留30天的存档,30天之前的日志全部删除。

3.3删除归档日志

此操作只针对已经启用归档模式的数据库,执行前先查询归档模式是否启用:

select
instance_name,archiver from v$instance;

查询结果如果为
STARTED,则表明已经启用归档,此时,可以手动清理旧的归档日志,释放归档日志占用的存储空间,执行命令:

su
- oracle

rman
target /

crosscheck archivelog all;

delete expired archivelog all;

(或者执行;delete
archivelog until time 'sysdate-15'; 保留15天的存档)

exit

3.4重建表空间

对数据文件进行查看分析,将占用存储空间特别大(如超过20G)的数据文件进行重建.

因临时表空间、UNDO表空间相对而言比较独立,如果临时表空间、UNDO表空间占用实际存储空间太大,可以参考此方法将临时表空间或UNDO表空间重建.

查看数据库物理文件占用的存储空间大小:

cd
$ORACLE_BASE/oradata/$sid

ls
-lh

案例一

以下是删除临时表空间并释放存储空间的步骤 (以 sysdba 执行 SQL):

a.查看临时表空间大小:

select
tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

b.新增中间临时表空间:

create temporary tablespace Tblspace_TEMP1
TEMPFILE '/opt/oradata/Tblspace_TEMP1.dbf' SIZE 32m REUSE

AUTOEXTEND ON NEXT 512k
MAXSIZE UNLIMITED;

b.将数据库/某一用户临时表空间切换到中间临时表空间

alter
database default temporary tablespace Tblspace_TEMP1;

--
所有用户的默认临时表空间都将切换为新的临时表空间:

alter
user accfee temporary tablespace Tblspace_TEMP1;

--
更改某一用户的临时表空间

c.删除临时表空间

drop
tablespace Tblspace_TEMP including contents and datafile;

在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.

d.重建临时表空间

create
temporary tablespace Tblspace_TEMP TEMPFILE '/opt/oradata/Tblspace_TEMP.dbf'
SIZE 32m REUSE

AUTOEXTEND ON NEXT 512k
MAXSIZE UNLIMITED;

e.将数据库/某一用户临时表空间切换到重建临时表空间

alter
database default temporary tablespace Tblspace_TEMP;

--
所有用户的默认临时表空间都将切换为新的临时表空间:

alter
user accfee temporary tablespace Tblspace_TEMP;

--
更改某一用户的临时表空间

f.
删除中间临时表空间

drop
tablespace Tblspace_TEMP1 including contents and datafile;

至此,临时表空间所占用的存储空间已经释放.

在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.

案例二

重建 UNDO 表空间 (以sysdba 执行SQL)

a.查看 UNDO 表空间大小

select
tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from
dba_data_files;

b.新增中间 UNDO 表空间

CREATE UNDO
TABLESPACE UNDOTBS2 DATAFILE '/opt/oradata/undotbs2.dbf' size
100M;

c.将数据库 UNDO 表空间迁移到中间 UNDO
表空间

alter
system set undo_tablespace=UNDOTBS2 scope=both;

d.将 UNDO 表空间置为离线

alter
tablespace UNDOTBS1 offline;

e.删除 UNDO 表空间

drop
tablespace UNDOTBS1 including contents AND DATAFILES CASCADE CONSTRAINTS ;

在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.

f.重建 UNDO 表空间

CREATE UNDO
TABLESPACE UNDOTBS1 DATAFILE '/opt/oradata/undotbs1.dbf' size
100M;

g.切换中间 UNDO 表空间

alter
system set undo_tablespace=UNDOTBS1 scope=both;

h.删除中间 UNDO 表空间

drop
tablespace UNDOTBS2 including contents AND DATAFILES CASCADE CONSTRAINTS ;

在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: