Oracle_Database_10g小提示三則
CALIS管理中心 劉小剛
*本文所涉及到的Oracle_Database_10g運行在操作系統Red Flag Linux DC 4.1下。
8月1日至8月19日,CALIS第三期系統管理員培訓班在上海交通大學閔行校區圖書館成功舉行。作為這期培訓班的管理人員之一,筆者旁聽了紅旗Linux 和Oracle Database 10g的全部講課。10g的培訓內容基本涉及到了該數據庫的各個方面,但是在實際部署CALIS產品的時候,除了要了解Red Flag Linux DC 4.1下有方便10g安裝的Oracle Install Navigator(系統命令oranavi),以下三個問題值得注意。一、RESOURCE角色的UNLIMITED TABLESPACE權限問題
在10g中,RESOURCE角色包含了CREATE TRIGGER、CREATE INDEXTYPE和CREATE PROCEDURE等常用的系統權限,因此在10g中創建新用戶的時候除了默認的CONNECT角色,一般還要賦予RESOURCE角色。
現在,使用Enterprise Manager(EM)或者下面的SQL語句創建一個新用戶:
CREATE USER "TEST" PROFILE "DEFAULT" IDENTIFIED BY "TESTPASS" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "TEST";
GRANT "RESOURCE" TO "TEST";
下邊,在SQL*PLUS中以該用戶身份登錄:
[liuxg@localhost liuxg]$ su - oracle
[oracle@localhost oracle]$ sqlplus /nolog
SQL> connect test/testpass
查詢該用戶所擁有的全部權限:
SQL> select * from session_privs;
PRIVILEGE
--------------------------------------------------------------------------------
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
PRIVILEGE
--------------------------------------------------------------------------------
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
14 rows selected.
從結果中可以看到,該用戶擁有UNLIMITED TABLESPACE系統權限。但是如果使用select privilege from role_sys_privs where role='CONNECT'以及select privilege from role_sys_privs where role='RESOURCE'查詢CONNECT和RESOURCE角色卻找不到UNLIMITED TABLESPACE這個系統權限。
從Oracle MetaLink得知,UNLIMITED TABLESPACE是為了使10g保持向后兼容性而隱含在RESOURCE角色中的一個系統權限。從安全性的角度來考慮,在創建用戶并且授予RESOURCE角色之后應該回收UNLIMITED TABLESPACE這個系統權限。這里推薦創建一個新角色,比如CALIS_RESOURCE,該角色擁有select privilege from role_sys_privs where role='RESOURCE'查詢語句所列出的全部系統權限,而在創建新用戶的時候則將賦予這個新角色。二、8080端口和2100端口被占用問題
很多用戶發現,在10g運行的時候,如果啟動默認端口為8080的Tomcat,不能訪問Tomcat所提供的Web應用程序,通過命令lsof -i:8080會發現該端口已經被10g占用;同樣,如果啟動默認端口為2100的CALIS Z-Server,該服務也不能夠被訪問,再通過lsof -i:2100會發現該端口也是被10g占用。
當然可以通過改變Tomcat和CALIS Z-Server默認端口的方式來避免端口沖突。通過調查發現10g中是XML DB在使用8080和2100,而XML DB目前在CALIS各項產品中還未使用到,因此,建議通過關閉XML DB來解決問題。具體可參考如下幾步操作:
[liuxg@localhost liuxg]$ su - oracle
[oracle@localhost oracle]$ sqlplus /nolog
SQL> connect / as sysdba
SQL> alter system set dispatchers='' scope=both;
SQL> shutdown immediate
SQL> startup
三、 Enterprise Manager(EM)的使用問題
10g提供了使用瀏覽器以Web方式訪問數據庫的工具Enterprise Manager,EM極大的方便了數據庫管理員對數據庫的管理。與此同時,EM默認使用的協議是HTTP,數據庫用戶密碼以及對數據庫進行的各項操作都是在網絡上明文傳輸,這無疑是極大的安全隱患。針對這個問題,建議使用安全性較高的HTTPS協議使用EM。具體可參考如下幾步操作:
[liuxg@localhost liuxg]$ su - oracle
[oracle@localhost oracle]$ emctl stop dbconsole
[oracle@localhost oracle]$ secure dbconsole
[oracle@localhost oracle]$ emctl start dbconsole
其中和為10g中sysman用戶的密碼。需要說明的是,在這之后,用Microsoft Internet Explorer和Red Flag Linux DC 4.1自帶的Mozilla可以正常通過HTTPS協議訪問EM,但是使用Firefox則會出現invalid certificate的提示,無法正常訪問,需要進一步試驗來解決。
對于EM的中文界面出現亂碼的情況,解決方法請參考這個網址:
http://www.dbanotes.net/Oracle/Oracle-10g-font.properties.htm。由于EM的中文界面有很多翻譯不夠準確的地方,因此最好是設置瀏覽器的默認語言為英文,使用英文操作界面。
另外,如果使用DBCA新建立了一個庫并配置了EM,那么訪問該庫的EM的時候端口不再是5500,而是5501。如果再新建立另外的多個庫,則端口號依次增加1,iSQL*PLUS等具有相同的規律。