RPO=0
实例故障RTO python2.7 -rwxr-xr-x. 1 root root 14376 Jan 1 2022 python2.7 -rwxr-xr-x. 1 root root 1846 Jan 1 2022 python2.7-config -rwxr-xr-x. 1 root root 14384 Jan 1 2022 python2.7-debug -rwxr-xr-x. 1 root root 1852 Jan 1 2022 python2.7-debug-config lrwxrwxrwx. 1 root root 16 Jan 1 2022 python2-config -> python2.7-config lrwxrwxrwx. 1 root root 15 Jan 1 2022 python2-debug -> python2.7-debug lrwxrwxrwx. 1 root root 22 Jan 1 2022 python2-debug-config -> python2.7-debug-config lrwxrwxrwx. 1 root root 9 Jan 1 2022 python3 -> python3.7 -rwxr-xr-x. 2 root root 14376 Jan 1 2022 python3.7 -rwxr-xr-x. 2 root root 14376 Jan 1 2022 python3.7m -rwxr-xr-x. 1 root root 388 Jan 1 2022 python3-chardetect lrwxrwxrwx. 1 root root 7 Jan 1 2022 python.bak -> python2 lrwxrwxrwx. 1 root root 14 Jan 1 2022 python-config -> python2-config lrwxrwxrwx. 1 root root 13 Jan 1 2022 python-debug -> python2-debug lrwxrwxrwx. 1 root root 20 Jan 1 2022 python-debug-config -> python2-debug-config root@host-02[/usr/bin]python -V Python 3.7.9
2.8 创建XML配置文件
需要提前创建安装时使用的配置文件,配置文件里有对应命名和目录结构参数配置。
omm@host-02[~]cat cluster_config.xml <br><br><br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br><br> <br> <br> <br> <br> <br> <br> <br> <br>
2.9 节点配置互信
配置两个节点omm用户的互信。
2.10 安装前检查
root@host-01[/home/omm/software/script]./gs_preinstall -U omm -G dbgrp -L -X /home/omm/cluster_config.xml
Parsing the configuration file.<br>Successfully parsed the configuration file.<br>Installing the tools on the local node.<br>Successfully installed the tools on the local node.<br>Setting host ip env<br>Successfully set host ip env.<br>Preparing SSH service.<br>Successfully prepared SSH service.<br>Checking OS software.<br>Successfully check os software.<br>Checking OS version.<br>Successfully checked OS version.<br>Creating cluster's path.<br>Successfully created cluster's path.<br>Set and check OS parameter.<br>Setting OS parameters.<br>Successfully set OS parameters.<br>Warning: Installation environment contains some warning messages.<br>Please get more details by "/home/omm/software/script/gs_checkos -i A -h host-01 --detail".<br>Set and check OS parameter completed.<br>Preparing CRON service.<br>Successfully prepared CRON service.<br>Setting user environmental variables.<br>Successfully set user environmental variables.<br>Setting the dynamic link library.<br>Successfully set the dynamic link library.<br>Setting Core file<br>Successfully set core path.<br>Setting pssh path<br>Successfully set pssh path.<br>Setting Cgroup.<br>Successfully set Cgroup.<br>Set ARM Optimization.<br>No need to set ARM Optimization.<br>Fixing server package owner.<br>Setting finish flag.<br>Successfully set finish flag.<br>Preinstallation succeeded.
预检查通过后,可以进行下一步安装动作。
2.11 执行安装
指定参数启动数据库,内存、进程和字符集等参数,主节点执行即可。
gs_install -X /home/omm/cluster_config.xml --gsinit-parameter="--encoding=UTF8" --dn-guc="max_process_memory=4GB" <br>--dn-guc="shared_buffers=256MB" --dn-guc="bulk_write_ring_size=256MB" <br>--dn-guc="cstore_buffers=16MB"
Parsing the configuration file.<br>Check preinstall on every node.<br>Successfully checked preinstall on every node.<br>Creating the backup directory.<br>Last time end with Install cluster.<br>Continue this step.<br>Successfully created the backup directory.<br>begin deploy..<br>Rolling back.<br>Rollback succeeded.<br>Installing the cluster.<br>begin prepare Install Cluster..<br>Checking the installation environment on all nodes.<br>begin install Cluster..<br>Installing applications on all nodes.<br>Successfully installed APP.<br>begin init Instance..<br>encrypt cipher and rand files for database.<br>Please enter password for database:<br>Please repeat for database:<br>begin to create CA cert files<br>The sslcert will be generated in /opt/opengauss/install/app/share/sslcert/om<br>NO cm_server instance, no need to create CA for CM.<br>Non-dss_ssl_enable, no need to create CA for DSS<br>Cluster installation is completed.<br>Configuring.<br>Deleting instances from all nodes.<br>Successfully deleted instances from all nodes.<br>Checking node configuration on all nodes.<br>Initializing instances on all nodes.<br>Updating instance configuration on all nodes.<br>Check consistence of memCheck and coresCheck on database nodes.<br>Successful check consistence of memCheck and coresCheck on all nodes.<br>Configuring pg_hba on all nodes.<br>Configuration is completed.<br>The cluster status is Normal.<br>Successfully started cluster.<br>Successfully installed application.<br>end deploy..<br>omm@host-01[~]
2.12 状态检查
安装完成后执行gs_om命令检查状态。
omm@host-01[/opt/opengauss/install/app/bin]gs_om -t status --detail<br>[ Cluster State ]<br><br>cluster_state : Normal<br>redistributing : No<br>current_az : AZ_ALL<br><br><br>[ Datanode State ]<br><br>node node_ip port instance state<br><br>----------------------------------------------------------------------------------------------------------<br><br>1 host-01 11.11.xx.183 15400 6001 /opt/opengauss/install/data/dn P Primary Normal<br>2 host-02 11.11.xx.184 15400 6002 /opt/opengauss/install/data/dn S Standby Normal
2.13 备库只读
设置备库只读。
1)如果主备机上的openGauss数据库实例正在运行,请先分别停止主备机上的数据库实例。
2)分别打开主机与备机的postgresql.conf配置文件,找到并将对应参数修改为:
wal_level=hot_standby<br>hot_standby = on<br>hot_standby_feedback = on
3)参数max_standby_streaming_delay、 max_prepared_transactions、 max_standby_archive_delay、 hot_standby_feedback可以参考《数据库参考》按需进行设置。
4)修改完成后,分别启动主备机即可。
2.14 取消public 权限
创建用户后,取消public权限,同时创建一个与用户名相同的schema,创建对象默认放到该schema下。
revoke all on schema public from public;<br>create user user1 login identified by "passwd1";<br>grant all privileges on database db1 to user1;
2.15 高可用切换测试
进行主备切换测试,以及主备故障恢复测试。
## 切主操作。
#在备库执行:
omm@host-02[~]gs_om -t status --detail<br>[ Cluster State ]<br><br>cluster_state : Normal<br>redistributing : No<br>current_az : AZ_ALL<br><br>[ Datanode State ]<br><br> node node_ip port instance state<br>----------------------------------------------------------------------------------------------------------<br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Primary Normal<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Standby Normal<br><br><br>omm@host-02[~]gs_ctl switchover -D /opt/opengauss/install/data/dn<br>[2023-12-19 23:10:18.450][160831][][gs_ctl]: gs_ctl switchover ,datadir is /opt/opengauss/install/data/dn <br>[2023-12-19 23:10:18.450][160831][][gs_ctl]: switchover term (1)<br>[2023-12-19 23:10:18.456][160831][][gs_ctl]: waiting for server to switchover........<br>[2023-12-19 23:10:23.493][160831][][gs_ctl]: done<br>[2023-12-19 23:10:23.493][160831][][gs_ctl]: switchover completed (/opt/opengauss/install/data/dn)<br>omm@host-02[~]gs_om -t status --detail<br>[ Cluster State ]<br><br>cluster_state : Normal<br>redistributing : No<br>current_az : AZ_ALL<br><br>[ Datanode State ]<br><br> node node_ip port instance state<br>----------------------------------------------------------------------------------------------------------<br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Standby Normal<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Primary Normal
omm@host-02[~]gs_om -t refreshconf ## 一定要更新配置
Generating dynamic configuration file for all nodes.<br>Successfully generated dynamic configuration file.
##回切操作:
omm@host-01[~]gs_ctl switchover -D /opt/opengauss/install/data/dn
[2023-12-19 23:11:33.767][307027][][gs_ctl]: gs_ctl switchover ,datadir is /opt/opengauss/install/data/dn<br>[2023-12-19 23:11:33.767][307027][][gs_ctl]: switchover term (1)<br>[2023-12-19 23:11:33.773][307027][][gs_ctl]: waiting for server to switchover........<br>[2023-12-19 23:11:38.811][307027][][gs_ctl]: done<br>[2023-12-19 23:11:38.811][307027][][gs_ctl]: switchover completed (/opt/opengauss/install/data/dn)<br>omm@host-01[~]<br>omm@host-01[~]gs_om -t refreshconf<br>Generating dynamic configuration file for all nodes.<br>Successfully generated dynamic configuration file.
omm@host-01[~]gs_om -t status --detail
[ Cluster State ]<br>cluster_state : Normal<br>redistributing : No<br>current_az : AZ_ALL<br>[ Datanode State ]<br>node node_ip port instance state<br><br>----------------------------------------------------------------------------------------------------------<br><br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Primary Normal<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Standby Normal<br>omm@host-01[~]
## 失败切换。
# 停掉主库:
omm@host-01[~]gs_om -t status --detail
[ Cluster State ]<br>cluster_state : Unavailable<br>redistributing : No<br>current_az : AZ_ALL<br>[ Datanode State ]<br>node node_ip port instance state<br><br>----------------------------------------------------------------------------------------------------------<br><br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Down Manually stopped<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Standby Need repair(Disconnected)
# 备库强制切主:
omm@host-02[~]gs_ctl failover -D /opt/opengauss/install/data/dn
[2023-12-19 23:14:16.444][172210][][gs_ctl]: gs_ctl failover ,datadir is /opt/opengauss/install/data/dn<br>[2023-12-19 23:14:16.444][172210][][gs_ctl]: failover term (1)<br>[2023-12-19 23:14:16.449][172210][][gs_ctl]: waiting for server to failover...<br>.[2023-12-19 23:14:17.460][172210][][gs_ctl]: done<br>[2023-12-19 23:14:17.460][172210][][gs_ctl]: failover completed (/opt/opengauss/install/data/dn)
omm@host-02[~]gs_om -t status --detail
[ Cluster State ]<br>cluster_state : Degraded<br>redistributing : No<br>current_az : AZ_ALL<br>[ Datanode State ]<br> node node_ip port instance state<br>----------------------------------------------------------------------------------------------------------<br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Down Manually stopped<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Primary Normal<br>omm@host-02[~]
# 原主库启动后,加入复制关系:
omm@host-01[~] gs_ctl start -D /opt/opengauss/install/data/dn -M standby
[2023-12-19 23:15:14.417][314811][][gs_ctl]: gs_ctl started,datadir is /opt/opengauss/install/data/dn <br>[2023-12-19 23:15:14.441][314811][][gs_ctl]: waiting for server to start...<br>.0 LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.<br>[2023-12-19 23:15:15.448][314811][][gs_ctl]: server started (/opt/opengauss/install/data/dn)<br>omm@host-01[~]gs_om -t status --detail<br>[ Cluster State ]<br><br>cluster_state : Degraded<br>redistributing : No<br>current_az : AZ_ALL<br><br>[ Datanode State ]<br><br> node node_ip port instance state<br>----------------------------------------------------------------------------------------------------------<br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Standby Need repair(WAL)<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Primary Normal
omm@host-01[~]gs_ctl build -D /opt/opengauss/install/data/dn
[2023-12-19 23:15:47.397][316058][dn_6001_6002][gs_ctl]: fprintf build pid file "/opt/opengauss/install/data/dn/gs_build.pid" success<br>[2023-12-19 23:15:47.399][316058][dn_6001_6002][gs_ctl]: fsync build pid file "/opt/opengauss/install/data/dn/gs_build.pid" success
omm@host-01[~]gs_om -t status --detail
[ Cluster State ]<br>cluster_state : Normal<br>redistributing : No<br>current_az : AZ_ALL<br><br>[ Datanode State ]<br><br> node node_ip port instance state<br>----------------------------------------------------------------------------------------------------------<br>1 host-01 11.11.11.183 15400 6001 /opt/opengauss/install/data/dn P Standby Normal<br>2 host-02 11.11.11.184 15400 6002 /opt/opengauss/install/data/dn S Primary Normal
2.16 参数优化
password_encryption_type,因客户端访问时不支持新的密码加密方式,修改为1兼容之前版本。
gs_guc reload -N all -I all -c "password_encryption_type=1"<br>gs_guc reload -N all -I all -c "password_reuse_max=3"<br>gs_guc reload -N all -I all -c "enable_memory_limit=on"<br>gs_guc reload -N all -I all -c "work_mem=512MB"<br>gs_guc reload -N all -I all -c "maintenance_work_mem=512MB"<br>gs_guc reload -N all -I all -c "bulk_read_ring_size=512MB"<br>gs_guc reload -N all -I all -c "bulk_write_ring_size=512MB" ?<br>gs_guc reload -N host-01 -D /opt/opengauss/install/data/dn -c "max_process_memory=16GB"<br>gs_guc reload -N host-02 -D /opt/opengauss/install/data/dn -c "max_process_memory=8GB"<br>gs_guc reload -N host-02 -D /opt/opengauss/install/data/dn -c "work_mem=1GB"<br>gs_guc reload -N host-01 -D /opt/opengauss/install/data/dn -c "shared_buffers=10GB"<br>gs_guc reload -N host-02 -D /opt/opengauss/install/data/dn -c "shared_buffers=4GB"
omm@host-01[~]gs_om -t restart #重启生效
Stopping cluster.<br><br>=========================================<br><br>Successfully stopped cluster.<br><br>=========================================<br><br>End stop cluster.<br><br>Starting cluster.<br><br>=========================================<br><br>[SUCCESS] host-01<br><br>2023-12-20 10:38:08.725 65825390.1 [unknown] 139684122632128 [unknown] 0 dn_6001_6002 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets<br><br>[SUCCESS] host-02<br><br>2023-12-20 10:38:12.216 65825394.1 [unknown] 139862630883264 [unknown] 0 dn_6001_6002 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets<br><br>=========================================<br><br>Successfully started.
2.17 错误处理
omm@host-01[~]export TMOUT=0<br><br>omm@host-01[~]gs_install -X /home/omm/cluster_config.xml --<br>gsinit-parameter="--encoding=UTF8" --dn-<br>guc="max_process_memory=4GB" --dn-guc="shared_buffers=256MB" --dn-guc="bulk_write_ring_size=256MB" --dn-guc="cstore_buffers=16MB"<br><br>Parsing the configuration file.<br><br>Check preinstall on every node.<br><br>[GAUSS-51400] : Failed to execute the command: python3 <br>'/opt/opengauss/install/om/script/local/CheckPreInstall.py' -U omm -t preinstall. Result:{'host-01': 'Failure', 'host-02': 'Success'}.<br><br>Error:<br><br>[FAILURE] host-01:<br><br>[SUCCESS] host-02:<br><br>Successfully checked GAUSS_ENV.
需要手工执行验证互信,包括本机和远端,两节点一样操作:
omm@host-01[~]python3 '/opt/opengauss/install/om/script/local/CheckPreInstall.py' -U omm -t preinstall Successfully checked GAUSS_ENV. omm@host-01[~]ssh host-01 date The authenticity of host 'host-01 (11.11.11.183)' can't be established. ECDSA key fingerprint is SHA256:ei10qMITbfPdLiU7EJ1WdJZfzCPcj/6U60ckhXQKfO8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'host-01,11.11.11.183' (ECDSA) to the list of known hosts.
Authorized users only. All activities may be monitored and reported. Mon Dec 18 14:45:33 CST 2023 omm@host-01[~]ssh host-01 date Authorized users only. All activities may be monitored and reported. Mon Dec 18 14:45:35 CST 2023 omm@host-01[~]ssh host-02 date 三
数据迁移(ora2pg)
3.1 安装ora2pg
yum install perl-ExtUtils-CBuilder<br>yum install perl-ExtUtils-MakeMaker<br>yum install perl-CPAN<br>rpm -ivh oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm<br>rpm -ivh oracle-instantclient19.11-devel-19.11.0.0.0-1.x86_64.rpm<br>rpm -ivh oracle-instantclient19.11-jdbc-19.11.0.0.0-1.x86_64.rpm<br>rpm -ivh oracle-instantclient19.11-sqlplus-19.11.0.0.0-1.x86_64.rpm<br>export ORACLE_HOME=/usr/lib/oracle/19.11/client64/
#安装DBI,DBD::Oracle,DBD::Pg ,在 www.cpan.org/modules/by-module 进行下载,版本选择最近版本。
DBD-Oracle-1.83.tar.gz
DBI-1.643.tar.gz
DBD-Pg-3.18.0.tar.gz
#在安装前需要设置环境变量:
export ORACLE_HOME=/usr/lib/oracle/19.11/client64/<br>export GAUSSHOME=/opt/opengauss/install/app/<br>export C_INCLUDE_PATH=/opt/opengauss/install/app_a07d57c3/include/p<br>ostgresql/server/libpq/:/opt/opengauss/install/app_a07d57c3/include/postgresql/server/
#分别解压后,执行:
perl Makefile.PL<br>make && make install
# 安装JSON:
JSON-4.10.tar.gz<br>perl Makefile.PL<br>make && make install
## 源码安装:
perl Makefile.PL<br>make && make install<br>export PERL5LIB=/home/omm/software/ora2og/openGauss-tools-ora2og-master/<br>export PATH=$PATH:/usr/local/bin/<br>ora2pg --help<br><br>root@host-01[/home/omm/software]ora2pg -v<br>Ora2Pg v21.1
3.2 软件环境检查
使用下面提供的脚本检查当前安装组件是否正确。
vi check.pl<br>#!/usr/bin/perl<br>use strict;<br>use ExtUtils::Installed;<br><br>my $inst=ExtUtils::Installed->new();<br>my @modules=$inst->modules();<br><br>foreach(@modules)<br>{<br> my $ver = $inst->version($_)||"????";<br> printf("%-12s -- %s\n", $_, $ver);<br>}<br>exit;<br><br>root@host-01[/usr/local/bin]perl check.pl <br>DBD::Oracle -- 1.83<br>DBD::Pg -- 3.18.0<br>DBI -- 1.643<br>JSON -- 4.10<br>Ora2Pg -- 21.1<br>Perl -- 5.28.3<br>RRDs -- 1.6999
3.3 项目初始化
Ora2pg可以针对每次迁移任务创建一个逻辑项目,项目下有对应目录存放迁移过程中的数据和文件。
root@host-01[/home/omm/ora2pg]ora2pg --init_project dir1
Creating project dir1.<br>./dir1/<br> schema/<br> dblinks/<br> directories/<br> functions/<br> grants/<br> mviews/<br> packages/<br> partitions/<br> procedures/<br> sequences/<br> synonyms/<br> tables/<br> tablespaces/<br> triggers/<br> types/<br> views/<br> sources/<br> functions/<br> mviews/<br> packages/<br> partitions/<br> procedures/<br> triggers/<br> types/<br> views/<br> data/<br> config/<br> reports/<br><br>Generating generic configuration file<br>Creating script export_schema.sh to automate all exports.<br>Creating script import_all.sh to automate all imports.
3.4 编辑配置文件
root@host-01[/etc/ora2pg]cat ora2pg.conf
ORACLE_HOME /usr/lib/oracle/19.11/client64/<br>ORACLE_DSN dbi:Oracle:host=10.19.190.90;sid=reportdb;port=1521<br>ORACLE_USER csprpt6<br>ORACLE_PWD KFQ_kf4<br>USER_GRANTS 0<br>DEBUG 0<br>EXPORT_SCHEMA 0<br>CREATE_SCHEMA 1<br>COMPILE_SCHEMA 0<br>NO_FUNCTION_METADATA 0<br>TYPE TABLE<br>DISABLE_COMMENT 0<br>NO_VIEW_ORDERING 0<br>EXTERNAL_TO_FDW 1<br>TRUNCATE_TABLE 0<br>USE_TABLESPACE 0<br>REORDERING_COLUMNS 0<br>CONTEXT_AS_TRGM 0<br>FTS_INDEX_ONLY 1<br>USE_UNACCENT 0<br>USE_LOWER_UNACCENT 0<br>DATADIFF 0<br>DATADIFF_UPDATE_BY_PKEY 0<br>DATADIFF_DEL_SUFFIX _del<br>DATADIFF_UPD_SUFFIX _upd<br>DATADIFF_INS_SUFFIX _ins<br>DATADIFF_WORK_MEM 512 MB<br>DATADIFF_TEMP_BUFFERS 1024 MB<br>KEEP_PKEY_NAMES 0<br>PKEY_IN_CREATE 0<br>FKEY_ADD_UPDATE never<br>FKEY_DEFERRABLE 0<br>DEFER_FKEY 0<br>DROP_FKEY 0<br>DISABLE_SEQUENCE 0<br>DISABLE_TRIGGERS 0<br>PRESERVE_CASE 0<br>INDEXES_RENAMING 0<br>USE_INDEX_OPCLASS 0<br>PREFIX_PARTITION 0<br>PREFIX_SUB_PARTITION 1<br>DISABLE_PARTITION 0<br>WITH_OID 0<br>ORA_RESERVED_WORDS audit,comment,references<br>USE_RESERVED_WORDS 0<br>DISABLE_UNLOGGED 0<br>OUTPUT output.sql<br>BZIP2<br>FILE_PER_CONSTRAINT 0<br>FILE_PER_INDEX 0<br>FILE_PER_FKEYS 0<br>FILE_PER_TABLE 0<br>FILE_PER_FUNCTION 0<br>STOP_ON_ERROR 1<br>COPY_FREEZE 0<br>CREATE_OR_REPLACE 1<br>PG_NUMERIC_TYPE 1<br>PG_INTEGER_TYPE 1<br>DEFAULT_NUMERIC bigint<br>ENABLE_MICROSECOND 1<br>TO_NUMBER_CONVERSION numeric<br>GEN_USER_PWD 0<br>FORCE_OWNER 0<br>FORCE_SECURITY_INVOKER 0<br>DATA_LIMIT 10000<br>NOESCAPE 0<br>TRANSACTION serializable<br>STANDARD_CONFORMING_STRINGS 1<br>USE_LOB_LOCATOR 1<br>LOB_CHUNK_SIZE 512000<br>XML_PRETTY 0<br>LOG_ON_ERROR 0<br>TRIM_TYPE BOTH<br>INTERNAL_DATE_MAX 49<br>FUNCTION_CHECK 1<br>ENABLE_BLOB_EXPORT 1<br>DATA_EXPORT_ORDER name<br>PSQL_RELATIVE_PATH 0<br>JOBS 1<br>ORACLE_COPIES 1<br>PARALLEL_TABLES 1<br>DEFAULT_PARALLELISM_DEGREE 0<br>PARALLEL_MIN_ROWS 100000<br>DROP_INDEXES 0<br>SYNCHRONOUS_COMMIT 0<br>EXPORT_INVALID 0<br>PLSQL_PGSQL 1<br>NULL_EQUAL_EMPTY 0<br>EMPTY_LOB_NULL 1<br>PACKAGE_AS_SCHEMA 1<br>REWRITE_OUTER_JOIN 1<br>FUNCTION_STABLE 1<br>COMMENT_COMMIT_ROLLBACK 0<br>COMMENT_SAVEPOINT 0<br>USE_ORAFCE 0<br>AUTONOMOUS_TRANSACTION 1<br>ESTIMATE_COST 0<br>COST_UNIT_VALUE 5<br>DUMP_AS_HTML 0<br>TOP_MAX 10<br>HUMAN_DAYS_LIMIT 5<br>PG_VERSION 12<br>BITMAP_AS_GIN 1<br>PG_BACKGROUND 0<br>PG_SUPPORTS_SUBSTR 1<br>AUTODETECT_SPATIAL_TYPE 1<br>CONVERT_SRID 1<br>DEFAULT_SRID 4326<br>GEOMETRY_EXTRACT_TYPE INTERNAL<br>FDW_SERVER orcl<br>MYSQL_PIPES_AS_CONCAT 0<br>MYSQL_INTERNAL_EXTRACT_FORMAT 0
## 验证:
root@host-01[/etc/ora2pg]ora2pg -t SHOW_VERSION -c ora2pg.conf<br>Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
3.5 数据迁移
本次只针对几张表和几个存储过程迁移,分别使用结构转换和数据同步功能。
ora2pg -t TABLE -a T1,T2,T3 -c /etc/ora2pg/ora2pg.conf<br><br>root@host-01[/etc/ora2pg]ora2pg -t TABLE -a T1,T2,T3 -c /etc/ora2pg/ora2pg.conf<br>[========================>] 12/12 tables (100.0%) end of scanning.<br>Retrieving table partitioning information...<br>[========================>] 12/12 tables (100.0%) end of table export.<br><br><br>##存储过程处理<br>P1,P2,P3A<br>root@host-01[/home/omm/ora2pg/dir1]sh export_schema.sh<br>[========================>] 685/685 tables (100.0%) end of scanning.<br>[========================>] 13/13 objects types (100.0%) end of objects auditing.<br>Running: ora2pg -p -t TABLE -a T1,T2,T3 -o table.sql -b ./schema/tables -c ./config/ora2pg.conf<br><br><br>[========================>] 12/12 tables (100.0%) end of scanning.<br>Retrieving table partitioning information...<br>[========================>] 12/12 tables (100.0%) end of table export.<br>Running: ora2pg -p -t PROCEDURE -a P1,P2,P3 A -o procedure.sql -b ./schema/procedures -c ./config/ora2pg.conf<br><br>[========================>] 8/8 procedures (100.0%) end of procedures export.<br>Running: ora2pg -t PROCEDURE -a P1,P2,P3 A -o procedure.sql -b ./sources/procedures -c ./config/ora2pg.conf<br>[========================>] 8/8 procedures (100.0%) end of procedures export.<br><br>##上面定义转换完成后,可以在目标端执行。<br><br>To extract data use the following command:<br>ora2pg -t COPY -a T1,T2,T3 -o data.sql -b ./data -c ./config/ora2pg.conf<br>sh import_all.sh -d db1 -o user1 -w xxxx -p 15400 -h 127.0.0.1 -f<br>ora2pg -p -t TABLE -a T1,T2,T3 -o tales2.sql -b ./schema/tables -c ./config/ora2pg.conf
3.6 错误处理
root@host-01[/home/omm/software/ora2og/DBD-Pg-3.18.0]make<br>cp lib/Bundle/DBD/Pg.pm blib/lib/Bundle/DBD/Pg.pm<br>cp Pg.pm blib/lib/DBD/Pg.pm<br>Running Mkbootstrap for Pg ()<br>chmod 644 "Pg.bs"<br>"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Pg.bs blib/arch/auto/DBD/Pg/Pg.bs 644<br>"/usr/bin/perl" -p -e "s/~DRIVER~/Pg/g; s/^do\(/dontdo\(/" /usr/local/lib64/perl5/auto/DBI/Driver.xst > Pg.xsi<br>"/usr/bin/perl" "/usr/share/perl5/vendor_perl/ExtUtils/xsubpp" -typemap '/usr/share/perl5/ExtUtils/typemap' Pg.xs > Pg.xsc<br>mv Pg.xsc Pg.c<br><br>gcc -c -I/opt/opengauss/install/app/include -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT <br>-D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,<br>-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/generic-hardened-cc1 <br>-m64 -mtune=generic -fasynchronous-unwind-tables <br>-fstack-clash-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE <br>-D_FILE_OFFSET_BITS=64 -DPGLIBVERSION=90204 -DPGDEFPORT=5432 <br>-g -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc <br>-DVERSION=\"3.18.0\" -DXS_VERSION=\"3.18.0\" -fPIC "-I/usr/lib64/perl5/CORE" Pg.c<br><br>In file included from Pg.xs:14:0:<br>Pg.h:35:10: fatal error: libpq-fe.h: No such file or directory<br> #include "libpq-fe.h"<br> ^~~~~~~~~~~~<br>compilation terminated.<br>make: *** [Makefile:359: Pg.o] Error 1<br><br>export <br>C_INCLUDE_PATH=/opt/opengauss/install/app_a07d57c3/include/postgresql/server/libpq/:/opt/opengauss/install/app_a07d57c3/include/postgresql/server/<br><br>omm@host-01[~]ora2pg --help<br>Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: /usr/local/lib64/perl5 <br>/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl <br>/usr/share/perl5/vendor_perl /usr/lib64/perl5 <br>/usr/share/perl5) at /usr/local/share/perl5/Ora2Pg.pm line 41.<br>BEGIN failed--compilation aborted at /usr/local/share/perl5/Ora2Pg.pm line 41.<br>Compilation failed in require at /usr/local/bin/ora2pg line 27.<br>BEGIN failed--compilation aborted at /usr/local/bin/ora2pg line 27.<br>omm@host-01[~]timed out waiting for input: auto-logout<br>JSON-4.10]perl Makefile.PL <br>JSON-4.10]make && make install
END
本文作者:孙其成(上海新炬中北团队)
本文来源:“IT那活儿”公众号
 |