創建oracle數據庫
數據庫名:mydb
1:復制一個已經存在的數據庫目錄d:/oracle/product/10.1.0/db_1/admin/sample
到d:/oracle/product/10.1.0/admin目錄下,改名為mydb,
將/mydb/pfile/initsmpl.ora刪除,因為這個參數文件比較舊,從下面目錄中復制
一個參數文件d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora
將改文件放到/mydb/pfile下,改名為initmydb.ora,并設置以下參數:
db_domain=zhiqiao.com.cn
db_name=mydb
instance_name=mydb
control_files=( "d:/oracle/product/10.1.0/oradata/mydb/control01.ctl", "d:/oracle/product/10.1.0/oradata/mydb/control02.ctl", "d:/oracle/product/10.1.0/oradata/orcl/control03.ctl")
background_dump_dest=d:/oracle/product/10.1.0/admin/mydb/bdump
core_dump_dest=d:/oracle/product/10.1.0/admin/mydb/cdump
user_dump_dest=d:/oracle/product/10.1.0/admin/mydb/udump
2:在d:/oracle/product/10.1.0/db_1/database中創建數據庫啟動時直接讀取的參數文件
initmydb.ora內容為ifile='d:/oracle/product/10.1.0/admin/mydb/pfile'
3:使用orapwd命令創建數據庫具有sysdba權限用戶的口令字文件pwdmydb.ora,
該用戶可以管理數據庫的啟動與關閉,其存儲目錄為:
d:/oracle/product/10.1.0/db_1/database
在系統命令行輸入如下命令創建口令文件
c:/>orapwd file=d:/oracle/product/10.1.0/db_1/database/pwdmydb.ora
password=mydb entries=2
4:通過實例管理命令在服務表里創建一個實例管理服務,設置啟動方式為手動
c:/>oradim -new -sid mydb -startmode manual
-pfile "d:/oracle/product/10.1.0/admin/prod/pfile/initmydb.ora"
----》奇怪的是服務管理窗口中顯示為啟動,但關閉出錯?
c:/>oradim -shutdown -sid mydb -usrpwd mydb
ora-01012: not logged on
----》啟動出錯
c:/>oradim -startup -sid mydb -usrpwd mydb
ora-01078: failure in processing system parameters
lrm-00109: could not open parameter file
'd:/oracle/product/10.1.0/admin/mydb/pfile'
-----》因為沒創建spfile因此在此指定
c:/>oradim -startup -sid mydb -usrpwd mydb
-pfile "d:/oracle/product/10.1.0/admin/mydb/pfile/initmydb.ora"
ora-00205: error in identifying controlfile, check alert log for more info
d:/oracle/product/10.1.0/admin/mydb/bdump/alert_mydb.log中顯示錯誤原因
大致意思是找不到控制文件,我想可能應該以nomount方式打開,但oradim沒提供這個
選項,于是啟動sqlplus。
c:/>sqlplus /nolog
sql*plus: release 10.1.0.2.0 - production on 星期三 4月 11 10:49:13 2007
copyright (c) 1982, 2004, oracle. all rights reserved.
sql> connect /as sysdba
error:
ora-12560: tns:protocol adapter error
sql> connect sys/mydb as sysdba
error:
ora-12560: tns:protocol adapter error
sql> exit
c:/>set oracle_sid=mydb
c:/>sqlplus /nolog
sql*plus: release 10.1.0.2.0 - production on 星期三 4月 11 10:50:21 2007
copyright (c) 1982, 2004, oracle. all rights reserved.
sql> conn sys/mydb as sysdba
connected.
sql> startup nomount
ora-01078: failure in processing system parameters
lrm-00109: could not open parameter file 'd:/oracle/product/10.1.0/admin/mydb/pfile'
sql> startup nomount pfile="d:/oracle/product/10.1.0/admin/mydb/pfile/initmydb.ora"
ora-01081: cannot start already-running oracle - shut it down first
sql> shutdown
ora-01507: database not mounted
oracle instance shut down.
sql> startup nomount pfile="d:/oracle/product/10.1.0/admin/mydb/pfile/initmydb.ora"
oracle instance started.
total system global area 171966464 bytes
fixed size 787988 bytes
variable size 145750508 bytes
database buffers 25165824 bytes
redo buffers 262144 bytes
----》因為每次都要指定pfile不方便,可以創建一個
c:/>sqlplus /nolog
sql*plus: release 10.1.0.2.0 - production on 星期三 4月 11 11:02:57 2007
copyright (c) 1982, 2004, oracle. all rights reserved.
sql> conn sys/mydb as sysdba
connected to an idle instance.
sql> create spfile from pfile;
create spfile from pfile
*
error at line 1:
ora-01078: failure in processing system parameters
lrm-00113: error when processing file
'd:/oracle/product/10.1.0/admin/mydb/pfile'
lrm-00109: could not open parameter file
'd:/oracle/product/10.1.0/admin/mydb/pfile'
----》上面的錯誤原因是第二步造成的,其中ifile="..../initmydb.ora"才行。
sql> create spfile from pfile;
file created.
----》再啟動,不用指定pfile了
sql> startup nomount
oracle instance started.
......
sql> shutdown immediate
ora-01507: database not mounted
oracle instance shut down.
----》重新啟動機器后,orcl數據庫總是顯示為已啟動,mydb為未啟動狀態
這種情況下orcl其實是一個空閑進程,數據庫nomount階段,mydb則沒啟動進程,
所要連接到mydb會出現如下錯誤:
sql> conn sys/mydb as sysdba
error:
ora-12560: tns:protocol adapter error
可從服務管理器中啟動oracleservicemydb則可以連接了。
----》下面兩個操作有點奇怪,我創建的是實例,可使用inst啟動不了,需要用srvc
c:/>oradim -startup -sid mydb -starttype inst -usrpwd mydb
ora-12560: tns:protocol adapter error
c:/>oradim -startup -sid mydb -starttype srvc -usrpwd mydb
5:創建數據庫
sql> create database mydb
2 logfile
3 group 1
4 ('d:/oracle/product/10.1.0/oradata/mydb/redo11.log',
5 'd:/oracle/product/10.1.0/oradata/mydb/redo12.log') size 10m,
6 group 2
7 ('d:/oracle/product/10.1.0/oradata/mydb/redo21.log',
8 'd:/oracle/product/10.1.0/oradata/mydb/redo22.log') size 10m
9 datafile 'd:/oracle/product/10.1.0/oradata/mydb/system01.dbf' size 100m
10 autoextend on next 10m maxsize unlimited extent management local
11 sysaux datafile 'd:/oracle/product/10.1.0/oradata/mydb/sysaux01.dbf' size 50m
12 undo tablespace undotbs01 datafile 'd:/oracle/product/10.1.0/oradata/mydb/undotbs1.dbf' size 20m
13 default temporary tablespace temp
14 tempfile 'd:/oracle/product/10.1.0/oradata/mydb/temp01.dbf' size 10m
15 default tablespace users
16 datafile 'd:/oracle/product/10.1.0/oradata/mydb/users01.dbf' size 10m
17* character set zhs16gbk
create database mydb
*
error at line 1:
ora-01092: oracle instance terminated. disconnection forced
----》查看alert_mydb.log發現錯誤出現在創建undotbs1.dbf后,
wed apr 11 13:48:19 2007
create undo tablespace undotbs01 datafile 'd:/oracle/product/10.1.0/oradata/mydb/undotbs1.dbf' size 20m
ora-30012 signalled during: create undo tablespace undotbs01 datafile 'd:/ora...
wed apr 11 13:48:21 2007
errors in file d:/oracle/product/10.1.0/admin/mydb/udump/mydb_ora_828.trc:
ora-00604: error occurred at recursive sql level 1
ora-30012: undo tablespace 'undotbs1' does not exist or of wrong type
----》為什么說undotbs1不存在?查看參數文件,發現這么兩行
undo_management=auto
undo_tablespace=undotbs1
----》于是刪除剛創建沒成功的一些文件,然后修改創建數據庫語句重新來
sql> conn sys/mydb as sysdba
connected to an idle instance.
sql> startup nomount
oracle instance started.
----》這次原本是創建成功了,但我為了記錄錯誤原因,將創建好的數據庫文件全部刪除又來一次,
然后像下面這樣修改,又處錯了。
total system global area 171966464 bytes
fixed size 787988 bytes
variable size 145750508 bytes
database buffers 25165824 bytes
redo buffers 262144 bytes
sql> l12
12* undo tablespace undotbs01 datafile 'd:/oracle/product/10.1.0/oradata/mydb/undotbs1.dbf' size 20m
sql> c /undotbs01/undotbs1/
12* undo tablespace undotbs1 datafile 'd:/oracle/product/10.1.0/oradata/mydb/undotbs1.dbf' size 20m
sql> run
......
create database mydb
*
error at line 1:
ora-01092: oracle instance terminated. disconnection forced
----》還是這個錯誤,但錯誤原因不一樣了
wed apr 11 13:55:39 2007
errors in file d:/oracle/product/10.1.0/admin/mydb/udump/mydb_ora_1344.trc:
ora-01501: create database failed
ora-01991: invalid password file 'd:/oracle/product/10.1.0/db_1/database/pwdmydb.ora'
----》顯示口令文件不可用,估計與剛才的刪除有關,重新創建口令文件吧
見第三步
----》執行創建數據庫的語句創建成功。
----》數據庫創建后,自動處于open狀態,所有v$...都可以查詢,但其他則不可,如:
sql> select * from dba_users;
select * from dba_users
*
error at line 1:
ora-00942: table or view does not exist
----》解決上面的問題的方法是加載常用的數據字典包
sql>@d:/oracle/product/10.1.0/db_1/rdbms/admin/catalog.sql
----》使用system用戶連接出現的問題
sql> conn system/zhiqiao
error:
ora-01017: invalid username/password; logon denied
warning: you are no longer connected to oracle.
sql> conn sys/mydb as sysdba
connected.
sql> grant connect to system identified by mydb;
grant succeeded.
sql> conn system/mydb
error:
ora-06550: line 1, column 7:
pls-00201: identifier 'dbms_application_info.set_module' must be declared
ora-06550: line 1, column 7:
pl/sql: statement ignored
error accessing package dbms_application_info
connected.
----》出現錯誤,但連接上了,連接orcl,或者用向導創建時沒有這個問題。
sql> show user;
user is "system"
----》除了數據字典包外,通常還要加載以下包
1:pl/sql程序包 catproc.sql
2:遠程數據復制 catrep.sql
3:java程序包 initjvm.sql
4:系統環境文件,必須以system用戶登陸 db_1/sqlplus/admin/pupbld.sql
加載pl/sql程序包時出現很多錯誤,表或視圖不存在,不知道為什么。
新聞熱點
疑難解答