Posted on 2006-09-08 17:16
毛里求斯的化石 閱讀(1955)
評論(1) 編輯 收藏 所屬分類:
開源
5.
數據庫配置
5.1.
從早期版本移植
從
2.2.0
到
2.2.1
,
sakai
提供了
mysql
和
oracle
的轉換腳本,保存在以下目錄
reference/docs/updating
,從以下網址也可以獲得:
在該目錄下,你還可以發現其他版本的轉換腳本。另外,需要注意的是,如果你是從更早期的版本升級到當前版本,則需要依次執行相應腳本,比如,如果你要從
2.1.2
升級到
2.2.1
,則需要先執行
2.1.2
到
2.2.0
的轉換腳本,然后再執行
2.2.0
到
2.2.1
的轉換腳本。
5.2.
驅動配置
Sakai
支持的產品級的數據庫包括
MySQL 4.1.12+
(注意,
MySQL 5.0
還未經過充分測試)和
oracle9i+
。
JDBC
驅動的版本也很重要,
對于
mysql
來說,需要用
MySQL a 3.1.12+
連接器,對于
oracle
來說必須用
10g
的驅動,即使數據庫版本是
9i
,這些驅動應該放到
$CATALINA_HOME/common/lib
目錄下,相應的驅動可以從以下網址獲得:
5.3.
創建數據庫和用戶
在使用
sakai
之前,必須先創建一個
sakai
數據庫,并建立相應的特權用戶,下面以
mysql
為例說明操作的過程:
C:\sakai\reference\sql\legacy\mysql\>
mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
?
Your MySQL connection id is 51 to server version: 4.1.5-gamma-nt
?
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
?
mysql> create database sakai default character set utf8;
Query OK, 1 row affected (0.00 sec)
?
mysql> grant all on sakai.* to sakaiuser@'localhost' identified by 'sakaipassword';
Query OK, 0 rows affected (0.00 sec
?
mysql> grant all on sakai.* to sakaiuser@'127.0.0.1' identified by 'sakaipassword';
Query OK, 0 rows affected (0.00 sec)
?
mysql> quit
UTF-8
字符集
創建數據庫時,必須確保使用
UTF-8
字符集,就像
tomcat
也必須配置成
UTF-8
字符集一樣。如果你不確定你的數據庫的當前配置,你可以通過
sql
來查詢,下面是以
oralce
為例,說明如何確定你的數據庫使用的字符集:
SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
VALUE
--------------------------------------------------------------------------------
AL32UTF8
5.4. Database
屬性
數據庫的屬性也是在
sakai.properties
文件中進行配置,以下分別是
mysql
和
oracle
數據庫的配置信息,你所需要的是根據自己的具體設置來進行本地化的修改:
MySQL:
|
hibernate.dialect=org.hibernate.dialect.MySQLDialect
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
url@javax.sql.BaseDataSource=jdbc:mysql://SERVER:3306/DB?useUnicode=true&characterEncoding=UTF-8
username@javax.sql.BaseDataSource=USER
password@javax.sql.BaseDataSource=PASSWORD
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED
|
Oracle:
|
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
vendor@org.sakaiproject.db.api.SqlService=oracle
driverClassName@javax.sql.BaseDataSource=oracle.jdbc.driver.OracleDriver
url@javax.sql.BaseDataSource=jdbc:oracle:thin:@SERVER:1521:DB
username@javax.sql.BaseDataSource=USER
password@javax.sql.BaseDataSource=PASSWORD
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED
|
Oracle
的性能
如果采用和
mysql
或者
HSQL
類似的配置,
oracle
可能會出現一些性能方面的問題,因此
sakai
強烈建議采用
oracle
數據庫時采用以下配置來避免可能出現的性能問題:
# For improved Oracle performance (from the University of Michigan)
validationQuery@javax.sql.BaseDataSource=
defaultTransactionIsolationString@javax.sql.BaseDataSource=
testOnBorrow@javax.sql.BaseDataSource=false
oracle
將自動配置前兩項的值。
一旦你修改了數據庫的配置,你只需重起
tomcat
即可生效,可以查看啟動日志,看是否有數據庫連接方面的錯誤。
Oracle and Tests&Quizzes
如果你使用的是
oracle
數據庫,你還必須檢查
SAM_MEDIA_T
表中的
MEDIA
字段,
hibernate
能夠為每個字段選擇正確的數據類型,但是在這個字段上,對于
oracle
經常會出現錯誤。對于不同數據庫,正確的數據類型應該是如下:
HSQL:
|
varbinary
|
MySQL:
|
longblob
|
Oracle:
|
blob
|
如果你需要在你的數據庫中改變這個字段的數據類型,你還必須重建該表的主鍵,以下是一個例子:
SQL> alter table SAM_MEDIA_T modify MEDIA BLOB;
Table altered.
SQL> select constraint_name from user_constraints where table_name='SAM_MEDIA_T'
and CONSTRAINT_TYPE='P';
CONSTRAINT_NAME
------------------------------
SYS_C0064435
SQL> alter table sam_media_t drop constraint SYS_C0064435;
Table altered.
SQL> alter table SAM_MEDIA_T add constraint SYS_C0064435 primary key (MEDIAID);
Table altered.
SQL> desc SAM_MEDIA_T;
[table with BLOB type]
SQL> select constraint_name from user_constraints where table_name='SAM_MEDIA_T'
and CONSTRAINT_TYPE='P';
CONSTRAINT_NAME
------------------------------
SYS_C0064435
SQL> commit;
Commit complete.