| 
  
   
  相关链接与资源: 
  
  sqldevelper(各种操作系统的oracle客户端) 
  
 
  oracle11g r2下载地址: 
  
 
  centos7相关rpm包下载: 
  
 
  安装过程参考链接: 
  
  #centos7安装oracle11g R2 
  
 
  #linux安装oracle图文操作 
  
 
  #centos6安装oracle11g R2 
  
 
  #dbca建库图形化教程 
  
 
  #impdp和expdp使用说明 
  
 
 
    
  
    
  
  遇到的oracle报错以及解决方案: 
  
  ORA-01940: cannot drop a user that is currently connected 
  
  原因:user存在没有中断的任务 
  
  解决: 
  
      1、等待,一般等会(几分钟)就ok了 
  
 
            不过成功的几率不是太高 
  
    
  
  ORA-39171: Job is experiencing a resumable wait. 
  
  ORA-01688: unable to extend table IEVSP 
  
  原因:表空间不足,任务暂停 
  
  解决: 
  
      1、直接增加表空间的存储文件了事。 
  
  命令: 
  
  alter tablespace TBS_IEVSP add datafile '/opt/oracle/oradata/gw/TBS_IEVSP02.dbf' size 30G; 
  
  相关命令:查询表空间大小 
  
  查询表大小: 
  
  select a.tablespace_name, total, free, total-free as used from 
  
  (select tablespace_name, sum(bytes)/1024/1024/1024 as total from dba_data_files group by tablespace_name) a, 
  
  (select tablespace_name, sum(bytes)/1024/1024/1024 as free from dba_free_space group by tablespace_name) b 
  
  where a.tablespace_name = b.tablespace_name; 
  
  相关链接: 
  
  #查询表空间大小 
  
 
  #扩展表空间方法 
  
 
    
  
  ORA-39070: Unable to open the log file 
  
  原因:创建目录上级目录属组与用户有问题。 
  
  解决:chown -R oracle:oinstall /path 
  
    
  
  下面描述一下整体过程以及遇到的问题和解决方法,用于记录,为以后工作提供参考。 
  
    
  
  起因:客户给了一批大约150G的数据,需要给建模工程师分析。 
  
  整体处理流程: 
  
      1、查看用户提供数据格式为.dmp数据,是oracle导出的备份数据。 
  
      2、数据为GBK格式,而平台只能接入UTF-8的oracle,可能需要转码 
  
  那么临时目标变为了: 
  
      1、将数据导入某个现有的oracle数据库,有两个选择: 
  
          aws的oracle数据库实例 
   
  
          docker容器版本的oracle 
   
  
      2、尝试对数据进行转码 
   
  
    
  
  第一阶段:数据导入: 
  
      阶段目标是将数据导入oracle 
  
  尝试1:将数据导入docker的oracle容器。 
  
    
  
      在这个阶段尝试启动了一个oralce容器,镜像名称是:rodrigozc/oracle11g 
  
      相关启动命令可以在dockerhub上获取 
  
  阶段结果:失败 
  
  失败原因:由于oracle的镜像版本是xe,对表空间大小有限制,最高11G,失败! 
  
    
  
  尝试2:将数据导入aws的oracle服务实例 
  
       
  
      启动了aws实例,并且经过各种尝试和学习oracle概念,连接成功,但是出现问题 
   
  
  阶段结果:失败 
  
  失败原因:用户数据的导出方式是expdp|impdp,这种方式只能将数据经由本地导入。 
  
    
  
  第二阶段:创建数据库 
  
       
  
      第一步:环境准备 
   
  
          1、尝试在aws官方的AMI上进行搭建,但是官方源不支持linux界面安装。 
   
  
          2、尝试使用社区本的AMI进行搭建,进行了两次尝试(centos6)均失败,原因各有不同。 
   
  
          3、最终选择之间安装docker的私有AMI centos7 进行安装 
   
  
    
  
      第二步:oracle11g R2安装 
   
  
          1、安装步骤参照上面的参考链接即可,有一些小坑但是问题不大。 
   
  
          2、最大的问题可能在于display的设置以及vnc连接。 
   
  
          3、还有就是oracle安装环境检查时提示缺少rpm,除了一个centos5存在的包需要版本号比较大之外,其他的忽略即可 
  
    
  
  第三阶段:数据导入 
  
       
  
      第一步:创建表空间、索引空间、用户等。 
   
  
          1、这里有一个大坑,表空间即便自动增长,最大也就32G(好像),这导致我重复导入多次,实际上只要简单的扩充表空间存储文件,任务就会继续,这个阶段至少浪费了三个小时。 
  
    
  
  以上问题基本上baidu都可以解决,重点是由于比较分散,坑需要一个一个的踩,比较浪费时间。 
  
    
  
  投入时间:全程投入了4天,数据库安装与导入用了两天,并且都小加班了一下。 
  
  简单的记录下来,用于以后的参考。 
  
    
  
  #################################################### 
  
  以下是详细的环境准备与安装过程,其实上面才是重点 
  
  #################################################### 
  
  标题:centos7 安装oracle11g r2 
  
    
  
  #替换yum源为163源 
  
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo 
  
  yum clean all 
  
  yum makecache 
  
    
  
  #安装需要的包 
  
  rpm -qa binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-static kernel-headers pdksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libstdc++-static make numactl-devel sysstat unixODBC unixODBC-devel 
  
    
  
  yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-static kernel-headers pdksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libstdc++-static make numactl-devel sysstat unixODBC unixODBC-devel 
  
    
  
  #创建用户和组 
  
  groupadd oinstall 
  
  groupadd dba 
  
  groupadd oper 
  
  useradd -g oinstall -G dba,oper oracle 
  
  echo "oracle" | passwd --stdin oracle 
  
    
  
  #配置内核 
  
  # vi /etc/sysctl.conf 
  
  按照系统值对比添加: 
  
    
  
  #由于系统内存为119G,那么shmmax=118/2*1024*1024*1024 = 63350767616 
  
  fs.aio-max-nr = 1048576 
  
  fs.file-max = 6815744 
  
  kernel.shmall = 2097152 
  
  kernel.shmmax = 63350767616 
  
  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 = 1048576 
  
  保存后生效命令: 
  
  # /sbin/sysctl -p 
  
    
  
  #创建安装目录 
  
  mkdir -p /opt/oracle/product/11.2.0.1 
  
  chown -R oracle:oinstall /opt/oracle 
  
  mkdir /var/oracle 
  
  chown oracle:oinstall  /var/oracle 
  
  chmod 755 /var/oracle 
  
    
  
  #设置环境变量 
  
  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 
  
    
  
  #修改oracle账户环境变量 
  
  # .bash_profile 
  
  # Get the aliases and functions 
  
  if [ -f ~/.bashrc ]; then 
  
          . ~/.bashrc 
  
  fi 
  
  # User specific environment and startup programs 
  
  umask 022 
  
    
  
  TMP=/tmp 
  
  TMPDIR=/tmp 
  
  export TMP TMPDIR 
  
  # 如果安装出现相关问题请屏蔽下面5行, 
  
  # 安装好后再取消屏蔽这些环境变量设置 
  
  export ORACLE_HOME=/opt/oracle/product/11.2.0.1 
  
  export ORACLE_BASE=/opt/oracle 
  
  export ORACLE_SID=orcl 
  
  export TNS_ADMIN=$ORACLE_HOME/network/admin 
  
  export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
  
  export PATH=$PATH:$ORACLE_HOME/bin 
  
    
  
  export LANG=AMERICAN_AMERICA.ZHS16GBK 
  
  unset USERNAME 
  
    
  
  echo ".bash_profile executed" 
  
    
  
  #修改进程和最大会话数-root下编辑 
  
  编辑文件: 
  
  # vi /etc/security/limits.conf 
  
  oracle           soft    nproc           2047 
  
  oracle           hard    nproc           16384 
  
  oracle           soft    nofile          1024 
  
  oracle           hard    nofile          65536 
  
    
  
  #关联设置 
  
  vi /etc/pam.d/login 
  
  -倒数第二行加入 
  
  session    required     pam_limits.so 
  
    
  
  #安装vnc server 以及 图形化界面 
  
  yum install tigervnc tigervnc-server libvncserver -y 
  
    
  
  yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts -y 
  
    
  
  yum -y groupinstall "X Window System" 
  
    
  
  #centos7安装图形化界面和vnc 
  
 
    
  
  #远程静默安装oracle 
  
 
    
  
  #执行安装脚本报错 
  
  Exception in thread "main" java.lang.NoClassDefFoundError 
  
    
  
  #最正确的安装步骤: 
  
  export DISPLAY=:1 
  
  xhost + 
  
  su - oracle 
  
  ./runInstaller 
  
    
  
  使用vnc连接远程服务器安装oracle 
  
    
  
  #环境检查问题解决: 
  
    
  
  #创建大于16G的swap分区 
  
  dd if=/dev/zero of=/var/swap bs=1024 count=2048000 
  
    
  
  fallocate -l 17G /home/swapfile 
  
    
  
  chmod 600 /home/swapfile 
  
  mkswap swapfile 
  
  swapon swapfile 
  
    
  
  #pdksh包缺失: 
  
  rpm -e ksh-20120801-34.el7.x86_64 
  
  卸载ksh包,并安装pdksh包 
  
 
    
  
    
  
  #启动数据库监听服务 
  
  百度就ok  
  |