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

2020-03-26 10:36:56 浏览数 (1)

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

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

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.

0 人点赞