【银河麒麟V10】【服务器】Oracle11g部署
一、环境准备 操作系统版本:银河麒麟V10 SP1 0518 Server x86_64
二、基础环境准备 1、安装麒麟操作系统 注意:预留至少7G以上swap缓存
2、关闭selinux和firewalld 3、如果是内网环境需要挂载本地源 【银河麒麟V10】【服务器】搭建本地镜像源_桂安俊@kylinOS的博客-博客_麒麟镜像源
4、准备oracle安装环境 (1)安装依赖
yum install libnsl* -y
yum install binutils gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libXi unixODBC-devel
-y
(2)创建oracle用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle
(3)创建安装Oracle软件所需要的目录及赋权
mkdir -p /home/oracle/app/
chown -R oracle:oinstall /home/oracle/app/
chmod -R 775 /home/oracle/app/
并将oracle安装文件上传至 /home/oracle/app/ 目录下,并将“libpthread_nonshared.a”文件添加至/usr/lib64目录下。
(4)配置系统内核参数值
vim /etc/sysctl.conf
在打开的文件底部添加下面内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
使改变的系统内核参数值生效
sysctl -p
修改用户登录库文件引用limits.conf文件
vim /etc/security/limits.conf
# 在文件末尾添加下面6行内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
使改变的limits.conf文件生效
vim /etc/pam.d/login
在打开的文件底部添加下面内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
关闭防火墙
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止防火墙开机启动
systemctl status firewalld.service #查看防火墙状态
关闭selinux
vi /etc/selinux/config #编辑文件
SELINUX=disabled #修改的内容
安装依赖、有几个包可能不在yum源中,需要在网上去下载,我这里整理了几个比较难下载的包。
compat-libcap1-1.10-7.el7.x86_64.rpm
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
elfutils-libelf-0.185-1.el8.x86_64.rpm
elfutils-libelf-devel-0.185-1.el8.x86_64.rpm
【文章开头的网盘资料中】
rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm --force --nodeps
--force 强制安装
--nodeps 不查找依赖关系
检查是否安装成功
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
修改用户登录环境变量
vi /etc/profile
# 在文件末尾添加下面内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
source /etc/profile # 使修改的文件生效
配置Oracle用户环境变量
su - oracle #切换用户
vi ~/.bash_profile # 添加内容如下
# Source /root/.bashrc if user has one
[ -f ~/.bashrc ] && . ~/.bashrc
ORACLE_SID=orcl;export ORACLE_SID
ORACLE_UNQNAME=orcl;export ORACLE_UNQNAME
ORACLE_BASE=/home/oracle/app/;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;export ORACLE_HOME
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS";export NLS_DATE_FORMAT
NLS_LANG=american_america.ZHS16GBK;export NLOS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data;export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/x11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORALCE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native;export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
解决安装界面乱码问题
下载zysong.ttf,unzip 解压
一般最小化安装的centos没有zip解压和归档管理器file-roller
yum install -y unzip file-roller
01、建议在linux下安装些字体
mkdir -p /usr/share/fonts/zh_CN/TrueType
cp zysong.ttf /usr/share/fonts/zh_CN/TrueType/
02、在命令行$file-roller
在归档管理器打开database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/xx.jar
oracle11R2.0.4.0 中xx.jar ==filegroup4.jar
fallback文件夹加载进去filegroup4.jar对应的/jdk/jre/lib/fonts/下,及拖入后字体的路径为xx.jar文件的
在归档管理器中显示的路径/jdk/jre/lib/fonts/fallback/zysong.ttf。
03、退出安装,再次打开乱码即可问题解决
02、在配置数据库实例出现乱码
安装程序在使用dbca配置数据库时,仍然还会出现乱码
复制上述下载的字体文件夹到oracle安装文件夹下,如我的为:
$cp ~/fallback/zysong.ttf $ORACLE_HOME/jdk/jre/lib/fonts/fallback/
解决安装时报unzip问题
su root #切换到root用户
cp /usr/bin/unzip /u01/oracle11g-install/安装包/database/install #将系统的unzip程序拷贝到oracle安装目录的install目录下,oracle安装目录根据自己实际路径对应修改
开始安装Oracle 图形化安装方式需要调用图形界面,需要到服务器显示器或者远程桌面或者配置ssh工具图形转发服务等,才可安装。
#执行runInstaller安装脚本
su oracle #切换oracle用户安装
cd /u01/oracle11g-install/安装包/database #oracle安装文件放置路径以实际环境为准
./runInstaller
oracle 11gR2 安装时出现的错误:
错误(1): Error in invoking target 'links proc gen_pcscfg procob' of makefile '/u01/app/oracle/product/11.1.0/db_1/precomp/lib/ins_precomp.mk'.
解决方案参考网上的方法: http://www.oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-7.php 保留安装进程,另外开启一个终端窗口,修改文件env_rdbms.mk内容. # rm -rf /u01/app/oracle/product/12.1.0/db_1/lib/stubs/* # cp /u01/app/oracle/product/12.1.0/db_1/rdbms/lib/env_rdbms.mk /u01/app/oracle/product/12.1.0/db_1/rdbms/lib/env_rdbms.mk.orig # vi /u01/app/oracle/product/12.1.0/db_1/rdbms/lib/env_rdbms.mk # Line 176 # FROM: LINKTTLIBS=$(LLIBCLNTSH) $(ORACLETTLIBS) $(LINKLDLIBS) # TO ?: LINKTTLIBS=$(LLIBCLNTSH) $(ORACLETTLIBS) $(LINKLDLIBS) -lons # Line 279-280 # FROM: LINK=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS) $(COMPSOBJS) LINK32=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS32) $(COMPSOBJS) # TO ?: LINK=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS) $(COMPSOBJS) -Wl,--no-as-needed LINK32=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS32) $(COMPSOBJS) -Wl,--no-as-needed # Line 3041-3042 # FROM: TG4PWD_LINKLINE= $(LINK) $(OPT) $(TG4PWDMAI) \ $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS) # TO ?: TG4PWD_LINKLINE= $(LINK) $(OPT) $(TG4PWDMAI) \ $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS) -lnnz12 然后在安装进程中点击Retry即可。
解决方案 在makefile中添加链接libnnz11库的参数 修改$ORACLE_HOME/sysman/lib/ins_emagent.mk,将 $(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11 建议修改前备份原始文件 [oracle@ysserver ~]$ cd $ORACLE_HOME/sysman/lib [oracle@ysserver lib]$ cp ins_emagent.mk ins_emagent.mk.bak [oracle@ysserver lib]$ vi ins_emagent.mk
进入vi编辑器后 ?命令模式输入/NMECTL 进行查找,快速定位要修改的行 在后面追加参数-lnnz11 ? ?第一个是字母l ? 后面两个是数字1
每次虚拟机重启执行命令都要开启监听,打开数据库,设置开机自动执行:
#修改此文件,让sqlplus / as sysdba;不用手动执行
vi /etc/oratab
#将N改成Y
orcl:/u01/app/oracle/product/11.2.0.4/db_1:N
#修改此文件,数据库监听和服务开机自启
vi /etc/rc.d/rc.local
su - oracle -lc "/home/oracle/app/product/11.2.0/dbhome_1/bin/lsnrctl start" #与安装目录相关
su - oracle -lc "/home/oracle/app/product/11.2.0/dbhome_1/bin/dbstart" #与安装目录相关
#修改DB启动配置文件(安装目录中的dbstart文件)
vi /home/oracle/app/product/11.2.0/dbhome_1/bin/dbstart
ORACLE_HOME_LISTNER=$1 #将$1改成 $ORACLE_HOME
#设置权限
chmod u+x /etc/rc.d/rc.local
create temporary tablespace ERMSDB_TEMP tempfile '/home/oracle/app/oradata/orcl/ERMSDB_TEMP.dbf' size 100m reuse autoextend on next 20m maxsize unlimited;
create tablespace ERMSDB datafile '/home/oracle/app/oradata/orcl/ERMSDB.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
create user ERMS_V2 identified by ERMS_V2 default tablespace ERMSDB temporary tablespace ERMSDB_TEMP;
create user ERMS_UIM identified by ERMS_UIM default tablespace ERMSDB temporary tablespace ERMSDB_TEMP;
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ERMS_UIM';
grant dba ,connect, resource, unlimited tablespace to ERMS_V2;
grant dba ,connect, resource, unlimited tablespace to ERMS_UIM;
可更改alter system set sec_case_sensitive_logon=false;设置改为不区分大小写,
本地导入:
imp 用户名/密码@orcl file='文件地址' full=y ignore=y
导入其他数据库:
imp 用户名/密码@ip:端口//实例名 file='文件地址' full=y ignore=y
导出:
exp 用户名/密码@ip:端口//实例名 file='文件地址' tables=指定导出表名
多张表
exp 用户名/密码@ip:端口/实例名 file='文件地址' tables=table1,table2; 全部表
exp username/password@ip:端口/实例名 file='文件地址'
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2% exp erms_uim/erms_uim@orcl file=e:\bak\erms_uim_%BACKUPDATE%.dmp log=e:\bak\erms_uim_%BACKUPDATE%.log exp erms_v2/erms_v2@orcl file=e:\bak\erms_v2_%BACKUPDATE%.dmp log=e:\bak\erms_v2_%BACKUPDATE%.log
create or replace directory backdump as '/home/oracle/backup';
Grant read,write on directory backdump to erms_uim; Grant read,write on directory backdump to erms_v2;
#!/bin/bash
# 配置备份目录和文件名
BACKUP_DIR=/home/oracle/backup #根据1设置的dump目录
DATE=$(date +%Y%m%d)
expdp erms_uim/erms_uim@orcl directory=BACKDUMP schemas=erms_uim file=/home/oracle/backup/erms_uim_$DATE.dmp log=$BACKUP_DIR/erms_v2_$DATE.log
expdp erms_v2/erms_v2@orcl directory=BACKDUMP file=$BACKUP_DIR/erms_v2_$DATE.dmp log=$BACKUP_DIR/erms_v2_$DATE.log
# 删除3天前的备份
find ${BACKUP_DIR} -type f -mtime +3 -name "erms*.dmp" -exec rm {} \;
find ${BACKUP_DIR} -type f -mtime +3 -name "erms*.log" -exec rm {} \;
select userenv('language') from dual;
查看到是ZHS16GBK,而本机库是utf-8用一下命令修改本机库字符集
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
设置后导入成功!