錯誤檔名稱下的Oracle選擇
建立表空間、檔案過程中,目錄是否存在和空間是否滿足是我們需要關注的問題。保持系統資料儲存策略一致性,避免出現大的返工動作是這個過程中必須考慮的問題。
很多時候,不謹慎的操作行為會帶來很大影響和問題。比如武斷信任系統部署文件,沒有切實的去做分析工作,都會給我們的系統帶來很多問題。但是,出現問題的一個積極作用是可以幫助我們瞭解更多的知識,理解系統特性和功能。
本篇介紹一個由於錯誤檔案建立而發現的Oracle特性。
1、問題簡述
在巡檢過程中,資料庫日誌中出現如下記錄:
Tue May 13 18:08:58 2014
create tablespace mssite
datafile 'D:\APP\XXX\ORADATA\ORCL\msite.DBF'
size 10240m
autoextend on next 10m maxsize 20480m
Tue May 13 18:09:56 2014
Completed: create tablespace mssite
datafile 'D:\APP\XXX\ORADATA\ORCL\mssite.DBF'
size 10240m
autoextend on next 10m maxsize 20480m
當前系統是10gR2,版本號為10.2.0.1。系統OMF特性啟動。
SQL> select * from v$version;
BANNER
---------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 – Production
SQL> show parameter db_create
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oracle/oradata
db_create_online_log_dest_1 string
在Linux系統中,是怎麼建立的“C:\xx”目錄?重要的是,Oracle也正常執行語句,沒有進行報錯。此時,新檔名稱如下:
SQL> select file_name, tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
-------------------------------------------------------------------------------- ------------------------------
(篇幅原因,有省略……)
/u01/app/oracle/oradata/DB/datafile/o1_mf_testtbl_9q1h2gq1_.dbf TESTTBL
/u01/app/oracle/product/10.2.0/db_1/dbs/D:APPXXXORADATAORCLmssite.DBF MSSITE
6 rows selected
從dba_data_files檢視中,我們看到其他資料檔案都是遵守Oracle OMF特性,在db_file_create_dest目錄下進行檔案建立。指定的錯誤路徑檔案,被放置在$ORACLE_HOME/dbs目錄中,以路徑壓縮(去除\字元)的方式進行命名。
那麼,這個是否是Oracle的特性呢?我們透過實驗來進行證明。
2、測試實驗
我們選擇在11gR2上進行實驗,兩者在OMF方面差異不大。
SQL> show parameter db_create;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oradata
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
建立錯誤目錄檔案表空間。
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;
Tablespace created
SQL> select file_name, tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
-------------------------------------------------------------------------------- ------------------------------
(篇幅原因,有省略……)
/u01/app/oracle/dbs/d:test.dbf TEST
/u01/app/oradata/ORA11G/datafile/o1_mf_system_9ppkjccb_.dbf SYSTEM
/u01/app/oradata/ORA11G/datafile/o1_mf_users_9pplqldd_.dbf USERS
7 rows selected
相同的現象出現,資料檔案建立在$ORACLE_HOME/dbs,檔名被設定為錯誤目錄結構壓縮版。相同檔案是否可以建立?
SQL> create tablespace test1 datafile 'd:\test.dbf' size 10m;
create tablespace test1 datafile 'd:\test.dbf' size 10m
ORA-01537: 無法新增檔案 'd:\test.dbf' - 該檔案已是資料庫的一部分
SQL> create tablespace test1 datafile 'd:\test1.dbf' size 10m;
Tablespace created
如果是OMF特性,要求在datafile中不寫入檔名稱資訊。所以,當前現象並不是OMF的結果。而且$ORACLE_HOME/dbs是一個非常古老的重要資料夾,密碼檔案、引數檔案都駐留於此,在備份過程中,這個目錄也經常充當控制檔案備份所在。
所以,這個現象應該是Oracle在非法檔名出現時候的一種應急反應。如果目錄結構是非法的,Oracle會設法將其轉化為符合單個檔案標準的檔名,存放在$ORACLE_HOME/dbs裡面。
我們刪除這些檔案的時候,OMF特性是不啟動的。所以需要手工刪除或者加入including子句。
SQL> drop tablespace test;
Tablespace dropped
SQL> drop tablespace test1 including contents and datafiles;
Tablespace dropped
[root@SimpleLinux dbs]# ls -l
total 19788
-rw-r-----. 1 oracle oinstall 10493952 May 14 11:15 d:test.dbf
-rw-rw----. 1 oracle oinstall 1544 May 14 08:45 hc_ora11g.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r-----. 1 oracle oinstall 24 Apr 1 12:39 lkORA11G
-rw-r-----. 1 oracle oinstall 1536 Apr 3 09:07 orapwora11g
-rw-r-----. 1 oracle oinstall 9748480 May 9 10:46 snapcf_ora11g.f
-rw-r-----. 1 oracle oinstall 3584 May 14 11:14 spfileora11g.ora
3、結論
在這個過程中,我們發現了Oracle非OMF檔案建立過程中的規律。如果檔名稱非法,Oracle會將非法檔名(含目錄)處理為合法檔名稱,放在$ORACLE_HOME/dbs中。這個過程是不會報錯的。
但是,從管理角度看,我們是不推薦這種做法的。首先這個目錄是一個軟體級別公用的目錄,如果有多個例項資料庫,這個資料夾是比較危險的。另外,這種方式也不符合Oracle OFA要求的管理策略。
歸結到這個功能特性,筆者認為還是不要妄用為好。一個部署運維人員,確認檔案目錄這類基本的能力,還是必要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-1162150/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle效能優化順序表名稱來選擇最有效的學習筆記Oracle優化筆記
- 檔名與庫名相似引起的錯誤——randomrandom
- 內部錯誤 選擇的檔案是不能修改的系統檔案。它將被隱藏。
- git修改檔案的名稱Git
- Git修改檔名稱Git
- Oracle10g 輸入使用者名稱稱10次密碼錯誤,使用者會鎖定Oracle密碼
- Swing 自定義JTable 多選框 自動選擇的錯誤
- Oracle Apps(EBS)模組名稱 & SAP模組名稱OracleAPP
- 根據教程中,輸錯密碼或使用者名稱後,卻不能返回‘使用者名稱或密碼錯誤’密碼
- Go十大常見錯誤第9篇:使用檔名稱作為函式輸入Go函式
- 在windows下檢視oracle錯誤的方法WindowsOracle
- win10 smb使用者名稱密碼錯誤怎麼解決_win10電腦smb使用者名稱密碼錯誤修復方法Win10密碼
- 安裝Oracle軟體報主機名錯誤Oracle
- linux samba配置問題(未知的使用者名稱或密碼錯誤)LinuxSamba密碼
- 織夢使用者名稱密碼?織夢提示你的密碼錯誤密碼
- 解決 PBootCMS 中因資料庫名稱錯誤導致的“執行 SQL 發生錯誤!錯誤:no such table: ay_config”問題boot資料庫SQL
- 資料庫使用者名稱和密碼錯誤:如何解決?資料庫密碼
- 批量處理檔名稱(上)
- 查詢跟蹤檔名稱
- windows下oracle的ora-27100錯誤WindowsOracle
- 一、更改ORACLE SID名稱Oracle
- 統計資訊不正確導致執行計劃的錯誤選擇
- Debug: 樣式規則、元素選擇器 錯誤嵌用
- ORACLE 錯誤Oracle
- 安卓簽名檔案打包錯誤 Invalid keystore format安卓ORM
- MySQL部分引擎的資料檔名稱作用MySql
- PowerShell快速修改多個檔案的名稱
- 轉載-找出Oracle alert檔案中的ORA錯誤Oracle
- 使用mmv命令批次修改檔名稱
- 歸檔日誌名稱為空
- eclipse 並沒有 改變錯誤包名 和 改變錯誤類名 的快捷鍵!Eclipse
- 錯誤的使用者名稱密碼登入導致的資料庫效能問題密碼資料庫
- php檔案操作之提取檔案/目錄的名稱PHP
- Linux下檔案系統的比較和選擇(轉)Linux
- jquery選擇div下的ul下的li下的ajQuery
- jQuery選擇器(下)jQuery
- oracle更改使用者名稱Oracle
- 快速修改Oracle使用者名稱Oracle