關於create database語句在10g,11g中的不同
最近抽空練習了下手工建庫,在10g的時候基本都在20分鐘搞定,在11g中其實還可以更快,因為10g中需要配置的admin目錄,需要建立bdump,udump之類的目錄等等,在11g都被adr給預設替代了,只要提供了$ORACLE_BASE,就會預設在$ORACLE_BASE下生成對應的目錄結構。
其它步驟完全可以按照10g的指令碼來使用,沒有任何問題,但是如果反過來,在11g裡使用的一些語句在10g中可能會有一些問題,這一點也是在今天的測試中發現的一個小細節。
首先我在11g的庫中建立了一個資料庫例項,使用create database來完成,建立語句類似下面的形式。
11g的例項很快就建立完成了。然後就想直接引用這個現成的指令碼,簡單修改一下路徑,資料庫例項名,在10g的環境中建立一個資料庫例項。
但是卻報出了下面的錯誤。
SQL> @createdb.sql
LOGFILE GROUP 1 ('/u02/oracle/oradata/TEST10G/disk1/redo01a.log','/u02/oracle/oradata/TEST10G/disk2/redo01b.log') SIZE 100M BLOCKSIZE 512,
*
ERROR at line 4:
ORA-02165: invalid option for CREATE DATABASE
對於這個錯誤自己還是很疑惑,不知道是哪兒出了問題,開始以為是做路徑替換的時候出了問題,排除了亂碼等的影響。最後發現語句實在沒有其它的問題了。
這個時候把10g的建立語句拿出來比較一下,發現有3處不同之處。
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/u01/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/u01/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
第一處是關於redo日誌組的設定,10g中預設配置一組日誌中只有一個日誌成員。在11g中是預設有2個
第二個不同之處是在10g中有一個配置MAXINSTANCES,在11g中缺沒有,因為是單例項資料庫,是在找不出理由是這個地方的不同引起的問題。
第三個問題就更加明顯了,在10g中 只有一句default tablespace tbs_1 然後沒有定義明細的資訊,這個語句是不能執行的,還需要手工去補充,在11g中,語句已經補充完整了。只需要簡單的根據自己的需求需要一下就可以了。
所以第二個第三個問題是很明顯的,應該不是問題的原因,那麼我們看看第一處不同,還有什麼地方有可能會匯出語句出問題。
11g中這樣定義的
其它步驟完全可以按照10g的指令碼來使用,沒有任何問題,但是如果反過來,在11g裡使用的一些語句在10g中可能會有一些問題,這一點也是在今天的測試中發現的一個小細節。
首先我在11g的庫中建立了一個資料庫例項,使用create database來完成,建立語句類似下面的形式。
CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512, GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') SIZE 100M BLOCKSIZE 512, GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') SIZE 100M BLOCKSIZE 512 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE DEFAULT TABLESPACE users DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE undotbs DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;這個語句基本不用修改太多的地方,基本就是檔案的路徑,結構部分不用做任何修改。
11g的例項很快就建立完成了。然後就想直接引用這個現成的指令碼,簡單修改一下路徑,資料庫例項名,在10g的環境中建立一個資料庫例項。
但是卻報出了下面的錯誤。
SQL> @createdb.sql
LOGFILE GROUP 1 ('/u02/oracle/oradata/TEST10G/disk1/redo01a.log','/u02/oracle/oradata/TEST10G/disk2/redo01b.log') SIZE 100M BLOCKSIZE 512,
*
ERROR at line 4:
ORA-02165: invalid option for CREATE DATABASE
對於這個錯誤自己還是很疑惑,不知道是哪兒出了問題,開始以為是做路徑替換的時候出了問題,排除了亂碼等的影響。最後發現語句實在沒有其它的問題了。
這個時候把10g的建立語句拿出來比較一下,發現有3處不同之處。
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/u01/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/u01/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/u01/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
第一處是關於redo日誌組的設定,10g中預設配置一組日誌中只有一個日誌成員。在11g中是預設有2個
第二個不同之處是在10g中有一個配置MAXINSTANCES,在11g中缺沒有,因為是單例項資料庫,是在找不出理由是這個地方的不同引起的問題。
第三個問題就更加明顯了,在10g中 只有一句default tablespace tbs_1 然後沒有定義明細的資訊,這個語句是不能執行的,還需要手工去補充,在11g中,語句已經補充完整了。只需要簡單的根據自己的需求需要一下就可以了。
所以第二個第三個問題是很明顯的,應該不是問題的原因,那麼我們看看第一處不同,還有什麼地方有可能會匯出語句出問題。
11g中這樣定義的
LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') SIZE 100M BLOCKSIZE 512,
10g中是這樣定義的
LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
除了日誌成員的不同外,還有一個地方就是blocksize的不同了,在10g中沒有blocksize的字樣。
帶著試試看的態度把blocksize去掉,然後再次執行語句,語句就執行成功了。
問題解決了,我們來看看blocksize是什麼東東。
這個值是在資料庫的原始碼中固定的,與作業系統相關,預設的值為512. 在不同的os中可能會有所不同。
檢視blocksize的配置,可以使用基表。
這個Log size可以從Oracle的內部檢視中獲得:
所以可見在10g,11g的很多細節之處還是會存在一定的差距,11g中也在不斷的進行改進。
LOGFILE GROUP 1 ('/u01/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
除了日誌成員的不同外,還有一個地方就是blocksize的不同了,在10g中沒有blocksize的字樣。
帶著試試看的態度把blocksize去掉,然後再次執行語句,語句就執行成功了。
問題解決了,我們來看看blocksize是什麼東東。
這個值是在資料庫的原始碼中固定的,與作業系統相關,預設的值為512. 在不同的os中可能會有所不同。
檢視blocksize的配置,可以使用基表。
這個Log size可以從Oracle的內部檢視中獲得:
SQL> select max(lebsz) from x$kccle; MAX(LEBSZ) ---------- 512 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1722979/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 4.3.3 使用CREATE DATABASE語句建立CDBDatabase
- 關於在SAP中SQL語句的效能SQL
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- 2.4 使用 CREATE DATABASE 語句建立資料庫Database資料庫
- 4、MySQL建立資料庫(CREATE DATABASE語句)MySql資料庫Database
- 4.3.4 使用CREATE DATABASE語句建立一個CDB:示例Database
- dual表與create table語句的關係
- 關於Mybatis中SQL語句的整理MyBatisSQL
- oracle 10g _create tablespace相關語法Oracle 10g
- 使用create database語句建立資料庫的詳細操作步驟Database資料庫
- 關於 Java 中 finally 語句塊的深度辨析Java
- 關於動態語句
- 關於sql語句的優化SQL優化
- Create DatabaseDatabase
- How To Drop, Create And Recreate DB Control In A 10g DatabaseDatabase
- create database link中的identified by valuesDatabaseIDE
- oracle 10g ,11g 自動生成建立表空間的語句Oracle 10g
- 關於mysql語句的自動補全MySql
- oracle文件中關於group by語句不保證排序正確的描述Oracle排序
- PG create databaseDatabase
- Create database manuallyDatabase
- recover database的四條語句區別 .Database
- # 關於select關鍵字語句定義順序# 關於select關鍵字語句執行順序
- GOTO語句在PL/SQL中的應用GoSQL
- 在Oracle 9i中修改表的結構的相關sql語句OracleSQL
- 關於sql語句的遊標共享問題SQL
- 4.3.2 關於使用SQL語句建立CDBSQL
- js根據不同的時間段輸出不同的語句JS
- Upgrading from Oracle Database 10g to 11gOracleDatabase
- alter database create datafileDatabase
- CREATE DATABASE LINKDatabase
- alter database create datafile '' as ''Database
- create table of mysql databaseMySqlDatabase
- The method of create a replicate of the database .Database
- Create RAC Standby Database for RAC Primary DatabaseDatabase
- 關於Hibernate和hql語句的相關知識點
- 關於flashback databaseDatabase
- create 與 store中的關係