ORACLE DUMP 的用法

FROM:

http://blog.youkuaiyun.com/liweiah/article/details/4354563


一、函数标准格式:

 DUMP(expr[,return_fmt[,start_position][,length]])

 

基本参数时4个,最少可以填的参数是0个。当完全没有参数时,直接返回null。另外3个参数也都有各自的默认值:

expr:这个参数是要进行分析的表达式(数字或字符串等,可以是各个类型的值)

return_fmt:指返回参数的格式,有5种用法:

           1)8:以8进制返回结果的值

           2)10:以10进制返回结果的值(默认)

           3)16:以16进制返回结果的值

           4)17:以单字符的形式返回结果的值

           5)1000:以上4种加上1000,表示在返回值中加上当前字符集

start_position:开始进行返回的字符位置

length:需要返回的字符长度

 

 

二、示例

 

SYS@ tsid > select dump('abc') from dual;

 

DUMP('ABC')

----------------------

Typ=96 Len=3: 97,98,99

 

SYS@ tsid > select dump('abc',16) from dual;

 

DUMP('ABC',16)

----------------------

Typ=96 Len=3: 61,62,63

 

SYS@ tsid > select dump('abc',1016) from dual;

 

DUMP('ABC',1016)

--------------------------------------------

Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63

 

SYS@ tsid > select dump('abc',17,2,2) from dual;

 

DUMP('ABC',17,2,2

-----------------

Typ=96 Len=3: b,c

 

 

结果的格式一般都是类似:Typ=96 Len=3 [CharacterSet=ZHS16GBK]: 61,62,63

 

1、 type

 

typ表示当前的expr值的类型。如:2表示NUMBER,96表示CHAR。

 

CODE TYP
----- ------------------------------
1      
VARCHAR2
2      NUMBER
8      LONG
12     DATE
23     RAW
24     LONG RAW
69     ROWID
96     CHAR
112    CLOB
113    BLOB
114    BFILE
180    TIMESTAMP
181    TIMESTAMP WITH TIMEZONE
182    INTERVAL YEAR TO MONTH
183    INTERVAL DAY TO SECOND
208    UROWID
231    TIMESTAMP WITH LOCAL TIMEZONE

 

2、 len

 

len表示该值所占用的字节数。

 

对于汉字,ZHS16GBK编码一个汉字需要2个字节,UTF8需要3个字节。

 

SQL> select dump('多多',1010) from dual;

DUMP('
多多',1010)
-------------------------------------------------------
Typ=96 Len=6 CharacterSet=UTF8: 229,164,154,229,164,154

 

SQL> select dump('多多',1010) from dual;

DUMP('
多多',1010)
---------------------------------------------------
Typ=96 Len=4 CharacterSet=ZHS16GBK: 182,224,182,224

 

 

3、 Value

 

具体的存储值。返回的数值就是Oracle在自己内部对前面的这个expr值得存储形式。对于非汉字的普通字符串,可以理解为就是它的ASCII码。举例证明:

 

SYS@ tsid > select dump('a=?5') from dual;

 

DUMP('A=?5')

-------------------------

Typ=96 Len=4: 97,61,63,53

 

SYS@ tsid > select chr(97),chr(61),chr(63),chr(53) from dual;

 

C C C C

- - - -

a = ? 5

 

SYS@ tsid > select ascii('a'),ascii('='),ascii('?'),ascii('5') from dual;

 

ASCII('A') ASCII('=') ASCII('?') ASCII('5')

---------- ---------- ---------- ----------

        97         61         63         53

 

ASCII码表:

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

0

NUT

32

(space)

64

@

96

1

SOH

33

65

A

97

a

2

STX

34

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

,

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

-

77

M

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

O

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

X

115

s

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

TB

55

7

87

W

119

w

24

CAN

56

8

88

X

120

x

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

z

27

ESC

59

;

91

[

123

{

28

FS

60

<

92

/

124

|

29

GS

61

=

93

]

125

}

30

RS

62

>

94

^

126

~

31

US

63

?

95

127

DEL

 

对于数字的存储,不像字符那么简单,而是应用Oracle自己的一个算法。


### 如何使用 Oracle 工具 `expdp` 导出完整的数据库 dump 文件 为了完成全量数据库的导出操作,可以利用 Oracle 提供的数据泵工具 `expdp`。以下是具体的操作方法以及注意事项: #### 使用命令行执行全库导出 通过 `expdp` 命令可以轻松实现整个数据库的导出。以下是一个标准的命令示例[^2]: ```bash expdp username/password@127.0.0.1/orcl directory=目录名 dumpfile=full.dmp full=y version=11.2; ``` - **username/password**: 替换为实际用于连接数据库的用户名和密码。 - **directory**: 这里指定了存储导出文件的目标路径对应的 Oracle 目录对象名称。该目录对象需提前创建并赋予相应权限[^3]。 - **dumpfile**: 定义生成的 dmp 文件的名字,在这里是 `full.dmp`。 - **version**: 可选参数,表示兼容版本号。 #### 创建目标目录及赋权 在运行上述命令之前,需要确保已经存在一个有效的 Oracle 数据库中的目录对象,并对该目录给予读写权限给相应的用户。可以通过下面 SQL 脚本来设置这些条件: ```sql CREATE OR REPLACE DIRECTORY my_directory AS 'E:\oracle'; GRANT READ, WRITE ON DIRECTORY my_directory TO username; ``` 这里假设将 E盘下的 oracle 文件夹作为存储位置,则应将其映射成名为 `my_directory` 的 Oracle 目录对象;同时授予相关联用户的访问权利。 #### 注意事项 当涉及到跨网络环境时,如果源端位于远程服务器上而希望把结果保存至本地机器的话,则需要注意调整 network link 或者其他配置来适应实际情况。另外还需确认防火墙策略不会阻碍必要的通信过程。 ```python # Python 示例代码片段仅作演示用途,非必要部分可忽略 import os os.system('expdp username/password@127.0.0.1/orcl directory=my_directory dumpfile=full.dmp full=y') print("Export completed.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值