建立Oracle資料庫

來源:互聯網
上載者:User
oracle|建立|資料|資料庫

建立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程式包時出現很多錯誤,表或視圖不存在,不知道為什麼。


 



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.