oracle數據庫卸數及ddl導出


一.數據庫卸數腳本

還是比較明了的,一看就明白。

unloaddevice.sh 

sqlplus atmpbat/atmpbat@inter @"./unloaddevice.sql";

DATE_LOAD_PRE=`date -d "1 day ago" "+%Y%m%d"`;

mv device_all.txt XT0251.device.${DATE_LOAD_PRE}.0000.dat

gzip XT0251.device.${DATE_LOAD_PRE}.0000.dat

unloaddevice.sql

set linesize 200

set pagesize 0

set echo off



set termout off

set heading off



set feedback off

spool device_all.txt

select DEV_CODE||'^A'||DEV_BANKCODE||'^A'||DEV_IPADDRESS||'^A'||DEV_CITYCODE||'^A'||DEV_BRANCHCODE||'^A'||DEV_GYH||'^A'||DEV_YLBH||'^A'||DEV_WXH||'^A'||DEV_ADDRESS||'^A'||DEV_COMMENT||'^A'||DEV_TYPE||'^A'||DEV_ENCRY||'^A'||DEV_VERNUM||'^A'||DEV_PACK||'^A'||DEV_BILLBOXCFG||'^A'||DEV_FTRNFLAG||'^A'||DEV_STATUS||'^A'||DEV_EXPCNT||'^A'||DEV_ANOMCODE||'^A'||DEV_NOWTRANS||'^A'||DEV_FTPPWD||'^A'||DEV_CAPCARD||'^A'||DEV_IDENCODE||'^A'||DEV_BATCH||'^A'||DEV_HSMTYPE||'^A'||DEV_MASTERFLAG||'^A'||DEV_MASTERKEY||'^A'||DEV_PINKEY||'^A'||DEV_MACKEY||'^A'||FOREIGN_FLAG||'^A'||'^A'  from device where DEV_BANKCODE='51082';

spool off

/
exit;

二.ddl導出

坑比較多,首先是sh中sqlplus后面接的用戶名和密碼,與sql中的schema名要一致,否則無法導出!

如果我們知道表名,怎么知道這張表的schema,即get_ddl第三個參數,

首先要切換到oracle用戶,普通用戶的話,無法用sysdba登錄,顯示權限不夠!

su - oracle

sqlplus /nolog

conn sys

as sysdba

select username from sys.dba_users;  //查詢所有的schema,其實也就是username,二者名字一致!

select table_name from sys.dba_tables where owner=‘schema名’   //查詢schema下面表的名字

從而可以找到schema名字下的表名,確立二者的關系!

這里有個坑是,device表是ATMPDBA的,但是你用atmpbat用戶登錄,也可以查到該表的數據內容,就像上面數據庫導數的例子,很奇怪!

gen_flg.sh

sqlplus atmpdba/atmpdba@inter @"./gen_ddl.sql";

DATE_LOAD_PRE=`date -d "1 day ago" "+%Y%m%d"`;

mv device_ddl.txt XT0251.device.${DATE_LOAD_PRE}.0000.flg

gen_ddl.sql

set heading off;

set echo off;

Set pages 999;

set long 90000;


spool device_ddl.txt

select dbms_metadata.get_ddl('TABLE','DEVICE','ATMPDBA') from dual;

spool off

/
exit;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM