linux 手動創建oracle數據庫手冊
linux下創建oracle數據庫主要有二種方法以:1,通過dbca來創建;2,手動創建。
用dbca創建比較簡單,圖形化操作。注意:要加環境變量export LC_ALL=C,不然會亂碼的。
手動創建比較麻煩,不過我們可以大致瞭解oracle就怎麼存儲數據的,目錄是怎麼安排的等。下面如何手動創建數據庫詳細的說明一下。
1,設置環境變量
裝oracle的時候,設置了一些環境變量,下面這些環境變量是根這次安裝有關的
- ORACLE_HOME=/opt/ora10
- ORACLE_OWNER=oracle
- DB_HOME=/opt/ora10/oradata
- ORACLE_SID=ora1 //這個是默認安裝ora1數據庫的sid,下面會改掉的。
手動創建oracle數據庫的時候,最好是切換oracle用戶,就是安裝oracle的那個用戶。su oracle
2,創建pfile文件
oracle安裝完成後,系統默認有一個數據庫ora1,我們可以利用它來創建pfile文件
- cd $ORACLE_HOME/dbs
- strings spfileora1.ora >initmytest.ora
然後在手動將initmytest.ora裏面ora1,全部改成mytest,這樣pfile文件就做好了。
3,生成密碼文件
- sudo cp $ORACLE_HOME/bin/orapwd /usr/local/bin/
- orapwd file=orapwmytest password=mytest //目錄是$ORACLE_HOME/dbs,前面已經有了
4,創建oracle數據庫目錄
- mkdir $ORACLE_HOME/admin/mytest
- cd $ORACLE_HOME/admin/mytest
- mkdir adump bdump cdump dpdump pfile udump
- mkdir $DB_HOME/mytest //這一步不要忘了,容易看錯
5,修改tnsnames.ora和listener.ora
- //這個在tnsnames.ora中加上
- MYTEST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = ubuntu)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = mytest)
- )
- )
- //這個在lister.ora中加上
- (SID_DESC =
- (SID_NAME = mytest)
- (GLOBAL_DBNAME=mytest)
- (ORACLE_HOME = /opt/ora10)
- (PROGRAM = extproc)
- )
其實就是將各自文件中ora1的部分,拷貝一下,把ora1改成mytest。其實就這些簡單。修改這個爲了sqlplus連接實例用的。
6,修改實例入口
- export ORACLE_SID=mytest
前面提到了環境變量ORACLE_SID=ora1,在這裏要換掉,不然用sqlplus會進入到ora1數據庫的。
7,創建數據庫
- //1,sqlplus登錄
- sqlplus / as sysdba
- //2,啓動不加載實例
- SQL> startup nomount
- //3,從create開始到最後的冒號,直接copy進去執行就行了。
- SQL> create database mytest
- LOGFILE
- GROUP 1 ('$DB_HOME/mytest/redo01.log','$DB_HOME/mytest/redo01_1.log') size 100m reuse,
- GROUP 2 ('$DB_HOME/mytest/redo02.log','$DB_HOME/mytest/redo02_1.log') size 100m reuse,
- GROUP 3 ('$DB_HOME/mytest/redo03.log','$DB_HOME/mytest/redo03_1.log') size 100m reuse
- MAXLOGFILES 50
- MAXLOGMEMBERS 5
- MAXLOGHISTORY 200
- MAXDATAFILES 500
- MAXINSTANCES 5
- ARCHIVELOG
- CHARACTER SET UTF8
- NATIONAL CHARACTER SET UTF8
- DATAFILE '$DB_HOME/mytest/system01.dbf' SIZE 1000M EXTENT MANAGEMENT LOCAL
- SYSAUX DATAFILE '$DB_HOME/mytest/sysaux01.dbf' SIZE 1000M
- UNDO TABLESPACE UNDOTBS1 DATAFILE '$DB_HOME/mytest/undo.dbf' SIZE 500M
- DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '$DB_HOME/mytest/temp.dbf' SIZE 500M;
如果出現下圖,表示創建數據庫成功
8,創建ORACLE的數據字典
- SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql;
- SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql;
執行這二個文件,也是挺費時間的。
9,簡單設置一下權限
- SQL> alter user system identified by mytest;
- SQL> grant sysdba to system;
- SQL> shutdown immediate; //用shutdown會很慢,加上immediate快很多
- SQL> startup;
10,查看一下表空間,以及管理方式
- SQL> select tablespace_name,extent_management from dba_tablespaces;
- TABLESPACE_NAME EXTENT_MAN
- ------------------------------ ----------
- SYSTEM LOCAL
- UNDOTBS1 LOCAL
- SYSAUX LOCAL
- TEMP LOCAL
ora1和mytest完全一樣。
11,遇到問題以及解決
安裝過程中因爲疏忽,安裝沒有完成,但是數據庫已經建好了,提示不能重建,我嘗試的時候,就遇到這樣的情況了。遇到這種情況,最好的辦法是把數據庫刪除,重新在裝。
- drop database
- *
- ERROR at line 1:
- ORA-12719: operation requires database is in RESTRICTED mode
- //解決辦法如下
- sql> alter system enable restricted session;
- sql> drop database;
小結:創建oracle數據庫,比創建mysql數據庫要複雜的多了。創建mysql數據庫,只要一句話,create database mytest就行了。在磁盤會自動創建一個以數據名命名的文件夾。oracle的強大,也許就在於此吧。