請先參考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 或
2009年3月3日 星期二
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的話,就會是用這名稱來區分
軟體可由官方網頁下載
或是安裝 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
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
2009年2月12日 星期四
檢查磁碟空間
df -Plk|grep -v "Used Avail" | sed 's/\%//g' |awk '{if (($5>90)&&($4 < 10000000)) print "APS16 Disk Space: "$6 }'
df :檢查磁碟空間
-P: 訊息將不斷行
-l :僅列出本地磁碟機
-k :空間大小表示單位為KB
-m:空間大小表示單位為MB
-h:空間大小表示單位自動換算成GB、MB、KB、Bytes,但會加上單位符號
grep :字串找尋工具
-v:排除
sed :字串修改器
欲修改之內容以單引號 " ' "包住
s:自串置換
語法:s/oldword/newword/
g:置換至文件最後一行
語法:s/oldword/newword/g
本例欲尋找之字串為%,恐被系統認為是系統特殊符號,因此加上"\"讓系統忽略其特殊符號之功能
awk :字串修改器
欲修改之內容以單引號及大括號 " '{}' "包住
if :可用以比對文字內容
欲比對之內容,以小括號"()"包住
$5:以"TAB"之空白為分割欄,由左至右依序編號,此例為df -Plk結果之第5欄
1 2 3 4 5 6
Filesystem 1024-blocks Used Available Capacity Mounted on
&&:表兩個比對式符合為真
||:表兩個比對式只要其中一個符合就為真
print :當前述結果為真,就秀出訊息,訊息以 雙引號包住 " " "
$6:也可以秀出剛剛欄位之訊息
2009年2月5日 星期四
Solaris 較良好的 shell :tcsh
sendmail 的執行Script 在 /etc/rc2.d/S88sendmai [start | stop]
測試發信情況
# /usr/lib/sendmail -bv antonio.hsu@xxx.com
回報的情況如下,是ok的
antonio.hsu@xxx.com... deliverable: mailer relay, host 10.10.2.10, user antonio.hsu@xxx.com
發出信件
# /usr/lib/sendmail antonio.hsu@xxx.com
Hello << 內容
. << 結束
Adding a Swap File on Solaris
This is straight out of the man pages, but I had a hard time finding it the first time that I needed it. If you have a Solaris system that badly needs more swap but you don't have a free swap device available, you can create a file in the file system and add it as additional swap.
-
Use
mkfileto create a file suitable for a local swap area. For example, to create a 1GB swap file:/usr/sbin/mkfile 1024m /swap
where
/swapis the name of the file to be used as swap space. Units for the size can be kilobytes (k), blocks (b), or megabytes (m). -
Tell the system to start using the file as swap:
/usr/sbin/swap -a /swap
Use
swap -lto verify that the swap file has been activated.文章摘自http://www.eyrie.org/~eagle/notes/solaris/swap-file.html
2009年1月7日 星期三
Oracle Command
建帳號及提供權限
CREATE USER dlink IDENTIFIED BY "rd10g"
DEFAULT TABLESPACE "USERS" 設定使用的TABLE空間為"USERS"
QUOTA UNLIMITED ON "USERS";
提供Dlink連接DB的權限
GRANT CONNECT TO dlink;
GRANT RESOURCE TO dlink;
提供dlink 擁有 glink.xxx Table 具有Select 的權限
grant select on glink.error_message to dlink;
查詢目前的連線數
select count(*) from v$session
show parameter max
1. 新增帳號: CREATE USER 使用者名稱 IDENTIFIED BY 密碼;
2. 權限設定: GRANT 權限 ON 資料庫物件 TO 使用者名稱;
GRANT 角色 TO 使用者名稱
3. 取消權限: REVOKE 權限 ON 資料庫物件 FROM 使用者名稱;
4. 新增角色: CREATE ROLE 角色名稱 [ NOT IDENTIFIED | IDENTIFIED { BY 密碼 | USING [ 鋼要 .] PACKAGE | EXTERNALLY | GLOBALLY } ] ;
5. 取消角色: DROP ROLE 角色名稱
6. 更改密碼: ALTER USER 使用者名稱 IDENTIFIED BY 密碼;
7. 強制變更密碼: ALTER USER 使用者名稱 PASSWORD EXPIRE;
8. 鎖住現有的使用者: ALTER USER 使用者名稱 ACCOUNT LOCK;
9. 解鎖現有的使用者: ALTER USER 使用者名稱 ACCOUNT UNLOCK;
10. 刪除現有的使用者: DROP USER 使用者名稱 cascade ;
訂閱:
文章 (Atom)