自己原文公众号: https://mp.weixin.qq.com/s/V7uc8_HgCikAfou5IuJ45A
有人问我他们的数据库要迁移(非正式环境,也就是说可以停机)环境是Oracle 12C PDB模式。怎么做快一些?数据库迁移不仅仅是表,如果就是表还好办一些,就是如果大了,时间长一点。关键是数据库对象太麻烦。
有没有好方式呢?仅仅抱着尝试心态试试(以前做过PDB的克隆数据库,那个是本机)跨机器的我仅仅听过,还没做过。
安排人尝试一下:
源端操作:
SQL> create user c##ly identified by ly container=all;
User created.
SQL> grant create session, create pluggable database to c##ly container=all;
Grant succeeded.
下面一步是看是不是支持远程复制。
SQL> select property_name, property_value
from database_properties
where property_name = 'LOCAL_UNDO_ENABLED'; 2 3
PROPERTY_NAME PROPERTY_VALUE
-------------------- --------------------
LOCAL_UNDO_ENABLED TRUE
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /arch
Oldest online log sequence 172581
Next log sequence to archive 172590
Current log sequence 172590
create public database link testdblink connect to c##ly identified by ly using '这里写tns的远程配置';
测试联通性:
select * from all_users@testdblink where rownum<5;
下一步事先规划好目录
create pluggable database XXXXDB from wlpdb1@testdblink FILE_NAME_CONVERT = ('源端目录', '/data/oradata/XXXX 这里是要迁移的目录');
好了这样就可以减少时间的一次性迁移了。
事情不难。分析一下背后的意义:
1、简化了迁移步骤方便运维,不用导出导入;
2、跨机复制可以灾备;
3、后续升级只要是PDB模式,一键迁移升级不受源端和目标端的版本限制比如12C和21C;
4、既然可以跨机识别到,那么也就是可以跨机做交互,那么sharding的就理论上真的跨机器了。
5、其实这个跨机器的复制从12C就有了那是2013年。MySQL到了8的中后期也支持了。可以说MySQL也越来越像Oracle了。做法一样。
客观上Oracle真的没什么不好,就是政治因素被说的去O太多。其他的DB2和SQLServer连说都不说。再过几年看看国产有没有这些功能吧。
数据库自治是未来,功能强大和免维护这种是最受欢迎的。