訪問ASM中的檔案

安佰勝發表於2010-08-24

訪問ASM中檔案的方法

 

1ASMCMD

10GR2版本後提供ASMCMD工具來對ASM中檔案和路徑進行瀏覽和管理。10G版本支援搜尋、檢視、建立路徑和別名以及顯示空間利用率等功能。11G中對這個工具進行了強化,使其支援cp命令,可以直接將ASM中檔案複製到檔案系統或者其他ASM路徑中。

-bash-3.00$ id

uid=500(oracle) gid=500(dba)

-bash-3.00$ uname -a

SunOS db-2 5.10 Generic_142900-03 sun4u sparc SUNW,SPARC-Enterprise

-bash-3.00$ export ORACLE_SID=+ASM1

-bash-3.00$ asmcmd -p

ASMCMD [+] > help

        asmcmd [-p] [command]

 

        commands:

        --------

        cd

        du

        find

        help

        ls

        lsct

        lsdg

        mkalias

        mkdir

        pwd

        rm

        rmalias

ASMCMD [+] >

 

11G可以使用cp命令來進行檔案的複製,如:

ASMCMD [+] > cp +DATA1/RAC/DATAFILE/sample.256.629730771 /home/oracle/oradata/rac/sample.dbf

ASMCMD [+] > cp /home/oracle/oradata/rac/sample.dbf +DATA1/RAC/DATAFILE/

也可以實現遠端複製

ASMCMD [+] > cp –ifr +DATA1/RAC/DATAFILE/sample.256.629730771 sys@server1,1521,+DATA2//RAC/DATAFILE/ sample.dbf

 

2FTP

除了使用asmcmd命令之外,還可以通過FTP的方式訪問ASM磁碟組中的檔案。

預設情況,這個ftp的埠是關閉的,可以通過下面的命令開啟:

SQL> conn / as sysdbaITPUB個人空間#u y%N[1]wR
已連線。ITPUB個人空間*IY3r7jC
SQL> @?/rdbms/admin/catxdbdbca.sql 7788 8800
-i @$p,{0K m|/y-J13177610SQL> SET FEEDBACK 1
;W)I {8q\(f
a)gx_13177610
SQL> SET NUMWIDTH 10ITPUB
個人空間-p Rk:Z:B.G Q;L


Y L‑g(y
SQL> SET LINESIZE 80

X
UY'|‑p L:A(V(m13177610
SQL> SET TRIMSPOOL ON

^f)y_.P3bxTl;y13177610
SQL> SET TAB OFF
'@­n4O&O4Zt­S/Z2YFW`13177610SQL> SET PAGESIZE 100ITPUB
個人空間2H3E'y{m r H
M

SQL>ITPUB
個人空間[g2G4J;E-G*H
SQL> define ftpport  = &1ITPUB
個人空間(YV w;PEN
SQL> define httpport = &2
9sE/i[1]k*@‑n]13177610SQL> Rem Create a function to traverse the dom elements.
l5K f1R l9Z*C @E13177610SQL> CREATE OR REPLACE FUNCTION traverseDom
.}2I"r!Tcik;[13177610  2            (parnode dbms_xmldom.DOMNode, pathSeg VARCHAR2)
0fe eoEr:k13177610  3            RETURN dbms_xmldom.DOMNode IS

a9|%`/`!M13177610
  4  nodeList    dbms_xmldom.DOMNodeList;ITPUB
個人空間;\0IP%XG
k&z oT7~

  5  anElement   dbms_xmldom.DOMElement;ITPUB
個人空間‑m!X!E2`%z!^
  6  aNode       dbms_xmldom.DOMNode;ITPUB
個人空間y$t4B@3h^5U+LN
  7  BEGINITPUB
個人空間'W;? x/U&{d:Ci4m
  8    -- Convert the passed in dom node to an element
vg(L^6T
k8Z V9h13177610
  9    anElement := dbms_xmldom.makeElement(parnode);
5Q+L g W
C6JC13177610
 10 ITPUB
個人空間;l9?;o
?
`}5n

 11    -- Select the path segment requested by the userITPUB
個人空間 sP FDW
 12    nodeList  := dbms_xmldom.getChildrenByTagName(anElement, pathSeg);ITPUB
個人空間 o:G[Ig1zq­m
 13 ITPUB
個人空間E­~6]m-]­~
 14    -- get the first node out of the listITPUB
個人空間f O)J
_;{
]

 15    aNode := dbms_xmldom.item(nodeList, 0);ITPUB
個人空間0R+J`?H­Cx
 16 ITPUB
個人空間7f3~-R vo0pt[1]EX
 17    -- return that node (ignore errors here).ITPUB
個人空間#A­xe%cM'|­Q-K
 18    return aNode;
n#hL[v13177610 19  END;ITPUB
個人空間D].FP9}B+`_ QB4?
 20  /

函式已建立。

SQL>
‑c5t}O&F13177610SQL> declareITPUB
個人空間 T8U&nl7RO y%F7N
  2     configxml    sys.xmltype;
+ZI


v \!DV uHXN13177610  3     configdomdoc dbms_xmldom.DOMDocument;ITPUB個人空間 nv+c9X-kG
  4     textNode     dbms_xmldom.DOMNode;ITPUB
個人空間a/l1G5W@M
  5     aNode        dbms_xmldom.DOMNode;
l3k5V,x)p~e(_v:MC13177610  6     protNode     dbms_xmldom.DOMNode;
'c X N^{13177610  7     anElement    dbms_xmldom.DOMElement;ITPUB
個人空間8A8Odx;O$R
  8     listOfNodes  dbms_xmldom.DOMNodeList;
@;s7@KTvP1`K
t13177610
  9     aString      VARCHAR2(100);ITPUB
個人空間&]'S:Z­k6r%S:`&TO­R
 10  beginITPUB
個人空間~%`e{­C:j4n‑J[1]_2b)[![;N
 11 ITPUB
個人空間E‑@wp:[
h Jz

 12  -- Select the resource and set it into the config
qK[1]D t$zOx4F13177610 13  select sys_nc_rowinfo$ into configxml from xdb.xdb$config ;
T1Jn­rm/he)X,h
p-k13177610
 14 

Uv/H­|3fw‑Y o5U13177610
 15  -- Create a dom document out of the xmltypeITPUB
個人空間 lS
T"Pc6E‑F

 16  configdomdoc := dbms_xmldom.newDOMDocument(configxml);
C+Z G-LA13177610 17 
` l5Q.r
l(L13177610
 18  -- Get the root Element of the dom
1L.T [L]
l#}13177610
 19  anElement := dbms_xmldom.getDocumentElement(configdomdoc);ITPUB
個人空間R
r*g&z(h{y WL
y

 20 ITPUB
個人空間 `Bin Q(J
QD A2]

 21  -- Convert this to a node
[1]XL!\$@
J(g13177610
 22  aNode := dbms_xmldom.makeNode(anElement);ITPUB
個人空間2`aa)nJ D
 23 
‑}8HO
d1L
Clt:x13177610
 24  -- Traverse One Element Down At A Time.
%J,Q rl8fc8~13177610 25  aNode := traverseDom(aNode, 'sysconfig');ITPUB
個人空間#LR U:V ]5XG
 26  protNode := traverseDom(aNode, 'protocolconfig');ITPUB
個人空間 J!_cI7b9w#N
e"k(GN

 27 
)C)uI%H\v uvc8b9D13177610 28  -- Set the FTP port by traversing /ftpconfig/ftp-port
M(h4V*s'H1Q:yW13177610 29  aNode := traverseDom(protNode, 'ftpconfig');ITPUB
個人空間­a3F}C v
 30  aNode := traverseDom(aNode, 'ftp-port');ITPUB
個人空間)q%R q|3O6q$W9D
 31  textNode := dbms_xmldom.getFirstChild(aNode);
+|W,s'pz+D|#b Ci13177610 32  dbms_xmldom.setNodeValue(textNode, &ftpport);ITPUB
個人空間e#B9e)~P
l

 33 
v2qrb o13177610 34  -- Set the FTP port by traversing /ftpconfig/ftp-portITPUB
個人空間IATr4a-b r
 35  aNode := traverseDom(protNode, 'httpconfig');ITPUB
個人空間a1N` E
v[1]W

 36  aNode := traverseDom(aNode, 'http-port');
mhNF0zBO13177610 37  textNode := dbms_xmldom.getFirstChild(aNode);
SKE%eF7q;A13177610 38  dbms_xmldom.setNodeValue(textNode, &httpport);ITPUB
個人空間h'S1^-]2U"j(o
 39 ITPUB
個人空間"U0Z/d7GT#P
 40  dbms_xdb.cfg_update(configxml);ITPUB
個人空間t,e1r?_[1]{:i
 41  commit;
,j%~5h9z9k'v!Lg13177610 42 
QT!Q x'[13177610 43  end;ITPUB
個人空間.R:y[1]ek6I T+n;f T([)K u{
 44  /
[1]I1J$qxsvg7a]­~13177610
原值   32: dbms_xmldom.setNodeValue(textNode, &ftpport);ITPUB個人空間Q})f‑w$n G7Ig[1]z
新值   32: dbms_xmldom.setNodeValue(textNode, 7788);ITPUB個人空間T
y'v Q;v[

原值   38: dbms_xmldom.setNodeValue(textNode, &httpport);ITPUB個人空間 ob(}‑R6Yp$o0b‑D
新值   38: dbms_xmldom.setNodeValue(textNode, 8800);

PL/SQL過程已成功完成。

SQL>ITPUB個人空間r2U&W+j W
SQL>
jc!Y { a*@13177610SQL> drop function traverseDom;

函式已刪除。

這個指令碼需要SYS或者XDB使用者來呼叫,後面跟的兩個引數分別是FTP的埠和HTTP/WEBDAV的埠。

下面就可以通過埠7788來訪問ASM磁碟組了:

SQL> hostITPUB個人空間7a9N[1]i%w[1]u:fs
$ ftp    
m
~ OQ0yeNX j13177610
ftp> open ser1 7788     
0nB#t1t X


I3A
i13177610Connected to ser1.
+wZ"|1c-vOf*AMC&b!b13177610220- ser1
­sa#r l$d`13177610Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.ITPUB個人空間;Tb/h"?[1]wm%|P
220 ser1 FTP Server (Oracle XML DB/Oracle Database) ready.
3IL:j{Or)I-z&W
yRi13177610
Name (ser1:root): systemITPUB
個人空間 go I k;F"O%Q5{
331 pass required for SYSTEM
r9]$Sos/g n13177610Password:
‑I/l"Z(B#U7Z13177610230 SYSTEM logged inITPUB
個人空間Ch;H({'P}\!G
Remote system type is Unix.ITPUB
個人空間*^7tP6y BmI
N n

ftp> cd /sys/asm
oG qMa13177610250 CWD Command successfulITPUB
個人空間3WkQW
U.i

ftp> ls
5h
? ZH'X!fr*m13177610
200 PORT Command successfulITPUB
個人空間k‑Y-WvO9D­{)l` ` h3k
150 ASCII Data Connection
*d&ehj$~$p
p'{13177610
DATAITPUB
個人空間 ?YJ T;~a4d!sU
226 ASCII Transfer Complete

n#w w W(SE13177610
6 bytes received in 0.17 seconds (0.04 Kbytes/s)ITPUB
個人空間%{,uy
w(f,l1nv.@.W"^

ftp> cd DATA
vt\
SKp[1]]'yz2\13177610
250 CWD Command successfulITPUB
個人空間tbZU1i:hG_ [ ^
ftp> ls
(f
A‑M6DRr%v7M13177610
200 PORT Command successful
*i D ?f8j
C({2t&A,j13177610
150 ASCII Data ConnectionITPUB
個人空間\5f.ALiN L+|k
U

RACTESTITPUB
個人空間/W Kr)N/M w
ASMTESTING
1kZ4}I t%s0bi13177610226 ASCII Transfer Complete
/a!}!Jk Xy"Q(FX1317761021 bytes received in 0.0021 seconds (9.58 Kbytes/s)
E Eto:d htZb QZ&S13177610ftp> cd RACTESTITPUB
個人空間‑hs:f7~'`X
250 CWD Command successful
8Ulp8?l%h.P t
_­D7~13177610
ftp> lsITPUB
個人空間~Q xcOR
200 PORT Command successful
Z.J5r&E`:J[1]QP:]\13177610150 ASCII Data Connection
6q7\g S(D;jL/u*o[1]w13177610CONTROLFILEITPUB
個人空間,g`
CX?;E

ONLINELOG
;G,K!}'_;Y x13177610DATAFILEITPUB
個人空間(} }\bId
TEMPFILEITPUB
個人空間uv8q­L1y^9R0T
PARAMETERFILE
(g/O.kL L13177610spfileractest.oraITPUB
個人空間[
lF3|%[&ws.O@'R

backupITPUB
個人空間 U)r!~F\$t G.S7a
226 ASCII Transfer CompleteITPUB
個人空間~l4a C ^ Jo@
86 bytes received in 0.003 seconds (28.41 Kbytes/s)
%l
|c"~"h
])H13177610
ftp> lcd /dataITPUB
個人空間fO-t*K_c
Local directory now /data
0vS \g\ V`Q13177610ftp> cd DATAFILE
BE7n[1]Yd p‑\)HYH_13177610250 CWD Command successfulITPUB
個人空間w6k‑kD HD/VPa)U
ftp> ls
/X'lw[p­\&g13177610200 PORT Command successful
w:\ZSx[ b,m13177610150 ASCII Data ConnectionITPUB
個人空間}D.L­_
T*b)o |

SYSTEM.259.664395355
[1]}(A `"Xf#HN13177610SYSAUX.260.664395357ITPUB
個人空間-H%qn,W:g
MJ

UNDOTBS1.261.664395359ITPUB
個人空間6` u o z4bl
UNDOTBS2.263.664395371ITPUB
個人空間j"|@&n
t8F L
?

USERS.264.664395373ITPUB
個人空間Q
j9IsO/MEF

226 ASCII Transfer CompleteITPUB
個人空間
p.o6z/\ H

113 bytes received in 0.0028 seconds (38.79 Kbytes/s)
.{ P@1LiO+G3s13177610ftp> bin
.i
kH f+o13177610
200  Type set to I.ITPUB
個人空間L-U'zN1ZS'LZC:Wwz
ftp> promptITPUB
個人空間&K6`&G(b7\@5ag"r
Interactive mode off.
`DA#^.O6sv!y13177610ftp> mget SYSTEM.259.664395355ITPUB
個人空間s&@*^\)If \-c l
200 PORT Command successfulITPUB
個人空間R;x0po+e6i z
f-@*l

150 BIN Data ConnectionITPUB
個人空間[1]d`U6C­bL
226 BIN Transfer Complete
%g4~-^%D
@4m13177610
local: SYSTEM.259.664395355 remote: SYSTEM.259.664395355ITPUB
個人空間-iT
?[1]PS7IT-p

734011392 bytes received in 17 seconds (41380.50 Kbytes/s)

e|‑r(]o*wu R{!_13177610
ftp> ls
?3BD
cU%G6Z4N13177610
200 PORT Command successfulITPUB
個人空間#kU{[1]B
W A

150 ASCII Data Connection
:^T]
@/B4c13177610
SYSTEM.259.664395355
;TI(n,_d]+X13177610SYSAUX.260.664395357ITPUB
個人空間*Z9fdg7_[U
UNDOTBS1.261.664395359
!n6b^ _`o$R3[13177610UNDOTBS2.263.664395371ITPUB
個人空間V{SkEN2DS
USERS.264.664395373ITPUB
個人空間?~Xi_+|­hX4B
226 ASCII Transfer CompleteITPUB
個人空間8DR3nd‑Nx
113 bytes received in 0.0037 seconds (29.51 Kbytes/s)ITPUB
個人空間q1@ Z
\ C

ftp> cd ..ITPUB
個人空間 yV gs C,R'z)h
250 CWD Command successful
%}
L9a4d{r4^ `­| |+g13177610
ftp> lsITPUB
個人空間Jz8JaN2A1R'k!^ M:a
200 PORT Command successful
C
P.f l
~$Sh
r8L13177610
150 ASCII Data Connection
.U D0D F3O|
mf3r13177610
CONTROLFILE
f YA"k3X9l
M{13177610
ONLINELOG
;`r$Yas?13177610DATAFILEITPUB
個人空間U+C]I5E4h(F8}
TEMPFILEITPUB
個人空間7h1g
}­B;Z9H

PARAMETERFILE
#u+Jh[1]|6wJd'm13177610spfileractest.oraITPUB
個人空間 O5Dfh+H
P M
P
`A

backup
‑T1C Pd]u7B­G13177610226 ASCII Transfer Complete
yS*]­{4~0?Nk1317761086 bytes received in 0.003 seconds (27.67 Kbytes/s)ITPUB
個人空間%l|
A D8k._
P

ftp> cd backup
f$f^:A6s7q13177610250 CWD Command successful
S R-Pl
d };Jk%Z8s.\/g13177610
ftp> send SYSTEM.259.664395355 system.dbfITPUB
個人空間K%s8H2yQ/r8mv$q l
200 PORT Command successful
0?(s0~mIY E2U13177610150 BIN Data ConnectionITPUB
個人空間9SdqGAvi@
z‑o

226 BIN Transfer CompleteITPUB
個人空間.F[1]W/l-@;n,J
local: SYSTEM.259.664395355 remote: system.dbfITPUB
個人空間$R+Yx^ e~4a;j8z,x
734011392 bytes sent in 9.5 seconds (75647.23 Kbytes/s)ITPUB
個人空間!O!o$vQ8q%S |%c0f
ftp> ls
j‑W!EK2_m9Z o ZX‑`13177610200 PORT Command successfulITPUB
個人空間(q @Q e!Q
j

150 ASCII Data ConnectionITPUB
個人空間$wc-gL‑xm5u
02jplh5q_1_1
0ZY#[`*u13177610system.dbfITPUB
個人空間 X\!dd7F,cv
226 ASCII Transfer Complete
}d2A(R,v~y1317761026 bytes received in 0.0025 seconds (10.13 Kbytes/s)
Aw!s%Z^tD9z} s13177610ftp> quit
`X]8S"['V!J*u13177610221 QUIT Goodbye.

上面展示了利用ftp功能,在作業系統和ASM之間讀寫檔案的操作。需要注意,ftp登陸需要一個非SYSDBA賬號。

登陸後在/sys/asm下可以找到ASM磁碟組資訊。ftp的基本命令都可以使用,包括mkdir

這個埠開啟之後,除了本機之外,其他伺服器也通過同樣的方法可以直接訪問ASM磁碟組。

3SQLPLUS

SQL> select * from dict where table_name like 'V$ASM_%';

TABLE_NAME                     COMMENTS

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

V$ASM_ALIAS                    Synonym for V_$ASM_ALIAS

V$ASM_CLIENT                   Synonym for V_$ASM_CLIENT

V$ASM_DISK                     Synonym for V_$ASM_DISK

V$ASM_DISKGROUP                Synonym for V_$ASM_DISKGROUP

V$ASM_DISKGROUP_STAT           Synonym for V_$ASM_DISKGROUP_STAT

V$ASM_DISK_STAT                Synonym for V_$ASM_DISK_STAT

V$ASM_FILE                     Synonym for V_$ASM_FILE

V$ASM_OPERATION                Synonym for V_$ASM_OPERATION

V$ASM_TEMPLATE                 Synonym for V_$ASM_TEMPLATE

9 rows selected

4EM

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13177610/viewspace-671733/,如需轉載,請註明出處,否則將追究法律責任。

相關文章