# 百分百可靠!
下载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
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |