2009年3月3日 星期二

PHP Connect Oracle DB

請先參考Oracle 的相關設定,確定安裝PHP 的主機可以連接Oracle DB的(或許應該要先安裝Oracle Client)

首先,需將PHP.INI檔作些修改,找到
;extension = php_oci8.dll
;extension = php_oracle.dll

將前端的";"號去除,並將PHP重新啟動

利用phpinfo(); 指令確定是否有看到頁面中有oci8 及oracle 的字眼存在
可建一檔案,檔名為index.php

If PHP is working, you will see "Hello World" below:


echo "Hello world";
phpinfo(); // Print PHP version and config info
?>



PHP 連接 Oracle db

連接DB的方法有兩種
Using the OCI Extension Module -

if ($c=OCILogon("user_name", "password", "DB_Name")) {
echo "Successfully connected to Oracle.n";
OCILogoff($c);
} else {
$err = OCIError();
echo "Oracle Connect Error " . $err[text];
}
?>

Using the ORA Extension Module -

if ($c=ora_logon("user_name@DB_name","password")) {
echo "Successfully connected to Oracle.n";
ora_commitoff($c);
ora_logoff($c);
} else {
echo "Oracle Connect Error " . ora_error();
}
?>

以上的語法可以放在剛剛建立的index.php下


If PHP is working, you will see "Hello World" below:


echo "Hello world";
phpinfo(); // Print PHP version and config info
?>

Using the OCI Extension Module -

if ($c=OCILogon("user_name", "password", "DB_Name")) {
echo "Successfully connected to Oracle.n";
OCILogoff($c);
} else {
$err = OCIError();
echo "Oracle Connect Error " . $err[text];
}
?>

Using the ORA Extension Module -

if ($c=ora_logon("user_name@DB_name","password")) {
echo "Successfully connected to Oracle.n";
ora_commitoff($c);
ora_logoff($c);
} else {
echo "Oracle Connect Error " . ora_error();
}
?>



如果成功,應該要能看見Successfully connected to xxx 或

Oracle 10G Client Setup

請先安裝oracle 10G Client 軟體
軟體可由官方網頁下載
或是安裝 XEClient
可安裝於C:\XEClient 或其它地方,重點是您找的到為原則

安裝後需手動建立這目錄 於C:\XEClient\NETWORK\ADMIN
其目錄下手動建立一檔案,檔名為tnsnames.ora
其內容如下

NK_IVDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.82)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ivdb)
)
)
內容說明如下
NK_IVDB:在這一部電腦上,如果AP 或 Web 要存取這192.168.0.82 的oracle DB,要透過 NK_IVDB 這名字,這名字可以自行訂義,好記為原則.
HOST:就是 Oracle DB的IP
PORT:就是 Oracle DB連接的端口
SERVICE_NAME:就是Oracle DB 內的名稱,如果一DB內有多個DB的話,就會是用這名稱來區分

Oracle audit

11月28日
oracle audit的使用
大多数情况下,在产品环境中使用audit的dba应该很少吧,如果启用了audit,那么必须小心谨慎的使用,尤其是audit system和audit any权限的控制.我一般情况下在测试和开发环境中都会使用audit.逼近调试跟踪还是很方便.但是需要注意的是audit的enable和disable必须restart database.所以作为产品环境,是否使用audit必须初期就要计划好。在每一次的审计结束后,必须执行noaudit关闭本次审计,要不然会对后期的数据库活动也执行相同的审计.

10G支持的audit_trail参数的值
DB: 审计结果存储与sys.aud$表中,可通过dba_audit_trail 访问这个表的数据
XML:审计结果以xml格式存储在audit_file_dest参数对应的目录里
OS:审计结果存储在audit_file_dest参数对应的目录里,文件格式类似于oracle trace文件格式
EXTENDED:和DB或者XML配合使用,用于扩展获取被审计对象执行的sql语句,不对OS审计起作用
NONE:关闭审计
启用audit
alter system set audit_file_dest='/u01/app/oracle/admin/SCMDEV/adump' scope=spfile;
alter system set audit_trail=DB,EXTENDED scope=spfile;
shutdown immediate
startup
使用audit
audit session; //审计登录数据库所有session的操作
audit select table on hr.users //审计hr.users表的所有查询
audit role whenever successful //审计所有执行成功的操作
audit role whenever not successful //审计所有执行失败的操作
........
查询审计结果
查询dba_audit_trail视图
SQL> desc dba_audit_trail
Name Null? Type
----------------------------------------- -------- ----------------------------
OS_USERNAME VARCHAR2(255)
USERNAME VARCHAR2(30)
USERHOST VARCHAR2(128)
TERMINAL VARCHAR2(255)
TIMESTAMP DATE
OWNER VARCHAR2(30)
OBJ_NAME VARCHAR2(128)
ACTION NOT NULL NUMBER
ACTION_NAME VARCHAR2(28)
NEW_OWNER VARCHAR2(30)
NEW_NAME VARCHAR2(128)
OBJ_PRIVILEGE VARCHAR2(16)
SYS_PRIVILEGE VARCHAR2(40)
ADMIN_OPTION VARCHAR2(4)
GRANTEE VARCHAR2(30)
AUDIT_OPTION VARCHAR2(40)
SES_ACTIONS VARCHAR2(19)
LOGOFF_TIME DATE
LOGOFF_LREAD NUMBER
LOGOFF_PREAD NUMBER
LOGOFF_LWRITE NUMBER
LOGOFF_DLOCK VARCHAR2(40)
COMMENT_TEXT VARCHAR2(4000)
SESSIONID NOT NULL NUMBER
ENTRYID NOT NULL NUMBER
STATEMENTID NOT NULL NUMBER
RETURNCODE NOT NULL NUMBER
PRIV_USED VARCHAR2(40)
CLIENT_ID VARCHAR2(64)
ECONTEXT_ID VARCHAR2(64)
SESSION_CPU NUMBER
EXTENDED_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE
PROXY_SESSIONID NUMBER
GLOBAL_UID VARCHAR2(32)
INSTANCE_NUMBER NUMBER
OS_PROCESS VARCHAR2(16)
TRANSACTIONID RAW(8)
SCN NUMBER
SQL_BIND NVARCHAR2(2000)
SQL_TEXT NVARCHAR2(2000)
关闭审计,切记一定要关闭审计
noaudit all;
noaudit session;
noaudit select table on hr.users

Oracle9i SQL Reference Release 2 (9.2)
Oracle® Database Security Guide 10g Release 2 (10.2)
文章載自http://shadowfalao.spaces.live.com/blog/cns!80DF4F7FDCD57166!369.entry