1、不安裝Oracle客戶連接Oracle 8的方法
請將以下文件拷貝到運(yùn)行文件所在目錄
一、ODBC動態(tài)庫 :
ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll
二、建立EXTRA子目錄,將MSVCRT.DLL文件拷貝到該子目錄下
EXTRA\MSVCRT.DLL
三、ORACLE動態(tài)庫及配置文件
Tnsnames.ora CORE35O.DLL NASNSNT.DLL NAUNTSNT.DLL NCRNT.DLL Nlnt.dll NLSRTL32.DLL Nnfdnt.dll NNFNNT.DLL NSNT.DLL NTNT.DLL NTTNT.DLL CIW32.DLL Ora73.dll OTRACE73.DLL Sqlnet.ora Sqltnsnt.dll CORE35.DLL
四、PB動態(tài)庫
pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll
Oracle的客戶端不安裝讓pb連上,我記得以前有帖子的,你可以搜索一下。
具體步驟。
(1).先在某機(jī)器上安裝好客戶端(最好安裝在c盤);
(2).復(fù)制此客戶端oracle目錄下的所有文件作為獨(dú)立的oracle安裝文件;
(3).搜索注冊表,找到 HKey_Local_machine\software\oracle,把此項目及分支全部導(dǎo)出。
(4).打包好你的pb程序,并獨(dú)立打包好oracle客戶端和注冊表導(dǎo)出文件。
(5).到干凈的客戶端,解開兩個包,導(dǎo)入注冊表文件,然后加入路徑支持:
path=%path%;"c:\Ora817\bin"
這樣處理,應(yīng)該沒有問題,因為我就是這樣快速處理了幾十個機(jī)器。
若不想搞注冊表,你可以在程序中自己寫注冊表,構(gòu)成Oracle客戶端必要的注冊表支持,至于路徑,手工添加應(yīng)該不難。
至于Oracle客戶端那些文件不需要,這個不好說,你可以把那些bin目錄下的所有exe刪除,Oracle Document刪除(7x兆)
至于定義Oracle服務(wù),找到 Ora817\net80\admin\TnsName.ora,參照格式,程序中生成一個也不麻煩。
=======================================================
2、在ORACLE中返回游標(biāo)結(jié)果集
你需要寫到一個包中:
create or replace package pag_cs_power as
type c_Type is ref cursor;
FUNCTION FUN_CS_GETDICTLIST(
v_DictIndex in varchar2) return c_Type;
end pag_cs_power;
函數(shù)代碼:
FUNCTION FUN_CS_GETDICTLIST(
v_DictIndex in varchar2) return c_Type
as
c_cursor c_Type;
begin
open c_cursor for
select DICTID,DICTNAME FROM SYS_DICT WHERE DICTINDEX = v_DictIndex;
return c_cursor;
end FUN_CS_GETDICTLIST;
----------------------------------------------------------------------
3、P4機(jī)器安裝ORACLE
(1)、將ORACLE安裝軟件拷貝到硬盤。
(2)、將 硬盤目錄文件\stage\Components\oracle.swd.jre\1.1.7.30/1
\DataFiles\Expanded\jre\win32\bin\symcjit.dll的文件改名為symcjit.old
(3).再運(yùn)行SETUP.exe 文件進(jìn)行安裝。
-----------------------------------------------------------------------
4、單引號的插入問題
SQL> insert into a values('i''m good'); --兩個''可以表示一個'
SQL> insert into a values('i'||chr(39)||'m good'); --chr(39)代表字符'
SQL> insert into a values('a'||'&'||'b');
-----------------------------------------------------------------------
5、全數(shù)據(jù)庫的導(dǎo)入與導(dǎo)出
exp username/password full=y file=yourdata.dmp grants=y rows=y
imp username/password full=y ignore=y file=yourdata.dmp grants=y
6、exp與imp的具體用法
exp username/password@mzbs_61 full=y file=yourdata.dmp grants=y rows=y
imp username/password full=y ignore=y file=yourdata.dmp grants=y
exp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y rows = y
imp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y ignore=y FULL=Y
(1)
exp參數(shù):
關(guān)鍵字 說明(默認(rèn))
----------------------------------------------
USERID 用戶名/口令
FULL 導(dǎo)出整個文件 (N)
BUFFER 數(shù)據(jù)緩沖區(qū)的大小
OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 導(dǎo)入一個范圍 (Y)
RECORDLENGTH IO 記錄的長度
GRANTS 導(dǎo)出權(quán)限 (Y)
INCTYPE 增量導(dǎo)出類型
INDEXES 導(dǎo)出索引 (Y)
RECORD 跟蹤增量導(dǎo)出 (Y)
ROWS 導(dǎo)出數(shù)據(jù)行 (Y)
PARFILE 參數(shù)文件名
CONSTRAINTS 導(dǎo)出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導(dǎo)出觸發(fā)器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進(jìn)度
FILESIZE 各轉(zhuǎn)儲文件的最大尺寸
QUERY 選定導(dǎo)出表子集的子句
imp參數(shù):
關(guān)鍵字 說明(默認(rèn))
----------------------------------------------
USERID 用戶名/口令
FULL 導(dǎo)入整個文件 (N)
BUFFER 數(shù)據(jù)緩沖區(qū)大小
FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP)
TOUSER 用戶名列表
SHOW 只列出文件內(nèi)容 (N)
TABLES 表名列表
IGNORE 忽略創(chuàng)建錯誤 (N)
RECORDLENGTH IO 記錄的長度
GRANTS 導(dǎo)入權(quán)限 (Y)
INCTYPE 增量導(dǎo)入類型
INDEXES 導(dǎo)入索引 (Y)
COMMIT 提交數(shù)組插入 (N)
ROWS 導(dǎo)入數(shù)據(jù)行 (Y)
PARFILE 參數(shù)文件名
LOG 屏幕輸出的日志文件
CONSTRAINTS 導(dǎo)入限制 (Y)
DESTROY 覆蓋表空間數(shù)據(jù)文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護(hù) (N)
ANALYZE 執(zhí)行轉(zhuǎn)儲文件中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進(jìn)度
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉(zhuǎn)儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統(tǒng)計值 (N)
(2)
一、建立一個expdata.sql文件
USERID=RMTAFIS/3 這里寫你的用戶名和密碼
BUFFER=32768
OWNER=RMTAFIS 這里寫導(dǎo)出的用戶
FILE=E:\Exp\RMTAFIS.DMP 導(dǎo)出的文件,可以是相對路徑
ROWs=Y
GRANTS=Y
COMPRESS=Y
CONSISTENT=Y
二、建立一個expdata.bat
exp parfile=expdata.sql
如果是805
exp80 parfile=expdata.sql
雙擊expdata.bat就導(dǎo)出數(shù)據(jù)了
7、如果在like的變量中,是以‘%’開頭的話,是不會使用index的。反之,不是以‘%‘開頭,而又有相應(yīng)的index,是會使用index的。具體可以用plain plan來看一下。
8、復(fù)制空表結(jié)構(gòu)
create table new_table
as select * from old_table where 1=2;
復(fù)制表(含記錄)
create table new_table
as select * from old_table ;
9、把一個用戶下的表導(dǎo)入到另一個用戶下,但需要改名
先用exp導(dǎo)出所有的表;
用imp將導(dǎo)出的表導(dǎo)入到新用戶;
在新用戶下,執(zhí)行
select 'RENAME TABLE '||tname||' TO NEW_'||tname||';'
from tab
where tabtype='TABLE';
將上面的查詢結(jié)果保存到一個sql文件中,處理后執(zhí)行就可以了。
10、審計步驟
修改參數(shù)文件init.ora,參數(shù)audit_trail值為true;
重新啟動數(shù)據(jù)庫;
打開審計audit session; (audit session by username)
執(zhí)行登錄操作;
察看審計結(jié)果:
select * from dba_audit_session;
select * from sys.aud$;
select * from dba_audit_trail;
select * from dba_audit_exists;
關(guān)于審計:
為了使oracle8i的審計功能可用,必須在數(shù)據(jù)庫參數(shù)文件中修改audit_trail初始參數(shù),而這個修改并不支配oracle8i把生成的審計記錄記入審計痕跡中,
由于狀態(tài),特權(quán)和模式對象已被修改,因而審計的默認(rèn)值不可用,其參數(shù)應(yīng)設(shè)置為none.下面列出了audit_trail 可用的參數(shù)
db_使數(shù)據(jù)庫審計和全部直屬審計記錄到數(shù)據(jù)庫審計的痕跡中
os_是數(shù)據(jù)庫審計依據(jù)直屬審計記入到操作系統(tǒng)的審計很集中
none_不可用
11、BFILE的用法
(1)、create or replace directory
BFILE_TEST
as
'/oracle/oradata/bfiles';
(2)、grant read on directory BFILE_TEST to SCOTT;
(3)、host ls -l /oracle/oradata/bfiles/1.TXT
(4)、connect SCOTT/TIGER
create table BFILES (ID number, TEXT bfile );
(5)、insert into BFILES values ( 1,
bfilename ( 'BFILE_TEST', '1.TXT' ) );