日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle11g-R2数据库的逻辑备份(数据泵的导入导出)

發布時間:2023/12/15 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle11g-R2数据库的逻辑备份(数据泵的导入导出) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、環境:

server1遷移到server2

server1:

服務器號:201

系統:Windows server 2008 R2 x64

IP地址:192.168.2.201

oracle數據庫版本:oracle 11g R2

端口號:1521

用戶名:brdb_1031

密碼:nc2015

遷移到

server2:

服務器號:207

系統:centos7-x64

IP地址:192.168.2.207

oracle數據庫版本:oracle 11g R2

oracle安裝平臺:阿里云docker鏡像

端口號:1521

二、準備:

1、在備份前,先檢查兩個數據庫的字符集是否相等

SQL語句:

select userenv('language') from dual;

server1字符集

server2字符集

2、修改server2字符集

AL32UTF8字符集修改為ZHS16GBK

執行如下SQL語句就可修改:

select userenv('language') from dual; shutdown immediate; startup mount; alter system enable restricted session; alter system set job_queue_processes=0; alter system set aq_tm_processes=0; alter database flashback off; alter database open; show parameter recovery; alter system reset db_recovery_file_dest scope=spfile sid='*'; alter system reset db_recovery_file_dest_size scope=spfile sid='*'; alter database character set internal_use ZHS16GBK; shutdown immediate startup exit

演示方法二:

連接數據庫

$ sqlplus / as sysdba

[oracle@dev /]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on Fri May 31 09:34:26 2019Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>

查看字符集

SQL> select userenv('language') from dual;

SQL> select userenv('language') from dual;USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8SQL>

關閉數據庫

SQL> shutdown immediate;

SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.

裝載啟動數據庫到mount狀態

SQL> startup mount

SQL> startup mount ORACLE instance started.Total System Global Area 1603411968 bytes Fixed Size 2213776 bytes Variable Size 402655344 bytes Database Buffers 1191182336 bytes Redo Buffers 7360512 bytes Database mounted.

執行如下命令

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;System altered.SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;System altered.SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;System altered.SQL> alter database open;Database altered.SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ALTER DATABASE CHARACTER SET ZHS16GBK * ERROR at line 1: ORA-12712: new character set must be a superset of old character set # 提示我們的字符集:新字符集必須為舊字符集的超集,這時我們可以跳過超集的檢查做更改:SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;Database altered.SQL>

我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使Oracle數據庫繞過了子集與超集的校驗

關閉數據庫

SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL>

啟動數據庫

SQL> startup ORACLE instance started.Total System Global Area 1603411968 bytes Fixed Size 2213776 bytes Variable Size 402655344 bytes Database Buffers 1191182336 bytes Redo Buffers 7360512 bytes Database mounted. Database opened.

查看字符集

報錯:

SQL> select userenv(‘language’) from dual; select userenv(‘language’) from dual* ERROR at line 1: ORA-00911: invalid characterSQL> SQL> SQL> SQL> select userenv(‘language’) from dual; select userenv(‘language’) from dual* ERROR at line 1: ORA-00911: invalid characterSQL>

稍等幾分鐘自動恢復

SQL> select userenv('language') from dual;USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBKSQL> SQL>

數據庫字符集修改完畢

三、數據庫的導出(expdp)

server1:

注意:數據庫的導出和導入都在Windows命令模式下執行

1、數據庫的導出(expdp)

導出某個用戶的表空間

語法如下:

expdp 導出用戶名/密碼@數據庫的SID

expdp 登陸用戶名/密碼@數據庫的IP/orcl

schemas=指定導出用戶名

dumpfile=文件名.dmp

logfile=日志名.log

directory=備份儲存路徑名

tables=表名(只導出指定的某張表

實例:

expdp brdb_1031/nc2015@orcl dumpfile=brdb_1031_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp logfile=brdb_1031_%date:~0,4%-%date:~5,2%-%date:~8,2%.log directory=backfile

說明:備份存儲路徑名可以自己創建也可以查看已有的路徑

查看系統中所有的路徑

SQL語句:

select * from dba_directories

導出結果如下:

2、只導出指定的某張表

tables=表名

實例:

expdp brdb_0530/nc2015@orcl tables=SYS_USER dumpfile=SYS_USER_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp directory=BACKFILE

導出結果如下:

3、只導入某張表

?實例:

impdp brdb_0530_ys/123456@orcl dumpfile=SYS_USER_2019-07-17.dmp directory=BACKFILE table_exists_action=replace remap_tablespace=BRDB1031TABLESPACE:brdb_0530_ys remap_schema=brdb_0530:brdb_0530_ys

四、數據庫的導入(impdp)

server2

數據庫的導入:

SQL語句:

1、創建物理路徑

自行創建一個完整的目錄文件夾,用于存放dmp文件

例如:

/oracle-backup-import

創建一個完整的目錄文件夾,用于存放表空間

例如:

/oracle-tablespace

2、創建邏輯目錄

注意:路徑一定要和物理路徑是對應關系

語法:

create directory 路徑名 as '路徑'

實例:

import導入備份文件路徑名

create directory import__dir as '/oracle-backup-import'

表空間存放文件路徑名

create directory oracle_data as '/oracle-tablespace'

3、創建表空間

語法:

create tablespace 表空間名

datafile ‘物理地址(相當于文件路徑)’

size 初始大小(單位M)

autoextend on next 每次自增的大小(單位M)

maxsize unlimited (此關鍵字用于不限制表空間大小)

實例:

create tablespace brdb_1031
datafile '/oracle-tablespace/brdb_1031_tablespace.dbf'
size 200M
autoextend on next 100M
maxsize UNLIMITED;

注意:

在Linux系統中需要給目錄授權,否則報錯:permission denied

# chown oracle:oinstall oracle-backup-import

# chown oracle:oinstall oracle-tablespace/

[root@dev /]# chown oracle:oinstall oracle-backup-import [root@dev /]# chown oracle:oinstall oracle-tablespace/ [root@dev /]# [root@dev /]# ll total 24 dr-xr-xr-x. 2 root root 4096 Dec 3 2013 bin dr-xr-xr-x. 4 root root 29 Dec 3 2013 boot drwxr-xr-x. 5 root root 340 May 31 09:14 dev drwxr-xr-x. 1 root root 21 May 31 09:18 etc drwxr-xr-x. 1 root root 20 Aug 29 2014 home dr-xr-xr-x. 8 root root 168 Aug 23 2014 lib dr-xr-xr-x. 7 root root 8192 Aug 23 2014 lib64 drwxr-xr-x. 2 root root 6 Sep 23 2011 media drwxr-xr-x. 2 root root 6 Sep 23 2011 mnt drwxr-xr-x. 2 root root 6 Sep 23 2011 opt drwxr-xr-x. 2 oracle oinstall 6 May 31 09:02 oracle-backup-import drwxr-xr-x. 2 oracle oinstall 6 May 31 09:08 oracle-tablespace dr-xr-xr-x. 249 root root 0 May 31 09:14 proc dr-xr-x---. 3 root root 124 Aug 26 2014 root dr-xr-xr-x. 2 root root 4096 Aug 23 2014 sbin drwxr-xr-x. 2 root root 6 Sep 23 2011 selinux drwxr-xr-x. 2 root root 6 Sep 23 2011 srv dr-xr-xr-x. 13 root root 0 May 26 09:46 sys drwxrwxrwt. 1 root root 6 May 31 09:14 tmp drwxr-xr-x. 1 root root 17 Aug 23 2014 usr drwxr-xr-x. 1 root root 17 Aug 23 2014 var [root@dev /]#

?查看已經創建的表空間文件

[root@dev /]# cd oracle-tablespace/ [root@dev oracle-tablespace]# [root@dev oracle-tablespace]# ll total 204808 -rw-r-----. 1 oracle oinstall 209723392 May 31 11:32 brdb_1031_tablespace.dbf

4、創建用戶并指定表空間

語法:

create user 用戶名 identified by 口令[即密碼] default tablespace 表空間名;

實例:

create user brdb_1031 identified by 123456 default tablespace brdb_1031

5、目錄授權

語法:

grant read,write on directory 路徑名 to 用戶;

實例:

grant read,write on directory oracle_data to brdb_1031

6、用戶授權

一般情況下,我們可以直接賦予角色三種權限connect、resource、dba

語法:

grant 權限1, 權限2, 權限3…… to 用戶名

實例:

grant connect, resource, dba to brdb_1031

7、查詢數據庫用戶信息

select * from dba_users

在導出服務器上查詢,主要看表空間名(server1)

8、導入dmp文件

server2:
語法:
impdp 用戶名/密碼@數據庫的SID

directory=備份文件存放位置

dumpfile=導出的文件名

logfile=導出的日志名

schemas=指定導入用戶名

remap_tablespace=轉換表空間(原表空間:新表空間,多個轉換用逗號隔開)

remap_schema=轉換用戶名(原用戶名:新用戶名)

Oracle11g使用數據泵方式導入出現ORA-39151錯誤時
導入的數據庫中已經有相同的用戶名和老舊的表
可以在后邊加上參數
table_exists_action=replace(若表存在則替換)

table_exists_action=append/truncate/replace????

--append為追加數據

truncate為先刪除原表數據再插入數據

replace先drop表,然后創建表,最后插入數據(建議使用replace)

nologfile=y (不寫入日志文件)

exclude=user(忽略用戶對象已經存在的錯誤)

tables=表名只導入指定的某張表
實例:

$ impdp brdb_1031/123456@helowin directory=IMPORT_DIR dumpfile=BRDB_1031_2019-05-31.DMP logfile=brdb_1031_2019-05-31.log remap_tablespace=BRDB1031TABLESPACE:brdb_1031

?導入完成,時間較慢,耐心等待

9、相同數據庫的備份還原

注意:導入數據前需要先刪除序列

實例:

impdp ys_nk/nc2015@orcl directory=BACKUP dumpfile=YS_NK_2019-06-14.DMP table_exists_action=replace

table_exists_action=replace(先刪除原來的表,然后創建表,最后插入數據)

10、tables=表名(只導入指定的某張表)

實例:

impdp brdb_bjsc_0718/cnbi2018@orcl directory=dmpdir2 dumpfile=BRDB_BJSC_0718-2019-07-02.DUMP tables=(brdb_bjsc_0718.sys_user,brdb_bjsc_0718.SYS_USERCOMPANY) table_exists_action=replace

說明:全庫備份文件只恢復某張表的情況

end

轉載于:https://www.cnblogs.com/djlsunshine/p/10948021.html

總結

以上是生活随笔為你收集整理的oracle11g-R2数据库的逻辑备份(数据泵的导入导出)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。