1、Sybase IQ server有三種備份類型:
(1)、完全備份(full)
(2)、增量備份(incremental)
(3)、完全備份的基礎(chǔ)上增量備份(incremental
since full)
注:增量備份和完全備份的基礎(chǔ)上增量備份都會對Catalog
Store 進行完全備份,默認情況下為完全
備份。
2、Sybase IQ server的順序:
(1)、Catalog Store
(2)、Transaction log File
(3)、IQ Store
3、當(dāng)IQ server正在備份時:
(1)、默認情況下操作員必須在現(xiàn)場,掛持接備份介質(zhì)。
(2)、操作員可
以不在場,但必須正確地估算出備份的數(shù)據(jù)量大小,并且在安裝備份設(shè)備時,要選“高級”安裝方可。
(3)、數(shù)據(jù)庫備
份不會將未提交的內(nèi)容進行備份。
4、備份命令:
BACKUP DATABASE [CRC ON|OFF]
[Attended ON|OFF]
[BLOCK FACTOR integer]
[{FULL|INCREMENTAL|INCREMENTAL
SINCE FULL}]
TO
‘archive_device’ [SIZE # of KB integer]
例子:
BACKUP DATABASE TO ‘dev/rmt/0n’
注:BACKUP不支持裸設(shè)備
5、系統(tǒng)級別的備份:
如果IQ server運行時進行
系統(tǒng)級別的備份,則會導(dǎo)致服務(wù)崩潰或丟失數(shù)據(jù)。所以,必須確定IQ server是停止?fàn)顟B(tài)
時,方可進行系統(tǒng)級別備份。
6、備份的恢復(fù):
(1)、必須連接到utility_db數(shù)據(jù)庫后才可以進行恢復(fù)操作,并且在恢復(fù)數(shù)據(jù)時不能有用戶連接到數(shù)據(jù)庫,啟動utility_db的方法:start_asiq -n myserver -gu utility_db。
(2)、如果有完全恢復(fù),Catalog Store 和Transaction Log(即.db 和.log文件)必須從目標(biāo)文件夾下刪除。
(3)、如果為增量恢復(fù),Catalog Store 和Transaction Log(即.db 和.log文件)必須存在于目標(biāo)文件夾中。
(3)、恢復(fù)可以將原來dbspace的物理位置
更換,暨更改目錄和名稱。
7、恢復(fù)的命
令:
RESTORE
DATABASE ‘c:\\newdir\\mydb.db’
FROM ‘c:\\asiq\\backup1’
FROM ‘c:\\asiq\\backup2’
在進行恢復(fù)
時,必須注意恢復(fù)的順序和備份時的順序完全一致。
8、數(shù)據(jù)庫備份后,配置文件和日志文件是沒有被備份的,所以如果恢復(fù)時要單獨對這兩種文件進行恢復(fù)。配置文
件可以直接拷貝即可,但日志文件是不能用原來的.log文件的。
如果恢復(fù)到原來的目錄中,則不用新建.log文件。如果沒有恢復(fù)到原目錄,則必須用dblog工具手動生
成.log文件。
9、dblog工具的命令語法:
Dblog [option] database_file
Option:
-t log-name,指定事務(wù)log文件名。
-m mirror-name,設(shè)置事務(wù)日
志鏡象名。
-r,停止事務(wù)
日志的鏡象。
-o,輸出日志
信息到文件。
-q,安靜模
式,不打印信息。
例:dblog -r -t f:\asiqmrr\asiqmrr.log f:\asiqmrr\asiqmrr.db
sybaseiq的備份與恢復(fù):
備份:
backup database to
'e:\lslwork\temp\sybiqGP' ;
恢復(fù):
restore database 'C:\Program
Files\Sybase\ASIQ-12_6\gupiao\GP.db'
from 'e:\lslwork\temp\sybiqGP'
關(guān)鍵字: commons-dbutils 工具包的使用
commons-dbutils 是 Apache 組織提供的一個開源 JDBC 工具類庫,能讓我們更簡單的使用 JDBC 。
今天,在傳智播客的課堂上,我們學(xué)習(xí)了 DBUtils 類庫,知道了如何能夠更方便地使用 JDBC 。以下是我的學(xué)習(xí)總結(jié)。
--------------------------------------------------------------------------------
1. API 介紹:
<1> org.apache.commons.dbutils.DbUtils:提供如關(guān)閉連接、裝載 JDBC 驅(qū)動程序等常規(guī)工作的工具類;
<2> org.apache.commons.dbutils.QueryRunner:該類簡單化了 SQL 查詢,它與 ResultSetHandler 組合在一起使用可以完成大部分的數(shù)據(jù)庫操作,能夠大大減少編碼量。
<3> org.apache.commons.dbutils.ResultSetHandler:該接口用于處理 java.sql.ResultSet,將數(shù)據(jù)按要求轉(zhuǎn)換為另一種形式。
--------------------------------------------------------------------------------
2. 工具類的方法及示例代碼:
<1> DBUtil 類的主要方法如下:
a. public static void close(…) throws java.sql.SQLException: DbUtils類提供了三個重載的關(guān)閉
方法。這些方法檢查所提供的參數(shù)是不是 NULL ,如果不是的話,它們就關(guān)閉 Connection、Statement 和 ResultSet。
b. public static void closeQuietly(…): 這一類方法不僅能在 Connection、Statement 和ResultSet 為 NULL 情況下避免關(guān)閉,還能隱藏一些在程序中拋出的 SQLEeception。
c. public static void commitAndCloseQuietly(Connection conn): 用來提交連接,然后關(guān)閉連接,并
且在關(guān)閉連接時不拋出 SQL 異常。
d. public static boolean loadDriver(java.lang.String driverClassName):這一方裝載并注冊 JDBC 驅(qū)動程序,如果成功就返回 true 。使用該方法,你不需要捕捉這個異常 ClassNotFoundException。
--------------------------------------------------------------------------------
<2> QueryRunner 類的構(gòu)造方法及主要方法:
a. 默認的構(gòu)造方法:
public QueryRunner(){}
b. 需要一個 javax.sql.DataSource 來作參數(shù)的構(gòu)造方法:
public QueryRunner(DataSource ds) {
this.ds = ds;
}
QueryRunner類的主要方法:
c. public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh)
throws SQLException:執(zhí)行一個查詢操作,在這個查詢中,對象數(shù)組中的每個元素值被用來作為查詢語句的置換參數(shù)。該方法會自行處理 PreparedStatement 和 ResultSet 的創(chuàng)建和關(guān)閉。更重要的是參數(shù) ResultSetHandler 會把從 ResultSet 中獲得的數(shù)據(jù)轉(zhuǎn)換成程序需要的數(shù)據(jù)格式。
d. public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException:幾乎與第一種方法一樣;唯一的不同在于它不將數(shù)據(jù)庫連接提供給方法,并且它是從提供給構(gòu)造方法的數(shù)據(jù)源(DataSource) 或使用的setDataSource 方法中重新獲得 Connection。
e. public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException :執(zhí)行一個不需要置換參數(shù)的查詢操作。
f. public int update(Connection conn, String sql, Object[] params) throws SQLException:用來執(zhí)行一個更新(插入、更新或刪除)操作。
g. public int update(Connection conn, String sql) throws SQLException:用來執(zhí)行一個不需要置換
參數(shù)的更新操作。
--------------------------------------------------------------------------------
<3> ResultSetHandler接口
ResultSetHandler 接口提供了一個單獨的方法:
Object handle (java.sql.ResultSet .rs)。
--------------------------------------------------------------------------------
<4> ResultSetHandler 接口的實現(xiàn)類
a. ArrayHandler:把結(jié)果集中的第一行數(shù)據(jù)轉(zhuǎn)成對象數(shù)組。
b. ArrayListHandler:把結(jié)果集中的每一行數(shù)據(jù)都轉(zhuǎn)成一個對象數(shù)組,再存放到 List 中。
c. BeanHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個對應(yīng)的 JavaBean 實例中。
d. BeanListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個對應(yīng)的 JavaBean 實例中,存放到 List里。
e. ColumnListHandler:將結(jié)果集中某一列的數(shù)據(jù)存放到 List 中。
f. KeyedHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個 Map 里,然后再根據(jù)指定的key把每個 Map 再存放到一個 Map 里。
g. MapHandler:將結(jié)果集中的第一行數(shù)據(jù)封裝到一個 Map 里,key 是列名,value 就是對應(yīng)的值。
h. MapListHandler:將結(jié)果集中的每一行數(shù)據(jù)都封裝到一個 Map 里,然后再存放到 List。
i. ScalarHandler:將結(jié)果集中某一條記錄的其中某一列的數(shù)據(jù)存成 Object。
--------------------------------------------------------------------------------
<5> 下面是簡單對這幾個工具類的測試代碼:
QueryRunner runner = null;
runner = new QueryRunner();// 獲得QueryRunner類的實例對象
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver");//加載數(shù)據(jù)庫驅(qū)動
conn = DriverManager.getConnection("jdbc:mysql://localhost:3309/bookstore",
"root", "1230");// 與數(shù)據(jù)庫建立連接
String sql = "SELECT id, name, title, price, yr, description, saleAmount FROM books
WHERE id = ?";// 準(zhǔn)備 sql 語句
List<Book> list = (List) runner.query(conn, sql, new Object[]{"201"}, new
BeanListHandler(Book.class));// 運用 QueryRunner 的方法執(zhí)行 sql 語句,并獲取結(jié)果集,從這里可
//以看出運用 commons-dbutils 類庫的方便之處,避免了創(chuàng)建 ResultSet 對象來設(shè)置參數(shù)的麻煩。
System.out.println(books.size()); //輸出 books 的元素個數(shù)
--------------------------------------------------------------------------------
<6> 其它類和接口:
a. org.apache.commons.dbutils.QueryLoader類:屬性文件加載器,主要用于加載屬性文件中的 SQL 到內(nèi)存中。
b. org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet類:該類是用來對sql語句執(zhí)行完成
之后的的數(shù)值進行null的替換。
c. org.apache.commons.dbutils.wrappers.StringTrimmedResultSet類:去除ResultSet中字段的左右空格。
d. org.apache.commons.dbutils.RowProcessor接口:提供了把結(jié)果集的行數(shù)據(jù)轉(zhuǎn)換成其它格式的功能。它的實現(xiàn)類是org.apache.commons.dbutils.BasicRowProcessor類。