数据迁移MySQL、Oracle
文章目录
一、Mysql导出单一数据库库
1 登陆MySQL
mysql -h localhost -u root -p
2 mysqldump命令格式
mysqldump -h IP -u 用户名 -p -d 数据库名 > 导出的文件名
参数解析:
-h:表示host地址
-u:表示user用户
-p:表示password密码
-d:表示不导出数据
/*注意:
(1)-p 后面不能加password,只能单独输入数据库名称
(2)mysqldump是在cmd下的命令,不能再mysql下面,即不能进入mysql的(如果进入了mysql,得exit退出mysql后才可以的。)
*/
3 mysqldump 导出数据例子
mysqldump -h localhost -u root -p dbtest > C:\Users\Administrator\Desktop\users2.sql
mysqldump -h localhost -u root -p dbtest > /data/backup/dbtest.sql
4 在新库上导入数据
# 登录新的数据库后
1 创建和新的数据库 (mysqldump导出单库时,只导出表结构和表数据,没有建库语句)
create database dbtest;
user dbtest;
2 执行.sql文件
source /data/backup/dbtest.sql; # 注意dbtest.sql放到mysql有权限操作的路径,修改dbtest.sql的所有者为mysql
3 创建用户授权
CREATE USER 'mingyue'@'%' IDENTIFIED BY 'password'; # % 代表用户可以从任何机器上登录,localhost代表只能从本机登录
GRANT ALL PRIVILEGES ON `testdb`.* TO 'mingyue'@'%';
4 查看用户的权限
SHOW GRANTS FOR mingyue@localhost;
SHOW GRANTS FOR mingyue@%;
二、Oracle数据库的迁移
这里介绍的是以用户为单位的导出数据,shemas
1 导出原有Oracle数据库
# 1 创建存放导出数据的目录
select * from dba_directories where DIRECTORY_NAME='DIR_DUMP';
create directory dump_dir as '/backup/dumpdir';
dump文件路径 /backup/dmp
# 2 给oralce普通用户授予导出数据库的权限
grant read, write on directory DIR_DUMP to ehcportal_jdy;
grant exp_full_database,imp_full_database to ehcportal_jdy;
# 3 导出oralce数据库
expdp username/password@内网IP:1521/orcl directory=dir_dump dumpfile=testdb-20211209.dmp schemas=testdb logfile=export-testdb.log compression=ALL
2 在新数据库上创建表空间、用户、授权
# 创建表空间
create tablespace testdb datafile'/data/oracle/data/orcl/testdb.dbf' size 512M
autoextend on next 512M maxsize unlimited extent management local;
create user mingyue identified by "123456"
default tablespace testdb profile DEFAULT;
grant connect,resource, dba to mingyue;
grant exp_full_database,imp_full_database to mingyue;
# 删除用户和表空间
drop user mingyue cascade;
DROP TABLESPACE dbtest INCLUDING CONTENTS AND DATAFILES;
3 在新的数据库上导入数据
impdp mingyue/123456 directory=dump_dir dumpfile=testdb-20211209.dmp logfile=testdb-20211209.log
4 其他导出oracle数据的语句
# 1 按用户导出数据
expdp scott/123456@orcl schemas=scott dumpfile=expdb.dmp derectory=dir_dump logfile=export.log;
# 2 并行进程parallel
expdp scott/123456@orcl derectory=dir_dump dumpfile=expdb.dmp parallel=40 job_name=scottt3
# 3 按表名导
expdp scott/123456@orcl TABLES=table1,table2 dumpfile=expdb.dmp derectory=dir_dump;
# 4 按查询条件导
expdp scott/123456@orcl dumpfile=expdb.dmp derectory=dir_dump Tables=emp query='WHERE deptno=20';
# 5 按表空间导
expdp system/manager dumpfile=expdb.dmp derectory=dir_dump TABLESPACES=temp,example;
# 6 导整个数据库
expdp system/manager dumpfile=full.dmp derectory=dir_dump FULL=y;