在linux安装oracle 12c数据库(静默安装) #每一步都验证过,可靠度99%

# 百分百可靠!

下载oracle 12c安装包:

https://pan.baidu.com/s/1T_XY97PnlnYrp4vXo0WivA

提取码:dgj8

下载好oracle 12c的安装包(database12c.tar.gz)后,准备好linux系统镜像包(例如:CentOS-7-x86_64-DVD-2009.iso)

挂载iso镜像包,为lib依赖包的安装做准备:

mount -o loop /usr/local/CentOS-7-x86_64-DVD-2009.iso /mnt

将xxx-Base.repo配置文件移走:mv /etc/yum.repos.d/CentOS-Base.repo /root

编辑xxx-Media.repo配置文件:vim /etc/yum.repos.d/CentOS-Media.repo

增加一行仓库地址:file:///mnt/,并将enabled修改为1启用,例如:

防止安装过程中防火墙干扰,需要先关闭防火墙:systemctl stop firewalld

防止限制太严格,关闭selinux:

vim /etc/selinux/config     将 SELINUX 设置成:disabled

1、修改Linux内核参数:

执行 vim /etc/sysctl.conf ,在sysctl.conf文件末尾添加如下参数,然后执行 sysctl -p 命令,使得配置的内核参数生效

fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.sem=250 32000 100 128
kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=4096
net.core.rmem_default=1048576
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.ip_local_port_range=9000 65500

#kernel.shmall 和 kernel.shmmax 参数设置说明:

1.  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

2.  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
 

2、安装Oracle12c的依赖包:

yum install binutils gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libxcb libXi make sysstat libnsl.x86_64 -y

缺少的lib依赖包可以从该网站下载:https://centos.pkgs.org/

3、创建Oracle用户和用户组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo "oracle" | passwd oracle --stdin

4、修改oracle用户权限文件

执行 vim /etc/security/limits.conf ,在文件中添加以下内容

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

执行 vim /etc/pam.d/login ,在文件中添加以下内容

session required        /lib64/security/pam_limits.so
session required        pam_limits.so

执行 vim /etc/profile,在文件中添加以下内容,然后执行 source /etc/profile 使得修改生效

#oracle config
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
      ulimit -p 16384
      ulimit -n 65536
  else
      ulimit -u 16384 -n 65536
  fi
fi

5、创建安装目录和文件权限

mkdir -p /opt/database/oracle/product/12.2.0
mkdir /opt/database/oracle/oradata
mkdir /opt/database/oracle/inventory
mkdir /opt/database/oracle/fast_recovery_area
chown -R oracle:oinstall /opt/database/oracle/
chmod -R 755 /opt/database/oracle/

6、配置Oracle环境变量

执行 vim /home/oracle/.bash_profile ,在文件中添加如下内容,然后执行 source /home/oracle/.bash_profile ,使得环境变量生效

umask 022
ORACLE_BASE=/opt/database/oracle
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/12.2.0/lib:$LD_LIBRARY_PATH
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8
LANG=zh_CN.UTF-8
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH NLS_LANG LANG
stty erase ^h

7、上传oracle12c的二进制安装包并解压

这里将 database12c.tar.gz 上传到/usr/local文件夹下,然后执行:

tar -zxvf database12c.tar.gz

来解压

然后将 response 文件夹整个复制到 /home/oracle ,并赋权

cp  -R  /usr/local/database/response   /home/oracle/
chmod  -R  777  /home/oracle/response

8、切换到 /home/oracle/response 目录,并修改 db_install.rsp 文件的内容(有的参数修改值,没有的的参数新增即可)

cd /home/oracle/response 

vim db_install.rsp

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost.localdomain  
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/database/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/opt/database/oracle/product/12.2.0/dbhome_1
ORACLE_BASE=/opt/database/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.config.starterdb.characterSet=AL32UTF8
DECLINE_SECURITY_UPDATES=true

9、先切换到 oracle 用户下,再执行安装数据库程序

su - oracle

source /home/oracle/.bash_profile

cd /usr/local/database/

./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq

退回到 root 用户下,执行:

exit
 
sh /opt/database/oracle/inventory/orainstRoot.sh

sh /opt/database/oracle/product/12.2.0/dbhome_1/root.sh

#如看到:The execution of the script is complete ,说明 orainstRoot.sh 执行成功了,这里是在调整用户组和操作权限;root.sh的执行结果可以查看控制提示的log日志文件。

10、配置监听

切换到 oracle 用户,加载 .bash_profile 配置文件,并执行 netca命令:

su - oracle

source /home/oracle/.bash_profile

cd /home/oracle/response

netca /silent /responseFile /home/oracle/response/netca.rsp

然后执行:lsnrctl reload ,再执行 netstat -tunlp | grep 1521,查看监听的端口号是否启动

11、在文件 sqlnet.ora  中加入以下代码

执行:vim $ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

12、创建数据库

执行 vim /home/oracle/response/dbca.rsp 命令编辑文件

下面两种配置方式,只能二选一!不能两种都配置。

#注意:下面的参数选项一个都不能多一个都不能少!

第一种配置:

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0

gdbName=orcl

sid=orcl

databaseConfigType=SI

createAsContainerDatabase=false

templateName=/opt/database/oracle/product/12.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc

emExpressPort=5500

omsPort=0

characterSet=AL32UTF8

listeners=LISTENER

initParams=sga_target=1790MB

memoryPercentage=40

automaticMemoryManagement=false

totalMemory=800

第二种配置(生成pdb数据库实例):

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=orcl
sid=orcl
databaseConfigType=SI
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=orclpdb
templateName=/opt/database/oracle/product/12.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc
emExpressPort=5500
omsPort=0
characterSet=AL32UTF8
listeners=LISTENER
memoryPercentage=40
automaticMemoryManagement=false
totalMemory=0

然后执行如下命令创建数据库实例,并且给 SYS、SYSTEM 两个用户设置密码

dbca -silent -createDatabase  -responseFile  /home/oracle/response/dbca.rsp

数据库安装完成!

#配置系统环境

登录数据库,数据库用户密码有效期改成无限期,修改oracle数据库线程数,并保存修改,然后重启数据库

su - oracle

sqlplus / as sysdba

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

show parameter processes

alter system set processes = 3000 scope = spfile;

create pfile from spfile;

shutdown abort

startup

#异常问题:ORA-00821: Specified value of sga_target *** is too small, needs to be at least ***

解决办法:

1、执行  create pfile from spfile  , 根据 spfile 文件参数生成 pfile 文件

2、找到生成的 pfile 文件,一般名称为 init [实例名].ora,修改 sga_target 参数值为需要的值

3、执行  create spfile from pfile  ,将修改之后的参数值回写到 spfile 文件

4、启动数据库,执行:startup

#异常问题:Oracle ORA-01017: invalid username/password;logon denied

解决办法:

1、执行 alter user system account unlock; 给用户解锁

2、执行  ALTER USER system IDENTIFIED BY "新密码"; 修改用户密码

#关闭远程以dba账号登录

alter system set remote_login_passwordfile=none scope=spfile sid='*';

#pdb数据库实例操作

ALTER PLUGGABLE DATABASE orclpdb  OPEN;  //启动指定的pdb数据库实例

ALTER SESSION SET CONTAINER=orclpdb; //连接到指定的pdb实例

alter pluggable database all open; //启动所有pdb数据库实例

#设置重启服务器后自启动数据库

切换到 oracle 用户,然后运行: vim /etc/oratab 

找到文件中的  XXX:/XXX/.../dbhome_1:N  ,将最后的 N 改为Y

切换为 root 用户,然后运行:vim /etc/rc.d/rc.local ,在文件末尾添加:

su oracle -lc "/XXX/.../dbhome_1/bin/lsnrctl start"
su oracle -lc /XXX/.../dbhome_1/bin/dbstart

#查看 dbstart 文件的 ORACLE_HOME_LISTNER 参数值,是否为 $ORACLE_HOME,如果是 $v,将它改为: $ORACLE_HOME 

#如果是pdb数据库,还需要设置开机随cdb启动:

alter pluggable database orcl save state;

给该文件添加可执行权限:chmod +x /etc/rc.d/rc.local

重启服务器后,通过:ps -ef | grep ora_ ,可以验证oracle进程是否启动。

#修改端口号

1、修改 listener.ora 文件中的端口号和 ip 地址,并添加实例监听

LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 7777)) )

SID_LIST_LISTENER=
    (SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = ORCL)
            (ORACLE_HOME = /opt/database/oracle/product/12.2.0/dbhome_1)
            (SID_NAME = ORCL)
        )
    )

2、修改 tnsnames.ora 中的端口号和 ip 地址

ORCL =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 7777))
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = ORCL)
        )

     )

3、修改监听端口

   

alter system set local_listener="(address = (protocol = tcp)(host = xxx.xxx.xxx.xxx)(port = 7777))";

4、重启监听服务

    lsnrctl reload

   #netstat -an|grep 9999  查看端口号是否启动

5、开启防火墙、启用端口号、重启防火墙   

systemctl start firewalld

   firewall-cmd --zone=public --add-port=7777/tcp --permanent

   firewall-cmd --reload

   # 如果是 iptables 防火墙,执行:iptables -I INPUT -p tcp --dport 7777 -j ACCEPT ,开启端口启用

#初始化表空间

#查看表空间使用率
SELECT Upper(F.TABLESPACE_NAME)         "表空间名",
       D.TOT_GROOTTE_MB                 "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
       || '%'                           "使用比",
       F.TOTAL_BYTES                    "空闲空间(M)",
       F.MAX_BYTES                      "最大块(M)"
FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY "表空间名" desc


#查看已存在表空间
select file_name from dba_data_files

#增加所需空间大小
alter database datafile '\oracle\oradata\xxxx.dbf' resize 4000m

#设置空间自动扩展
alter database datafile '\oracle\oradata\xxx.dbf' autoextend on next 100m maxsize 10000m

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值