整理文档

This commit is contained in:
2022-11-01 23:53:13 +08:00
parent 32464821f2
commit 2a29b73926
10 changed files with 331 additions and 452 deletions

View File

@ -1,66 +1,27 @@
# 使用 ora2pg 将oracle 数据导入 postgresql
## 安装edb
##### 安装edb 源
```
yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm
```
##### 设置账号密码
```
sed -i "s@<username>:<password>@start:oIVqaoGTDFL5aYHD@" /etc/yum.repos.d/edb.repo
```
##### 安装 扩展包 源
```
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
```
##### 安装edb
```
yum -y install edb-as14-server
```
##### 初始化
```
准备 edb 安装过程看 [Centos搭建edb9.5.md](./Centos搭建edb9.5.md)
```sh
PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as14/bin/edb-as-14-setup initdb
#EDB12初始初始化
PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as12/bin/edb-as-12-setup initdb
PGSETUP_INITDB_OPTIONS="-E UTF-8 -D /home/edbdata" /usr/edb/as12/bin/edb-as-12-setup initdb
```
##### 启动 edb
```
```sh
systemctl start edb-as-14
```
##### 连接edb
```
```sh
sudo su - enterprisedb
psql edb
psql edb
```
@ -92,62 +53,24 @@ psql edb
### 安装 perl 环境
```
```sh
yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum -y install perl-CPAN
```
### 安装Oracle客户端
**安装 perl 依赖**
官网下载 Oracle Instant Client 等包 上传服务器安装
```
rpm -ivh oracle-instantclient19.15-basic-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-devel-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-jdbc-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-sqlplus-19.15.0.0.0-1.x86_64.rpm
```
#### 设置环境变量ORACLE_HOME
```
export ORACLE_HOME=/usr/lib/oracle/19.15/client64/
```
#### 本地已安装有Oracle数据库
ORACLE_HOME如下设置
```
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
```
### 安装 perl 依赖
```
```sh
perl -MCPAN -e 'install DBD::Oracle'
perl -MCPAN -e 'install DBI'
perl -MCPAN -e 'install DBD::Pg'
```
按照自己 的路径设置 环境变量
```
export POSTGRES_HOME=/usr/edb/as14
export POSTGRES_HOME=/var/lib/edb/as14
```
#### 常见问题
**常见问题**
```
Can't locate Test/NoWarnings.pm in @INC (@INC contains: t/lib /root/.cpan/build/DBD-Oracle-1.83-LDK8k0/blib/lib /root/.cpan/build/DBD-Oracle-1.83-LDK8k0/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at t/26exe_array.t line 15.
@ -161,7 +84,7 @@ Can't locate Test/NoWarnings.pm in @INC (@INC contains: t/lib /root/.cpan/build/
下载地址https://metacpan.org/release/DBI
```
```sh
tar -zxvf DBI-1.642.tar.gz
cd DBI-1.642
perl Makefile.PL
@ -171,11 +94,56 @@ make install
## 安装Oracle客户端
官网下载 Oracle Instant Client 等包 上传服务器安装
```sh
rpm -ivh oracle-instantclient19.15-basic-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-devel-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-jdbc-19.15.0.0.0-1.x86_64.rpm
rpm -ivh oracle-instantclient19.15-sqlplus-19.15.0.0.0-1.x86_64.rpm
```
**设置环境变量**ORACLE_HOME
```sh
export ORACLE_HOME=/usr/lib/oracle/19.15/client64/
```
**本地已安装有**Oracle数据库
ORACLE_HOME如下设置
```sh
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
```
按照自己 的路径设置 环境变量
例如:
```sh
export POSTGRES_HOME=/usr/edb/as14
export POSTGRES_HOME=/var/lib/edb/as14
```
### 安装ora2pg
## 安装ora2pg
下载软件包
https://github.com/darold/ora2pg/releases
@ -189,25 +157,21 @@ https://github.com/darold/ora2pg/releases
[root@Test01 ora2pg-18.2]# make && make install
```
简单检查
**简单检查**
ora2pg --help
## 迁移数据
### 初始化项目
```
## 迁移数据
**初始化项目**
```sh
//初始化项目
ora2pg --init_project ora2pg
ora2pg -t SHOW_VERSION -c config/ora2pg.conf
ora2pg -t SHOW_SCHEMA -c config/ora2pg.conf
ora2pg -t SHOW_TABLE -c config/ora2pg.conf
ora2pg -t SHOW_COLUMN -c config/ora2pg.conf
ora2pg -t SHOW_ENCODING -c config/ora2pg.conf
```
### 配置配置文件
**配置配置文件**
默认配置文件即可 需要修改
@ -250,7 +214,7 @@ PG_SCHEMA icc
### 测试连接
**测试连接**
执行以下命令 返回oracle 版本则连接成功
@ -260,16 +224,29 @@ ora2pg -t SHOW_VERSION -c config/ora2pg.conf
### 导出表结构
**常用命令**
```
ora2pg -t SHOW_VERSION -c config/ora2pg.conf
ora2pg -t SHOW_SCHEMA -c config/ora2pg.conf
ora2pg -t SHOW_TABLE -c config/ora2pg.conf
ora2pg -t SHOW_COLUMN -c config/ora2pg.conf
ora2pg -t SHOW_ENCODING -c config/ora2pg.conf
```
**安装 screen**
先安装 screen 防止意外断开 导出失败
```
```sh
yum install -y screen
```
#### screen 常用命令
screen 常用命令
```
//开启一个screen
@ -284,7 +261,7 @@ screen -ls
### 导出数据
#### **导出数据**
该命令根据数据库大小 表大小等待时间不一 建议使用screen 运行
@ -294,7 +271,7 @@ ora2pg -t COPY -o data.sql -b ./data -c ./config/ora2pg.conf
### 修改校验表结构
**修改校验表结构**
导出完成后 在 `./schema/tables` 下有转换好的表结构(主要修改关键字段)
@ -310,7 +287,7 @@ ctid
### 导入数据库
#### 导入数据库
切换到`enterprisedb` 用户
@ -320,229 +297,30 @@ ctid
## 附录
#### 修改用户组 权限
**修改用户组 权限**
```
chown [-R] ownname:groupname filename
chmod -R 777 filename
```
#### 追踪服务日志
**追踪服务日志**
```
```sh
journalctl -f -u icc-analysis.service
```
#### 查看文件大小
**查看硬盘大小**
```
```sh
df -hl
df -h path
ls -lht
du -ah --max-depth=1 /path
查看删除的文件
#查看删除的文件
lsof -n | grep deleted
du -bsh /
```
#### Linux 替换命令 sed
```
参数说明:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
实例
可以使用正则 特殊字符\转义
sed ”s/要被取代的字串/新的字串/g“ fileName
```
#### psql 导入导出文件
```
//导入
pg_restore
psql -Uicc -dicc -f ./xxx.sql
psql -Uicc -dicc -h10.23.101.52 -f ./schema/tables/table.sql
//导出表 模式 数据
pg_dump -h10.23.101.52 -Uicc -dicc> ~/dum.sql
pg_dump -h10.23.101.52 -Uicc -dicc -f icc.dmp
报错停止 -v ON_ERROR_STOP=1
-a 只要数据
-s 只要表结构
-O 不设置表归属
-n, --schema=SCHEMA 只转储指定名称的模式
-T 排除表
-t 指定表
-Z 压缩0-9
pg_dump -U postgres vendemo | gzip > /vendemo.gz 备份下来只有30多k
// 导出压缩文件
pg_dump -h10.23.101.52 -Uicc -dicc -t 表名 -t表名 -a -O | gzip > iccData.gz
pg_dump -Uicc -dicc | gzip > iccData.gz
//导入压缩文件
gzip -d iccData.gz | psql -Uicc -dicc -h10.23.101.52
//没测试过
psql -Uicctestedb -dicctestedb < gzip -d iccData.gz
./pg_dump -h10.23.101.119 -Uicc -dicc -o | gzip > ~/iccData_202206231632.gz
psql -U iccedb -d iccedb -h 192.168.53.118 -n 'icc2' | gzip > ~/iccedb_icc2_202206301142.gz
psql -U iccedb -d iccedb -h 192.168.53.118 -v schema=icc2 | gzip > ~/iccedb_icc2_202206301142.gz
gzip -d ~/iccData_202206231634.gz | psql -Uiccedb -diccedb -h192.168.53.118
pg_dump -Uenterprisedb -diccedb -h192.168.53.118 -n icc2 | gzip > ~/iccedb_icc2_202206301214.gz
pg_dump -Uenterprisedb -dicc -h10.23.101.119 -n icc | gzip > ~/icc_icc_202207011859.gz
pg_dump -t 'icc.*' -T icc.t_icc_inv_leg -T icc.t_icc_inv_leg_rate -T tcn_stat_new-dicc > ~/icc_icc_202207081700.sql
pg_dump -Uenterprisedb -dicc -h10.23.101.119 \
-T t_icc_inv_leg \
-T t_icc_inv_leg_rate \
-T tcn_stat_new | gzip > ~/icc_icc_202207081500.gz
./pg_dump -Uenterprisedb -dicc -h10.23.101.119 -O \
-n icc -s \
-f ~/icc_data_20220719_2130.sql
yiing&654
#导出 icc 模式下 排除 t_icc_inv_seg 等表 采用自定义格式压缩等级9最大
./pg_dump -Uenterprisedb -dicc -h10.23.101.119 \
-O -v -F c -Z 9 \
-t 'icc.*' \
-T '*.t_icc_inv_seg' \
-T '*.t_icc_inv_leg_rate' \
-T '*.t_icc_hsd_inv_leg' \
-T '*.t_icc_inv_leg' \
-T '*.tcn_stat_new' \
-T '*.tcn_stat_sales_volume_total' \
-T '*.t_foreign_ticket_record' \
-T '*.tcn_stat_sales_volume_tmp' \
-T '*.t_icc_hsd_inv_seg' \
-T '*.tcn_stat_sales_volume' \
-T '*.t_icc_inv_seg_cabin' \
-f ~/icc_data_20220719_test.sql
恢复
./pg_restore -Uenterprisedb -dtest2 -h10.23.101.119 \
-F c -c --strict-names ~/icc_data_20220719_test.sql
./pg_dump -Uenterprisedb -diccedb -h192.168.53.118 -O -a -f ~/diccedb_202207_29.data.sql
./pg_dump -h10.23.101.242 -Uenterprisedb -dalgorithm | gzip > /home/algorithmEdbData.gz
算法私服
/usr/edb/as12/bin/psql -Uenterprisedb -dalgorithm -h172.27.127.101 -f /home/wayne/algorithmEdbData
/usr/edb/as12/bin/pg_dump -h10.23.101.242 -Uenterprisedb -dalgorithm | gzip > /home/algorithmEdbData.gz
算法
./psql -Uenterprisedb -dalgorithm -h10.23.101.242
./pg_dump -h10.23.101.242 -Uenterprisedb -dalgorithm | gzip > /home/algorithmEdbData.gz
uat
psql -Uiccedb -diccedb -h192.168.53.118 -f ~/
sit
psql -Uicctestedb -dicctestedb -h192.168.53.123 -f ~/
```
#### 查询连接数
```
show max_connections;
SELECT COUNT(*) from pg_stat_activity;
```
#### edb9 启动方式
```
Linux
/etc/init.d/ppas-9.x <start|stop|restart|status|reload>
service ppas-9.x <start|stop|restart|status|reload>
通用方式:
sudo su - enterprisedb
$PGHOME/bin/pg_ctl <start|stop|restart|status|reload> [options]
opt/PostgresPlus/9.5AS
```