CentOS 7安装Oracle Express

Oracle官方文档说交换分区的大小要设2G或者内存的两倍,但是发现512M内存设置1G还是不给装,所以创建2G的交换分区

dd if=/dev/zero of=/swapfile bs=2048 count=1048576
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
swapon -a

安装完后会自动创建oracle用户和dba组之类的,但是自动创建的不会在/home下面创建用户目录,于是手动创建oracle用户,并加-m参数

useradd -m oracle

下载Oracle Express并解压

开始安装

cd Disk1
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

初始化配置

/etc/init.d/oracle-xe configure

配置环境变量/etc/profile

#Oracle
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=centos; export ORACLE_HOSTNAME
ORACLE_UNQNAME=XE; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME
ORACLE_SID=XE; export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

其中ORACLE_HOSTNAME、ORACLE_UNQNAME、ORACLE_HOME、ORACLE_SID要作对应修改,不然会出错

设置环境变量生效,或重新登录

source /etcprofile

切换到oracle用户,如无意外,能连上了

[oracle@centos ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Wed Dec 20 15:02:37 2017

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


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL>

Zabbix 3.2.6 自定义端口监控(Oracle)

一、背景

在现实的环境中,我们多多少少有些服务需要监控,但是zabbix自带的监控模板不存在,就需要我们自己进行配置,我们的主要方法也是监控这些服务的端口状态来确定服务是否正常运行。

我们今天主要通过判断Oracle的端口状态来监控服务是否正常,它的端口是1521。

二、配置

1、模板创建

为了简化操作,我们这里直接创建模板,不必每台机器单独去创建item以及trigger。

未分类

2、创建item

未分类

3、创建trigger

未分类

4、图标制作

有兴趣的可以制作一下图表,因为我没有兴趣,我这里就不写了。

5、给主机添加模板

这一步我也不再展示了,添加模板大家都会了。

三、验证

因为我的Action是默认的,只要出问题就会报警,这里不再展示,可以查看我其他的博文,我们停掉或者恢复数据库的监听端口,查看报警信息。

我这里是微信报警,关于微信报警的设置可以去查看我相关的博文。

未分类

oracle数据库迁移到MySQL的三种方法

本文主要总结了oracle数据库迁移到MySQL的方法,方法包括手动方式导入导出、使用工具Navicat 进行导入、使用工具DBMover 的OracleToMySQL 进行导入和使用工具intelligent-converters 的 oracle-to-mysql 进行导入,需要的朋友可以参考下。

之前搭建了一个ExtJS + spring + Oracle 的这样一个报表系统的框架。 因为其他部门的要求, 也需要这个Framework 进行一些特殊的定制。

但是有一个问题是 Oracle 的数据库是需要收费的, 个人使用倒没什么问题, 公司使用的话就会有侵权的问题了。
而MySQL 则是完全免费的。

所以使用 ExtJS + Spring + MySQL 这样的组合应该就没什么问题了。

理论上来说, MySQL 已经被Oracle 收购, 这两者之间的Migrate 应该比较容易, 但实际的迁移还是有一些问题, 以下就说一说一些实现的方式和问题。

方式一: 手动方式导入导出

手动的方式导入, 就是操作步骤会比较繁琐一些。

对Table 的结构和数据:

1、 使用 SQL Developer 把 oracle 的 table 的schema 和 Data(.sql 和 .xls) 导出

2、 使用 MySQL 的 WorkBench 创建 Table 和导入数据。

这里语法上会稍微有一些不同, 所以需要略微做一些调整。

对于View 来说, 特别是复杂的有子查询的Oracle View 说, 要导入到MySQL 看起来就不是那么容易了。

方式二: 使用工具Navicat 进行导入

1、 新建数据库的连接,建立需要迁移的Oracle 和 MySQL 的数据库连接。

另外, 建立Oracle 连接的时候还需要下载一个oci.dll 的文件。

下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载之后, 解压到某个目录:

在 Navicat 的 工具 –> 选项 下做类似如下设置:

未分类

细部可以参见:http://wiki.navicat.com/wiki/index.php/Instant_client_required

完成设置后, 重启 navicat

2、 设置过连接之后,接下来就可以进行表和数据的migrate了

点击: 工具 –》 数据传输

在 “常规” 的标签页中设置需要 migrate 的连接

在 “高级” 的标签页中 ,设置需要 migrate 哪些具体的内容:

配置完成之后,点 “开始” 就可以了。

基本上:对于Table的结构和数据的迁移的话,基本上没什么问题。

但是对于View的导入,因为MySQL的View的语法不能有子查询语句。

在Navite上,可以看到从Oracle导入到MySQL的时候,View 的Checkbox 不能选取。

方式三:使用工具DBMover的OracleToMySQL进行导入

DBMover这个网站也提供了Oracle到MySQL 迁移的工具。

下载地址是:http://dbmover.com/download/oracletomysql_cn.zip

这也是一个收费的软件,试用版的限制是:允许迁移的记录条数累计为10万条。

下载安装,启动后会先要求输入数据库连接的信息,一直配置完成之后这里就只能看到table 了。

和Navicat比较起来,感觉这个显得简单,只能migrate table,而且使用上也不是很方便。

下一次Migrate又得重头到尾输入一次,没办法记住之前配置的连接。

Zabbix 3.2.6配置ODBC监控MySQL和Oracle

一、总览

ODBC的监控和在Zabbix前端配置数据库监控条目类型基本一致。

ODBC是用C语言编写的用于连接数据库管理系统的一个中间件,最初有微软公司研发,后来发展到各大平台。

有了ODBC的支持,Zabbix可以查询很多种数据库,因为Zabbix自己不直接去连接数据库,而是通过ODBC的接口和驱动,因此可以更加高效的去监控不同的数据库。

二、安装配置

1、编译Zabbix server

要支持ODBC功能,在编译的时候需要加上--with-unixodbc,解决依赖需要安装如下软件包,
yum -y install unixODBC unixODBC-devel

2、安装unixODBC驱动

驱动是用于ODBC连接数据库用的,他可以支持各式各样的驱动,在大部分的Linux发行版中的仓库中,都有这些驱动,我们安装一个MySQL的驱动,用来监控MySQL数据库。
yum install mysql-connector-odbc

3、配置unixODBC

ODBC的配置主要是通过修改odbcinst.ini和odbc.ini两个文件,可以通过下面的命令去指定配置文件的位置。

# odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

odbcinst.ini主要是配置安装的ODBC数据库驱动,如MySQL,oracle,各字段含义我不再介绍。

[MySQL]                      # 驱动名称,在数据库文件中需要
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1

odbc.ini主要是配置数据源。

[test]                        # 数据源名称Data source name,在zabbix前端配置需要
Description = MySQL test database
Driver      = mysql           # 从驱动文件odbcinst.ini获取
Server      = 127.0.0.1
User        = zabbix
Password    = zabbix
Port        = 3306
Database    = zabbix

我们可以通过在安装unixODBC的时候附带安装的一个命令isql来判断我们是否可以成功的连接数据库。

# isql test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

4、配置Zabbix前端web

首先创建一个监控条目。

监控

这几个条目是必填的,具体解释如下:

  • Type 这里我们选择Database monitor
  • Key 选择db.odbc.select[unique_description,data_source_name]
    unique_description将会用于触发器中的条目
    data_source_name填写在odbc.ini中的test
  • User name 输入在odbc.ini中的用户名
  • Password 输入在odbc.ini中的密码
  • SQL query 输入SQL查询语句
  • Type of information 需要我们之前查询的返回值是什么,正确的选择才会被支持

5、注意事项

  • 查询语句执行时间不能超过配置的超时时间

  • 查询只允许返回一个值.

  • 如果查询语句返回了多个列,它只读取第一列

  • 如果查询语句返回了多行,它读取第一条

  • SQL语句必须是 select开头,只能是查询语句.

  • SQL语句不能包含换行符

6、错误消息

从zabbix 2.08开始ODBC提供如下详细的错误信息:
Cannot execute ODBC query:[SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]|
-------------------------  ---------   -----  |  ------------------------------------------------------------------- |
            |                  |         |    `- Native error code            `- error message.                      `- Record separator
            |                  |         `-SQLState
            `- Zabbix message  `- ODBC return code
错误消息最长不能超过128字节,因此错误消息太长会被截断。

三、验证

因为我们没有创建图像,可以从最新数据库里面查看我们创建的条目。

监控

你可以写更加复杂的SQL查询语句,以及制作触发器来对数据库更加详细的监控。

附录:

以上是对监控MySQL做的监控,下面我主要简要对Oracle的监控做下介绍。

1、下载oracle客户端

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

官网下载速度比较慢,也可以到我上传到51CTO下载中心的地方下载。

http://down.51cto.com/data/2328882

oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-odbc-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

2、安装

yum localinstall oracle-instantclient11.2-*

3、创建本地监控

安装的默认位置分别在
/usr/share/oracle/11.2/client64
/usr/include/oracle/11.2/client64
/usr/lib/oracle/11.2/client64
 设置环境变量之前,在/usr/lib/oracle/11.2/client64下创建network/admin文件夹,
mkdir  -p  /usr/lib/oracle/11.2/client64/network/admin
在此文件夹下创建tnsnames.ora,其内容入下:
test_oracle=
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.14)(PORT = 1521))
     (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = basicdb)
     )
    )

    在/usr/lib/oracle/11.2/client64/network/admin文件下创建sqlnet.ora,输入:

NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT)

4、配置环境变量

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

5、配置需要的库

chmod +x /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
cd /usr/lib64/
ln -s libodbcinst.so.2.0.0  libodbcinst.so.1

6、添加oracle驱动

# vim  /etc/odbcinst.ini
[oracle]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

7、添加oracle数据源

# vim  /etc/odbc.ini  
[test1]
Driver= oracle
DSN= test_oracle
ServerName= yourname
UserID= basicdb
Password= yourpasswd

8、sqlplus测试连接

# sqlplus yourname/yourpasswd@test_oracle

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 19 11:39:18 2017

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


Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit

9、配置zabbix前端

参考文档:https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/odbc_checks

配置PHP与Oracle数据库连接

首先确认你已经安装有oracle 11g,下面是在装有oracle 11g的centos-6 64位配置php与oracle连接的事例。

安装oracle即时客户端

到这里http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html下载oracle-instantclient11.2-basic,oracle-instantclient11.2-devel,oracle-instantclient11.2-sqlplus文件,开始安装:

  1. rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm  oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm  oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm
  1. vi /etc/ld.so.conf.d/oracle-lib.conf

加入:

  1. /usr/lib/oracle/11.2/client64/lib/
  1. ldconfig

安装OCI8 PHP扩展

  1. cd /tmp
  2. wget http://pecl.php.net/get/oci8-1.4.7.tgz
  3. tar xzf oci8-1.4.7.tgz
  4. cd oci8-1.4.7
  5. phpize
  6. ./configure –with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib/
  7. make && make install

在/etc/php.ini中加入:

  1. extension = "oci8.so"

接着使用php -m查看模块是否已经被加载

CentOS-6 64位安装oracle 11g

一、使用oracle硬件要求

1、内存要求

最小内存1G,推荐2G或2G以上

2、swap大小设定

1GB跟2GB物理内存之间的,设定swap大小为物理内存的1.5倍
2GB跟16GB物理内存之间的,设置swap大小与物理内存相等
16GB物理内存以上的,设置swap大小为16GB

3、共享内存/dev/shm要求

至少比在每个oracle实例中的MEMORY_MAX_TARGET和MEMORY_TARGET要大。

4、/tmp空间大小要求

至少1GB空间

5、硬盘大小要求

存放oracle软件文件和数据文件的空间至少6GB

二、使用oracle软件要求

1、操作系统要求

Asianux Server 3 SP2
Oracle Linux 4 Update 7
Oracle Linux 5 Update 2
Oracle Linux 5 Update 5 (with the Oracle Unbreakable Enterprise Kernel for Linux)
Red Hat Enterprise Linux 4 Update 7
Red Hat Enterprise Linux 5 Update 2
Red Hat Enterprise Linux 5 Update 5 (with the Oracle Unbreakable Enterprise Kernel for Linux)
SUSE Linux Enterprise Server 10 SP2
SUSE Linux Enterprise Server 11

2、软件包要求

下面是64位centos 5或6的软件包要求
binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat

三、开始安装oracle

因为本机没有安装桌面环境,所以我们采用静默安装oracle。

1、安装依赖

  1. yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat

2、添加用户

  1. /usr/sbin/groupadd oinstall
  2. /usr/sbin/groupadd dba
  3. /usr/sbin/useradd -g oinstall -G dba oracle
  4. passwd oracle

3、修改内核参数

  1. vi /etc/sysctl.conf
  1. #######
  2. fs.aio-max-nr = 1048576
  3. fs.file-max = 6815744
  4. kernel.shmall = 2097152
  5. kernel.shmmax =  536870912
  6. kernel.shmmni = 4096
  7. kernel.sem = 250 32000 100 128
  8. net.ipv4.ip_local_port_range = 9000 65500
  9. net.core.rmem_default = 262144
  10. net.core.rmem_max = 4194304
  11. net.core.wmem_default = 262144
  12. net.core.wmem_max = 1048586
  13. #######
  1. /sbin/sysctl -p

4、修改用户资源限制

  1. vi /etc/security/limits.conf
  1. #####
  2. oracle              soft    nproc   2047
  3. oracle              hard    nproc   16384
  4. oracle              soft    nofile  1024
  5. oracle              hard    nofile  65536
  6. oracle              soft    stack   10240
  7. #####

5、目录创建

  1. mkdir -p /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/
  2. chown -R oracle:oinstall /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/
  3. chmod -R 775 /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/

6、设置用户环境

  1. su – oracle
  2. vi .bash_profile
  1. #####
  2. export ORACLE_BASE=/usr/local/oracle
  3. export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
  4. export ORACLE_SID=sales
  5. export ORACLE_OWNER=oracle
  6. export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
  7. ####
  1. source .bash_profile

7、下载oracle

切换到root用户

  1. su –

下载oracle 11g到/home/并解压

  1. chmod 777 /home/database
  2. chown -R oracle.oinstall /home/database

8、创建oraInst.loc

  1. vi /etc/oraInst.loc
  1. #####
  2. inventory_loc=/usr/local/oraInventory
  3. inst_group=oinstall
  4. #####
  1. chown oracle:oinstall /etc/oraInst.loc
  2. chmod 664 /etc/oraInst.loc

9、开始安装

  1. su – oracle
  2. /home/database/runInstaller -silent -debug -force
  3.  FROM_LOCATION=/home/database/stage/products.xml
  4.  oracle.install.option=INSTALL_DB_SWONLY
  5.  UNIX_GROUP_NAME=oinstall
  6.  INVENTORY_LOCATION=/usr/local/oraInventory
  7.  ORACLE_HOME=/usr/local/oracle/product/11.2.0/db_1
  8.  ORACLE_HOME_NAME="Oracle111"
  9.  ORACLE_BASE=/usr/local/oracle
  10.  oracle.install.db.InstallEdition=EE
  11.  oracle.install.db.isCustomInstall=false
  12.  oracle.install.db.DBA_GROUP=oinstall
  13.  oracle.install.db.OPER_GROUP=oinstall
  14.  DECLINE_SECURITY_UPDATES=true
  15. su –
  16.  
  17. /usr/local/oracle/product/11.2.0/db_1/root.sh

安装参考:http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm
错误大全:http://docs.oracle.com/cd/E11882_01/server.112/e17766/toc.htm#BEGIN