oracle11gR2 静默安装及建库赋权

环境:

centos7

oracle11gR2

关闭防火墙/SELINUX

安装依赖

yum -y install libXp binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libXp libstdc++-devel make sysstat

添加用户组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

配置内核参数

vim /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152	
kernel.shmmax = 8589934592	
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 = 1048576

sysctl -p

说明:上面比较重要及影响oracle性能的两个参数详解

kernel.shmmax:

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 ( 在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响 ) ,但是其他时候都不会有影响。
官方建议值:

32 位 linux 系统:可取最大值为 4GB ( 4294967296bytes ) -1byte ,即 4294967295 。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295 。 32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。

64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。  

内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887

内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183

内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367

内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735

内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471


kernel.shmall:

该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。

一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),

当内存为 12G 时, kernel.shmall = 3145728

当内存为 16G 时, kernel.shmall = 4194304

当内次为 32G 时, kernel.shmall = 8388608

当内存为 64G 时, kernel.shmall = 16777216

当内存为 128G 时, kernel.shmall = 33554432

修改用户限制

vim /etc/security/limits.conf

oracle           soft    nproc           2047
oracle           hard    nproc           16384
oracle           soft    nofile          1024
oracle           hard    nofile         65536
oracle           soft    stack           10240

修改用户变量限制oracle用户

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
fi
source /etc/profile

切换oracle用户,修改变量

vi ~/.bash_profile

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=wan
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
NLS_LANG=American_America.ZHS16GBK
export  ORACLE_BASE ORACLE_HOME ORACLE_SID PATH NLS_LANG

创建安装目录,并修改权限

mkdir -p /opt/oracle/product/11.2.0/db_1
mkdir /opt/oracle/oradata
mkdir /opt/oracle/inventory
mkdir /opt/oracle/fast_recovery_area
chown -R oracle:oinstall /opt/oracle
chmod -R 775 /opt/oracle

上传oracle11g的两个压缩包,依次解压得到database目录

cd database
cp ./response/* /tmp
cd ..
chown -R oracle:oinstall database/
chmod -R 755 database/

修改数据库安装响应文件

vi /tmp/database/response/db_install.rsp	#这里列出需要有参数的配置项。
oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOSTNAME=localhost

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/opt/oracle/inventory

SELECTED_LANGUAGES=en,zh_CN

ORACLE_HOME=/opt/oracle/product/11.2.0/db_1

ORACLE_BASE=/opt/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=false

...
...

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=dba

oracle.install.db.config.starterdb.characterSet=AL32UTF8

oracle.install.db.config.starterdb.memoryOption=true

oracle.install.db.config.starterdb.installExampleSchemas=false

oracle.install.db.config.starterdb.enableSecuritySettings=true

oracle.install.db.config.starterdb.control=DB_CONTROL

oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false

oracle.install.db.config.starterdb.automatedBackup.enable=false

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/opt/oracle/oradata

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/opt/oracle/fast_recovery_area

...
...

安装数据库软件

cd /tmp/database
./runInstaller -silent -ignorePrereq -responseFile /tmp/database/response/db_install.rsp

根据安装提示另开一个终端执行提示的两条脚本,根据提示逐条执行

配置监听

cd /tmp/database
netca /silent /responsefile /tmp/database/reponse/netca.rsp
lsnrctl start
lsnrctl status

创建数据库实例wan,这里的实例要跟oracle用户配置的变量里的一致,

dbca -silent -responseFile /tmp/database/reponse/dbca.rsp	#响应文件内容如下
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "wan"
SID = "wan"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
CHARACTERSET = "ZHS16GBK"
NATIONALCHARACTERSET="UTF8"
[createTemplateFromDB]
SOURCEDB = "myhost:1521:orcl"
SYSDBAUSERNAME = "system"
TEMPLATENAME = "My Copy TEMPLATE"
[createCloneTemplate]
SOURCEDB = "orcl"
TEMPLATENAME = "My Clone TEMPLATE"
[DELETEDATABASE]
SOURCEDB = "orcl"
[generateScripts]
TEMPLATENAME = "New Database"
GDBNAME = "orcl11.us.oracle.com"
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
NODELIST=
SYSDBAUSERNAME = "sys"
[DELETEINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
INSTANCENAME = "orcl11g"
SYSDBAUSERNAME = "sys"

查看实例监听情况

ps -ef | grep ora_ | grep -v grep | wc -l
ps -ef | grep ora_ | grep -v grep
lsnrctl status

登录数据库

sqlpus / as sysdba
select status from v$instance;#查看数据库状态
select name from v$database;#查看数据库实例名

创建永久表空间

create tablespace VANYTECH datafile‘/opt/oracle/oradata/wan/vanytech.dbf‘ size 2g autoextend on next 10m maxsize unlimited PERMANENT;

参数:

datafile:表空间文件位置及名称,dbf结尾;
size:表空间初始大小
autoextend on next 10m:开启自增,每次增加10m;
maxsize unlimited:最大容量不限 
PERMANENT;创建的时永久表空间,默认是临时表空间

创建用户并指定默认表空间,并赋权

create user vany_hsd  identified by vany_hsd default tablespace VANYTECH

赋予dba权限

grant dba(connect) to vany_hsd

依次赋予基本权限

grant create session to 【username】; 
grant create table to 【username】; 
grant create view to  【username】;

此时,可以用【username】用户登录数据库,连接串为【username】/【passwd】@【local host:1521/service_name】;

此时,【username】用户创建表插入数据时,报错:no privileges on tablespace ‘USERS‘;
解决方法:
用system用户登录,然后给db001data用户分配表空间使用权限:

alter user 【username】 quota unlimited on users;
或
grant unlimited tablespace to 【username】;

参考:https://blog.csdn.net/shmily_lsl/article/details/103384366

oracle11gR2 静默安装及建库赋权

上一篇:sql注入


下一篇:mysql开启查看是否已经开启实时SQL语句记录