2025年3月18日 星期二 甲辰(龙)年 月十七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > Oracle

Oracle Linux 7 下静默安装 Oracle 12c

时间:04-01来源:作者:点击数:71

本文记录了在Oracle Linux 7中以静默方式(Silent)安装和配置Oracle Database 12c的具体方法和实施步骤。

如果想通过图形界面的方式进行安装的话,请参考本站的另一篇文章《Oracle Linux 7.3 下安装 Oracle Database 12c R2》

环境

  • 主机: Windows 10 64bit,内存16GB,处理器Intel i5@2.6GHz 4 core
  • 虚拟机平台: VirtualBox 5.1.26
  • 数据库安装操作系统: Oracle Linux 7.4
  • 数据库安装文件: Oracle Database 12c Release 2:

在Virtualbox中配置虚拟机实例

打开Oracle VM VirtualBox Manager,打开File->Preferences...->Network->Host-only Networks-> 双击VirtualBox Host-Only Ethernet Adapter。在弹出窗口中,取消选择Enable Server,以禁止为Host-Only网卡自动分配地址。

Disabled DHCP for Host-only
Disabled DHCP for Host-only

在Virtualbox中创建一个虚拟机实例,配置如下:

  • System: MEM=4096MB
  • Storage:64GB(Dynamically Allocate)
  • Network:
    • Adapter1: NAT - 该网卡的作用是为了从虚拟机接入外部网络,如果无此需求的话,可以不用之
    • Adapter2: Host-only

安装Oralce Linux

在创建好的虚拟机实例中安装Oracle Linux 7.4,选择默认的最小化安装方式。

Minimal Installation of OL7.4
Minimal Installation of OL7.4

配置网络

重启之后,以root用户登陆到系统中,开始配置网络。

/etc/sysconfig/network-scripts中有三个文件:

  • ifcfg-lo这个是127.0.0.1的环回地址网卡,不用配置
  • ifcfg-enp0s3这个是第一块网卡,根据虚拟机的配置,是设置为NAT的Adapter1
  • ifcfg-enp0s8这个是第二块网卡,根据虚拟机的配置,是设置为Host-only的Adapter2
Network configuration files
Network configuration files

先配置ifcfg-enp0s3,只需要改动一处:ONBOOT=yes,确保开机时自动激活该网卡。NAT方式的网卡都会以DHCP自动分配IP,所以不用配置IP地址。

ifcfg-enp0s3
ifcfg-enp0s3

再配置ifcfg-enp0s8

  • BOOTPROTO=static #static为静态IP地址
  • ONBOOT=yes #开机自动启用网络连接
  • IPADDR0=192.168.56.112 #设置静态IP地址
  • PREFIXO0=24 #设置子网掩码
ifcfg-enp0s3
ifcfg-enp0s3

注意这里没有配置网关和DNS,如果你想配置的话,加入如下内容:

  • GATEWAY0=192.168.21.1 #设置网关
  • DNS1=8.8.8.8 #设置主DNS
  • DNS2=144.144.144.144 #设置备DNS

重启网络服务,并查看IP分配情况:

  • service network restart
  • ip addr
确认IP分配情况
确认IP分配情况

可以看到,NAT的网卡1动态分配了10.0.2.15这个地址,而Host-only的网卡2获取了静态地址192.168.56.112

从主机用Putty直接访问192.168.56.112,就可以不再使用VirtualBox的那个终端了。

Putty访问
Putty访问

设置主机名

接下来设置主机名称为12col7-112.example.com。这里不再配置DNS服务器(bind),而简单的配置一个静态的/etc/hosts文件,确保主机名永远都能被解析到。最后重启系统。

  • [root@localhost ~]# hostname 12col7-112.example.com
  • [root@localhost ~]# cat /etc/hostname
  • 12col7-112.example.com
  • [root@localhost ~]# cat /etc/hosts
  • 127.0.0.1 localhost
  • ::1 localhost
  • 192.168.56.112 12col7-112 12col7-112.example.com
  • [root@localhost ~]# reboot

关闭防火墙

请参考关闭防火墙

停用 SELinux (需要重启系统才能生效)

请参考停用 SELinux

配置YUM源

打开虚拟机实例的窗口,在菜单中选择Devices->Optical Drives->Choose Disk Image...打开刚才的系统安装光盘镜像。

登录到虚拟机实例中,挂载光盘到/media/cdrom:

  • [root@12col7-112 ~]# mkdir /media/cdrom
  • [root@12col7-112 ~]# mount -r /dev/cdrom /media/cdrom

备份原来的Yum源,配置新的本地Yum源:

  • [root@12col7-112 ~]# mkdir /etc/yum.repos.d/orig.repo.d
  • [root@12col7-112 ~]# mv /etc/yum.repos.d/public-yum-ol7.repo /etc/yum.repos.d/orig.repo.d/
  • [root@12col7-112 ~]# cat <<EOF>/etc/yum.repos.d/local.repo
  • > [Local]
  • > name=OL7.4
  • > baseurl=file:///media/cdrom
  • > gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY
  • > enabled=1
  • > EOF
  • [root@12col7-112 ~]#

测试本地Yum源:

  • [root@12col7-112 ~]# yum repolist
  • Loaded plugins: ulninfo
  • Local | 3.6 kB 00:00
  • (1/2): Local/group_gz | 136 kB 00:00
  • (2/2): Local/primary_db | 4.7 MB 00:00
  • repo id repo name status
  • Local OL7.4 4,970
  • repolist: 4,970
  • [root@12col7-112 ~]#

安装必须的软件包

oracle-database-server-12cR2-preinstall包是Oracle Linux独有的软件包,它为安装Oracle数据库提供了方便(包括安装数据库依赖包,创建Oracle用户和组,修改内核参数等等)。

  • [root@12col7-112 ~]# yum install -y oracle-database-server-12cR2-preinstall

安装VirtualBox Guest Additions (可选)

执行这步的目的是为了使用虚拟机与主机之间的共享目录功能,以方便安装文件的复制。当然,这个步骤并不是必须的。因为在网络配置好之后,还可以使用sftp通过主机向虚拟机中复制安装文件。

下面这些包是编译和安装 Guest Additions 时需要的:

  • [root@12col7-112 ~]# yum install lsof bzip2 gcc kernel-uek-devel

然后卸载系统安装镜像文件:

  • [root@12col7-112 ~]# umount /media/cdrom

然后打开虚拟机实例的窗口,在菜单中选择Devices->Optical Drives->Remove disk from virtual drive彻底弹出系统安装镜像。

接着,继续在菜单中选择Devices->Insert Guest Additions CD Image...把Guest Additions的镜像转到CD驱动器中。

登录到虚拟机实例,挂载Guest Additions光盘镜像并开始安装:

  • [root@12col7-112 ~]# mount -r /dev/cdrom /media/cdrom
  • [root@12col7-112 ~]# sh /media/cdrom/VBoxLinuxAdditions.run
  • Verifying archive integrity... All good.
  • Uncompressing VirtualBox 5.1.26 Guest Additions for Linux...........
  • VirtualBox Guest Additions installer
  • Copying additional installer modules ...
  • Installing additional modules ...
  • vboxadd.sh: Starting the VirtualBox Guest Additions.
  • Could not find the X.Org or XFree86 Window System, skipping.
  • [root@12col7-112 ~]#

数据库安装选项设置

执行下面的命令,修改/etc/pam.d/login,启用 limits:

  • sed -i -e '/session required pam_selinux.so open/i\
  • session required \/lib64\/security\/pam_limits.so\
  • session required pam_limits.so' /etc/pam.d/login

修改后的文件如下:

  • [root@12col7-112 ~]# cat /etc/pam.d/login
  • #%PAM-1.0
  • auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
  • auth substack system-auth
  • auth include postlogin
  • account required pam_nologin.so
  • account include system-auth
  • password include system-auth
  • # pam_selinux.so close should be the first session rule
  • session required pam_selinux.so close
  • session required pam_loginuid.so
  • session optional pam_console.so
  • # pam_selinux.so open should only be followed by sessions to be executed in the user context
  • session required /lib64/security/pam_limits.so
  • session required pam_limits.so
  • session required pam_selinux.so open
  • session required pam_namespace.so
  • session optional pam_keyinit.so force revoke
  • session include system-auth
  • session include postlogin
  • -session optional pam_ck_connector.so
  • [root@12col7-112 ~]#

修改oracle用户的密码为welcome

  • [root@12col7-112 ~]# passwd oracle
  • Changing password for user oracle.
  • New password:
  • BAD PASSWORD: The password is shorter than 8 characters
  • Retype new password:
  • passwd: all authentication tokens updated successfully.
  • [root@12col7-112 ~]#

创建安装目录,并设置权限:

  • [root@12col7-112 ~]# mkdir -p /u01/app
  • [root@12col7-112 ~]# chown oracle:oinstall /u01/app
  • [root@12col7-112 ~]# usermod -G oinstall,dba,vboxsf oracle
  • [root@12col7-112 ~]# id oracle
  • uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),996(vboxsf)
  • [root@12col7-112 ~]#

重启系统,并以oracle用户登陆。

静默安装数据库

准备数据库安装文件

先从共享目录中把数据库的安装文件拷贝到oracle用户的主目录中,并解压缩。

  • [oracle@12col7-112 ~]$ mkdir install
  • [oracle@12col7-112 ~]$ cp /media/sf_VM/iso/linuxx64_12201_database.zip install/
  • [oracle@12col7-112 ~]$ cd install/
  • [oracle@12col7-112 install]$ unzip linuxx64_12201_database.zip

为保险起见,这时可以打开虚拟机实例的窗口,选择Machine->Take Snapshot建立一个快照。这样万一后面的步骤出了问题进行不下去的话,总可以回退到这个快照重新开始。

编写Oracle Universal Installer(OUI)响应文件

事实上,Oracle数据库安装包里面已经提供了各种响应文件的参考例子,这里只需要把这些文件拷贝出来,根据自己的需要修改即可。

  • [oracle@12col7-112 ~]$ mkdir -p silent-install/response
  • [oracle@12col7-112 ~]$ cp install/database/response/db_install.rsp silent-install/response/

需要修改的地方汇总如下:

  • oracle.install.option=INSTALL_DB_SWONLY # 只安装数据库软件,之后我们会手动创库
  • UNIX_GROUP_NAME=oinstall
  • INVENTORY_LOCATION=/u01/app/oraInventory
  • ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
  • ORACLE_BASE=/u01/app/oracle
  • oracle.install.db.InstallEdition=EE # 安装Enterprise Edition
  • 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
  • DECLINE_SECURITY_UPDATES=true

去除了空白行和注释,完整的db_install.rsp文件内容如下:

  • [oracle@12col7-112 ~]$ cat silent-install/response/db_install.rsp | grep -v ^$ |grep -v ^#
  • oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
  • oracle.install.option=INSTALL_DB_SWONLY
  • UNIX_GROUP_NAME=oinstall
  • INVENTORY_LOCATION=/u01/app/oraInventory
  • ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
  • ORACLE_BASE=/u01/app/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.rac.configurationType=
  • oracle.install.db.CLUSTER_NODES=
  • oracle.install.db.isRACOneInstall=
  • oracle.install.db.racOneServiceName=
  • oracle.install.db.rac.serverpoolName=
  • oracle.install.db.rac.serverpoolCardinality=
  • oracle.install.db.config.starterdb.type=
  • oracle.install.db.config.starterdb.globalDBName=
  • oracle.install.db.config.starterdb.SID=
  • oracle.install.db.ConfigureAsContainerDB=
  • oracle.install.db.config.PDBName=
  • oracle.install.db.config.starterdb.characterSet=
  • oracle.install.db.config.starterdb.memoryOption=
  • oracle.install.db.config.starterdb.memoryLimit=
  • oracle.install.db.config.starterdb.installExampleSchemas=
  • oracle.install.db.config.starterdb.password.ALL=
  • oracle.install.db.config.starterdb.password.SYS=
  • oracle.install.db.config.starterdb.password.SYSTEM=
  • oracle.install.db.config.starterdb.password.DBSNMP=
  • oracle.install.db.config.starterdb.password.PDBADMIN=
  • oracle.install.db.config.starterdb.managementOption=
  • oracle.install.db.config.starterdb.omsHost=
  • oracle.install.db.config.starterdb.omsPort=
  • oracle.install.db.config.starterdb.emAdminUser=
  • oracle.install.db.config.starterdb.emAdminPassword=
  • oracle.install.db.config.starterdb.enableRecovery=
  • oracle.install.db.config.starterdb.storageType=
  • oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
  • oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
  • oracle.install.db.config.asm.diskGroup=
  • oracle.install.db.config.asm.ASMSNMPPassword=
  • MYORACLESUPPORT_USERNAME=
  • MYORACLESUPPORT_PASSWORD=
  • SECURITY_UPDATES_VIA_MYORACLESUPPORT=
  • DECLINE_SECURITY_UPDATES=true
  • PROXY_HOST=
  • PROXY_PORT=
  • PROXY_USER=
  • PROXY_PWD=
  • COLLECTOR_SUPPORTHUB_URL=
  • [oracle@12col7-112 ~]$

开始静默安装

启动OUI安装器,指定响应文件,开始静默安装,大概需要3分钟左右,很快不是么?

  • <INSTALL_DIR>/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile <FULL PATH>

需要注意的是:

  • -responseFile需要使用绝对路径,相对路径会出错
  • -ignoreSysPrereqs忽略系统检查,这会让你的生活更美好
  • -waitforcompletion等待安装完成,如果不指定的话,安装过程会转到后台执行,不看日志的话,是不知道有没有安装完的。
  • [oracle@12col7-112 ~]$ /home/oracle/install/database/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile /home/oracle/silent-install/response/db_install.rsp
  • Starting Oracle Universal Installer...
  • Checking Temp space: must be greater than 500 MB. Actual 39345 MB Passed
  • Checking swap space: must be greater than 150 MB. Actual 3967 MB Passed
  • Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-09-21_11-47-25AM. Please wait ...You can find the log of this install session at:
  • /u01/app/oraInventory/logs/installActions2017-09-21_11-47-25AM.log
  • The installation of Oracle Database 12c was successful.
  • Please check '/u01/app/oraInventory/logs/silentInstall2017-09-21_11-47-25AM.log' for more details.
  • As a root user, execute the following script(s):
  • 1. /u01/app/oraInventory/orainstRoot.sh
  • 2. /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
  • Successfully Setup Software.

按照上面的说明,切换到root用户,执行这两个脚本:

  • [oracle@12col7-112 ~]$ su -
  • Password:
  • Last login: Thu Sep 21 10:41:14 CST 2017 from 192.168.56.1 on pts/0
  • [root@12col7-112 ~]# /u01/app/oraInventory/orainstRoot.sh
  • Changing permissions of /u01/app/oraInventory.
  • Adding read,write permissions for group.
  • Removing read,write,execute permissions for world.
  • Changing groupname of /u01/app/oraInventory to oinstall.
  • The execution of the script is complete.
  • [root@12col7-112 ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
  • Check /u01/app/oracle/product/12.2.0/dbhome_1/install/root_12col7-112.example.com_2017-09-21_11-56-20-903254406.log for the output of root script
  • [root@12col7-112 ~]#

开始静默手动创库

先编写一个Oracle环境变量配置文件db_profile.sh

  • [oracle@12col7-112 ~]$ cat db_profile.sh
  • export ORACLE_BASE=/u01/app/oracle
  • export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
  • export PATH=$ORACLE_HOME/bin:$PATH
  • export ORACLE_SID=orcl

在当前的Shell中,执行该文件,导入Oracle环境变量,确保dbca命令能正确找到:

  • [oracle@12col7-112 ~]$ . db_profile.sh
  • [oracle@12col7-112 ~]$ env|grep ORACLE
  • ORACLE_SID=orcl
  • ORACLE_BASE=/u01/app/oracle
  • ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
  • [oracle@12col7-112 ~]$ which dbca
  • /u01/app/oracle/product/12.2.0/dbhome_1/bin/dbca

开始安装。下面的命令会创建一个pdb,其中包含一个数据库实例orcl,所有管理员的密码都设置为welcome

  • dbca -silent \
  • -createDatabase \
  • -templateName General_Purpose.dbc \
  • -gdbName orcl.example.com \
  • -sid orcl \
  • -createAsContainerDatabase true \
  • -numberOfPdbs 1 \
  • -pdbName pdb \
  • -pdbadminUsername pdba \
  • -pdbadminPassword welcome \
  • -SysPassword welcome \
  • -SystemPassword welcome \
  • -emConfiguration NONE \
  • -recoveryAreaDestination $ORACLE_BASE/recovery_area \
  • -characterSet "AL32UTF8" \
  • -nationalCharacterSet "UTF8" \
  • -enableArchive true \
  • -redoLogFileSize 100

实际执行结果如下:

  • [oracle@12col7-112 ~]$ dbca -silent \
  • > -createDatabase \
  • > -templateName General_Purpose.dbc \
  • > -gdbName orcl.example.com \
  • > -sid orcl \
  • > -createAsContainerDatabase true \
  • > -numberOfPdbs 1 \
  • > -pdbName pdb \
  • > -pdbadminUsername pdba \
  • > -pdbadminPassword welcome \
  • > -SysPassword welcome \
  • > -SystemPassword welcome \
  • > -emConfiguration NONE \
  • > -recoveryAreaDestination $ORACLE_BASE/recovery_area \
  • > -recoveryAreaSize 3200 \
  • > -characterSet "AL32UTF8" \
  • > -nationalCharacterSet "UTF-8" \
  • > -enableArchive true \
  • > -redoLogFileSize 100
  • [WARNING] [DBT-06801] Specified Fast Recovery Area size (3,200 MB) is less than the recommended value.
  • CAUSE: Fast Recovery Area size should at least be three times the database size (2,430 MB).
  • ACTION: Specify Fast Recovery Area Size to be at least three times the database size.
  • [FATAL] [DBT-11152] National character set specified (UTF-8) is invalid.
  • [oracle@12col7-112 ~]$ dbca -silent \
  • > -createDatabase \
  • > -templateName General_Purpose.dbc \
  • > -gdbName orcl.example.com \
  • > -sid orcl \
  • > -createAsContainerDatabase true \
  • > -numberOfPdbs 1 \
  • > -pdbName pdb \
  • > -pdbadminUsername pdba \
  • > -pdbadminPassword welcome \
  • > -SysPassword welcome \
  • > -SystemPassword welcome \
  • > -emConfiguration NONE \
  • > -recoveryAreaDestination $ORACLE_BASE/recovery_area \
  • > -characterSet "AL32UTF8" \
  • > -nationalCharacterSet "UTF8" \
  • > -enableArchive true \
  • > -redoLogFileSize 100
  • [WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
  • CAUSE:
  • a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
  • b.The password entered is a keyword that Oracle does not recommend to be used as password
  • ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
  • [WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
  • CAUSE:
  • a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
  • b.The password entered is a keyword that Oracle does not recommend to be used as password
  • ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
  • [WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
  • CAUSE:
  • a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
  • b.The password entered is a keyword that Oracle does not recommend to be used as password
  • ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
  • Copying database files
  • 1% complete
  • 13% complete
  • 25% complete
  • Creating and starting Oracle instance
  • 26% complete
  • 30% complete
  • 31% complete
  • 35% complete
  • 38% complete
  • 39% complete
  • 41% complete
  • Completing Database Creation
  • 42% complete
  • 43% complete
  • 44% complete
  • 46% complete
  • 49% complete
  • 50% complete
  • Creating Pluggable Databases
  • 55% complete
  • 75% complete
  • Executing Post Configuration Actions
  • 100% complete
  • Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
  • [oracle@12col7-112 ~]$

登陆数据库,查看一下数据库实例的状态:

  • [oracle@12col7-112 ~]$ sqlplus / as sysdba
  • SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 21 13:35:34 2017
  • Copyright (c) 1982, 2016, Oracle. All rights reserved.
  • Connected to:
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • SQL> select instance_name, status from v$instance;
  • INSTANCE_NAME STATUS
  • ---------------- ------------
  • orcl OPEN
  • SQL> show pdbs
  • CON_ID CON_NAME OPEN MODE RESTRICTED
  • ---------- ------------------------------ ---------- ----------
  • 2 PDB$SEED READ ONLY NO
  • 3 PDB READ WRITE NO
  • SQL> select name from v$datafile;
  • NAME
  • --------------------------------------------------------------------------------
  • /u01/app/oracle/oradata/orcl/system01.dbf
  • /u01/app/oracle/oradata/orcl/sysaux01.dbf
  • /u01/app/oracle/oradata/orcl/undotbs01.dbf
  • /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
  • /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
  • /u01/app/oracle/oradata/orcl/users01.dbf
  • /u01/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
  • /u01/app/oracle/oradata/orcl/pdb/system01.dbf
  • /u01/app/oracle/oradata/orcl/pdb/sysaux01.dbf
  • /u01/app/oracle/oradata/orcl/pdb/undotbs01.dbf
  • /u01/app/oracle/oradata/orcl/pdb/users01.dbf
  • 11 rows selected.
  • SQL> select name from v$controlfile;
  • NAME
  • --------------------------------------------------------------------------------
  • /u01/app/oracle/oradata/orcl/control01.ctl
  • /u01/app/oracle/recovery_area/orcl/control02.ctl
  • SQL> select member from v$logfile;
  • MEMBER
  • --------------------------------------------------------------------------------
  • /u01/app/oracle/oradata/orcl/redo03.log
  • /u01/app/oracle/oradata/orcl/redo02.log
  • /u01/app/oracle/oradata/orcl/redo01.log

以静默方式配置监听

同样,安装包里面提供了配置监听的响应文件。只需要在这个文件的基础上修改就行。

  • [oracle@12col7-112 ~]$ cp install/database/response/netca.rsp silent-install/response/

去除空白行和注释之后的响应文件内容如下:

  • [oracle@12col7-112 ~]$ cat silent-install/response/netca.rsp | grep -v ^$ | grep -v ^#
  • [GENERAL]
  • RESPONSEFILE_VERSION="12.2"
  • CREATE_TYPE="CUSTOM"
  • SHOW_GUI=false
  • [oracle.net.ca]
  • INSTALLED_COMPONENTS={"server","net8","javavm"}
  • INSTALL_TYPE=""typical""
  • LISTENER_NUMBER=1
  • LISTENER_NAMES={"LISTENER"}
  • LISTENER_PROTOCOLS={"TCP;1521"}
  • LISTENER_START=""LISTENER""
  • NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
  • NSN_NUMBER=1
  • NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
  • NSN_SERVICE={"PLSExtProc"}
  • NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
  • [oracle@12col7-112 ~]$

通过响应文件,鸟悄地默默开始配置监听器:

  • [oracle@12col7-112 ~]$ netca -silent -responsefile /home/oracle/silent-install/response/netca.rsp
  • Parsing command line arguments:
  • Parameter "silent" = true
  • Parameter "responsefile" = /home/oracle/silent-install/response/netca.rsp
  • Done parsing command line arguments.
  • Oracle Net Services Configuration:
  • Profile configuration complete.
  • Oracle Net Listener Startup:
  • Running Listener Control:
  • /u01/app/oracle/product/12.2.0/dbhome_1/bin/lsnrctl start LISTENER
  • Listener Control complete.
  • Listener started successfully.
  • Listener configuration complete.
  • Oracle Net Services configuration successful. The exit code is 0
  • [oracle@12col7-112 ~]$

确认监听器状态:

  • [oracle@12col7-112 ~]$ lsnrctl
  • LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-SEP-2017 15:00:49
  • Copyright (c) 1991, 2016, Oracle. All rights reserved.
  • Welcome to LSNRCTL, type "help" for information.
  • LSNRCTL> status
  • Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=12col7-112)(PORT=1521)))
  • STATUS of the LISTENER
  • ------------------------
  • Alias LISTENER
  • Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
  • Start Date 21-SEP-2017 14:59:54
  • Uptime 0 days 0 hr. 0 min. 59 sec
  • Trace Level off
  • Security ON: Local OS Authentication
  • SNMP OFF
  • Listener Parameter File /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
  • Listener Log File /u01/app/oracle/diag/tnslsnr/12col7-112/listener/alert/log.xml
  • Listening Endpoints Summary...
  • (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=12col7-112)(PORT=1521)))
  • (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  • Services Summary...
  • Service "59acf70353b0390ae0537038a8c0a3af.example.com" has 1 instance(s).
  • Instance "orcl", status READY, has 1 handler(s) for this service...
  • Service "orcl.example.com" has 1 instance(s).
  • Instance "orcl", status READY, has 1 handler(s) for this service...
  • Service "orclXDB.example.com" has 1 instance(s).
  • Instance "orcl", status READY, has 1 handler(s) for this service...
  • Service "pdb.example.com" has 1 instance(s).
  • Instance "orcl", status READY, has 1 handler(s) for this service...
  • The command completed successfully
  • LSNRCTL>

安装后设置

请参考下面的文档进行:

  • 设置用户配置文件
  • 系统重启时自动启动数据库
  • 注册到EM Express中

最后设置好的数据库可以用EM来访问。

EM
EM

重启系统,之后继续登陆EM,看看数据库是否正常启动。

配置数据库实验环境

CDB和PDB

在配置之前需要先了解在Oracle 12c 中引入的多租用户环境(Multitenant Environment),也就是让一个CDB(数据库容器)存放多个PDB(可插拔数据库),像下面这样:

  • 一组后台进程
  • 一个SGA
  • 多个PDB
CDB with Two PDBs
CDB with Two PDBs

可以看出,在一个CDB数据库容器中包含了以下几个容器:

  1. 有且只有一个Root容器:CDB$ROOT- 存储着:
    • Oracle提供的元数据,例如Oracle提供的PL/SQL包
    • Common User,每个容器中都存在的用户,比如SYS用户就是一个典型的Common User,这类用户一般以C##_为用户名前缀。
  2. 有且只有一个Seed容器:PDB$SEED- 创建PDB时的模板,这个容器不能修改
  3. 零或多个用户创建的PDB - 包含了用户数据和代码的实体,可以认为这就是以前的数据库,可以进行大多数常规操作。比如一个PDB可以支撑一个HR应用程序,另外一个PDB可以支撑销售系统应用程序

在使用sqlplus / as sysdba登陆时,默认登陆到Root容器:

  • [oracle@12col7-112 ~]$ sqlplus / as sysdba
  • SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 22 10:27:51 2017
  • Copyright (c) 1982, 2016, Oracle. All rights reserved.
  • Connected to:
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • SQL> show con_name;
  • CON_NAME
  • ------------------------------
  • CDB$RO
  • SQL> show pdbs;
  • CON_ID CON_NAME OPEN MODE RESTRICTED
  • ---------- ------------------------------ ---------- ----------
  • 2 PDB$SEED READ ONLY NO
  • 3 PDB READ WRITE NO
  • SQL>

创建表空间

在理解了以上概念之后,就明白要创建表空间,首先要切换到PDB中。

  • SQL> show pdbs;
  • CON_ID CON_NAME OPEN MODE RESTRICTED
  • ---------- ------------------------------ ---------- ----------
  • 2 PDB$SEED READ ONLY NO
  • 3 PDB READ WRITE NO
  • SQL> alter session set container=PDB;
  • Session altered.
  • SQL> show con_name;
  • CON_NAME
  • ------------------------------
  • PDB
  • SQL>

然后在这个PDB中,创建一个名称为TEST01_TBS,大小为4GB的表空间:

  • SQL> create tablespace test01_tbs datafile '/u01/app/oracle/oradata/orcl/pdb/test01_tbs.dbf' size 4g;
  • Tablespace created.
  • SQL>

如果这一步出错了,想删除表空间的话:

  • drop tablespace TEST01_TBS including contents and datafiles;

查看表空间:

  • SQL> set linesize 200
  • SQL> col file_name for a50
  • SQL> select file_name, tablespace_name from dba_data_files;
  • FILE_NAME TABLESPACE_NAME
  • -------------------------------------------------- ------------------------------
  • /u01/app/oracle/oradata/orcl/pdb/system01.dbf SYSTEM
  • /u01/app/oracle/oradata/orcl/pdb/sysaux01.dbf SYSAUX
  • /u01/app/oracle/oradata/orcl/pdb/undotbs01.dbf UNDOTBS1
  • /u01/app/oracle/oradata/orcl/pdb/users01.dbf USERS
  • /u01/app/oracle/oradata/orcl/pdb/test01_tbs.dbf TEST01_TBS
  • SQL>

创建测试用户

先切换到PDB中,创建测试用户test01,指定默认表空间为test_tbs,密码为test01,并解锁用户账号。

  • SQL> show con_name
  • CON_NAME
  • ------------------------------
  • PDB
  • SQL> create user test01 identified by test01 default tablespace TEST01_TBS account unlock;
  • User created.
  • SQL> col username for a6
  • SQL> col default_tablespace for a15
  • SQL> col temporary_tablespace for a15
  • SQL> select username,default_tablespace,temporary_tablespace,account_status from dba_users where username like '%TEST01%';
  • USERNA DEFAULT_TABLESP TEMPORARY_TABLE ACCOUNT_STATUS
  • ------ --------------- --------------- --------------------------------
  • TEST01 TEST01_TBS TEMP OPEN
  • SQL>

为test01用户赋予权限,这样test01用户才能访问和操作数据库:

  • SQL> grant connect, resource to test01;
  • Grant succeeded.
  • SQL>

测试用户访问PDB

查看CBD中可以用的服务,会发现通过pdb.example.com这个service_name是可以远程连接到PDB的。

  • SQL> col name for a15
  • SQL> col name for a30
  • SQL> select name,pdb from v$services;
  • NAME PDB
  • ------------------------------ --------------------
  • orclXDB CDB$ROOT
  • orcl.example.com CDB$ROOT
  • SYS$BACKGROUND CDB$ROOT
  • SYS$USERS CDB$ROOT
  • pdb.example.com PDB
  • SQL>

此外,查看$ORACLE_HOME/network/admin/sqlnet.ora的内容,可以看到Oracle默认启用了两种命名方式:

  • [oracle@12col7-112 ~]$ cat $ORACLE_HOME/network/admin/sqlnet.ora
  • # sqlnet.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
  • # Generated by Oracle configuration tools.
  • NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
  • [oracle@12col7-112 ~]$

那么,接下来就使用这两种方式分别链接到数据库。

方法一:使用EZCONNECT连接到PDB(推荐)

这种方法无需任何配置,直接可以使用,需要注意的是格式。

如果已经进入到了sqlplus中,使用下面的格式:

  • CONNECT username/password@[//]host[:port][/service_name]

否则,使用下面的格式:

  • sqlplus username/password@[//]host[:port][/service_name]

所以,在数据库本机上,以下任何一种形式都可以让test01用户访问到PDB中:

  • sqlplus test01/test01@12col7-112:1521/pdb.example.com
  • sqlplus test01/test01@localhost:1521/pdb.example.com
  • sqlplus test01/test01@12col7-112/pdb.example.com
  • sqlplus test01/test01@localhost/pdb.example.com

实际效果如下:

  • [oracle@12col7-112 admin]$ sqlplus test01/test01@12col7-112:1521/pdb.example.com
  • SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 22 14:21:40 2017
  • Copyright (c) 1982, 2016, Oracle. All rights reserved.
  • Last Successful login time: Fri Sep 22 2017 14:13:32 +08:00
  • Connected to:
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • SQL>
方法二:使用传统的TNSNAMES连接到PDB

为了能通过TNSNAMES访问到数据库,需要在$ORACLE_HOME/network/admin/tnsnames.ora

文件中加入如下内容:

  • pdb =
  • (DESCRIPTION =
  • (ADDRESS_LIST =
  • (ADDRESS = (PROTOCOL = TCP)(HOST = 12col7-112)(PORT = 1521))
  • )
  • (CONNECT_DATA =
  • (SERVICE_NAME = pdb.example.com)
  • )
  • )

之后,就可以通过下面的方式直接访问到PDB了:

  • [oracle@12col7-112 ~]$ sqlplus test01/test01@pdb
  • SQL*Plus: Release 12.2.0.1.0 Production on Fri Sep 22 14:30:11 2017
  • Copyright (c) 1982, 2016, Oracle. All rights reserved.
  • Last Successful login time: Fri Sep 22 2017 14:21:40 +08:00
  • Connected to:
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • SQL>

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门