Oracle對於啟動引數檢查不嚴格
偶然發現Oracle對於pfile啟動引數的檢查並不嚴格。
比如修改引數檔案如下:
[oracle@yans1 ~]$ vi initprimary.ora
primary.__db_cache_size=1644167168
primary.__java_pool_size=16777216
primary.__large_pool_size=16777216
.
.
.
*.sga_target=2147483648
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1
*.undo_management='AUTO'
*.user_dump_dest='/opt/ora10g/admin/primary/udump'
注意,在undo_tablespace引數的值UNDOTBS1後面缺少了一個引號,如果利用這個PFILE來建立SPFILE,Oracle會檢查出錯誤:
SQL> create spfile from pfile='/home/oracle/initprimary.ora';
create spfile from pfile='/home/oracle/initprimary.ora'
*
ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00111: no closing quote for value 'AUTO'
'
但是如果嘗試利用這個初始化引數啟動到nomount或mount狀態,Oracle並不會對引數的正確性進行檢查:
SQL> startup mount pfile=initprimary.ora
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 2074112 bytes
Variable Size 486541824 bytes
Database Buffers 1644167168 bytes
Redo Buffers 14700544 bytes
Database mounted.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string AUTO'
可以看到,UNDO_TABLESPACE的值變成了AUOT’,而UNDO_MANAGEMENT的值則丟失,變成了系統的預設值。
這種情況資料庫還可以開啟:
SQL> alter database open;
Database altered.
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------------------------
/data/oradata/primary/system01.dbf
/data/oradata/primary/undotbs01.dbf
/data/oradata/primary/sysaux01.dbf
/data/oradata/primary/users01.dbf
/data/oradata/primary/test01.dbf
/data/oradata/primary/new01.dbf
/data/oradata/primary/new02.dbf
7 rows selected.
當然只要是非SYS使用者執行任何的需要回滾段的操作,都會導致錯誤:
SQL> conn test/test
Connected.
SQL> create table t_undo (id number) tablespace new;
create table t_undo (id number) tablespace new
*
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system tablespace 'NEW'
看來Oracle對於啟動引數的檢查還存在漏洞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-687650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MERGE語句語法檢查不嚴格
- 如何檢視docker run啟動引數命令Docker
- Oracle RAC一鍵部署002(引數檢查)Oracle
- 嚴格模式下對於this指向的影響模式
- 檢視JVM預設引數及微調JVM啟動引數JVM
- Oracle檢視引數Oracle
- Oracle 啟動例程 STARTUP引數說明Oracle
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- 嚴格模式下對變數宣告的影響模式變數
- thymeleaf模板實現html5標籤的非嚴格檢查HTML
- 檢視oracle隱藏引數Oracle
- oracle shutdown 引數對比Oracle
- Chrome 啟動引數列表Chrome
- eclipse 啟動引數Eclipse
- linux和aix核心引數檢查LinuxAI
- 開啟查詢慢查詢日誌引數
- 關於TAOCP中用集合論對演算法進行嚴格數學定義的理解演算法
- 檢視oracle啟動方式Oracle
- 利用RDA對Oracle做健康檢查Oracle
- 對ORACLE的SGA 進行檢查Oracle
- Oracle在啟動時會按以下的順序查詢引數檔案(WINDOWS平臺):OracleWindows
- 關於靜態引數和動態引數
- Oracle隱含引數的查詢Oracle
- MongoDB啟動引數介紹MongoDB
- linux核心啟動引數Linux
- chrome啟動引數設定Chrome
- Eclipse 的啟動引數Eclipse
- Oracle RAC 環境 引數檔案的啟動順序Oracle
- (轉)Oracle中的啟動引數檔案:spfile和pfileOracle
- oracle 關於--引數檔案Oracle
- 如何檢視oracle引數是靜態或者是動態Oracle
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- oracle 檢視隱含引數指令碼Oracle指令碼
- 檢視Oracle隱藏引數的SQLOracleSQL
- [zt] 如何檢視Oracle 隱含引數Oracle
- 關於查詢不用重啟或者關閉資料庫的引數資料庫
- 使用 XmlCommand 對Oracle傳引數XMLOracle
- Oracle動態、靜態引數引數修改規則Oracle