由sqlplus中的一個小細節所做的折騰
sqlplus是Oracle DBA每天都要用到爛的工具了。如果沒有sqlplus還真不知道怎麼和oracle對話了。轉念一想,自己已經很久沒使用過toad了。
我們知道在sqlplus登入的時候我們可以定義一些通用的設定,在每次登入sqlplus的時候都可以生效。
$ORACLE_HOME/sqlplus/admin/gloin.sql的內容是下面的形式,
--
-- Copyright (c) 1988, 2005, Oracle. All Rights Reserved.
--
-- NAME
-- glogin.sql
--
在10g和11g中,其實還是有明顯的差別的,10g中glogin.sql已經自定義了一堆的設定。但是在11g中缺是空空如也,除了簡單的幾個註釋外,再沒有內容了,不過話說過來,在11g中這些設定已經作為預設設定,不需要再自定義了。
[oracle@oel1 admin]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on Sun Apr 19 21:14:45 2015
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
我們知道在sqlplus登入的時候我們可以定義一些通用的設定,在每次登入sqlplus的時候都可以生效。
$ORACLE_HOME/sqlplus/admin/gloin.sql的內容是下面的形式,
--
-- Copyright (c) 1988, 2005, Oracle. All Rights Reserved.
--
-- NAME
-- glogin.sql
--
在10g和11g中,其實還是有明顯的差別的,10g中glogin.sql已經自定義了一堆的設定。但是在11g中缺是空空如也,除了簡單的幾個註釋外,再沒有內容了,不過話說過來,在11g中這些設定已經作為預設設定,不需要再自定義了。
[oracle@oel1 admin]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on Sun Apr 19 21:14:45 2015
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
一般大家對於glogin的額外設定是:
set feedback on
define _editor=vi
set serveroutput on size 1000000
set trimspool on
set long 5000
set linesize 300
set pagesize 9999
column plan_plus_exp format a80
column global_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || '@' || substr(global_name, 1, decode( dot, 0, length(global_name),
dot-1) ) global_name
from (select global_name,instr(global_name,'.') dot from global_name );
set sqlprompt '&gname> '
set termout on
簡單實用一把,還是很不錯的。
[ora11g@oel1 admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:18:55 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
idle> exit
[ora11g@oel1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:19:07 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@TEST11G>
這個時候我注意到一個細節,很細小的地方,可能是自己敏感了。glogin.sql的時間戳和使用sqlplus的時間戳還是差別很大的。sqlplus中是1982,2009
--
-- Copyright (c) 1988, 2005, Oracle. All Rights Reserved.
--
-- NAME
-- glogin.sql
我們來看看是怎麼回事。簡單string一把sqllplus看看裡面大概都有些啥。首先如果是我來寫這個部分,肯定不會在程式碼層寫死,肯定是透過配置來做。
如果單純看下面的相關內容,感覺關聯的就是libsqlplus.so了。
[ora11g@oel1 bin]$ strings sqlplus
/lib/ld-linux.so.2
libsqlplus.so
saficxa
afidrv
_Jv_RegisterClasses
__gmon_start__
libclntsh.so.11.1
__intel_new_proc_init
_fini
libnnz11.so
libdl.so.2
libm.so.6
libpthread.so.0
libnsl.so.1
libc.so.6
__libc_start_main
_edata
__bss_start
_end
/u01/app/ora11g/product/11.2.0/dbhome_1/lib
GLIBC_2.0
PTRh`
PPPPPj
[^_]
這個檔案在$ORACLE_HOME/lib下面,我們來簡單看看。
對於這種二進位制檔案,有時候檢視還是有不少的收穫的。
使用vi來檢視,找到下面的一段。
^@FMDy Mon dd FMhh24:mi:ss YYYY^@^@^@ on ^@^@^@^@%d.%d.%d.%d.%d^@^@: Release ^@^@2009^@^@^@^@%d.%d.%d^@^@^@^@Production^@^@Copyright (c) 1982, %s, Oracle. All rights reserved.^@^@^@sqlerror^@^@^@^@continue^@^@^@^@oserror^@WHENEVER OSERROR %s
可以看到1982出現了,2009是透過紅色的部分傳入的引數。
我們甚至可以為了測試一下,可以簡單修改一下這些內容。比如我們修改為1983年吧。
[ora11g@oel1 lib]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:36:51 2015
Copyright (c) 1983, 2009, Oracle. All rights reserved.
idle> exit
當然只是為了測試一下而已,不要為了個性而做改動,如果修改不當,很可能會得到如下的錯誤。
[ora11g@oel1 lib]$ sqlplus /nolog
Segmentation fault
這個時候我們再加把勁,我們知道desc是sqlplus中特有的命令。我們看看是怎麼描述的。
^@DEFINE %-15s = %s (NUMBER)
^@DEFINE %-15s = %s (DATE)
^@^@^@DEFINE %-15s = %s (BUFFER)
^@DEFINE %-15s = %s (BINARY_DOUBLE)
^@^@DEFINE %-15s = %s (BINARY_FLOAT)
^@^@^@DESCRIBE^@^@^@^@8.0^@%s(%d)^@^@BYTE^@^@^@^@%s(%d %s)^@^@^@Argument Name^@^@^@Type^@^@^@^@In/Out^@^@Default?^@^@^@^@ RETURNS ^@^@^@ENCRYPT^@NOT NULL^@^@^@^@ %s %8s %s
^@%-*s^@^@^@^@ %%-%2ds %%-%1ds %%s%1s^@ FINAL^@^@%s MEMBER PROCEDURE %s
可以看到輸入輸出引數的情況和使用desc命令是一致的。
sys@TEST11G> desc cat
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
TABLE_NAME NOT NULL VARCHAR2(30)
TABLE_TYPE VARCHAR2(11)
set feedback on
define _editor=vi
set serveroutput on size 1000000
set trimspool on
set long 5000
set linesize 300
set pagesize 9999
column plan_plus_exp format a80
column global_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || '@' || substr(global_name, 1, decode( dot, 0, length(global_name),
dot-1) ) global_name
from (select global_name,instr(global_name,'.') dot from global_name );
set sqlprompt '&gname> '
set termout on
簡單實用一把,還是很不錯的。
[ora11g@oel1 admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:18:55 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
idle> exit
[ora11g@oel1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:19:07 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@TEST11G>
這個時候我注意到一個細節,很細小的地方,可能是自己敏感了。glogin.sql的時間戳和使用sqlplus的時間戳還是差別很大的。sqlplus中是1982,2009
--
-- Copyright (c) 1988, 2005, Oracle. All Rights Reserved.
--
-- NAME
-- glogin.sql
我們來看看是怎麼回事。簡單string一把sqllplus看看裡面大概都有些啥。首先如果是我來寫這個部分,肯定不會在程式碼層寫死,肯定是透過配置來做。
如果單純看下面的相關內容,感覺關聯的就是libsqlplus.so了。
[ora11g@oel1 bin]$ strings sqlplus
/lib/ld-linux.so.2
libsqlplus.so
saficxa
afidrv
_Jv_RegisterClasses
__gmon_start__
libclntsh.so.11.1
__intel_new_proc_init
_fini
libnnz11.so
libdl.so.2
libm.so.6
libpthread.so.0
libnsl.so.1
libc.so.6
__libc_start_main
_edata
__bss_start
_end
/u01/app/ora11g/product/11.2.0/dbhome_1/lib
GLIBC_2.0
PTRh`
PPPPPj
[^_]
這個檔案在$ORACLE_HOME/lib下面,我們來簡單看看。
對於這種二進位制檔案,有時候檢視還是有不少的收穫的。
使用vi來檢視,找到下面的一段。
^@FMDy Mon dd FMhh24:mi:ss YYYY^@^@^@ on ^@^@^@^@%d.%d.%d.%d.%d^@^@: Release ^@^@2009^@^@^@^@%d.%d.%d^@^@^@^@Production^@^@Copyright (c) 1982, %s, Oracle. All rights reserved.^@^@^@sqlerror^@^@^@^@continue^@^@^@^@oserror^@WHENEVER OSERROR %s
可以看到1982出現了,2009是透過紅色的部分傳入的引數。
我們甚至可以為了測試一下,可以簡單修改一下這些內容。比如我們修改為1983年吧。
[ora11g@oel1 lib]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 19 21:36:51 2015
Copyright (c) 1983, 2009, Oracle. All rights reserved.
idle> exit
當然只是為了測試一下而已,不要為了個性而做改動,如果修改不當,很可能會得到如下的錯誤。
[ora11g@oel1 lib]$ sqlplus /nolog
Segmentation fault
這個時候我們再加把勁,我們知道desc是sqlplus中特有的命令。我們看看是怎麼描述的。
^@DEFINE %-15s = %s (NUMBER)
^@DEFINE %-15s = %s (DATE)
^@^@^@DEFINE %-15s = %s (BUFFER)
^@DEFINE %-15s = %s (BINARY_DOUBLE)
^@^@DEFINE %-15s = %s (BINARY_FLOAT)
^@^@^@DESCRIBE^@^@^@^@8.0^@%s(%d)^@^@BYTE^@^@^@^@%s(%d %s)^@^@^@Argument Name^@^@^@Type^@^@^@^@In/Out^@^@Default?^@^@^@^@ RETURNS ^@^@^@ENCRYPT^@NOT NULL^@^@^@^@ %s %8s %s
^@%-*s^@^@^@^@ %%-%2ds %%-%1ds %%s%1s^@ FINAL^@^@%s MEMBER PROCEDURE %s
可以看到輸入輸出引數的情況和使用desc命令是一致的。
sys@TEST11G> desc cat
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
TABLE_NAME NOT NULL VARCHAR2(30)
TABLE_TYPE VARCHAR2(11)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1586264/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 折騰ChatGLM的幾個避坑小技巧
- 一個小的技術細節
- 每一個企業的流程都是一種折騰
- 由一條日誌警告所做的調優分析
- 筆記——Android 中的小細節筆記Android
- dba工作一定要細心:由於不細心導致的一個小問題
- 有關placeholder在ie9中的一點折騰。IE9
- TCP 中的兩個細節點TCP
- Vue 折騰記 - (9) 寫一個挺靠譜的typeahead元件Vue元件
- Vue 折騰記 – (9) 寫一個挺靠譜的typeahead元件Vue元件
- Vue 折騰記 - (5) 寫一個不大靠譜的selectSearch元件Vue元件
- Vue 折騰記 – (5) 寫一個不大靠譜的selectSearch元件Vue元件
- Vue折騰記 - (3)寫一個不大靠譜的typeahead元件Vue元件
- Laravel 的一個命名細節分享Laravel
- 折騰oracle的em3Oracle
- 折騰oracle的em2Oracle
- 折騰oracle的em1Oracle
- 你需要注意的Java小細節(一)Java
- Flutter折騰記一(TextField的樣式之痛)Flutter
- 折騰一下WebSocket的ArrayBuffer傳輸方式Web
- Vue 折騰記 - (6) 寫一個不大靠譜的backToTop元件Vue元件
- Vue 折騰記 - (7) 寫一個挺不靠譜的Vue-Echarts元件VueEcharts元件
- Vue 折騰記 – (7) 寫一個挺不靠譜的Vue-Echarts元件VueEcharts元件
- Vue折騰記 - (2)寫一個不大靠譜的麵包屑元件Vue元件
- Vue 折騰記 - (4) 寫一個不大靠譜的 loading 元件Vue元件
- 小細節
- 【JOB】Oracle中JOB的建立方法以及一個細節的探究Oracle
- 提高javascript效能的小細節JavaScript
- oracle並行的小細節Oracle並行
- Linux折騰Linux
- 折騰日記
- waydroid折騰
- 由一個小庫存軟體想到的
- JS 一些優化效能的小細節JS優化
- Node 中如何引入一個模組及其細節
- 不要忽視Web程式設計中的小細節Web程式設計
- 生命在於折騰,寫一個前端資訊推送服務前端
- Vue折騰記 - (1)寫一個不大靠譜的二級側邊欄Vue