1) 生成响应文件:
[oracle@srcxtts response]$ cp netca.rsp ../netca.rsp^C
[oracle@srcxtts response]$ pwd
/home/oracle/database/response
[oracle@srcxtts response]$
2)更改拷贝的响应文件:
#-------------------------------------------------------------------- #以下参数不要更改 [GENERAL] RESPONSEFILE_VERSION = "11.2.0" OPERATION_TYPE = "createDatabase" #以下参数必须设置 [CREATEDATABASE] GDBNAME = "orcl" TEMPLATENAME = "General_Purpose.dbc" #以下参数不设置则使用默认值,建议设置 CHARACTERSET = "ZHS16GBK" TOTALMEMORY = "1024" #--------------------------------------------------------------------
3)静默建库:
$ $ORACLE_HOME/bin/dbca -silent -responseFile $DISTRIB/db_create.rsp Enter SYS user password: <输入sys用户密码> Enter SYSTEM user password: <输入system用户密码> Copying database files ... 37% complete Creating and starting Oracle instance ... 62% complete Completing Database Creation ... 100% complete Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details. 各参数含义如下: -silent 表示以静默方式安装 -responseFile 表示使用哪个响应文件,必需使用绝对路径 RESPONSEFILE_VERSION 响应文件模板的版本,该参数不要更改 OPERATION_TYPE 安装类型,该参数不要更改 GDBNAME 全局数据库名,点号前面默认是db_name,点号后面默认就是db_domain TEMPLATENAME 建库模板名,参考各模板定义:$ORACLE_HOME/assistants/dbca/templates/*.dbc CHARACTERSET 字符集,默认是WE8MSWIN1252 TOTALMEMORY 实例内存,默认是服务器物理内存的40%
4)建库后实例检查
ps -ef|grep ora_
5)建库后监听检查
lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-APR-2018 18:09:25 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 23-APR-2018 16:52:30 Uptime 0 days 1 hr. 16 min. 55 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/11.2.0.1/db_home1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/srcxtts/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srcxtts)(PORT=1521))) Services Summary... Service "ORCLXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
6)启动实例
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0.1/db_home1/dbs/initorcl.ora'
文件不存在,直接根据模板init.ora拷贝一份
cp init.ora initorcl.ora
然后把里面相关路径改一下,此处主要把<ORACLE_BASE>换成/u01/app/oracle
[oracle@srcxtts dbs]$ cat initorcl.ora # # $Header: rdbms/admin/init.ora /main/23 2009/05/15 13:35:38 ysarig Exp $ # # Copyright (c) 1991, 1997, 1998 by Oracle Corporation # NAME # init.ora # FUNCTION # NOTES # MODIFIED # ysarig 05/14/09 - Updating compatible to 11.2 # ysarig 08/13/07 - Fixing the sample for 11g # atsukerm 08/06/98 - fix for 8.1. # hpiao 06/05/97 - fix for 803 # glavash 05/12/97 - add oracle_trace_enable comment # hpiao 04/22/97 - remove ifile=, events=, etc. # alingelb 09/19/94 - remove vms-specific stuff # dpawson 07/07/93 - add more comments regarded archive start # maporter 10/29/92 - Add vms_sga_use_gblpagfile=TRUE # jloaiza 03/07/92 - change ALPHA to BETA # danderso 02/26/92 - change db_block_cache_protect to _db_block_cache_p # ghallmar 02/03/92 - db_directory -> db_domain # maporter 01/12/92 - merge changes from branch 1.8.308.1 # maporter 12/21/91 - bug 76493: Add control_files parameter # wbridge 12/03/91 - use of %c in archive format is discouraged # ghallmar 12/02/91 - add global_names=true, db_directory=us.acme.com # thayes 11/27/91 - Change default for cache_clone # jloaiza 08/13/91 - merge changes from branch 1.7.100.1 # jloaiza 07/31/91 - add debug stuff # rlim 04/29/91 - removal of char_is_varchar2 # Bridge 03/12/91 - log_allocation no longer exists # Wijaya 02/05/91 - remove obsolete parameters # ############################################################################## # Example INIT.ORA file # # This file is provided by Oracle Corporation to help you start by providing # a starting point to customize your RDBMS installation for your site. # # NOTE: The values that are used in this file are only intended to be used # as a starting point. You may want to adjust/tune those values to your # specific hardware and needs. You may also consider using Database # Configuration Assistant tool (DBCA) to create INIT file and to size your # initial set of tablespaces based on the user input. ############################################################################### # Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at # install time) db_name='orcl' memory_target=900M processes = 150 audit_file_dest='/u01/app/oracle/admin/orcl/adump' audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' db_recovery_file_dest_size=2G diagnostic_dest='/u01/app/oracle/' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' # You may want to ensure that control files are created on separate physical # devices control_files = (ora_control1, ora_control2) compatible ='11.2.0' [oracle@srcxtts dbs]$
再次启动:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 939495424 bytes
Fixed Size 2218952 bytes
Variable Size 545260600 bytes
Database Buffers 385875968 bytes
Redo Buffers 6139904 bytes
7)启动到mount
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
解决办法:
网上找了一篇帖子,如下做的:
分析原因:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
1、 Oracle的共享内存段或信号量没有被释放;
2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
解决思路:
当发生1102错误时,可以按照以下流程检查、排错:
如果是HA系统,检查其他节点是否已经启动实例检查Oracle进程是否存在,如果存在则杀掉进程检查信号量是否存在,如果存在,则清除信号量检查共享内存段是否存在,如果存在,则清除共享内存段检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。具体做法:
首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。
其次、是因系统掉电引起数据库宕机的,系统在接电后被重启,因此我们排除了第二种可能种的1、2点。最可疑的就是第3点了。
查$ORACLE_HOME/dbs目录:
$ cd $ORACLE_HOME/dbs
$ ls sgadef*
sgadef* not found
$ ls lk*
/opt/oracle/product/ 10.2.0/db_1/dbs/lkSIMPLY
lkSIMPLY
果然,lk<sid>文件没有被删除。将它删除掉
$ rm lk*
删除后再次启动
SQL> alter database mount ;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
错误变成找不到控制文件了,这好办,我们新库,还没有控制文件,这个后面在说。
然后按照上面那篇帖子:
https://blog.csdn.net/lzwgood/article/details/26368323
把oracle的共享内存清了:
查看共享内存段
[root@simply bdump]# ipcs -map
------ Shared Memory Creator/Last-op --------
shmid owner cpid lpid
786444 root 6490 6438
819213 root 6549 6438
1409040 oracle 31502 16728
根据ID号清楚共享内存段
ipcrm –m 1409040
我这里操作是没有成功的,不过执行了下面的操作就ok了!
查看信号量
[root@simply bdump]# ipcs -s
key semid owner perms nsems
0x17ff6454 360448 oracle 640 154
清除oracle的信号量
[root@simply bdump]# ipcrm -s 360448
再次查询确认
[root@simply bdump]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
再查询共享内存段也ok了!
[root@simply bdump]# ipcs -m
再次启动的时候,又报了下面的错:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
后来df -h发现/dev/shm总共930M,现在可用只有400多M,而memory_target设置的是900M。
memory_max_target big integer 900M
memory_target big integer 900M
考虑/dev/shm大小不够,增大之:
mount -t tmpfs shmfs -o size=2g /dev/shm
修改配置文件/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=2g 0 0
全量重新挂载
mount -a
[oracle@srcxtts dbs]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_srcxtts-lv_root
21G 12G 7.3G 62% /
tmpfs 2.0G 538M 1.5G 27% /dev/shm
/dev/sda1 477M 60M 392M 14% /boot
shmfs 2.0G 538M 1.5G 27% /dev/shm
再次重新启动到mount:
SQL> alter database mount ;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
又回到控制文件的问题了,不要急,接着来。
截止到现在我们数据库用的还是pfile文件,要改成使用spfile文件:
SQL> show parameter pfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
SQL> create spfile from pfile ;
File created.
SQL> show parameter pfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount ;
ORACLE instance started.
Total System Global Area 939495424 bytes
Fixed Size 2218952 bytes
Variable Size 545260600 bytes
Database Buffers 385875968 bytes
Redo Buffers 6139904 bytes
SQL> show parameter pfile
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/spfileorcl.ora
现在已经改成使用spfile文件了。
8)下面就来搞控制文件,oracle静默安装好后,默认给了个空文件在/u01/app/oracle/oradata/orcl/control01.ctl
拷贝两份到/u01/app/oracle/product/11.2.0.1/db_home1/dbs/control01.ctl,/u01/app/oracle/product/11.2.0.1/db_home1/dbs/control02.ctl
改初始化参数配置
SQL> show parameter control
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/ora_control1,
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/ora_control2
control_management_pack_access string
DIAGNOSTIC+TUNING
SQL> alter system set control_files="/u01/app/oracle/product/11.2.0.1/db_home1/dbs/control01.ctl","/u01/app/oracle/product/11.2.0.1/db_home1/dbs/control02.ctl" scope=spfile
2 ;
System altered.
SQL> show parameter control
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/ora_control1,
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/ora_control2
control_management_pack_access string
DIAGNOSTIC+TUNING
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 939495424 bytes
Fixed Size 2218952 bytes
Variable Size 545260600 bytes
Database Buffers 385875968 bytes
Redo Buffers 6139904 bytes
SQL> show parameter control
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/u01/app/oracle/product/11.2.0
.1/db_home1/dbs/control01.ctl,
/u01/app/oracle/product/11.2.
0.1/db_home1/dbs/control02.ctl
control_management_pack_access string
DIAGNOSTIC+TUNING
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL> select instance_name,status from v$instance ;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
最后改完重启数据,然后就可以打开了。