oracle11g-R2數據庫的邏輯備份(數據泵的導入導出)

1、環境:

server1遷移到server2

server1:

服務器號:201linux

系統:Windows server 2008 R2 x64sql

IP地址:192.168.2.201docker

oracle數據庫版本:oracle 11g R2數據庫

端口號:1521centos

用戶名:brdb_1031服務器

密碼:nc2015session

遷移到

server2:

服務器號:207oracle

系統:centos7-x64ide

IP地址:192.168.2.207阿里雲

oracle數據庫版本:oracle 11g R2

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

端口號:1521

2、準備:

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

SQL語句:

select userenv('language') from dual;

server1字符集

server2字符集

二、修改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 sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri May 31 09:34:26 2019

Copyright (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 options

SQL>

查看字符集

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

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

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL>

關閉數據庫

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 character


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


SQL>

稍等幾分鐘自動恢復

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

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

SQL>
SQL>

數據庫字符集修改完畢

3、數據庫的導出(expdp)

server1:

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

一、數據庫的導出(expdp)

導出某個用戶的表空間

語法以下:

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

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

schemas=指定導出用戶名

dumpfile=文件名.dmp

logfile=日誌名.log

directory=備份儲存路徑名

實例:

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

導出結果以下:

4、數據庫的導入(impdp)

server2

數據庫的導入:

SQL語句:

一、建立物理路徑

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

例如:

/oracle-backup-import

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

例如:

/oracle-tablespace

二、建立邏輯目錄

注意:路徑必定要和物理路徑是對應關係

語法:

create directory 路徑名 as '路徑'

實例:

import導入備份文件路徑名

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

表空間存放文件路徑名

create directory oracle_data as '/oracle-tablespace'

三、建立表空間

語法:

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

四、建立用戶並指定表空間

語法:

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

實例:

create user brdb_1031 identified by 123456 default tablespace brdb_1031

五、目錄受權

語法:

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

實例:

grant read,write on directory oracle_data to brdb_1031

六、用戶受權

通常狀況下,咱們能夠直接賦予角色三種權限connect、resource、dba

語法:

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

實例:

grant connect, resource, dba to brdb_1031

七、查詢數據庫用戶信息

select * from dba_users

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

八、導入dmp文件

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

directory=備份文件存放位置

dumpfile=導出的文件名

logfile=導出的日誌名

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

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

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

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

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


實例:

$ 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

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

end

相關文章
相關標籤/搜索