title: centos7.9部署Oracle19.3c date: 2022-4-26 17:24centos7.9部署Oracle19.3c
安装部分参考了IT_平甫
一、上传rpm文件到/root文件下oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm oracle-database-ee-19c-1.0-1.x86_64.rpm 两个文件,第二个是官网下载的安装包,第一个此安装包的一个依赖.(直接百度包名就能搜到官网传送门,传送门2)注意下载19.3linuxRPM版本
环境依赖安装 # yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel unixODBC unixODBC-devel # yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm # yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm二、设置兼容性模式
Oracle安装默认是不支持CentOS的,所以需要改一下
export CV_ASSUME_DISTID=RHEL7.6三、设置配置文件
# vim /etc/init.d/oracledb_ORCLCDB-19c export ORACLE_VERSION=19c export ORACLE_SID=ORCL #默认数据库名为ORCLPDB,可以自行修改, export TEMPLATE_NAME=General_Purpose.dbc export CHARSET=ZHS16GBK #默认为AL32UTF8,可以修改为ZHS16GBK, export PDB_NAME=ORCLPDB #默认数据库名为ORCLPDB1,可以自行修改, export LISTENER_NAME=LISTENER export NUMBER_OF_PDBS=1 export CREATE_AS_CDB=true
zhs16gbk是中文字符集,也就是适合在中国用,只能存储中文和英文字符,如果你存储韩文则显示为乱码(没有编码),而al32utf8是utf8字符集,u是unicode的意思,适合中文、韩语、日语等等不同的语言使用。那么为什么我们要在中国使用zhs16gbk存储中文呢?这是因为utf8存储中文的效率不如zhs16gbk,比如一个字“懂”,zhs16gbk采用2个字符存储,而al32utf8采用3-4个字符存储,这样效率就有了高低之分。
配置环境变量
# vim /etc/profile.d/db.sh export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin export ORACLE_SID=ORCL #和上面配置文件中的 ORACLE_SID 对应,修改了什么,这里就填写什么,我上面修改为ORCL,所以我这里为ORCL stty erase ^h
修改PID的配置文件信息如果没有修改ORACLE_SID就跳过此步骤,如果修改了,就修改
# cd /etc/sysconfig/ scp oracledb_ORCLCDB-19c.conf oracledb_ORCL-19c.conf四、初始化数据库
对数据库进行初始化
# /etc/init.d/oracledb_ORCLCDB-19c configure
初始化可能遇见各种报错,看第五步 时间比较久,耐心等待!
进入oracle用户,使用sqlplus / as sysdba进行登录数据库、启动实例
# su oracle $ sqlplus / as sysdba SQL> startup
更改用户名为system的密码
SQL> alter user system identified by 123456; // "123456"为密码五、异常处理 /etc/init.d/oracledb_ORCLCDB-19c configure报错
报错:
... LISTENER:No valid IP Address returned for the host victor.example.com. ...
原因:该主机无有效IP
解决:
方案一:为这个主机赋值一个IP
# vim /etc/hosts 将victor.example.com.对应ip改为一个真实ip,而非本地ip
方案二: 直接删掉这个主机(确保你知道这是什么)
# vim /etc/hosts 删除 victor.example.com.所在行SQL> startup报错
报错:
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initORCLPDB.ora'
解决:
去提示目录中发现少了initORCLPDB.ora文件
在/opt/oracle/admin/ORCLCDB/pfile目录下将init.ora.82772698(数字可能不一样)移动至前面的路径并重命名
执行:
SQL> connect/as sysdba; SQL> startup;
报错:
ORA-00845: MEMORY_TARGET not supported on this system
原因:/dev/shm分区过小
解决:
要用root用户才能有权限挂载分区。
# mount -o remount,size=3G /dev/shm/
再次startup
报错:
ORACLE instance started. Total System Global Area 1593832624 bytes Fixed Size 9135280 bytes Variable Size 922746880 bytes Database Buffers 654311424 bytes Redo Buffers 7639040 bytes ORA-01102: cannot mount database in EXCLUSIVE mode
原因:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
二、 说明Oracle被异常关闭时,有资源没有被释放,
解决:
网上解决方案好麻烦,我选择重启服务器, 重新登录SQL> startup Database mounted. Database opened. 成功六、连接数据库
重启Linux服务器后,Oracle服务还需要手动启动。启动步骤如下:
# su - oracle //登录到Linux服务器,并切换到oracle用户权限下 //运行sqlplus命令,进入sqlplus环境,并添加nolog参数,表示不登录 (命令:sqlplus /nolog)。以系统管理员的身份连接数据库 (命令:conn /as sysdba) $ sqlplus / as sysdba //(也可以直接sqlplus / as sysdba) SQL> startup //启动数据库实例 SQL> quit //退出数据库 退回到oracle用户 $ lsnrctl start //启动监听(启动监听才能远程登录)
设置一个可以登录的账户:
SQL> alter user system identified by 123456; //修改密码 SQL> grant create session to system; //授权登录
使用SQLDevelope进行连接
用户名:system 密码:123456 主机名:你的服务器ip 端口号:1521(默认端口) SID:与第二步配置文件中的ORACLE_SID一致,默认为ORCLPDB



