Oracle典型應用場景--數據遷移到本地測試

目錄

用到的功能點

場景介紹

步驟介紹

準備工作

1.甲方提供的接口

2.測試這個IP和端口

工作開始

1.本地創建表空間和對應用戶

表空間的創建

用戶的創建

2.創建數據庫鏈接(DBLink)

測試鏈接是否成功

數據採集

先確定有哪些表是需要的

數據採集(複製表)

其實可以打止了

數據庫文件的導入導出

文件導出

文件導入


用到的功能點

表空間和用戶的創建、數據庫鏈接DBLink的創建、DMP文件的導入導出

操作方式:CMD+sqldevloper

場景介紹

假設甲方碰到了一些數據庫方面的問題或者需要擴展新的功能,需要你針對他們的數據庫提供一個可靠的,解決的方案。

而這些的前提是你需要對他們的數據庫的結構、表功能、字段等非常熟悉。

下面的工作是介紹在企業開發中,怎麼從甲方提供的數據庫接口獲取想要的數據庫文件,並將其導入到本地數據庫,從而方便後面進行本地開發

 

步驟介紹

  1. 先在本地創建對應的表空間和對應的用戶,專門用來存放遷移過來的數據庫(避免互相污染)
  2. 然後使用我們本地剛剛創建的用戶創建數據庫鏈接(DBLink),通過這個鏈接訪問他們的數據庫
  3. 使用SQL的表複製語句將我們需要的表和記錄複製到這個用戶的表空間下面
  4. 然後使用exp命令將這個表空間對應的dmp文件導出
  5. 然後拷貝這個dmp文件,到本地進行導入
  6. 測試數據是否完整遷移無丟失,至此工作完成

(有人就會問:爲什麼明明可以訪問了,還要複製表呢?這是線上別人的服務器環境,操作起來有在本地方便嗎?當然要複製,然後拷到本地弄啊,而且別人也不會一直開啓端口讓你訪問的,這讓別人數據也有被侵入的風險)

 

準備工作

1.甲方提供的接口

一般是他們的IP地址和數據庫的端口,然後一個用戶的賬號和密碼,以及SID,下面是一個例子

IP:192.168.10.177
賬號:test
密碼:123456
端口:1521
SID:orcl

2.測試這個IP和端口

windows開啓telnet功能: 控制面板-程序-啓用或關閉windows功能-勾選telnet客戶端-確定

使用windows的telnet命令

telnet ip地址 端口

telnet 192.168.10.177 1521

沒有報錯則表示IP和端口能夠正常訪問,否則後面的可以不用做了,先解決這個問題吧!

工作開始

1.本地創建表空間和對應用戶

打開SQLDeveloper,使用sytem賬號登錄

表空間的創建

(推薦system以上權限的用戶登錄數據庫,以他們的身份纔有資格創建表空間)

表空間的創建的SQL語句如下


create tablespace test_table_space  
logging  
datafile 'D:\DevelopeSoftWare\Oracle\oradata\orcl\test.dmp'
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local; 

#手動指定表空間名和datafile
#datefile就是對應表空間的文件,一般dmp文件都是在oradata/orcl下

用戶的創建

 

2.system賬號下新建一個用戶,取名任意,我這裏起名local

 

創建用戶成功後,使用這個用戶登錄,打開SQL工作表,準備下一步操作

2.創建數據庫鏈接(DBLink)

創建數據庫鏈接

利用提供的接口,我們創建一個數據庫的鏈接,然後通過這個鏈接,獲取對應數據庫中的數據

IP:192.168.10.177
賬號:test
密碼:123456
端口:1521
SID:orcl

對應的創建DBLink的SQL

#創建DBLINK 注意用戶名和密碼是雙引號,而不要用單引號
 

create database link test_dblink
connect to "test" identified by "123456"
  using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.177 )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl) 
    )
  )';

#創建DBLINK 注意用戶名和密碼是雙引號,而不要用單引號

 

測試鏈接是否成功

select table_name from user_tab_comments@"數據庫鏈接名" ;

 能查到表,就證明這個鏈接成功了!

數據採集

數據庫的採集用的就是表複製語句,將他們的表結構和記錄一起復制到我們的這個用戶的表空間!

先確定有哪些表是需要的

select table_name from user_tab_comments@"數據庫鏈接名" ;

上面的這個sql可以查看甲方提供的用戶的權限下能看到哪些表和視圖,然後我們確定要採集哪些表的數據

數據採集(複製表)

create table 表名 as select * from 要採集的表名@"數據庫鏈接名" [where 條件等];

其實可以打止了

複製完表以後其實這些表都已經出現在了你的本地的表空間中了,可以不使用數據庫鏈接,而使用本地的表測試和開發功能了。

但是我們再設想一個場景,你要把這裏東西弄到別的地方(比如,他們的接口只開放一段時間,你是在去公司的路上緊急弄到自己電腦上的,而需要在公司才能進行開發),怎麼辦?

這裏就涉及到了數據庫文件的導入導出,你必須要將文件導出到指定的dmp文件中,再將dmp遷移到別的機器上進行導入

 

數據庫文件的導入導出

文件導出

上面步驟我們的用戶的默認表空間是test_table_space,而這個表空間對應的文件是test.dmp,其實可以不用導出,直接用這個dmp文件導入就可以了,但是我們還是講一下用法

就是exp命令,然後按照下圖的步驟來

出現上面的提示,表示導出還是順利的

 

果然,我們的sb.dmp文件變大了

文件導入

直接執行下面命令

imp 你要導入的用戶名/口令@數據庫實例(默認是orcl) file=文件路徑 full=y

例如      imp system/root@orcl file=D://test.dmp full=y

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章