前言 近期,由于CentOS 7停止了更新维护,且越来越多的国有企业都有国产化的需要,所以使用国产服务器系统的国有企业也越来越多了,其中银河麒麟Kylin-Server-V10-SP3就是一个不错的替代系统。
恰逢此时,有国有企业项目其中之一的需求就是将Oracle数据库迁移到国产达梦DM数据库中。要验证迁移Oracle数据库就必须要有Oracle环境,故而在这篇文章里我们研究为记录下在Kylin-Server-V10-SP3这个系统下静默安装Oracle12CR2过程。之后有时间再补充一些达梦的安装和迁移过程。
在阅读本文前,我默认你熟悉Linux系统,并知道一些简单的命令,同时也知道如何使用shell客户端工具连接到Linux系统中进行操作,本文就不再做额外的说明了。
一、检查确认环和安装依赖包 1、本文适用范围与环境、软件 Kylin-Server-V10-SP3环境,安装完后使用的IP为192.168.2.47。
[root@kyost ~] Linux kyost 4.19.90-89.11.v2401.ky10.x86_64 [root@kyost ~] 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link /ether d2:62:9a:a5:e2:98 brd ff:ff:ff:ff:ff:ff inet 192.168.2.47/24 brd 192.168.2.255 scope global dynamic noprefixroute ens18 valid_lft 71873sec preferred_lft 71873sec inet6 240e:350:ab82:3000::1e6/128 scope global dynamic noprefixroute valid_lft 2647sec preferred_lft 2647sec inet6 240e:350:ab82:3000:8ae6:10d:b790:cc1c/64 scope global dynamic noprefixroute valid_lft 2647sec preferred_lft 2647sec inet6 240e:350:ab82:3000:d062:9aff:fea5:e298/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 2647sec preferred_lft 2647sec inet6 fe80::2e58:a751:65af:742d/64 scope link noprefixroute valid_lft forever preferred_lft forever
系统下载地址:https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
Oracle12CR2版本与下载(建议使用迅雷等P2P下载工具下载,或在官网登陆后使用带AuthParam参数的地址下载)
https://download.oracle.com/otn/linux/oracle12c/122010/linuxx64_12201_database.zip
2、安装相关依赖包 由于Kylin与CentOS同宗同源,所以这里我参考CentOS7在安装Oracle12时所需要的依赖包。使用root帐户登陆Kylin系统打开命令终端执行以下命令。
[root@kyost ~] binutils-2.34-31.p01.ky10.x86_64 未安装软件包 compat-libstdc++-33 未安装软件包 elfutils-libelf 未安装软件包 elfutils-libelf-devel gcc-7.3.0-2020033101.58.p01.ky10.x86_64 未安装软件包 gcc-c++ 未安装软件包 glibc-2.17 未安装软件包 glibc-headers 未安装软件包 ksh libaio-0.3.112-5.p01.ky10.x86_64 未安装软件包 libaio-devel libgcc-7.3.0-2020033101.58.p01.ky10.x86_64 libstdc++-7.3.0-2020033101.58.p01.ky10.x86_64 未安装软件包 libstdc++-devel make-4.3-1.ky10.x86_64 sysstat-12.2.1-7.p01.ky10.x86_64 unixODBC-2.3.7-3.h1.ky10.x86_64 未安装软件包 unixODBC-devel [root@kyost ~]
可以看出默认安装好后的系统还是缺少10个软件包的。由于这里参考的是CentOS7的依赖包,且事实上在Kylin上使用包管理器从云上下载安装这些包也是有不少是找不到的,所以这里我找到了一个安装有CentOS7的服务器,在其上先下载这些包,再上传到Kylin服务器中使用即可。
[root@homeser ~] Linux homeser 3.10.0-1160.119.1.el7.x86_64 [root@homeser ~] [root@homeser ~] [root@homeser ~]
上述的9个软件包和libpthread_nonshared.a文件,我也打包上传了一份,如有需要的也可自取:
通过网盘分享的文件:orarpm.zip 链接: https://pan.baidu.com/s/17cx2ze55OVypHSmy0eJB4Q?pwd=ep5w
切换回Kylin系统中,上传 orarpm.zip 包中的内容,到root目录,如下所示操作安装这些包。
[root@kyost ~] [root@kyost ~] 总用量 10596 drwxr-xr-x 2 root root 6 8月 8 22:51 公共 drwxr-xr-x 2 root root 6 8月 8 22:51 模板 drwxr-xr-x 2 root root 6 8月 8 22:51 视频 drwxr-xr-x 2 root root 6 8月 8 22:51 图片 drwxr-xr-x 2 root root 6 8月 8 22:51 文档 drwxr-xr-x 2 root root 6 8月 8 22:51 下载 drwxr-xr-x 2 root root 6 8月 8 22:51 音乐 drwxr-xr-x 2 root root 6 8月 8 22:51 桌面 -rw------- 1 root root 2580 8月 8 22:46 anaconda-ks.cfg -rw-r--r-- 1 root root 2915 8月 8 22:51 initial-setup-ks.cfg -rw-r--r-- 1 root root 10839132 8月 9 14:45 orarpm.zip [root@kyost ~] Archive: orarpm.zip inflating: compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm inflating: elfutils-libelf-0.176-5.el7.x86_64.rpm inflating: elfutils-libelf-devel-0.176-5.el7.x86_64.rpm inflating: gcc-c++-4.8.5-44.el7.x86_64.rpm inflating: glibc-2.17-326.el7_9.3.x86_64.rpm inflating: glibc-headers-2.17-326.el7_9.3.x86_64.rpm inflating: ksh-20120801-144.el7_9.x86_64.rpm inflating: libaio-devel-0.3.109-13.el7.x86_64.rpm inflating: libpthread_nonshared.a inflating: libstdc++-devel-4.8.5-44.el7.x86_64.rpm inflating: unixODBC-devel-2.3.1-14.el7.x86_64.rpm [root@kyost ~] 警告:compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY Verifying... 准备中... 正在升级/安装... 1:glibc-2.17-326.el7_9.3 警告:/etc/nsswitch.conf 已建立为 /etc/nsswitch.conf.rpmnew 2:elfutils-libelf-0.176-5.el7 3:libstdc++-devel-4.8.5-44.el7 4:gcc-c++-4.8.5-44.el7 5:elfutils-libelf-devel-0.176-5.el7 6:compat-libstdc++-33-3.2.3-72.el7 7:glibc-headers-2.17-326.el7_9.3 8:ksh-20120801-144.el7_9 9:unixODBC-devel-2.3.1-14.el7 10:libaio-devel-0.3.109-13.el7 [root@kyost ~] binutils-2.34-31.p01.ky10.x86_64 compat-libstdc++-33-3.2.3-72.el7.x86_64 elfutils-libelf-0.176-5.el7.x86_64 elfutils-libelf-devel-0.176-5.el7.x86_64 gcc-7.3.0-2020033101.58.p01.ky10.x86_64 gcc-c++-4.8.5-44.el7.x86_64 glibc-2.17-326.el7_9.3.x86_64 glibc-common-2.28-98.p02.ky10.x86_64 glibc-devel-2.28-98.p02.ky10.x86_64 glibc-headers-2.17-326.el7_9.3.x86_64 ksh-20120801-144.el7_9.x86_64 libaio-0.3.112-5.p01.ky10.x86_64 libaio-devel-0.3.109-13.el7.x86_64 libgcc-7.3.0-2020033101.58.p01.ky10.x86_64 libstdc++-7.3.0-2020033101.58.p01.ky10.x86_64 libstdc++-devel-4.8.5-44.el7.x86_64 make-4.3-1.ky10.x86_64 sysstat-12.2.1-7.p01.ky10.x86_64 unixODBC-2.3.7-3.h1.ky10.x86_64 unixODBC-devel-2.3.1-14.el7.x86_64 [root@kyost ~] [root@kyost ~]
3、安装JDK1.8 本文使用到的 jdk-8u172-linux-x64.tar.gz 下载地址如下(建议使用迅雷这种P2P下载软件下载):
https://download.oracle.com/otn/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz
其它更多的JDK历史版本下载请参考下方连接,但本文的JDK建议保持使用1.8版本的。
Java Archive | Oracle
将下载的 jdk-8u172-linux-x64.tar.gz 上传到 /root 目录后按以下操作。
[root@kylo ~] [root@kylo ~] [root@kylo ~] [root@kylo ~] [root@kylo ~] export JAVA_HOME=/usr/java/jdk1.8.0_172export CLASSPATH=.:$JAVA_HOME /jre/lib/rt.jar:$JAVA_HOME /lib/dt.jar:$JAVA_HOME /lib/tools.jarexport PATH=$PATH :$JAVA_HOME /bin
保存文件后,执行以下命令使配置生效,我们就可以查看当前的jdk是否安装完成了。
[root@kyost ~] [root@kyost ~] openjdk version "1.8.0_402" OpenJDK Runtime Environment Bisheng (build 1.8.0_402-b06) OpenJDK 64-Bit Server VM Bisheng (build 25.402-b06, mixed mode) [root@kyost ~]
二、改操作系统配置参数 1、修改用户SHELL的限制 在Kylin中依然使用root登陆,依次执行以下命令。
[root@kyost ~] oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
2、修改/etc/pam.d/login文件 继续使用vi编辑文件。
[root@kyost ~] session required /lib/security/pam_limits.so session required pam_limits.so
3、修改Linux内核 继续使用vi编辑文件。
[root@kyost ~] fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576
PS:要使/etc/sysctl.conf更改立即生效,执行以下命令。输入: sysctl -p
4、编辑/etc/profile文件增加oracle配置 继续使用vi编辑文件。
[root@kyost ~] if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
PS:要使/etc/profile更改立即生效,执行以下命令。输入: source /etc/profile
三、安装前的准备 1、创建相关用户和组 [root@kyost ~] [root@kyost ~] [root@kyost ~] [root@kyost ~] 更改用户 oracle 的密码 。 新的密码: 重新输入新的密码: passwd:所有的身份验证令牌已经成功更新。 [root@kyost ~]
2、创建数据库软件目录权限 本文拟将数据库安装在 /app/oracle 目录下。依旧使用root权限执行以下命令。
mkdir -p /app/oracle/product/12.2.0/db_1mkdir -p /app/oracle/oraInventorymkdir -p /app/oracle/oradatamkdir -p /app/oracle/recoverychmod -R 775 /app/oraclechown -R oracle:oinstall /app/oracle
3、配置oracle用户环境变量 更改oracle用户的/home/oracle/.bash_profile文件配置Oracle的环境变量,在.bash_profile文件最后,配置Oracle的环境变量。
vi /home/oracle/.bash_profile export ORACLE_BASE=/app/oracleexport ORACLE_HOME=$ORACLE_BASE /product/12.2.0/db_1export PATH=$PATH :$ORACLE_HOME /binexport CLASSPATH=$ORACLE_HOME /JRE:$ORACLE_HOME /jlib:$ORACLE_HOME /rdbms/jlibexport LD_LIBRARY_PATH=$ORACLE_HOME /lib:/lib64:/usr/lib64:/usr/local/lib64export ORACLE_SID=orclexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PS:本文中只配置了oracle的用户环境变量,但没有对root用户配置,如有需要也可以编辑 /root/.bash_profile 文件给root用户也设置相关的环境变量,好方便使用各种oracle命令,而非要先进入命令所在的目录。
4、下载Oracel并解压 将上1.1中得到的 linuxx64_12201_database.zip 文件上传到 /root 目录中,执行命令解压后将安装文件移动到 /app/oracle 目录中。
cd /root/[root@kyost ~] mv database/ /app/oracle/chown -R oracle:oinstall /app/oracle
至此安装前的准备工作已全部完成,下一步将进入安装过程。
四、安装Oracle数据库软件 1、修改静默安装的自动应答文件db_install.rsp 在Kylin中找到 /app/oracle/database/response/db_install.rsp 这个文件,可以先将其从Kylin下载到本地电脑中修改,再将修改后的文件覆盖即可。修改过程可按如下引导即可。
# 30行 安装类型,只装数据库软件 oracle.install.option=INSTALL_DB_SWONLY # 35行 用户组 UNIX_GROUP_NAME=oinstall # 42行 INVENTORY目录(不填就是默认值) INVENTORY_LOCATION=/app/oracle/oraInventory # 46行 oracle目录 ORACLE_HOME=/app/oracle/product/12.2.0/db_1 # 51行 oracle基本目录 ORACLE_BASE=/app/oracle # 63行 oracle版本 oracle.install.db.InstallEdition=EE # 80行 oracle.install.db.OSDBA_GROUP=dba # 86行 oracle.install.db.OSOPER_GROUP=dba # 91行 oracle.install.db.OSBACKUPDBA_GROUP=dba # 96行 oracle.install.db.OSDGDBA_GROUP=dba # 101行 oracle.install.db.OSKMDBA_GROUP=dba # 106行 oracle.install.db.OSRACDBA_GROUP=dba # 180行 数据库类型 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 185行,实例名称 oracle.install.db.config.starterdb.globalDBName=orcl # 190行,实例名称 oracle.install.db.config.starterdb.SID=orcl # 216行 oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 386行 SECURITY_UPDATES_VIA_MYORACLESUPPORT=false # 398行 设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对) DECLINE_SECURITY_UPDATES=true
PS:另外本文涉及到的 db_install.rsp、dbca.rsp 这两个文件会提供一个改好的模板,下载后可直接使用。
通过网盘分享的文件:db_install&dbca.zip 链接: https://pan.baidu.com/s/1B2y9HkPOMEqQg59rr3j0XA?pwd=f7y2
2、安装Oracle 由于之前准备工作中已为Oracle的安装新建了用户,所以这里的安装全部是由oracle的身份进行的。
[root@kyost ~] [oracle@kyost database]$ source /home/oracle/.bash_profile [oracle@kyost ~]$ cd /app/oracle/database/install/ [oracle@kyost database]$ mv unzip unzip.bak [oracle@kyost install]$ ln -s /usr/bin/unzip [oracle@kyost install]$ cd .. [oracle@kyost database]$ ./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /app/oracle/database/response/db_install.rsp 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 500 MB。 实际为 1454 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 4061 MB 通过 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2024-08-09_08-17-09PM. 请稍候...[oracle@kyost database]$ [WARNING] [INS-32055] 主产品清单位于 Oracle 基目录中。 操作: Oracle 建议将此主产品清单放置在 Oracle 基目录之外的位置中。 可以在以下位置找到本次安装会话的日志: /app/oracle/oraInventory/logs/installActions2024-08-09_08-17-09PM.log
此时我们可以以root身份再开一个shell窗口,通过以下命令来查看安装进度。
直到以oracle身份执行的安装程序输出以下信息时,我们可以复制其提示的要执行的sh路径在root权限的shell窗口中执行。
切换到root权限的shell窗口,依次执行以下两条命令,完成最后的安装。
[root@kyost ~] 更改权限/app/oracle/oraInventory. 添加组的读取和写入权限。 删除全局的读取, 写入和执行权限。 更改组名/app/oracle/oraInventory 到 oinstall. 脚本的执行已完成。 [root@kyost ~] Check /app/oracle/product/12.2.0/db_1/install/root_kyost_2024-08-09_20-24-36-647019346.log for the output of root script [root@kyost ~]
至此,返回以oracle身份执行安装的shell窗口,按下回车键表示Oracle12CR2程序已安装完毕。
五、安装Oracle数据库实例 1、安装Oracle数据库监听 Oracle数据库监听的配置文件为 response/netca.rsp ,此文件不需要修改任何地方,可直接安装。
仍然以oracle身份执行以下命令。
[oracle@kyost database]$ netca -silent -responsefile /app/oracle/database/response/netca.rsp 正在对命令行参数进行语法分析: 参数"silent" = true 参数"responsefile" = /app/oracle/database/response/netca.rsp 完成对命令行参数进行语法分析。 Oracle Net Services 配置: 完成概要文件配置。 Oracle Net 监听程序启动: 正在运行监听程序控制: /app/oracle/product/12.2.0/db_1/bin/lsnrctl start LISTENER 监听程序控制完成。 监听程序已成功启动。 监听程序配置完成。 成功完成 Oracle Net Services 配置。退出代码是0 [oracle@kyost database]$ netstat -tlnp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp6 0 0 :::1521 :::* LISTEN 10734/tnslsnr tcp6 0 0 :::22 :::* LISTEN - [oracle@kyost database]$
PS:配置路径一定要写绝对路径不然总是报错找不到配置文件 Oracle Net Configuration Assistant 在给定位置找不到响应文件。 Oracle Net Services 配置失败,退出代码是1。Oracle Net Services 配置成功,退出代码是0。
提示:如若使用netstat -tlnp命令查到开启的端口不是1521,可按以下过程进行修改。
vi $ORACLE_HOME /network/admin/listener.ora lsnrctl stop lsnrctl start
2、配置静默建立新库文件dbca.rsp 在Kylin中找到 /app/oracle/database/response/dbca.rsp 这个文件,可以先将其从Kylin下载到本地电脑中修改,再将修改后的文件覆盖即可。修改过程可按如下引导即可。
重要提示:文件中的203行、233行、243行,这三行是登陆Oracle的超级管理员密码请自行修改。
# 21行 不可更改 responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 # 32行 全局数据库名 gdbName=orcl # 42行 系统标识符 sid=orcl # 52行 databaseConfigType=SI # 74行 policyManaged=false # 88行 createServerPool=false # 127行 force=false # 163行 createAsContainerDatabase设为true表示创建容器数据库;false为普通数据库 createAsContainerDatabase=false # 172行 numberOfPDBs=1 # 182行 pdbName=orclpdb # 192行 useLocalUndoForPDBs=true # 203行 库密码,这里大家可以依据自己的情况进行修改 pdbAdminPassword=73GaLHZg8 # 223行 templateName=/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc # 233行 超级管理员密码,这里大家可以依据自己的情况进行修改 sysPassword=73GaLHZg8 # 243行 管理员密码,这里大家可以依据自己的情况进行修改 systemPassword=73GaLHZg8 # 273行 emExpressPort=5500 # 284行 runCVUChecks=false # 313行 omsPort=0 # 341行 dvConfiguration=false # 391行 olsConfiguration=false # 401行 datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/ # 411行 datafileDestination=/app/oracle/oradata/{DB_UNIQUE_NAME}/ # 421行 recoveryAreaDestination=/app/oracle/recovery/{DB_UNIQUE_NAME} # 431行 storageType=FS # 468行 字符集创建库之后不可更改 characterSet=AL32UTF8 # 478行 nationalCharacterSet=AL16UTF16 # 488行 registerWithDirService=false # 526行 listeners=LISTENER # 546行 variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/usr/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/app/oracle/product/12.2.0.1/db_1,SID=orcl # 555行 initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest=/app/oracle/recovery/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_orcl,compatible=12.2.0,control_files=("/app/oracle/oradata/{DB_UNIQUE_NAME}/control01.ctl", "/app/oracle/recovery/{DB_UNIQUE_NAME}/control02.ctl"),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300 # 565行 sampleSchema=false # 574行 memoryPercentage=40 # 584行 databaseType=MULTIPURPOSE # 594行 automaticMemoryManagement=false # 604行 totalMemory=0
相关下载文件前面4.1章节已提供过了,这里再引用一下。
通过网盘分享的文件:db_install&dbca.zip 链接: https://pan.baidu.com/s/1B2y9HkPOMEqQg59rr3j0XA?pwd=f7y2
3、静默安装Oracle数据库实例 [oracle@kyost database]$ dbca -silent -createDatabase -responseFile /app/oracle/database/response/dbca.rsp [WARNING] [DBT-06801] 指定的快速恢复区大小 (2,780 MB) 小于建议值。 原因: 快速恢复区大小至少应为数据库大小 (1,142 MB) 的三倍。 操作: 指定的快速恢复区大小至少应为数据库大小的三倍。 [WARNING] [DBT-06208] 输入的 'SYS(S)' 口令未遵从 Oracle 建议的标准。 原因: a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。 b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令 操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。 [WARNING] [DBT-06208] 输入的 'SYSTEM' 口令未遵从 Oracle 建议的标准。 原因: a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。 b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令 操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。 [WARNING] [DBT-06801] 指定的快速恢复区大小 (2,780 MB) 小于建议值。 原因: 快速恢复区大小至少应为数据库大小 (2,672 MB) 的三倍。 操作: 指定的快速恢复区大小至少应为数据库大小的三倍。 复制数据库文件 1%已完成 2%已完成 18%已完成 33%已完成 正在创建并启动 Oracle 实例 35%已完成 40%已完成 44%已完成 49%已完成 50%已完成 53%已完成 55%已完成 正在进行数据库创建 56%已完成 57%已完成 58%已完成 62%已完成 65%已完成 66%已完成 执行配置后操作 100%已完成 有关详细信息, 请参阅日志文件 "/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" 。 [oracle@kyost database]$ ps -ef | grep ora_ | grep -v grep [oracle@kyost database]$ lsnrctl status LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 09-AUG-2024 20:51:46 Copyright (c) 1991, 2016, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=kyost.lan)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production Start Date 09-AUG-2024 20:30:31 Uptime 0 days 0 hr. 21 min. 14 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /app/oracle/product/12.2.0/db_1/network/admin/listener.ora Listener Log File /app/oracle/diag/tnslsnr/kyost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=kyost.lan)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl" , status READY, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s). Instance "orcl" , status READY, has 1 handler(s) for this service... The command completed successfully [oracle@kyost database]$
4、关闭防火墙 由于Oracle启用了1521端口,所以这里在这里需要闭防火墙才能对外提供访问。切换到root身份执行以下命令。
systemctl stop firewalld.service systemctl disable firewalld.service
当然,如果你对firewalld.service足够熟悉,我还是建议开启防火墙,并且只开放对应的端口即可。
六、数据库实例的启动和关闭 数据库实例的启动和关闭有以下两种方式进行管理,选择其中之一即可。
1、以脚本启动实例 默认情况下,以此种方式管理更方便快捷,除非需要对实例进行一些额外的操作(如修改用户密码等)。
通过网盘分享的文件:db_install&dbca.zip 链接: https://pan.baidu.com/s/1B2y9HkPOMEqQg59rr3j0XA?pwd=f7y2
将其中的 dbshut 和 dbstart 两个文件复制到以下目录,替换原文件:
/app/oracle/product/12.2.0/db_1/bin
此时可以以oracle的身份执行以下命令:
[oracle@kyost database]$ cd /app/oracle/product/12.2.0/db_1/bin [oracle@kyost database]$ dbstart
2、以sqlplus管理实例 使用oracle身份登陆到shell,以 DBA 身份进入 sqlplus,查看数据库状态。本章节不是必须的,主要是当数据库出现问题或忘记密码时可以绕过sys的密码直接操作DB的一种额外手段,如果不需要可以忽略。
[oracle@kyost database]$ sqlplus / as sysdba SQL> select open_mode from v$database ; //查看数据库 SQL> select status from v$instance ; //查看数据库实例 [oracle@kyost database]$ sqlplus / as sysdba SQL> alter user sys identified by ********; //改sys超级管理员密码 SQL> alter user system identified by ********; //改system管理员密码 [oracle@kyost database]$ sqlplus / as sysdba SQL> startup [oracle@kyost database]$ sqlplus / as sysdba SQL> shutdown abort 或 SQL> shutdown immediate
七、设置开机自启动Oracle 1、修改支持dbstart的方式启动 以root的身份对/etc/oratab文件进行修改。
[root@kyost ~] orcl:/app/oracle/product/12.2.0/db_1:Y
2、修改启动文件增加命令启动Oracle 以root的身份对/etc/rc.d/rc.local文件进行修改。
[root@kyost ~] su - oracle -lc "/app/oracle/product/12.2.0/db_1/bin/dbstart" su - oracle -lc "/app/oracle/product/12.2.0/db_1/bin/lsnrctl start" source /etc/profilesh /app/apache-tomcat-8.5.57/bin/startup.sh
特别注意:要使 /etc/rc.d/rc.local 文件开机可执行,需要给其加上执行权限,否则无效果。
八、连接测试 1、Navicat连接
2、PL/SQL Devloper连接 找到PL/SQL Devloper的安装位置,如我本地安装在 D:\Soft\PLSQL Developer 12。
在资源管理器中搜索tnsnames.ora文件。这里我的tnsnames.ora文件文件存放在以下目录,各位的安装位置不同请自行查找。
“D:\Soft\PLSQL Developer 12\instantclient-12.2.0.1.0\NETWORK\ADMIN\tnsnames.ora”
打开编辑,在文件的最后增加以下代码,保存退出。HOST是服务器的IP,这里自行替换。
kyost = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.47)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
打开PL/SQL Devloper,在数据库中选择刚添加的kyost,输入用户名和密码。
进入后,查询编码SQL,可以执行。
九、一些错误参考 1、无法启动oracle监听 例如出现以下2个问题的均可按此方法处理:
问题1:The listener supports no services 问题2:Instance “orcl”, status UNKNOWN, has 1 handler(s) for this service…
[root@iZ7xvd0lnw8vqd2l9thtejZ ~] iZ7xvd0lnw8vqd2l9thtejZ [root@iZ7xvd0lnw8vqd2l9thtejZ ~] [oracle@kyost database]$ uname -n kyost [oracle@kyost database]$ su root [root@kyost ~] [root@kyost ~] [oracle@kyost database]$ vi $ORACLE_HOME /network/admin/listener.ora SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME= orcl) (ORACLE_HOME=/app/oracle/product/12.2.0/db_1) (SID_NAME=orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = kyost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER = /usr
2、无法链接到数据源连接池 程序在使用数据源连接池时,配置是没有问题的,但就是报出如下错误:
ORA-28040: No matching authentication protocol
针对Oracle12C的方案如下:在oracle用户下,修改 sqlnet.ora 文件来实现。
vi /app/oracle/product/12.2.0/db_1/network/admin/sqlnet.ora SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
3、JDBC无法链接到数据库 select * from dba_users u where u.USERNAME='MYUSER' ;alter user MYUSER account unlock; alter user MYUSER identified by n9HAw995; ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;