Oracle數據庫dmp文件導入實例

記一次項目上大文件導入Oracle實例。

參考轉載鏈接:https://blog.csdn.net/qq_38380025/article/details/80647620

首先,項目內文件是有分區的,所以要使用oracle的企業版纔行,通過sql查看:

select * from v$version;

我的結果爲:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE	11.2.0.1.0	Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

Oracle創建數據庫和用戶

mysql和sql server用起來比較類似,就oracle的使用方式和他們不同,oracle在創建數據庫的時候要對應一個用戶,數據庫和用戶一般一一對應,mysql和sql server 直接通過create databse “數據庫名” 就可以直接創建數據庫了,而oracle創建一個數據庫需要以下三個步驟:

  1. 創建兩個數據庫的文件
  2. 創建用戶與上面創建的文件形成映射關係
  3. 給用戶添加權限

創建兩個數據文件

create tablespace [數據庫名稱] logging datafile '/home/oracle/app/oracle/oradata/helowin/[數據庫名稱].dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;

create tablespace [數據庫名稱] logging datafile '/home/oracle/app/oracle/oradata/helowin/[數據庫名稱].dbf'
size 100m autoextend on  maxsize unlimited;可無限擴展大小(牆裂建議都這樣用吧)。

create temporary tablespace [數據庫名稱]_temp tempfile '/home/oracle/app/oracle/oradata/helowin/[數據庫名稱]_temp.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local; 
#後來發現臨時表空間可以不用創建,主要之前不會用Oracle。

之前以爲83G的文件是一、兩個表空間,創建表空間時提示:
CREATE TABLESPACE testqqq LOGGING DATAFILE '/home/oracle/app/oracle/oradata/helowin/testqqq.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 2048000M EXTENT MANAGEMENT LOCAL
ORA-03206: maximum file size of (262144000) blocks in AUTOEXTEND clause is out of range

oracle在db_block_size=4k時,表空間最大隻能16G
後面查資料看到Oracle 11g 支持bigfile,可寫爲:

create bigfile tablespace [數據庫名稱] logging datafile '/home/oracle/app/oracle/oradata/helowin/[數據庫名稱].dbf'
size 100m autoextend on next 32m maxsize 50000m extent management local;

但是後面發現有很多表空間,每個大約有3G數據,後來廢棄這種方式。

 下圖爲各db_block_size=Xkb時,表空間最大的列表,鏈接:https://www.cnblogs.com/zjfjava/p/9556311.html

由於是臨時導入,直接用了SYSTEM用戶。

下面爲安裝過程:

安裝docker

使用的ubuntu18.04

鏈接:https://www.jianshu.com/p/cef32b054968

安裝Oracle11g

鏈接:https://blog.csdn.net/qq_38380025/article/details/80647620

導入dmp文件

1.使用docker cp 把文件複製到容器內

2.由於表空間較多,用腳本輸出:

#! /bin/env/python
YEAR = ['2016','2017','2018','2019','2020']
MONTH = ['01','02','03','04','05','06','07','08','09','10','11','12']
STRING = ['A','B','C']
for year in YEAR:
    for month in MONTH:
        for string in STRING:
            print "CREATE TABLESPACE TM_SITE"+year+month+"_"+string+" LOGGING DATAFILE '/home/oracle/app/oracle/oradata/helowin/TM_SITE"+year+month+"_"+string+".dbf'SIZE 100M AUTOEXTEND ON  MAXSIZE UNLIMITED;"

3. /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/imp system/system@helowin file=/home/tb_citizen.dmp full = y ignore = y buffer=100000000  #這個buffer一開始沒加報錯,後來百度加上後可以。(不知道爲什麼。。。)

4.等待。後面沒有報錯了,時間較久。

5.注意!!找個足夠的磁盤,找個足夠的磁盤,找個足夠的磁盤。要不真浪費時間。83G的文件恢復出來大概有500G的樣子。

拓展

創建用戶與上面創建的文件形成映射關係(用戶名爲monitor,密碼爲monitor)

  1. CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE[數據庫名稱] TEMPORARY TABLESPACE [數據庫名稱]_temp;

添加權限

  1. grant connect,resource,dba to monitor;
  2. grant create session to monitor;

刪除數據庫

  1. DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
  2. 對於帶有分區,首先刪除表,才能刪除表空間及數據文件;
  3. DROP TABLE [表名];
  4. DROP TABLESPACE TM_SITE201601_A INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201601_B INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201601_C INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201602_A INCLUDING CONTENTS AND DATAFILES;等等

刪除用戶

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