存档2020-07-21

CentOS7 安装oracle客户端

1、本机环境CentOS7 64  

2、下载oracle客户端包

进入主页面:

32位:

https://www.oracle.com/database/technologies/instant-client/linux-x86-32-downloads.html

64位:

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

  下载当前的最新版本18.03,只下载下面两个文件即可

  oracle-instantclient18.3-basic-18.3.0.0.0-1.i386.rpm
  oracle-instantclient18.3-sqlplus-18.3.0.0.0-1.i386.rpm

3、rpm方式安装包

  将上述下载文件放到centos中某个目录下,我的放在/home/ftpuser/下

[root@localhost ftpuser]# pwd
/home/ftpuser

# ls -l 总用量 54076 -rw-r–r–. 1 ftpuser ftpuser 54650380 1月 3 10:09 oracle-instantclient18.3-basic-18.3.0.0.0-1.x86_64.rpm -rw-r–r–. 1 ftpuser ftpuser 717272 1月 3 10:09 oracle-instantclient18.3-sqlplus-18.3.0.0.0-1.x86_64.rpm

进入目录,使用命令安装:
  rpm -ivh oracle-instantclient18.3-basic-18.3.0.0.0-1.i386.rpm
  rpm -ivh  oracle-instantclient18.3-sqlplus-18.3.0.0.0-1.i386.rpm
rpm简单命令复习
  1.安装软件:执行rpm -ivh rpm包名 
  2.查询软件包的详细信息:执行rpm -qpi rpm包名

4、环境变量配置

  打开用户专属配置文件(个人理解相当于windows系统环境变量的用户变量,只针对当前用户生效):vi ~/.bashrc

  在最后增加如下几行(注意路径是否正确):  

[root@localhost ~]# vi ~/.bashrc

PATH=$PATH:$HOME/bin

export PATH
export ORACLE_VERSION=18.3
export ORACLE_HOME=/usr/lib/oracle/$ORACLE_VERSION/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#export NLS_LANG="Simplified Chinese_china".ZHS16GBK
export PATH=$PATH:$ORACLE_HOME/bin

  按下esc输入 :wq 保存退出

5、配置TNS

  复制oracle服务端的tnsnames.ora文件,放到/usr/lib/oracle/18.3/client64/network/admin目录下。

6、测试

[root@localhost 18.3]# sqlplus test/ok123@PRODUCT_DB

SQL*Plus: Release 18.0.0.0.0 - Production on Mon Apr 8 16:33:32 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Last Successful login time: Mon Apr 08 2019 13:33:20 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

AutoMapHelper帮助类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common
{
    public static class AutoMapHelper
    {

        /// <summary>
        ///  类型映射,默认字段名字一一对应
        /// </summary>
        /// <typeparam name="TDestination"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static TDestination AutoMapTo<TDestination>(this object obj)
        {
            if (obj == null) return default(TDestination);
            var config = new AutoMapper.MapperConfiguration(cfg => cfg.CreateMap(obj.GetType(), typeof(TDestination)));
            return config.CreateMapper().Map<TDestination>(obj);
        }

        /// <summary>
        /// 类型映射,可指定映射字段的配置信息
        /// </summary>
        /// <typeparam name="TSource">源数据:要被转化的实体对象</typeparam>
        /// <typeparam name="TDestination">目标数据:转换后的实体对象</typeparam>
        /// <param name="source">任何引用类型对象</param>
        /// <param name="cfgExp">可为null,则自动一一映射</param>
        /// <returns></returns>
        public static TDestination AutoMapTo<TSource, TDestination>(this TSource source, Action<AutoMapper.IMapperConfigurationExpression> cfgExp)
            where TDestination : class
            where TSource : class
        {
            if (source == null) return default(TDestination);
            var config = new AutoMapper.MapperConfiguration(cfgExp != null ? cfgExp : cfg => cfg.CreateMap<TSource, TDestination>());
            var mapper = config.CreateMapper();
            return mapper.Map<TDestination>(source);
        }



        /// <summary>
        /// 类型映射,默认字段名字一一对应
        /// </summary>
        /// <typeparam name="TSource">源数据:要被转化的实体对象</typeparam>
        /// <typeparam name="TDestination">目标数据:转换后的实体对象</typeparam>
        /// <param name="source">任何引用类型对象</param>
        /// <returns>转化之后的实体</returns>
        public static TDestination AutoMapTo<TSource, TDestination>(this TSource source)
            where TDestination : class
            where TSource : class
        {
            if (source == null) return default(TDestination);
            var config = new AutoMapper.MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
            var mapper = config.CreateMapper();
            return mapper.Map<TDestination>(source);
        }


        /// <summary>
        /// 集合列表类型映射,默认字段名字一一对应
        /// </summary>
        /// <typeparam name="TDestination">转化之后的实体对象,可以理解为viewmodel</typeparam>
        /// <typeparam name="TSource">要被转化的实体对象,Entity</typeparam>
        /// <param name="source">通过泛型指定的这个扩展方法的类型,理论任何引用类型</param>
        /// <returns>转化之后的实体列表</returns>
        public static IEnumerable<TDestination> AutoMapTo<TSource, TDestination>(this IEnumerable<TSource> source)
            where TDestination : class
            where TSource : class
        {
            if (source == null) return new List<TDestination>();
            var config = new AutoMapper.MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
            var mapper = config.CreateMapper();
            return mapper.Map<List<TDestination>>(source);
        }



    }
}

Js 判断是否为空

 /* @desc   判断`obj`是否为空
 * @param  {Object} obj
 * @return {Boolean}
 */
function isEmptyObject(obj) {
    if (!obj || typeof obj !== 'object' || Array.isArray(obj))
        return false
    return !Object.keys(obj).length
}

liunx Oralce 监听模板

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
      (SID_NAME = orcl)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )