ITPub博客

首页 > 数据库 > 数据库开发技术 > 手动创建数据库及创建过程遇到的错误(踩到的坑)

手动创建数据库及创建过程遇到的错误(踩到的坑)

原创 数据库开发技术 作者:lukeunique 时间:2018-01-08 21:21:21 0 删除 编辑


本文介绍手动创建数据库的方法及创建过程遇到的错误(踩到的坑).


##手动创建数据库的方法


1.定义相关环境变量


export ORACLE_SID=orcl

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE=/u01/app/oracle


$ echo $PATH

$ export PATH=$PATH:$ORACLE_HOME/OPatch/bin


2. 创建Password file,供远程Password认证连接


$ orapwd FILE=orapworcl ENTRIES=30


3.修改初期化参数


cd $ORACLE_HOME/dbs

cp init.ora initorcl.ora 

vi initorcl.ora


initorcl.ora内容:

db_name='ORCL'

memory_target=800M

processes = 150

db_block_size=8192

db_domain=''

db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

db_recovery_file_dest_size=10G

diagnostic_dest='/u01/app/oracle'

dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'

open_cursors=300

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

control_files = ('/u01/app/oracle/oradata/orcl/ora_control01', '/u01/app/oracle/oradata/orcl/ora_control02')

compatible ='11.2.0'


4.修改CREATE DATABASE文


拷贝在线文档的CREATE DATABASE文模板


Home / Database / Oracle Database Online Documentation 11g Release 2 (11.2) / Database Administration

Database Administrator's Guide

https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11085

>Specifying CREATE DATABASE Statement Clauses


修改成以下内容:

CREATE DATABASE orcl

   USER SYS IDENTIFIED BY oracle

   USER SYSTEM IDENTIFIED BY oracle

   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01a.log') SIZE 100M ,

           GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02a.log') SIZE 100M ,

           GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03a.log') SIZE 100M 

   MAXLOGFILES 5

   MAXLOGMEMBERS 5

   MAXLOGHISTORY 1

   MAXDATAFILES 100

   CHARACTER SET AL32UTF8

   NATIONAL CHARACTER SET AL16UTF16

   EXTENT MANAGEMENT LOCAL

   DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' SIZE 3250M REUSE

   SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' SIZE 3250M REUSE

   DEFAULT TABLESPACE users

      DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'

      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED

   DEFAULT TEMPORARY TABLESPACE tempts1

      TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'

      SIZE 20M REUSE

   UNDO TABLESPACE UNDOTBS1

      DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'

      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

5.

通过initorcl.ora创建spfile,并启动数据库Nomount状态,创建数据库。


$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 8 11:04:03 2018


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> create spfile from pfile;


File created.


SQL> startup nomount

ORACLE instance started.


Total System Global Area  836976640 bytes

Fixed Size                  1348160 bytes

Variable Size             490737088 bytes

Database Buffers          339738624 bytes

Redo Buffers                5152768 bytes

SQL> CREATE DATABASE orcl

   USER SYS IDENTIFIED BY oracle

   USER SYSTEM IDENTIFIED BY oracle

   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01a.log') SIZE 100M ,

           GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02a.log') SIZE 100M ,

           GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03a.log') SIZE 100M

   MAXLOGFILES 5

   MAXLOGMEMBERS 5

   MAXLOGHISTORY 1

   MAXDATAFILES 100

   CHARACTER SET AL32UTF8

   NATIONAL CHARACTER SET AL16UTF16

   EXTENT MANAGEMENT LOCAL

   DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf' SIZE 325M REUSE

   SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf' SIZE 325M REUSE

11   12     DEFAULT TABLESPACE users

      DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'

      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED

   DEFAULT TEMPORARY TABLESPACE tempts1

      TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'

      SIZE 20M REUSE

   UNDO TABLESPACE UNDOTBS1

      DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'

      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

13   14   15   16   17   18   19   20   21   22   23   24


Database created.


6. 执行相关脚本


conn / as sysdba

----创建数据字典视图和编译

@?/rdbms/admin/catalog.sql

----创建PL/SQL相关功能,还创建几个PL/SQL包用于扩展RDBMS功能

@?/rdbms/admin/catproc.sql

@?/rdbms/admin/utlrp.sql


conn system/oracle

----创建SQLPLUS相关内容

@?/sqlplus/admin/pupbld.sql


7.配置emca


$ emca -config dbcontrol db

$ emca -config dbcontrol db -repos create 

$ emca -config dbcontrol db -repos recreate  --》建议使用,即使没有创建过,也会重新创建。


$ emca -config dbcontrol db -repos recreate


STARTED EMCA at Jan 8, 2018 1:00:49 PM

EM Configuration Assistant, Version 11.2.0.3.0 Production

Copyright (c) 2003, 2011, Oracle.  All rights reserved.


Enter the following information:

Database SID: orcl

Listener port number: 1521

Listener ORACLE_HOME [ /u01/app/oracle/product/11.2.0/dbhome_1 ]:

Password for SYS user:

Password for DBSNMP user:

Password for SYSMAN user:

Email address for notifications (optional): 


Jan 8, 2018 1:35:44 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration

INFO: >>>>>>>>>>> The Database Control URL is https://XXXXX.XXXX:1158/em <<<<<<<<<<<

Jan 8, 2018 1:35:49 PM oracle.sysman.emcp.EMDBPostConfig invoke

WARNING:

************************  WARNING  ************************


Management Repository has been placed in secure mode wherein Enterprise Manager data will be encrypted.  T

he encryption key has been placed in the file: /u01/app/oracle/product/11.2.0/dbhome_1/XXXXX.us.oracle.com_SID1/sysman/config/emkey.ora. 

Ensure this file is backed up as the encrypted data will become unusable if this file is lost.


***********************************************************

Enterprise Manager configuration completed successfully

FINISHED EMCA at Jan 8, 2018 1:35:49 PM


8.archivelog mode的变更


SYS@orcl YY-MM-DD> archive log list

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     15

Current log sequence           17


SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP MOUNT

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;


SYS@orcl YY-MM-DD> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     15

Next log sequence to archive   17

Current log sequence           17


9. 设定UNDO表空间的大小


SYS@orcl YY-MM-DD> show parameter undo


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1


SYS@orcl YY-MM-DD> alter system set undo_retention=3600;


SYS@orcl YY-MM-DD> show parameter undo


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     3600

undo_tablespace                      string      UNDOTBS1


Refer:

https://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#ADMIN11466

>Sizing a Fixed-Size Undo Tablespace


select file#, bytes, name from v$datafile where name like '%undo%';

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' RESIZE 400M;

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' AUTOEXTEND ON;


##创建Tips


■Tips1:

修改glogin.sql文件


$ORACLE_HOME/sqlplus/admin/glogin.sql


SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE> "


修改前的效果:

SQL> 


修改后的效果:

SYS@orcl YY-MM-DD>


参考:

Home / Database / Oracle Database Online Documentation 11g Release 2 (11.2) / Database Administration

SQL*Plus® User's Guide and Reference

https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_two.htm#SQPUG012

>2 Configuring SQL*Plus

>Default Site Profile Script


■Tips2:

其他简单的创建方法:


1.修改initorcl.ora

    db_name='ORCL'


2.使用CREATE DATABASE orcl命令;


3.创建临时表空间。


##创建过程遇到的错误(踩到的坑):


0.未设定环境变量

$ sqlplus /nolog

-bash: sqlplus: command not found


$ export ORACLE_SID=orcl

[dbs]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/

[dbs]$ sqlplus / as sysdba

-bash: sqlplus: command not found


$ echo $PATH

/home/oracle/bin:/usr/java/jdk1.5.0_16/bin:/bin:/home/oracle/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

[dbs]$ export PATH=$ORACLE_HOME/bin:$PATH



1.未修改默认的初始化参数文件中的<ORACLE_BASE>


db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'

db_recovery_file_dest_size=10G

diagnostic_dest='<ORACLE_BASE>'


SQL> startup nomount

ORA-48108: invalid value given for the diagnostic_dest init.ora parameter

ORA-48140: the specified ADR Base directory does not exist [/u01/app/oracle/product/11.2.0/dbhome_1/dbs/<ORACLE_BASE>]

ORA-48187: specified directory does not exist

Linux Error: 2: No such file or directory

Additional information: 1


2. flash_recovery_area未修改


db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

db_recovery_file_dest_size=10G

diagnostic_dest='/u01/app/oracle/'


SQL> startup nomount

ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated

ORA-01262: Stat failed on a file destination directory

Linux Error: 2: No such file or directory

$ cd /u01/app/oracle/flash_recovery_area

-bash: cd: /u01/app/oracle/flash_recovery_area: No such file or directory


3.未创建相关的路径


CREATE DATABASE orcl

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-01501: CREATE DATABASE failed

ORA-00301: error in adding log file '/u01/app/oracle/oradata/orcl/redo01a.log'

- file cannot be created

ORA-27040: file create error, unable to create file

Linux Error: 2: No such file or directory

Additional information: 1

Process ID: 10398

Session ID: 125 Serial number: 3


4.UNDO TABLESPACE名指定错误。

初期化参数是UNDOTBS1,但是Create database文却是UNDOTBS。


   UNDO TABLESPACE UNDOTBS

      DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'


CREATE DATABASE orcl

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-01501: CREATE DATABASE failed

ORA-01519: error while processing file '?/rdbms/admin/dtxnspc.bsq' near line 5

ORA-00604: error occurred at recursive SQL level 1

ORA-30012: undo tablespace 'UNDOTBS1' does not exist or of wrong type

Process ID: 10958

Session ID: 125 Serial number: 3


5. 一次不成功的话,需删除以前生成的文件


CREATE DATABASE orcl

*

ERROR at line 1:

ORA-01501: CREATE DATABASE failed

ORA-00200: control file could not be created

ORA-00202: control file: '/u01/app/oracle/oradata/orcl/ora_control01'

ORA-27038: created file already exists

Additional information: 1


6.DOMAIN 没有设定,和tnsnam.ora ,导致TNS 错误



SQL> show parameter domain


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_domain                            string      us.oracle.com

SQL>


cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.


SID1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.11.12)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = SID1.us.oracle.com)

    )

  )


ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 11.11.11.11)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl.us.oracle.com)

    )

  )




$ sqlplus system/oracle@ORCL


SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 8 11:55:32 2018


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


ERROR:

ORA-12514: TNS:listener does not currently know of service requested in connect

descriptor



Enter user-name:

ERROR:

ORA-01017: invalid username/password; logon denied


修改db_domain:

SQL> alter system set db_domain=us.oracle.com;


SQL> show parameter domain


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_domain                            string      us.oracle.com


7.连接空实例问题


[oracle@XXXXX-orcl ~]$ export ORACLE_SID=orcl

[oracle@XXXXX-orcl ~]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/

[oracle@XXXXX-orcl ~]$ export PATH=$ORACLE_HOME/bin:$PATH

[oracle@XXXXX-orcl ~]$ export ORACLE_BASE=/u01/app/oracle

[oracle@XXXXX-orcl ~]$

[oracle@XXXXX-orcl ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 8 12:16:05 2018


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.★命名是启动的数据库,连接时却是idle的???


SQL> exit



当仅仅设定ORACLE_SID=orcl时,正常连接,非Idle。


export ORACLE_SID=orcl

[oracle@XXXXX-orcl ~]$ sqlplus / as sysdba


是由于环境变量ORACLE_HOME重复设定??


[oracle@XXXXX-orcl admin]$ export ORACLE_SID=orcl

[oracle@XXXXX-orcl admin]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/

[oracle@XXXXX-orcl admin]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 8 12:30:51 2018


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> exit


[oracle@XXXXX-orcl admin]$ env

...

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

G_BROKEN_FILENAMES=1

_=/bin/env


根据上面可以知道,由于设定ORACLE_HOME时多了一个"/"。

删除后,正常连接。


$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 8 12:41:27 2018


Copyright (c) 1982, 2011, Oracle.  All rights reserved.



Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining

and Real Application Testing options



8.emca创建时,发生ORA-01000


Jan 8, 2018 1:04:28 PM oracle.sysman.emcp.EMReposConfig createRepository

WARNING: ORA-01000: maximum open cursors exceeded

ORA-06512: at "SYS.DBMS_STATS", line 27377

ORA-06512: at "SYS.DBMS_STATS", line 27402

ORA-06512: at "SYS.DBMS_REGISTRY_SYS", line 1093

ORA-06512: at "SYS.DBMS_REGISTRY", line 578

ORA-06512: at line 1


修改open_cursors值后,重新运行


SYS@orcl YY-MM-DD> show parameter cursors


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

open_cursors                         integer     300

session_cached_cursors               integer     50

SYS@orcl YY-MM-DD> alter system set open_cursors=500;


System altered.


$ emca -config dbcontrol db -repos create


STARTED EMCA at Jan 8, 2018 1:08:03 PM

EM Configuration Assistant, Version 11.2.0.3.0 Production

Copyright (c) 2003, 2011, Oracle.  All rights reserved.


Enter the following information:

Database SID: orcl

Listener port number: 1521

Listener ORACLE_HOME [ /u01/app/oracle/product/11.2.0/dbhome_1 ]:

Password for SYS user:

Password for DBSNMP user:

Password for SYSMAN user:

Email address for notifications (optional):

Outgoing Mail (SMTP) server for notifications (optional):

-----------------------------------------------------------------


You have specified the following settings


Database ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/dbhome_1


Local hostname ................ XXXXX.us.oracle.com

Listener ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/dbhome_1

Listener port number ................ 1521

Database SID ................ orcl

Email address for notifications ...............

Outgoing Mail (SMTP) server for notifications ...............


-----------------------------------------------------------------

Do you wish to continue? [yes(Y)/no(N)]: Y

Jan 8, 2018 1:08:29 PM oracle.sysman.emcp.EMConfig perform

INFO: This operation is being logged at /u01/app/oracle/cfgtoollogs/emca/ORCL/emca_2018_01_08_13_08_03.log.

Jan 8, 2018 1:08:30 PM oracle.sysman.emcp.DatabaseChecks performReposChecks

SEVERE: Dbcontrol Repository already exists.  Fix the error(s) and run EM Configuration Assistant again in standalone mode.

[oracle@XXXXX-orcl admin]$ .


EM创建再次执行时,发生SEVERE: Dbcontrol Repository already exists错误,

使用recreate命令。

$emca -config dbcontrol db -repos recreate



9.由于数据库关闭,报ORA-01034: ORACLE not available错误


$ emca -config dbcontrol db -repos recreate


STARTED EMCA at Jan 8, 2018 1:18:30 PM

EM Configuration Assistant, Version 11.2.0.3.0 Production

Copyright (c) 2003, 2011, Oracle.  All rights reserved.


Enter the following information:

Database SID: orcl

Jan 8, 2018 1:18:35 PM oracle.sysman.emcp.DatabaseChecks checkDbAvailabilityImpl

WARNING: ORA-01034: ORACLE not available


Jan 8, 2018 1:18:35 PM oracle.sysman.emcp.DatabaseChecks throwDBUnavailableException

SEVERE:

Database instance is unavailable. Fix the ORA error thrown and run EM Configuration Assistant again.


Some of the possible reasons may be :


1) Database may not be up.

2) Database is started setting environment variable ORACLE_HOME with trailing '/'. Reset ORACLE_HOME and bounce the database.


For eg. Database is started setting environment variable ORACLE_HOME=/scratch/db/ . Reset ORACLE_HOME=/scratch/db  and bounce the database.


10.扩大SYSTEM表空间的大小。


INFO: Creating the EM repository (this may take a while) ...

Jan 8, 2018 1:21:45 PM oracle.sysman.emcp.EMReposConfig createRepository

WARNING: ORA-00604: error occurred at recursive SQL level 1

ORA-01654: unable to extend index SYS.I_IDL_SB41 by 8 in tablespace SYSTEM


Jan 8, 2018 1:21:45 PM oracle.sysman.emcp.EMReposConfig invoke

SEVERE: Error creating the repository

Jan 8, 2018 1:21:45 PM oracle.sysman.emcp.EMReposConfig invoke

INFO: Refer to the log file at /u01/app/oracle/cfgtoollogs/emca/ORCL/emca_repos_create_<date>.log for more details.

Jan 8, 2018 1:21:45 PM oracle.sysman.emcp.EMConfig perform

SEVERE: Error creating the repository

Refer to the log file at /u01/app/oracle/cfgtoollogs/emca/ORCL/emca_2018_01_08_13_19_31.log for more details.

Could not complete the configuration. Refer to the log file at /u01/app/oracle/cfgtoollogs/emca/ORCL/emca_2018_01_08_13_19_31.log for more details.




原文作者:SQL和数据库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-07-21

  • 博文量
    107
  • 访问量
    63586