| 
 | 
	
 
 
 本帖最后由 斗起来 于 2017-3-28 10:36 编辑  
 
1、在需要同步的数据库创建需要的dblink 
-- Create database link  
create public database link IMPDP_JAC_TEST_20 
  connect to test identified by "test123" 
  using '(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.20)(PORT = 1521)) 
    (LOAD_BALANCE = yes) 
    (FAIL_OVER = yes) 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = jac) 
    ) 
)'; 
-- Create database link  
create public database link IMPDP_JAC_TEST_31 
  connect to test identified by "test123" 
  using '(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.35)(PORT = 1521)) 
    (LOAD_BALANCE = yes) 
    (FAIL_OVER = yes) 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = test) 
    ) 
)'; 
 
 
以下为python脚本 
import paramiko 
import time 
print('---------------------------------------------') 
print('---------------------------------------------') 
print('此工具为同步数据库小程序,有问题联系:斗起来') 
print('---------------------------------------------') 
print('---------------------------------------------') 
imptype = int(input('请选择同步方式 1,test整库同步  2,按表同步:',)) 
expip = input('请输入源端数据库ip:仅输入最后的ip即可  例:192.168.100.20  输入 20 即可:  ',) 
impip = input('请输入目标端数据库ip:仅输入最后的ip即可  例:192.168.100.35  输入 35 即可:  ',) 
if imptype==1: 
 cmd='impdp test/test123 SCHEMAS=test directory=DATA_PUMP_DIR network_link=impdp_jac_test_'+expip+' logfile=imp.log TABLE_EXISTS_ACTION=REPLACE' 
 client = paramiko.SSHClient() 
 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
 client.connect('192.168.100.'+impip, 22, username='oracle', password='oracle', timeout=4) 
 stdin, stdout, stderr = client.exec_command('source /home/oracle/.bash_profile&&'+cmd) 
 for std in stdout.read(),stderr.read(): 
   print(std) 
   client.close() 
   print('---------------------------------------') 
   print('---------------------------------------') 
   print('谢谢使用!!!') 
   print('---------------------------------------') 
   print('---------------------------------------')  
   time.sleep(10)  
elif imptype==2: 
 tables=input('请输入需要同步的表名:输入格式为:如果一个表只输入表名即可,如果多个表以逗号分隔 例:tab1,tab2 ',)    
 cmd='impdp test/test123 tables='+tables+' directory=DATA_PUMP_DIR network_link=impdp_jac_test_'+expip+' logfile=imp.log TABLE_EXISTS_ACTION=REPLACE'    
 client = paramiko.SSHClient() 
 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
 client.connect('192.168.100.'+impip, 22, username='oracle', password='oracle', timeout=4) 
 stdin, stdout, stderr = client.exec_command('source /home/oracle/.bash_profile&&'+cmd) 
 #stdin, stdout, stderr = client.exec_command('echo '+cmd+'>/home/oracle/imp.sh') 
 #time.sleep(5) 
 #stdin, stdout, stderr = client.exec_command('source /home/oracle/.bash_profile&&sh /home/oracle/imp.sh') 
 #print(stderr) 
 for std in stdout.read(),stderr.read(): 
   print(std) 
 client.close() 
 print('---------------------------------------') 
 print('---------------------------------------') 
 print('谢谢使用!!!') 
 print('---------------------------------------') 
 print('---------------------------------------') 
 time.sleep(10)  
else: 
  print('---------------------------------------') 
  print('---------------------------------------') 
  print('谢谢使用!!!') 
  print('---------------------------------------') 
  print('---------------------------------------') 
  time.sleep(10)    
 
 |   
 
 
 
 |