데이터 대 이동 ora2pg 사용 안내
10808 단어 PostgreSQLPostgreSQL
ora2pg 설치
1.1 OS 의존 패키지 설치
[root@pg07 ~]# yum install perl-DBD-Pg perl perl-devel perl-DBI perl-CPAN bzip2 perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
1.2 Oracle 마른 클 라 이언 트 설치
Oracle 공식 사이트 에서 Oacle 12c 의 마른 클 라 이언 트 를 다운로드 한 후 설치 하고 설정 합 니 다.
[root@pg07 u02]# la /u02/software/oracle/
total 55M
drwxr-xr-x 2 root root 4.0K Dec 3 15:04 .
drwxr-xr-x 7 root root 76 Dec 3 15:04 ..
-rw-r--r-- 1 root root 51M Nov 28 14:34 oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
-rw-r--r-- 1 root root 593K Nov 28 14:32 oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
-rw-r--r-- 1 root root 1.5M Nov 28 14:32 oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm
-rw-r--r-- 1 root root 692K Nov 28 14:32 oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm
-rw-r--r-- 1 root root 922K Nov 28 14:35 oracle-instantclient12.2-tools-12.2.0.1.0-1.x86_64.rpm
[root@pg07 ~]# yum -y localinstall /u02/software/oracle/oracle-instantclient12.2-*.rpm
[root@pg07 ~]# mkdir -p /usr/lib/oracle/12.2/client64/network/admin
루트 환경 변 수 를 편집 하고 다음 내용 을 추가 합 니 다.
[root@pg07 ~]# vi .bash_profile
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export TNS_ADMIN=/usr/lib/oracle/12.2/client64/network/admin
export ORACLE_HOME=/usr/lib/oracle/12.2/client64/
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
[root@pg07 ~]# source .bash_profile
1.3 ora2pg 설치
[root@pg07 ~]# wget https://sourceforge.net/projects/ora2pg/files/19.1/ora2pg-19.1.tar.bz2
[root@pg07 ~]# tar -xjf ora2pg-19.1.tar.bz2
[root@pg07 ~]# cd ora2pg-19.1
[root@pg07 ora2pg-19.1]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Ora2Pg
Done...
------------------------------------------------------------------------------
Please read documentation at http://ora2pg.darold.net/ before asking for help
------------------------------------------------------------------------------
Now type: make && make install
[root@pg07 ora2pg-19.1]# make && make install
cp lib/Ora2Pg.pm blib/lib/Ora2Pg.pm
cp lib/Ora2Pg/GEOM.pm blib/lib/Ora2Pg/GEOM.pm
cp lib/Ora2Pg/PLSQL.pm blib/lib/Ora2Pg/PLSQL.pm
cp lib/Ora2Pg/MySQL.pm blib/lib/Ora2Pg/MySQL.pm
cp scripts/ora2pg blib/script/ora2pg
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pg
cp scripts/ora2pg_scanner blib/script/ora2pg_scanner
/usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora2pg_scanner
Manifying blib/man3/ora2pg.3
Installing /usr/local/share/perl5/Ora2Pg.pm
Installing /usr/local/share/perl5/Ora2Pg/GEOM.pm
Installing /usr/local/share/perl5/Ora2Pg/PLSQL.pm
Installing /usr/local/share/perl5/Ora2Pg/MySQL.pm
Installing /usr/local/share/man/man3/ora2pg.3
Installing /usr/local/bin/ora2pg
Installing /usr/local/bin/ora2pg_scanner
Installing default configuration file (ora2pg.conf.dist) to /etc/ora2pg
Appending installation info to /usr/lib64/perl5/perllocal.pod
1.4 설치 DBD:: Oracle
[root@pg07 ~]# perl -MCPAN -e shell
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.
cpan[1]> get DBD::Oracle
Fetching with HTTP::Tiny:
http://mirror.truenetwork.ru/CPAN/authors/01mailrc.txt.gz
Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with HTTP::Tiny:
http://mirror.truenetwork.ru/CPAN/modules/02packages.details.txt.gz
Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
Database was generated on Wed, 28 Nov 2018 23:54:25 GMT
HTTP::Date not available
.............
New CPAN.pm version (v2.16) available.
[Currently running version is v1.9800]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving
the current session.
...............................................................DONE
Fetching with HTTP::Tiny:
http://mirror.truenetwork.ru/CPAN/modules/03modlist.data.gz
Reading '/root/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /root/.cpan/Metadata
Running get for module 'DBD::Oracle'
Fetching with HTTP::Tiny:
http://mirror.truenetwork.ru/CPAN/authors/id/Z/ZA/ZARQUON/DBD-Oracle-1.76.tar.gz
Fetching with HTTP::Tiny:
http://mirror.truenetwork.ru/CPAN/authors/id/Z/ZA/ZARQUON/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/Z/ZA/ZARQUON/DBD-Oracle-1.76.tar.gz ok
Scanning cache /root/.cpan/build for sizes
DONE
cpan[2]> quit
Terminal does not support GetHistory.
Lockfile removed.
[root@pg07 ~]# cd .cpan/build/DBD-Oracle-1.76-sU5yu5/
[root@pg07 DBD-Oracle-1.76-sU5yu5]# perl Makefile.PL
[root@pg07 DBD-Oracle-1.76-sU5yu5]# make && make install
1.5 ora2pg 프로필 만 들 기
먼저 예제 파일 에서 한 부 를 복사 한 다음 실제 상황 에 따라 프로필 관련 매개 변 수 를 변경 합 니 다.
[root@pg07 ~]# cp /etc/ora2pg/ora2pg.conf.dist /etc/ora2pg/ora2pg.conf
[root@pg07 ~]# vi /etc/ora2pg/ora2pg.conf
--Oracle
ORACLE_HOME /usr/lib/oracle/12.2/client64
ORACLE_DSN dbi:Oracle:host=172.16.100.19;sid=kkdb;port=1521
ORACLE_USER system -- sys、system, user_grants 1
ORACLE_PWD abcABC12
USER_GRANTS 1
ORA_INITIAL_COMMAND commit
--schema
EXPORT_SCHEMA 1
SCHEMA XXKIN
CREATE_SCHEMA 0
COMPILE_SCHEMA 0
PG_SCHEMA public
-- ( )
TYPE TABLE COPY VIEW TYPE
DISABLE_COMMENT 0
EXTERNAL_TO_FDW 1
TRUNCATE_TABLE 0
USE_TABLESPACE 0
REORDERING_COLUMNS 0
--
KEEP_PKEY_NAMES 0
PKEY_IN_CREATE 0
FKEY_ADD_UPDATE never
FKEY_DEFERRABLE 0
DEFER_FKEY 0
DROP_FKEY 1
--
DISABLE_SEQUENCE 1
DISABLE_TRIGGERS 1
--
PRESERVE_CASE 0
INDEXES_RENAMING 0
USE_INDEX_OPCLASS 0
PREFIX_PARTITION 0
DISABLE_PARTITION 1
WITH_OID 0
ORA_RESERVED_WORDS audit,comment
USE_RESERVED_WORDS 1
DISABLE_UNLOGGED 0
--PostgreSQL
PG_DSN dbi:Pg:dbname=kkdb;host=192.168.120.149;port=5432
PG_USER xxkin
PG_PWD redhat
OUTPUT xxkin.sql
OUTPUT_DIR /tmp
BZIP2
FILE_PER_CONSTRAINT 0
FILE_PER_INDEX 0
FILE_PER_FKEYS 0
FILE_PER_TABLE 0
FILE_PER_FUNCTION 0
STOP_ON_ERROR 1
COPY_FREEZE 0
CREATE_OR_REPLACE 1
--TYPE
PG_NUMERIC_TYPE 1
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC bigint
ENABLE_MICROSECOND 1
TO_NUMBER_CONVERSION numeric
GEN_USER_PWD 0
FORCE_OWNER 0
FORCE_SECURITY_INVOKER 0
--
DATA_LIMIT 10000
NOESCAPE 0
TRANSACTION serializable
STANDARD_CONFORMING_STRINGS 1
NO_LOB_LOCATOR 1
XML_PRETTY 0
LOG_ON_ERROR 0
TRIM_TYPE BOTH
INTERNAL_DATE_MAX 49
FUNCTION_CHECK 1
--Export/Import
JOBS 1
ORACLE_COPIES 1
PARALLEL_TABLES 1
DEFAULT_PARALLELISM_DEGREE 0
PARALLEL_MIN_ROWS 100000
DROP_INDEXES 0
SYNCHRONOUS_COMMIT 0
--PLSQL
EXPORT_INVALID 0
PLSQL_PGSQL 1
NULL_EQUAL_EMPTY 0
EMPTY_LOB_NULL 0
PACKAGE_AS_SCHEMA 1
REWRITE_OUTER_JOIN 1
FUNCTION_STABLE 1
COMMENT_COMMIT_ROLLBACK 0
COMMENT_SAVEPOINT 0
USE_ORAFCE 0
AUTONOMOUS_TRANSACTION 1
--ASSESSMENT
ESTIMATE_COST 0
COST_UNIT_VALUE 5
DUMP_AS_HTML 0
TOP_MAX 10
HUMAN_DAYS_LIMIT 5
--PostgreSQL
PG_SUPPORTS_WHEN 1
PG_SUPPORTS_INSTEADOF 1
PG_SUPPORTS_MVIEW 1
PG_SUPPORTS_CHECKOPTION 1
PG_SUPPORTS_IFEXISTS 1
PG_SUPPORTS_LATERAL 1
PG_SUPPORTS_PARTITION 1
BITMAP_AS_GIN 1
PG_BACKGROUND 0
PG_SUPPORTS_SUBSTR 1
PG_SUPPORTS_NAMED_OPERATOR 1
PG_SUPPORTS_IDENTITY 1
PG_SUPPORTS_PROCEDURE 0
--SPATIAL
AUTODETECT_SPATIAL_TYPE 1
CONVERT_SRID 1
DEFAULT_SRID 4326
GEOMETRY_EXTRACT_TYPE INTERNAL
--FDW
FDW_SERVER orcl
--MySQL
MYSQL_PIPES_AS_CONCAT 0
MYSQL_INTERNAL_EXTRACT_FORMAT 0
이로써 전체 ora2pg 의 설치 설정 이 완료 되 었 습 니 다.
둘째, ora2pg 사용
2.1 모든 표 구조 내 보 내기
설정 파일 에 지정 한 type 에 COPY 가 포함 되 어 있 으 면 표 구 조 를 안내 한 후에 표 의 데이터 도 이에 따라 내 보 냅 니 다. - t 인 자 를 추가 하면 표 구조 만 내 보 내 고 데 이 터 를 내 보 내지 않 습 니 다.
[root@pg07 ~]# ora2pg -t table view
[========================>] 777/777 tables (100.0%) end of scanning.
[========================>] 777/777 tables (100.0%) end of table export.
[========================>] 0/0 views (100.0%) end of output.
내 보 내기 가 완료 되면 PostgreSQL 에 데이터베이스 와 해당 하 는 표를 만 듭 니 다.
-bash-4.2$ psql
psql (10.6)
Type "help" for help.
postgres=# CREATE USER xxkin WITH password 'redhat' CREATEDB SUPERUSER replication bypa***ls createrole login;
postgres=# create database kkdb;
postgres=# alter database kkdb owner to xxkin;
postgres=# \c kkdb
You are now connected to database "kkdb" as user "postgres".
kkdb=# \i /tmp/output.sql
ora2pg 에는 사용 할 수 있 는 많은 인자 가 있 습 니 다. 구체 적 으로 도움말 파일 을 참고 하 십시오.
2.2 Oacle2pg 를 통 해 데 이 터 를 이전 합 니 다.
데이터베이스 와 관련 표 구 조 를 만 들 었 습 니 다. 지금 은 Oacle2pg 를 통 해 데 이 터 를 PostgreSQL 데이터베이스 에 동기 화하 면 됩 니 다.
[root@pg07 ~]# ora2pg -d -t copy
[2018-11-30 11:38:51] Ora2Pg version: 19.1
[2018-11-30 11:38:51] Trying to connect to database: dbi:Oracle:host=172.16.100.19;sid=kkdb;port=1521
[2018-11-30 11:38:51] Isolation level: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
[2018-11-30 11:38:51] DEBUG: executing initial command to Oracle: commit
[2018-11-30 11:38:51] Retrieving table information...
[2018-11-30 11:40:55] [1] Scanning table ABC_DEL_CLASS (1 rows)...
[2018-11-30 11:40:55] [2] Scanning table ACTIVITY_DATA (41 rows)...
[2018-11-30 11:40:55] [3] Scanning table ACTIVITY_GBEAN_STAT (243897 rows)...
......
이전 과정 에서 일부 표를 제외 하고 - e 인 자 를 추가 해 야 한다 면 다음 과 같다.
[root@pg07 ~]# ora2pg -d -t copy -e usr_dx_tbs,hr_info_pg,op_log
요약:
다음은 사용 과정 에서 발생 한 문제 로 제안 한 것 이다. 1. 표 구 조 를 선도 한 다음 에 데 이 터 를 동기 화 하 는 것 이다.2. 표 구 조 를 내 보 낼 때 파 티 션 표를 사용 하지 않 습 니 다.3. PostgreSQL 에 저 장 된 키워드 가 Oacle 표 필드 이름 인지 주의 하 십시오.4. 모든 외부 키 제약 조건 을 삭제 합 니 다.5. ora2pg 를 통 해 데 이 터 를 직접 옮 깁 니 다. oracle 표 데 이 터 를 csv 형식 으로 내 보 내지 말고 PostgreSQL 데이터 베 이 스 를 가 져 옵 니 다.참고 문헌: ora2pg DOCUMENTATION
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash에서 풀다운 필터 만들기 ~ BigQuery의 public-data를 사용하여 연습 ~Redash는 SQL이 쓸 수만 있으면, 나머지는 GUI로 플롯을 좋은 느낌으로 만들 수 있으므로 매우 편리합니다. 이 편리한 기능보다 편리하게 사용할 수 있게 되고 싶습니다. 나 자신 SQL 돌출이라고 하는 일도 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.