centos7部署oracle-xe环境搭建并且使用logstash同步到kafka

centos7部署oracle-xe环境搭建并且使用logstash同步到kafka

环境介绍

1.阿里云centos7.4

2.oracle版本oracle-xe-11.2.0-1.0.x86_64

3.系统硬件2核4G

系统修改

注意由于安装oracle需要使Swap达到2G,这样有些云服务器需要手动添加Swap分区

dd if=/dev/zero of=/swapfile bs=1024 count=2148000
mkswap /swapfile
swapon /swapfile
chmod 0600 /swapfile
swapon -a
swapon -s

为了使用方便,手动创建oracle用户

#创建组
groupadd oinstall
groupadd dba
#创建用户
useradd -m -g oinstall -G dba oracle
#创建密码
passwd oracle
#创建目录
mkdir /u01/app -p
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

安装oracle

#oracle版本oracle-xe-11.2.0-1.0.x86_64 从官网下载即可
#安装依赖
yum install java-1.8.0-openjdk*
yum install unzip
yum install libaio*
#安装oracle
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
#初始化
#这里需要创建sys账户的密码
/etc/init.d/oracle-xe configure
#修改配置
vim /etc/profile
# Oracle Settings

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
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
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
TNS_ADMIN=$ORACLE_HOME/network/admin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

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

#修改文件

cd  /u01/app/oracle/product/11.2.0/xe/dbs/
cp init.ora initXE.ora

vim initXE.ora

db_name='XE'
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = ('/u01/app/oracle/oradata/', '/u01/app/oracle/oradata/')
compatible ='11.2.0'

#如果外网不能访问需要修改这里的hostname
cd /u01/app/oracle/product/11.2.0/xe/network/admin
#修改 listener.ora和tnsnames.ora对应的host地址成自己的hostname,重启即可
lsnrctl stop
lsnrctl start

#登录数据库查看是否按照正确
sqlplus sys/syspassword as sysdba;

字符编码

由于centos的字符编码和oracle的字符编码不一致,则会导致在服务器上执行sql脚本时,导入的中文字符会有乱码,所以需要统一字符编码。我这里使用AL32UTF8字符编码

#centos系统字符编码修改
#进入用户
su oracle

vim .bash_profile
export NLS_LANG=american_america.AL32UTF8

source .bash_profile

#oracle修改
sqlplus sys/syspassword as sysdba;
SQL> startup mount     
SQL> shutdown immediate; 
SQL> startup mount;
SQL> alter session set sql_trace=true;
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 databasecharacter set internal_use utf8;
SQL> shutdown immediate;
SQL> STARTUP;

使用logstash同步到kafka

#我这里使用logstash同步,安装过程省略
#配置文件如下:
input {
     stdin {
    }
    jdbc {
      jdbc_connection_string => "jdbc:oracle:thin:@//localhost:1521" #数据库地址
      jdbc_user => "AGREEMENT" #账号
      jdbc_password => "AGREEMENT" #密码
      jdbc_driver_library => "/data1/logstash-6.2.4/ojdbc7.jar" #驱动jar包位置,这个文件可以从oracle官网下载
      jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
      jdbc_paging_enabled => "true"
      statement => "SELECT * from BASE_EXCHANGE" #要同步的表,可以自己写sql文件
      schedule => "* * * * *" #多长时间同步一次,类似crontab
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
     #stdout { codec =>  rubydebug }
     kafka {
        topic_id => "payment_oracle_test" #kafka topic
        bootstrap_servers => "localhost:9092" #kafka地址
        codec => "json"
 }
}

猜你喜欢

转载自blog.csdn.net/z619193774/article/details/80450592