怎么创建oracle实例库,手动创建oracle数据库实例

  • Post author:
  • Post category:其他


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_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

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,前面已经有了

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

mkdiradump bdump cdump dpdump pfile udump

mkdir$DB_HOME/mytest//这一步不要忘了,容易看错

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)

)

//这个在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

export ORACLE_SID=mytest

前面提到了环境变量ORACLE_SID=ora1,在这里要换掉,不然用sqlplus会进入到ora1数据库的。

7,创建数据库

//1,sqlplus登录

sqlplus /assysdba

//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;

//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;

如果出现下图,表示创建数据库成功

0818b9ca8b590ca3270a3433284dd417.png

手动创建oracle数据库成功

8,创建ORACLE的数据字典

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql;

SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql;

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;

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

SQL> select tablespace_name,extent_management from dba_tablespaces;

TABLESPACE_NAME EXTENT_MAN

—————————— ———-

SYSTEM LOCAL

UNDOTBS1 LOCAL

SYSAUX LOCAL

TEMP LOCAL

ora1和mytest完全一样。

11,遇到问题以及解决

安装过程中因为疏忽,安装没有完成,但是数据库已经建好了,提示不能重建,我尝试的时候,就遇到这样的情况了。遇到这种情况,最好的办法是把数据库删除,重新在装。

SQL> drop database;

drop database

*

ERROR at line 1:

ORA-12719: operation requires database is in RESTRICTED mode

//解决办法如下

sql> alter system enable restricted session;

sql> drop database;

SQL> drop database;

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的强大,也许就在于此吧。