docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201
Docker コンテナを Oracle から MySQL に移行する方法
May 28, 2023 pm 06:31 PM⛳️ 1. プライベート ネットワークの作成
docker network create --subnet=168.66.6.0/24 db-network [root@docker ~]# docker network inspect db-network --查看网络信息
docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201
ログイン後にコピー
docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201
docker run -itd --name jemora1221 -h jemora1221
–net=db-network --ip 168.66.6.34
-p 1526:1521 -p 3396:3389
–privileged=true
registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 init
ログイン後にコピー
docker run -itd --name jemora1221 -h jemora1221 –net=db-network --ip 168.66.6.34 -p 1526:1521 -p 3396:3389 –privileged=true registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 init
[root@jeames ~]# docker exec -it jemora1221 bash
[root@jemora1221 /]# su - oracle
[oracle@jemora1221 ~]$ sqlplus / as sysdba
SYS@jem> startup
SYS@jem> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JEMPDB MOUNTED
alter pluggable database JEMPDB open;
SYS@jem> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
SYS@jem> alter session set container=JEMPDB;
SYS@jem> create user jemmes identified by jemmes
SYS@jem> GRANT DBA to jemmes ;
ログイン後にコピー
✨ 2.4 起動の監視[root@jeames ~]# docker exec -it jemora1221 bash [root@jemora1221 /]# su - oracle [oracle@jemora1221 ~]$ sqlplus / as sysdba SYS@jem> startup SYS@jem> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 JEMPDB MOUNTED alter pluggable database JEMPDB open; SYS@jem> select con_id,dbid,NAME,OPEN_MODE from v$pdbs; SYS@jem> alter session set container=JEMPDB; SYS@jem> create user jemmes identified by jemmes SYS@jem> GRANT DBA to jemmes ;
[oracle@jemora1221 ~]$ cd $ORACLE_HOME/network
[oracle@jemora1221 network]$ cd admin
## 配置TNS,后续连接数据库
[oracle@jemora1221 admin]$ vi tnsnames.ora
JEMPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = jemora1221)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = JEMPDB)
)
)
## 监听启动
lsnrctl start
lsnrctl status
ログイン後にコピー
[oracle@jemora1221 ~]$ cd $ORACLE_HOME/network [oracle@jemora1221 network]$ cd admin ## 配置TNS,后续连接数据库 [oracle@jemora1221 admin]$ vi tnsnames.ora JEMPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jemora1221)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = JEMPDB) ) ) ## 监听启动 lsnrctl start lsnrctl status
docker run -d --name mysql8027 -h mysql8027 -p 3418:3306
–net=db-network --ip 168.66.6.35
-v /etc/mysql/mysql8027/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=jeames -e TZ=Asia/Shanghai
mysql:8.0.27
ログイン後にコピー
コンテナの表示docker run -d --name mysql8027 -h mysql8027 -p 3418:3306 –net=db-network --ip 168.66.6.35 -v /etc/mysql/mysql8027/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=jeames -e TZ=Asia/Shanghai mysql:8.0.27
[root@jeames ~]# docker ps --format “table {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.ID}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.Names}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.Status}}” CONTAINER ID NAMES STATUS 043d1652404d jemora1221 Up 7 minutes dc2989508b67 mysql8027 Up 23 seconds 7e6a53d71017 centos7.8 Up 20 minutes
#✨ 3.2パラメータ設定
cat > /etc/mysql/mysql8027/conf/my.cnf << “EOF” [mysqld] default-time-zone = ‘+8:00' log_timestamps = SYSTEM skip-name-resolve log-bin server_id=80273418 character_set_server=utf8mb4 default_authentication_plugin=mysql_native_password EOF
✨ 3.3 MySQLにログイン
mysql -uroot -pjeames -h 168.66.6.35 create database jemdb;
⛳️ 4. OracleからMySQLへkettleを移行
✨4.1 kettleをデプロイする
Kettle は、純粋な Java で書かれた外国のオープン ソース ETL ツールであり、Windows、Linux、および Unix で実行できます。Kettle の中国語名は Kettle です。プロジェクトのメイン プログラマである MATT は、データはポットに入れられ、指定された形式でストリーミング出力されます。 Kettle は、やりたいことをどうするかではなく、やりたいことを記述するためのグラフィカル ユーザー環境を提供することで、さまざまなデータベースのデータを管理できる ETL ツールセットです。 Kettle には、データの基本的な変換を完了するトランスフォーメーションと、ワークフロー全体の制御を完了するジョブの 2 種類のスクリプト ファイルがあります。ケトルの構成
AVA JDK をインストールします#jdk インストール パッケージをダウンロードした後、ファイルを開いてインストールを開始します
##次の 3 つの変数を追加します[1]JAVA_HOME: 先ほどの Java インストールへのパス、私のものは: C:\Program Files\Java\jdk1 .8.0_231
[3] 環境変数 Path の設定kettle インストール パッケージをダウンロードします。Path をダブルクリックします「%JAVA_HOME%\bin」を追加し、「%JAVA_HOME%\jre\bin」を追加します。
Win R キーで実行ウィンドウが表示されます。cmd と入力し、Enter を押して実行します。
「java -version」と「javac」をそれぞれ入力してテストします。次の内容が表示されれば、設定は成功です
ここではバージョン 7.1 を選択します
#ダウンロードが完了したら、任意のパスに解凍し、フォルダーを開いて Spoon .bat を見つけ、デスクトップ ショートカットを作成し、
データベース ドライバー パッケージのダウンロードを開きます。
mysql ドライバーと oracle ドライバーを kettle パッケージの lib パッケージの直下に配置します。 MySQL JDBC ドライバーのダウンロード
システムの選択に従ってダウンロードします。
このバージョンをダウンロード: mysql-connector-java-5.1.49-bin.jarOracle JDBC ドライバーのダウンロード
データベース接続
A. 変換の作成 [ファイル] -> [新しい変換] に移動し、新しい変換を作成した後、左側のメイン オブジェクト ツリーに DB 接続を作成してデータベースに接続します
## B. データベース接続 MySQL
## 创建测试表 SYS@jem> conn jemmes/jemmes@JEMPDB @/home/oracle/demo_ora_create.sql @/home/oracle/demo_ora_insert.sql create table flower( id varchar2(32) default sys_guid() primary key, flower_name varchar2(200), color varchar2(100), origin varchar2(200), moral varchar2(200), create_time timestamp default sysdate, update_time timestamp ); JEMMES@JEMPDB> insert into flower(flower_name) values('dd'); --oracle所有表 JEMMES@JEMPDB> select * from tab; --迁移前相关检查 col TABLE_NAME format a30 SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='JEMMES' ; select object_type,count(*) from dba_objects where owner='JEMMES' group by object_type; select object_type,status,count(*) from dba_objects where owner='JEMMES' group by object_type,status; select sum(bytes)/1024/1024 from dba_segments where owner='JEMMES';
##✨4.4 移行後の MySQL データの検証
以上がDocker コンテナを Oracle から MySQL に移行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?
