中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EAS附件表由數據庫遷移到FTP

發布時間:2020-08-10 02:01:42 來源:ITPUB博客 閱讀:204 作者:chenoracle 欄目:關系型數據庫

EAS 附件表由數據庫遷移到FTP

環境說明:

EAS:EAS8.2

DB:Oracle 11.2.0.1.0

FTP: vsftpd-2.2.2

FTP_OS: CentOS release 6.7 (Final)

問題說明:

金蝶系統啟用費控報銷后,數據庫大小在一年內由5G迅速上升至350G,其中附件表

t_bas_attachment ffile 字段屬于BLOB類型, 大小達270G,平均1條數據1M大小,數據庫性能和日常維護都會受到影響,例如:

日常expdp備份時備份到t_bas_attachment表時,經常會出現ORA-01555錯誤( http://blog.itpub.net/29785807/viewspace-2640146/

) ,一味的調大參數并不能從根本上解決問題;

解決方案:

通過EAS,將附件遷移到FTP服務器上;即將 t_bas_attachment表 ffile 字段數據遷移到FTP服務器上;

實施過程:

一:搭建FTP服務器

二:更改附件存儲方式

三:配置FTP并啟用

四:查看遷移信息

五:開始遷移

六:釋放段空間

七:釋放數據文件空間

八:查詢遷移后信息

一:搭建FTP服務器

1.1 查看系統自帶的vsftpd

[root@chenjchserver ~]# cat /etc/issue

CentOS release 6.7 (Final)

[root@chenjchserver ~]# rpm -qa|grep vsftpd

vsftpd-2.2.2-14.el6.x86_64

1.2 設置vsftpd.conf參數

[root@chenjchserver vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@chenjchserver vsftpd]# cp vsftpd.conf vsftpd.conf.bak

[root@chenjchserver ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

xferlog_std_format=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog

idle_session_timeout=6000

data_connection_timeout=1200

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

chroot_list_enable=YES

chroot_local_user=YES

userlist_deny=NO

userlist_enable=YES

userlist_file=/etc/vsftpd/user_list

chroot_list_enable=YES

local_root=/chenjchserver/cjcfile

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

1.3 創建ftp用戶

[root@chenjchserver cjcfile]# useradd cjcuser

[root@chenjchserver cjcfile]# passwd cjcuser

[root@chenjchserver cjcfile]# id cjcuser

1.4 創建并設置ftp目錄權限

[root@chenjchserver cjcfile]# mkdir /chenjchserver/cjcfile -p

[root@chenjchserver cjcfile]# chmod 777 /chenjchserver/cjcfile

1.5 重啟ftp服務

[root@chenjchserver ~]# service vsftpd status

vsftpd is stopped

[root@chenjchserver ~]# service vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@chenjchserver ~]# ps -ef|grep vsftpd

root      4330     1  0 14:10 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

root      4333  3897  0 14:10 pts/0    00:00:00 grep vsftpd

1.6 ftp 服務設置自啟動

[root@chenjchserver ~]# chkconfig --list|grep vsftpd

vsftpd           0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@chenjchserver ~]# chkconfig vsftpd on

[root@chenjchserver ~]# chkconfig --list|grep vsftpd

vsftpd           0:off 1:off 2:on  3:on  4:on  5:on  6:off

1.7 測試ftp基本功能

---Windows 連接FTP

---1 登陸FTP

C:\Users\Administrator>ftp 192.*.*.*

連接到 192.*.*.*。

220 (vsFTPd 2.2.2)

用戶(192.*.*.*:(none)): cjcuser

331 Please specify the password.

密碼:

230 Login successful.

---2  查看根目錄下有哪些文件

ftp> dir

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

-rw-r--r--    1 0        0              10 Dec 27 06:26 1.text

226 Directory send OK.

ftp: 收到 64 字節,用時 0.00秒 32.00千字節/秒。

---3 在根目錄創建FTP目錄test1227

ftp> mkdir test1227

257 "/test1227" created

---4 切換到test1227目錄

ftp> cd test1227

250 Directory successfully changed.

---5 切換本地目錄

ftp> lcd Desktop

目前的本地目錄 C:\Users\Administrator\Desktop。

---6 上傳文件

ftp> put 000111222.txt

200 PORT command successful. Consider using PASV.

150 Ok to send data.

226 Transfer complete.

ftp: 發送 61 字節,用時 0.02秒 3.81千字節/秒。

---7 下載文件

ftp> cd ..

250 Directory successfully changed.

ftp> dir

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

-rw-r--r--    1 0        0              10 Dec 27 06:26 1.text

drwxr-xr-x    2 501      501          4096 Dec 27 07:01 test1227

226 Directory send OK.

ftp: 收到 130 字節,用時 0.00秒 32.50千字節/秒。

ftp> get 1.txt

200 PORT command successful. Consider using PASV.

550 Failed to open file.

ftp> get 1.text

200 PORT command successful. Consider using PASV.

150 Opening BINARY mode data connection for 1.text (10 bytes).

226 Transfer complete.

ftp: 收到 10 字節,用時 0.02秒 0.45千字節/秒。

---8 刪除單個文件

ftp> delete 1.txt

250 Delete operation successful.

---9 刪除文件夾下文件

ftp> mdelete test1227

200 Switching to ASCII mode.

mdelete test1227/000111222.txt? yes

250 Delete operation successful.

ftp> dir

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

-rw-r--r--    1 0        0              10 Dec 27 06:26 1.txt

drwxr-xr-x    2 501      501          4096 Dec 27 07:11 test1227

226 Directory send OK.

ftp: 收到 129 字節,用時 0.01秒 25.80千字節/秒。

---10 刪除目錄

ftp> rmdir test1227

250 Remove directory operation successful.

二:更改附件存儲方式

附件更改方式由DB改成FTP

--- 參數設置---附件存儲方式

EAS附件表由數據庫遷移到FTP

三:配置FTP并啟用

EAS附件表由數據庫遷移到FTP

EAS附件表由數據庫遷移到FTP

四:查看遷移信息

--- 前后臺分別查看待遷移附件數量是否一致

select count (*) from T_BAS_ATTACHMENT ;

EAS附件表由數據庫遷移到FTP

五:開始遷移

--- 耗時5小時

EAS附件表由數據庫遷移到FTP

EAS附件表由數據庫遷移到FTP

遷移完成后,前臺界面如果關不掉,可以 任務管理器殺掉 java.exe,強制退出;

遷移過程中可用看到FTP目錄下已有新文件產生:

EAS附件表由數據庫遷移到FTP

--- 查看FTP日志

EAS附件表由數據庫遷移到FTP

--- 可用通過數據庫查看遷移完成多少附件,剩余多少附件待遷移

select count (*), fstoragetype

  from t_bas_attachment

  group by fstoragetype

  order by 2 desc ;

六:釋放段空間

6.1 查看段信息

select table_name , column_name , segment_name , INDEX_NAME

  from dba_lobs

  where table_name = 'T_BAS_ATTACHMENT'

   and owner = 'CHENJCH' ;

EAS附件表由數據庫遷移到FTP

6.2 查看段大小

select bytes / 1024 / 1024 || ' MB' , segment_name , segment_type

  from dba_segments

  where owner = 'CHENJCH'

   and segment_name in ( 'T_BAS_ATTACHMENT' ,

                        'SYS_LOB0000xxxxxxxxxxxxx' ,

                        'SYS_IL00007xxxxxxxxxxxxx' );

-- 遷移前

EAS附件表由數據庫遷移到FTP

-- 遷移后(大小沒變,數據雖然少了,但是段空間沒有自動釋放)

EAS附件表由數據庫遷移到FTP

6.3 段收縮

--- 耗時3.5h

--- 會占用一部分磁盤空間

ALTER TABLE T_BAS_ATTACHMENT  MODIFY LOB ( FFILE ) ( SHRINK SPACE );

--- 耗時2min

alter table t_bas_attachment move ;

--- 耗時1秒

alter index PK_ATTACHMENT rebuild ;

--- 收集統計信息

EXEC DBMS_STATS.GATHER_TABLE_STATS ( 'K2' , 'T_BAS_ATTACHMENT' , estimate_percent => 100 , CASCADE => TRUE );

-- 在查詢段大小(段空間已釋放)

EAS附件表由數據庫遷移到FTP

6.4 查看附件大小

select max ( dbms_lob.getLength ( ffile ) / 1024 / 1024 ) as " 最大(MB)" ,

       min ( dbms_lob.getLength ( ffile )) as " 最小(Bytes)" ,

       avg ( dbms_lob.getLength ( ffile ) / 1024 / 1024 ) as " 平均(MB)"

  from k2.t_bas_attachment ;

--- 遷移前:

EAS附件表由數據庫遷移到FTP

--- 遷移后:

EAS附件表由數據庫遷移到FTP

七:釋放數據文件空間

--- 此時數據文件可用空間已經釋放了,但是數據文件占用操作系統的空間不會自動釋放,可以對高水位下的數據進行收縮;

7.1 查看數據文件信息

select file_id ,

       bytes / 1024 / 1024 / 1024 as " 當前大小(GB)" ,

       file_name ,

       tablespace_name

  from dba_data_files a

  where tablespace_name = 'CJC_D_TBS'

  order by 1 ;

7.2 查看可回收的段空間

select a.file_id ,

       a.file_name ,

       a.filesize ,

       b.freesize ,

       ( a.filesize - b.freesize ) usedsize ,

       c.hwmsize ,

       c.hwmsize - ( a.filesize - b.freesize ) unsedsize_belowhwm ,

       a.filesize - c.hwmsize canshrinksize ,

       'alter database datafile ' || a.file_name || ' resize ' || c.hwmsize || 'M;' cmd

  from ( select file_id , file_name , round ( bytes / 1024 / 1024 ) filesize

          from dba_data_files

         where tablespace_name = 'CJC_D_TBS' ) a ,

       ( select file_id , round ( sum ( dfs.bytes ) / 1024 / 1024 ) freesize

          from dba_free_space dfs

         where tablespace_name = 'CJC_D_TBS'

         group by file_id ) b ,

       ( select file_id , round ( max ( block_id ) * 8 / 1024 ) HWMsize

          from dba_extents

         where tablespace_name = 'CJC_D_TBS'

         group by file_id ) c

  where a.file_id = b.file_id

   and a.file_id = c.file_id

  order by unsedsize_belowhwm desc ;

7.3 數據文件收縮

Resize 大小可用適量增大10M左右,避免ORA-03214錯誤;

EAS附件表由數據庫遷移到FTP

收縮腳本如下:

alter database datafile 'D:\ORADATA\CJC_D_TBS35A.DBF' resize 1987 M ;

alter database datafile 'D:\ORADATA\CJC_D_TBS36A.DBF' resize 1987 M ;

alter database datafile 'D:\ORADATA\CJC_D_TBS33A.DBF' resize 1988 M ;

……

八 查看遷移后信息

主要 t_bas_attachment 表fstoragetype , fremotepath 字段有變化

select b.fnumber ,

       b.fname_l1 ,

       to_char ( a.fcreatetime , 'yyyy-mm-dd hh34:mi:ss' ) 創建時間 ,

       to_char ( a.flastupdatetime , 'yyyy-mm-dd hh34:mi:ss' ) 更新時間 ,

       a.fname_l1 ,

       a.fsimplename ,

       a.ftype ,

       a.ffile ,

       a.fsize ,

       fattachid ,

       fstoragetype ,

       fremotepath

  from t_bas_attachment a

  left join t_pm_user b

on a.fcreatorid = b.fid ;

遷移前:

EAS附件表由數據庫遷移到FTP

遷移后:

EAS附件表由數據庫遷移到FTP

--- 實際數據模糊處理

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

EAS附件表由數據庫遷移到FTP

EAS附件表由數據庫遷移到FTP


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 昌平区| 通化市| 安岳县| 抚宁县| 贺兰县| 独山县| 长沙市| 甘南县| 治多县| 江北区| 化隆| 疏附县| 景德镇市| 元江| 仙居县| 那坡县| 青海省| 诏安县| 宜都市| 深水埗区| 汽车| 拜城县| 陵川县| 晋城| 巩留县| 台江县| 洛川县| 峨眉山市| 西和县| 湘潭县| 宁化县| 太湖县| 海城市| 大理市| 南通市| 平安县| 社旗县| 江油市| 丹东市| 长沙县|