1、不安裝Oracle客戶連接Oracle 8的方法
請將以下文件拷貝到運行文件所在目錄
一、ODBC動態庫 :
ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll
二、建立EXTRA子目錄,將MSVCRT.DLL文件拷貝到該子目錄下
EXTRA\MSVCRT.DLL
三、ORACLE動態庫及配置文件
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動態庫
pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll
Oracle的客戶端不安裝讓pb連上,我記得以前有帖子的,你可以搜索一下。
具體步驟。
(1).先在某機器上安裝好客戶端(最好安裝在c盤);
(2).復制此客戶端oracle目錄下的所有文件作為獨立的oracle安裝文件;
(3).搜索注冊表,找到 HKey_Local_machine\software\oracle,把此項目及分支全部導出。
(4).打包好你的pb程序,并獨立打包好oracle客戶端和注冊表導出文件。
(5).到干凈的客戶端,解開兩個包,導入注冊表文件,然后加入路徑支持:
path=%path%;"c:\Ora817\bin"
這樣處理,應該沒有問題,因為我就是這樣快速處理了幾十個機器。
若不想搞注冊表,你可以在程序中自己寫注冊表,構成Oracle客戶端必要的注冊表支持,至于路徑,手工添加應該不難。
至于Oracle客戶端那些文件不需要,這個不好說,你可以把那些bin目錄下的所有exe刪除,Oracle Document刪除(7x兆)
至于定義Oracle服務,找到 Ora817\net80\admin\TnsName.ora,參照格式,程序中生成一個也不麻煩。
=======================================================
2、在ORACLE中返回游標結果集
你需要寫到一個包中:
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;
函數代碼:
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機器安裝ORACLE
(1)、將ORACLE安裝軟件拷貝到硬盤。
(2)、將 硬盤目錄文件\stage\Components\oracle.swd.jre\1.1.7.30/1
\DataFiles\Expanded\jre\win32\bin\symcjit.dll的文件改名為symcjit.old
(3).再運行SETUP.exe 文件進行安裝。
-----------------------------------------------------------------------
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、全數據庫的導入與導出
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參數:
關鍵字 說明(默認)
----------------------------------------------
USERID 用戶名/口令
FULL 導出整個文件 (N)
BUFFER 數據緩沖區的大小
OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 導入一個范圍 (Y)
RECORDLENGTH IO 記錄的長度
GRANTS 導出權限 (Y)
INCTYPE 增量導出類型
INDEXES 導出索引 (Y)
RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行 (Y)
PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
imp參數:
關鍵字 說明(默認)
----------------------------------------------
USERID 用戶名/口令
FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小
FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP)
TOUSER 用戶名列表
SHOW 只列出文件內容 (N)
TABLES 表名列表
IGNORE 忽略創建錯誤 (N)
RECORDLENGTH IO 記錄的長度
GRANTS 導入權限 (Y)
INCTYPE 增量導入類型
INDEXES 導入索引 (Y)
COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y)
PARFILE 參數文件名
LOG 屏幕輸出的日志文件
CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
ANALYZE 執行轉儲文件中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
(2)
一、建立一個expdata.sql文件
USERID=RMTAFIS/3 這里寫你的用戶名和密碼
BUFFER=32768
OWNER=RMTAFIS 這里寫導出的用戶
FILE=E:\Exp\RMTAFIS.DMP 導出的文件,可以是相對路徑
ROWs=Y
GRANTS=Y
COMPRESS=Y
CONSISTENT=Y
二、建立一個expdata.bat
exp parfile=expdata.sql
如果是805
exp80 parfile=expdata.sql
雙擊expdata.bat就導出數據了
7、如果在like的變量中,是以‘%’開頭的話,是不會使用index的。反之,不是以‘%‘開頭,而又有相應的index,是會使用index的。具體可以用plain plan來看一下。
8、復制空表結構
create table new_table
as select * from old_table where 1=2;
復制表(含記錄)
create table new_table
as select * from old_table ;
9、把一個用戶下的表導入到另一個用戶下,但需要改名
先用exp導出所有的表;
用imp將導出的表導入到新用戶;
在新用戶下,執行
select 'RENAME TABLE '||tname||' TO NEW_'||tname||';'
from tab
where tabtype='TABLE';
將上面的查詢結果保存到一個sql文件中,處理后執行就可以了。
10、審計步驟
修改參數文件init.ora,參數audit_trail值為true;
重新啟動數據庫;
打開審計audit session; (audit session by username)
執行登錄操作;
察看審計結果:
select * from dba_audit_session;
select * from sys.aud$;
select * from dba_audit_trail;
select * from dba_audit_exists;
關于審計:
為了使oracle8i的審計功能可用,必須在數據庫參數文件中修改audit_trail初始參數,而這個修改并不支配oracle8i把生成的審計記錄記入審計痕跡中,
由于狀態,特權和模式對象已被修改,因而審計的默認值不可用,其參數應設置為none.下面列出了audit_trail 可用的參數
db_使數據庫審計和全部直屬審計記錄到數據庫審計的痕跡中
os_是數據庫審計依據直屬審計記入到操作系統的審計很集中
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' ) );