oracle11g-R2数据库的逻辑备份(数据泵的导入导出)
一、環(huán)境:
server1遷移到server2
server1:
服務(wù)器號(hào):201
系統(tǒng):Windows server 2008 R2 x64
IP地址:192.168.2.201
oracle數(shù)據(jù)庫(kù)版本:oracle 11g R2
端口號(hào):1521
用戶(hù)名:brdb_1031
密碼:nc2015
遷移到
server2:
服務(wù)器號(hào):207
系統(tǒng):centos7-x64
IP地址:192.168.2.207
oracle數(shù)據(jù)庫(kù)版本:oracle 11g R2
oracle安裝平臺(tái):阿里云docker鏡像
端口號(hào):1521
二、準(zhǔn)備:
1、在備份前,先檢查兩個(gè)數(shù)據(jù)庫(kù)的字符集是否相等
SQL語(yǔ)句:
select userenv('language') from dual;
server1字符集
server2字符集
2、修改server2字符集
AL32UTF8字符集修改為ZHS16GBK
執(zhí)行如下SQL語(yǔ)句就可修改:
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演示方法二:
連接數(shù)據(jù)庫(kù)
$ 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>關(guān)閉數(shù)據(jù)庫(kù)
SQL> shutdown immediate;
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.裝載啟動(dòng)數(shù)據(jù)庫(kù)到mount狀態(tài)
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.執(zhí)行如下命令
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 # 提示我們的字符集:新字符集必須為舊字符集的超集,這時(shí)我們可以跳過(guò)超集的檢查做更改:SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;Database altered.SQL>我們看到這個(gè)過(guò)程和之前ALTER DATABASE CHARACTER SET操作的內(nèi)部過(guò)程是完全相同的,也就是說(shuō)INTERNAL_USE提供的幫助就是使Oracle數(shù)據(jù)庫(kù)繞過(guò)了子集與超集的校驗(yàn)
關(guān)閉數(shù)據(jù)庫(kù)
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL>啟動(dòng)數(shù)據(jù)庫(kù)
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.查看字符集
報(bào)錯(cuò):
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>稍等幾分鐘自動(dòng)恢復(fù)
SQL> select userenv('language') from dual;USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBKSQL> SQL>數(shù)據(jù)庫(kù)字符集修改完畢
三、數(shù)據(jù)庫(kù)的導(dǎo)出(expdp)
server1:
注意:數(shù)據(jù)庫(kù)的導(dǎo)出和導(dǎo)入都在Windows命令模式下執(zhí)行
1、數(shù)據(jù)庫(kù)的導(dǎo)出(expdp)
導(dǎo)出某個(gè)用戶(hù)的表空間
語(yǔ)法如下:
expdp 導(dǎo)出用戶(hù)名/密碼@數(shù)據(jù)庫(kù)的SID
expdp 登陸用戶(hù)名/密碼@數(shù)據(jù)庫(kù)的IP/orcl
schemas=指定導(dǎo)出用戶(hù)名
dumpfile=文件名.dmp
logfile=日志名.log
directory=備份儲(chǔ)存路徑名
tables=表名(只導(dǎo)出指定的某張表)
實(shí)例:
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
說(shuō)明:備份存儲(chǔ)路徑名可以自己創(chuàng)建也可以查看已有的路徑
查看系統(tǒng)中所有的路徑
SQL語(yǔ)句:
select * from dba_directories
導(dǎo)出結(jié)果如下:
2、只導(dǎo)出指定的某張表
tables=表名
實(shí)例:
expdp brdb_0530/nc2015@orcl tables=SYS_USER dumpfile=SYS_USER_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp directory=BACKFILE
導(dǎo)出結(jié)果如下:
3、只導(dǎo)入某張表
?實(shí)例:
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
四、數(shù)據(jù)庫(kù)的導(dǎo)入(impdp)
server2
數(shù)據(jù)庫(kù)的導(dǎo)入:
SQL語(yǔ)句:
1、創(chuàng)建物理路徑
自行創(chuàng)建一個(gè)完整的目錄文件夾,用于存放dmp文件
例如:
/oracle-backup-import
創(chuàng)建一個(gè)完整的目錄文件夾,用于存放表空間
例如:
/oracle-tablespace
2、創(chuàng)建邏輯目錄
注意:路徑一定要和物理路徑是對(duì)應(yīng)關(guān)系
語(yǔ)法:
create directory 路徑名 as '路徑'
實(shí)例:
import導(dǎo)入備份文件路徑名
create directory import__dir as '/oracle-backup-import'
表空間存放文件路徑名
create directory oracle_data as '/oracle-tablespace'
3、創(chuàng)建表空間
語(yǔ)法:
create tablespace 表空間名
datafile ‘物理地址(相當(dāng)于文件路徑)’
size 初始大小(單位M)
autoextend on next 每次自增的大小(單位M)
maxsize unlimited (此關(guān)鍵字用于不限制表空間大小)
實(shí)例:
create tablespace brdb_1031
datafile '/oracle-tablespace/brdb_1031_tablespace.dbf'
size 200M
autoextend on next 100M
maxsize UNLIMITED;
注意:
在Linux系統(tǒng)中需要給目錄授權(quán),否則報(bào)錯(cuò):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 /]#?查看已經(jīng)創(chuàng)建的表空間文件
[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.dbf4、創(chuàng)建用戶(hù)并指定表空間
語(yǔ)法:
create user 用戶(hù)名 identified by 口令[即密碼] default tablespace 表空間名;
實(shí)例:
create user brdb_1031 identified by 123456 default tablespace brdb_1031
5、目錄授權(quán)
語(yǔ)法:
grant read,write on directory 路徑名 to 用戶(hù);
實(shí)例:
grant read,write on directory oracle_data to brdb_1031
6、用戶(hù)授權(quán)
一般情況下,我們可以直接賦予角色三種權(quán)限connect、resource、dba
語(yǔ)法:
grant 權(quán)限1, 權(quán)限2, 權(quán)限3…… to 用戶(hù)名
實(shí)例:
grant connect, resource, dba to brdb_1031
7、查詢(xún)數(shù)據(jù)庫(kù)用戶(hù)信息
select * from dba_users
在導(dǎo)出服務(wù)器上查詢(xún),主要看表空間名(server1)
8、導(dǎo)入dmp文件
server2:
語(yǔ)法:
impdp 用戶(hù)名/密碼@數(shù)據(jù)庫(kù)的SID
directory=備份文件存放位置
dumpfile=導(dǎo)出的文件名
logfile=導(dǎo)出的日志名
schemas=指定導(dǎo)入用戶(hù)名
remap_tablespace=轉(zhuǎn)換表空間(原表空間:新表空間,多個(gè)轉(zhuǎn)換用逗號(hào)隔開(kāi))
remap_schema=轉(zhuǎn)換用戶(hù)名(原用戶(hù)名:新用戶(hù)名)
Oracle11g使用數(shù)據(jù)泵方式導(dǎo)入出現(xiàn)ORA-39151錯(cuò)誤時(shí)
導(dǎo)入的數(shù)據(jù)庫(kù)中已經(jīng)有相同的用戶(hù)名和老舊的表
可以在后邊加上參數(shù)
table_exists_action=replace(若表存在則替換)
table_exists_action=append/truncate/replace????
--append為追加數(shù)據(jù)
truncate為先刪除原表數(shù)據(jù)再插入數(shù)據(jù)
replace先drop表,然后創(chuàng)建表,最后插入數(shù)據(jù)(建議使用replace)
nologfile=y (不寫(xiě)入日志文件)
exclude=user(忽略用戶(hù)對(duì)象已經(jīng)存在的錯(cuò)誤)
tables=表名(只導(dǎo)入指定的某張表)
實(shí)例:
$ 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
?導(dǎo)入完成,時(shí)間較慢,耐心等待
9、相同數(shù)據(jù)庫(kù)的備份還原
注意:導(dǎo)入數(shù)據(jù)前需要先刪除序列
實(shí)例:
impdp ys_nk/nc2015@orcl directory=BACKUP dumpfile=YS_NK_2019-06-14.DMP table_exists_action=replace
table_exists_action=replace(先刪除原來(lái)的表,然后創(chuàng)建表,最后插入數(shù)據(jù))
10、tables=表名(只導(dǎo)入指定的某張表)
實(shí)例:
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
說(shuō)明:全庫(kù)備份文件只恢復(fù)某張表的情況
end
轉(zhuǎn)載于:https://www.cnblogs.com/djlsunshine/p/10948021.html
總結(jié)
以上是生活随笔為你收集整理的oracle11g-R2数据库的逻辑备份(数据泵的导入导出)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 虚拟桌面分屏_无需分屏软件!让一台主机为
- 下一篇: 采用scp命令进行FTP数据迁移