首先了解什么是外部表,與其它表的區(qū)別,建立一個簡單的外部表(主要看操作過程),最后我們用外部表查看ORACLE報警日志
成都創(chuàng)新互聯(lián)公司主營含山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),含山h5成都微信小程序搭建,含山網(wǎng)站營銷推廣歡迎含山等地區(qū)企業(yè)咨詢
1.了解oracle外部表
外部表定義:結(jié)構(gòu)被存放在數(shù)據(jù)字典,而表數(shù)據(jù)被放在OS文件中的表
作用:在數(shù)據(jù)庫中查詢OS文件的數(shù)據(jù),還可以將OS文件數(shù)據(jù)裝載到數(shù)據(jù)庫中
與其它表的區(qū)別:在外部表上不能執(zhí)行DML操作,也不能在外部表上建索引,只能執(zhí)行select操用
2.建一個簡單的外部表1.建一個OS上的文件
因為外部表主要是查看OS上的文件,首先在OS上建一個文件
mkdir -p /oracle/ext
vi /oracle/ext/ext.dat
10,20,30
40,50,60
70,80,90
2.授予用戶權(quán)限,并建立目錄對象
在此我們先建一個新用戶
create user test identified by “123” default tablespace test quota unlimited on test;
用戶授權(quán)
SQL grant create any directory to test;
建立目錄對象
SQL conn test / 123
Connected.
SQL create directory ext as '/oracle/ext';
Directory created.
3.建立外部表
SQL create table exttable(
id number,name varchar2(10),i number
)organization external
(type oracle_loader
default directory ext
access parameters
(records delimited by newline
fields terminated by ','
)location('ext.dat')
);
4.測試
SQL select * from exttable;
ID NAMEI
---------- ---------- ----------
10 20 30
40 50 60
70 80 90
測試成功,可見在數(shù)據(jù)庫中可以查詢OS文件的數(shù)據(jù)
2. 使用外部表查看oracle報警日志
由于在上面實驗中已建立了一個用戶,并賦相應(yīng)的權(quán)限,而且也有了OS文件(即報警文件alert_SID.log),所以在此直接建立目錄對象并建立外部表就可以了。
1.建立目錄對象
SQL conn test / 123
Connected.
SQL create directory bdump as '/oracle/u01/app/oracle/admin/db2/bdump';
Directory created.
2.建立外部表
SQL create table alert_log(
text varchar2(400)
)organization external
(type oracle_loader
default directory bdump
access parameters
(records delimited by newline
)location('alert_db2.log')
);
3.測試
首先查看能否查到alert_db2.log的內(nèi)容
SQL select * from alert_log where rownum 10;
TEXT
--------------------------------------------------------------------------------
Thu Jun 11 00:51:46 2009
Starting ORACLE instance (normal)
Cannot determine all dependent dynamic libraries for /proc/self/exe
Unable to find dynamic library libocr10.so in search paths
RPATH = /ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/a
de/aime1_build2101/oracle/has/lib/:
LD_LIBRARY_PATH is not set!
The default library directories are /lib and /usr/lib
Unable to find dynamic library libocrb10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
9 rows selected.
測試成功
然后我們測試查報警信息’ORA-%’
SQL select * from alert_log where text like 'ORA-%';
TEXT
--------------------------------------------------------------------------------
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27037: unable to obtain file status
ORA-205 signalled during: ALTER DATABASE MOUNT…
ORA-00301: error in adding log file '/home/oracle/oracle/oradata/testdb/redo01.l
og' - file cannot be created
ORA-27040: file create error
ORA-1501 signalled during: CREATE DATABASE db2
ORA-00200: control file could not be created
TEXT
--------------------------------------------------------------------------------
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27038: created file already exists
ORA-1501 signalled during: CREATE DATABASE db2
ORA-00200: control file could not be created
ORA-00202: control file: '/oracle/u01/app/oracle/product/10.2.0/db2/dbs/cntrldb2
.dbf'
ORA-27038: created file already exists
ORA-1501 signalled during: CREATE DATABASE db2
測試成功,
可見我們可以使用外部表來方便的查看ORACLE的報警信息
要獲得邏輯驅(qū)動器或存儲卷的性能計數(shù)器數(shù)據(jù),必須在命令提示符下鍵入diskperf –yv。
默認情況下,操作系統(tǒng)使用diskperf –yd命令包含物理驅(qū)動器數(shù)據(jù)。
使用命令diskperf的詳細信息,請在命令提示符下鍵入diskperf -?。
在oracle的安裝目錄下,找NETWORK\ADMIN目錄,比如C:\app\xxxx\product\11.2.0\dbhome_1\NETWORK\ADMIN
在這個目錄下找tnsnames.ora,用一般的文本編輯程序都可以打開
或者直接在電腦中用搜索功能,搜索文件tnsnames.ora
oracle錯誤:ORA-00920: 無效的關(guān)系運算符是運算符使用錯誤造成的,解決方法為:
1、雙擊plsql developer軟件,進行連接數(shù)據(jù)庫。
2、在命令窗口中先進行簡單查詢,并不進行限定查詢,如下圖。
3、限定查詢其實就是where子句,邏輯運算符就是and or not,在查詢的時候?qū)敵鼋Y(jié)果進行定制查詢,因為當表的數(shù)據(jù)量非常大的時候,直接使用簡單查詢有效率會非常的低,特別在是查詢大表數(shù)據(jù)的時候,如下圖查看sh用戶下其中一張表的數(shù)據(jù)。
4、因為數(shù)據(jù)量非常的大所以在查詢的時候非常有必要進行限定查詢,在限定查詢的時候條件盡量要精確,如下圖因為條件不太精確導(dǎo)致查詢的時候也非常的長。
5、同時在進行限定查詢的時候可以使用and or not等運算符,如下圖可以看到在使用了邏輯運算符之后查詢數(shù)據(jù)更加精確,效率也更高效,在使用and的時候要求兩邊的條件都必須滿足才可以。
6、在使用邏輯運算符or的時候,只要兩邊的條件有一個滿足就可以進行相應(yīng)的查詢,如下圖。