AG阅读总结3——oracle数据库实例删除+新建实例-阿里云开发者社区

开发者社区> 长烟慢慢> 正文

AG阅读总结3——oracle数据库实例删除+新建实例

简介: 1、删除数据库: 在linux下删除一个数据库很简单,只要删除相应的文件就可以了。来,咱开始: 1、进入$ORACLE_HOME/dbs  删除本数据库的初始参数文件 、密码文件: [oracle9@frogger dbs]$ pwd/u01/app/oracle/product/10.2.0.1/dbs[oracle9@frogger dbs]$rm init$ORACLE_SID.ora  ——这时我试着启动数据库,报01078错误,不能加载系统参数。
+关注继续查看

1、删除数据库:

在linux下删除一个数据库很简单,只要删除相应的文件就可以了。来,咱开始:

1、进入$ORACLE_HOME/dbs  删除本数据库的初始参数文件 、密码文件:

[oracle9@frogger dbs]$ pwd
/u01/app/oracle/product/10.2.0.1/dbs
[oracle9@frogger dbs]$rm init$ORACLE_SID.ora  ——这时我试着启动数据库,报01078错误,不能加载系统参数。
[oracle9@frogger dbs]$rm orapw$ORACLE_SID

2、进入$ORACLE_BASE/oradata/SID删除数据文件:

[oracle9@frogger oradata]$ ls
default_demo01.dbf  default_demo99.dbf  devdb02  duke1  test01  test01_bak  test02  testdk  testqa  ——很不理解为毛我的这个目录下面只有一个orcl的目录,他的这么多。。。
[oracle9@frogger oradata]$ ps -ef|grep smon
oracle9   7162     1  0  2008 ?        00:04:30 ora_smon_duke
oracle9   3313     1  0  2008 ?        00:02:30 ora_smon_testdk
oracle9   4386     1  0 Apr05 ?        00:00:07 ora_smon_test01
oracle9   4620     1  0 Apr05 ?        00:00:05 ora_smon_dvdsame
oracle9  12307  4426  0 22:53 pts/3    00:00:00 grep smon

 ——我的只有两个线程线程ora_smon_ORCL 和黄色那个。
[oracle9@frogger oradata]$rm -rf ORCL
[oracle9@frogger oradata]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      455G  381G   51G  89% /
/dev/sda1              99M   15M   80M  16% /boot
none                 1004M     0 1004M   0% /dev/shm
nfs-vip.certificatesnow.com:/u07
                      455G  230G  202G  54% /u07
[oracle9@frogger oradata]$ls
default_demo01.dbf  default_demo99.dbf  devdb02  duke1  test01  test01_bak  testdk  testqa

3、进入$ORACLE_BASE/admin下删除日志文件:

[oracle9@frogger admin]$ ls

devdb02  duke1  test01  test02  testdk  testqa

[oracle9@frogger admin]$ pwd

/u01/app/oracle/admin

[oracle9@frogger admin]$cd ORCL

[oracle9@frogger test02]$ ls

bdump  cdump  create  pfile  udump

[oracle9@frogger test02]$ cd ..

[oracle9@frogger admin]$ ls

devdb02  duke1  test01  test02  testdk  testqa

[oracle9@frogger admin]$ rm -rf ORCL

[oracle9@frogger admin]$ ls

devdb02  duke1  test01  testdk  testqa

[oracle9@frogger admin]$

此时我再次连接数据库,竟然出错了:ORA-09925: Unable to create audit trail file

有人说重启一下就好了,我也重启了一下,ok了。


4. 如果是用dbca创建的实例,则还要删除/etc/oratab文件中的实例信息,就一行。 删除就ok了。
/etc/oratab 运行root.sh产生的,中每一行代表一个ORACLE 实例,不允许有相同的名字,对已经存在的数据库会提示是否升级等,安装创建数据库的时候会去检查这个文件是否存在和并检查文件中的内容,在运行dbstart 时会检查这个文件,如果是Y就启动它,是N
就不管它。
[oracle9@frogger admin]$ cd /etc
[oracle9@frogger etc]$ more oratab
#
# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
# *:/u01/app/oracle/product/9.2.0.1:N
*:/u01/app/oracle/product/9.2.0.1:N
duke:/u01/app/oracle/product/9.2.0.1:N
test02:/u01/app/oracle/product/9.2.0.1:N
[oracle9@frogger etc]$


有网友说还要删除如下文件:

还要删除几个文件
rm -rf /usr/local/bin/coraenv
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /etc/ora*
rm -rf /opt/ORCLfmap(这个不确定)

查了一下文档,oracle对这几个文件是这样介绍的:

这个local/bin就叫做local bin 目录,其中环境变量 PATH中已经为每个用户设置了这个本地bin目录的环境变量,每个用户都会去访问这个local bin目录 下的内容。安装oracle之后运行root.sh脚本,这个脚本就会提醒你这个local bin 目录的位置,并且自动的复制oraevn,dbhome,coraevn这几个文件到你指定的目录。如果你不执行这个root.sh脚本,那你可以自己从$ORACLE_HOME/bin目录下拷贝到本地bin目录。


2、手动建立数据库:

1、设置环境变量:创建ORACLE_SID,怎么做呢?很简单,在/home/oracle 目录下有个隐藏的文件,叫 .bash_profile 这个就是关于环境变量的设置的,在里面添加 export ORACLE_SID=mynewdb。 然后要运行source .bash_profile 让这个新设置的环境变量生效,最后查看一遍 echo $ORACLE_SID 结果为:mynewdb。

具体的环境变量可以参照下面的内容:

PATH=$PATH:$HOME/bin:/sbin:/usr/local/bin

export PATH
unset USERNAME

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export ORACLE_SID=mynewdb

export PATH=$ORACLE_HOME/bin:$PATH

需要设置的环境变量主要就是这三个:ORACLE_BASE、ORACLE_HOME、ORACLE_SID和PATH
需要说明的是PATH变量的设置,需要将“$ORACLE_HOME/bin”写在“$PATH”之前,这样设置主要目的是:Oracle命令优先被选择。

下面是网上淘来的验证方法,我一般用自echo就可以了

确认ORACLE_SID等环境变量被正确设置
[oracle@secDB ~]$ env | grep -i sid
ORACLE_SID=secooler
[oracle@secDB ~]$ env | grep ORACLE_BASE
ORACLE_BASE=/u01/app/oracle
[oracle@secDB ~]$ env | grep ORACLE_HOME
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1


2、创建诊断目录,这些目录都是oracle进程遇到错误或者用户手动trace时用到的。

mkdir -p $ORACLE_BASE/admin/mynewdb/adump
mkdir -p $ORACLE_BASE/admin/mynewdb/bdump
mkdir -p $ORACLE_BASE/admin/mynewdb/cdump
mkdir -p $ORACLE_BASE/admin/mynewdb/udump
mkdir -p $ORACLE_BASE/admin/mynewdb/pfile
创建oracle的数据文件目录
mkdir -p $ORACLE_BASE/oradata/mynewdb


3.创建密码文件:
orapwd file=$ORACLE_HOME/dbs/orapwmydb password=admin entries=5 force=y


4.创建ORACLE的参数文件$ORACLE_HOME/dbs/initmynewdb.ora:创建的方法很犀利,直接用init.ora里面的参数,用一个名利将里面的内容输出出来,那句命令是这样的:cat init.ora |grep -v ^# |grep -v ^$ > initsecooler.ora

(1)进入到$ORACLE_HOME/dbs目录
[oracle@secDB ~]$ cd $ORACLE_HOME/dbs
(2)去掉默认init.ora文件中杂乱的内容,仅保留参数本身信息
[oracle@secDB dbs]$ cat init.ora |grep -v ^# |grep -v ^$ > initsecooler.ora
(3)调整initsecooler.ora参数内容
调整后的内容如下:
[oracle@secDB dbs]$ vi initsecooler.ora
db_name=mynewdb
db_files = 80                       # SMALL
db_file_multiblock_read_count = 8   # SMALL
#db_block_buffers = 100             # SMALL
#shared_pool_size = 3500000         # SMALL

log_checkpoint_interval = 10000
processes = 50                      # SMALL
parallel_max_servers = 5            # SMALL
log_buffer = 32768                  # SMALL
max_dump_file_size = 10240    # limit trace file size to 5 Meg each
global_names = TRUE
#control_files = (ora_control1, ora_control2)
control_files = (/u01/app/oracle/oradata/secooler/cfile/ora_control1,/u01/app/oracle/oradata/secooler/cfile/ora_control2,/u01/app/oracle/oradata/secooler/cfile/control3)
sga_max_size=300M
sga_target=300M
~
~

较之系统自带的参数文件做了如下修改动作:
a.修改db_name参数为mynewdb
b.注销掉参数db_block_buffers、shared_pool_size
c.修改controlfile参数
c.增加sga_max_size和sga_target参数,大小设置为300M。


这个是一个参考的参数设置:

aq_tm_processes=0
audit_file_dest=/oracle/admin/mydb/adump
background_dump_dest=/oracle/admin/mydb/bdump
compatible=10.2.0.1.0
control_files=/oracle/oradata/mydb/control01.ctl, /oracle/oradata/mydb/control02.ctl, /oracle/oradata/mydb/control03.ctl
core_dump_dest=/oracle/admin/mydb/cdump
db_block_size=8192
db_domain=""
db_file_multiblock_read_count=16
db_name=mydb
instance_name=mydb
dispatchers="(PROTOCOL=TCP) (SERVICE=mydbXDB)"
job_queue_processes=10
nls_length_semantics=BYTE
open_cursors=300
pga_aggregate_target=94371840
processes=150
remote_login_passwordfile=EXCLUSIVE
resource_manager_plan=""
sessions=170
sga_target=285212672
undo_management=AUTO
undo_retention=900
undo_tablespace=UNDOTBS1
user_dump_dest=/oracle/admin/mydb/udump


5、 创建spfile并调整

(1)使用sqlplus命令登陆创建spfile
[oracle@secDB dbs]$ sqlplus / as sysdba

SQL>create spfile from pfile;(会自动读取pfile:$ORACLE_HOME/dbs/init$ORACLE_SID.ora)
(2)启动数据库到nomount状态,调整spfile参数
a.启动数据库到nomount状态
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              96470416 bytes
Database Buffers          213909504 bytes
Redo Buffers                2973696 bytes

b.需要修改的spfile参数如下
SQL> alter system set undo_management=auto scope=spfile;
SQL> alter system set db_create_file_dest='/u01/app/oracle/oradata/mynewdb' scope=spfile;
SQL> alter system set db_create_online_log_dest_1='/u01/app/oracle/oradata/mynewdb' scope=spfile;
SQL> alter system set job_queue_processes =5 scope=spfile;
SQL> alter system set background_dump_dest='/u01/app/oracle/admin/secooler/bdump' scope=spfile;
SQL> alter system set core_dump_dest= '/u01/app/oracle/admin/secooler/cdump' scope=spfile;
SQL> alter system set user_dump_dest='/u01/app/oracle/admin/secooler/udump' scope=spfile;
SQL> alter system set audit_file_dest='/u01/app/oracle/admin/secooler/adump' scope=spfile;


一点小插曲:
我当时看到这上面的一串的时候,就跑到dbs目录下,开始编辑spfile文件,看了半天怎么里面有一些不认识的字符串,当时就删了它,还觉得这下子清爽了,接着再用alter system 这个句子往下改,结果马上报错了:

ORA-27046: file size is not a multiple of logical block size

怎么会这样子呢?原来当时忘了一点,他妈的这个spfile是二进制的文件。。。不能手工编辑。。如果手工编辑了,就成了无效的文件。

解决办法如下:

1。将SPFILE中的参数拷贝到init***.ora文件中

2。删除DATABASE目录下的SPFILE***.ORA文件。

3。启动数据库 (现在应该可以成功启动)

4。SQL> create spfile from pfile 生成SPFIEL

使用startup命令启动数据库,,Oralce将会按照以下顺序在缺省目录中(9i,10i在oracle_home/database目录下)搜索参数文件:(1)spfile***.ora文件 (2)如果没有spfile***.ora文件就用spfile.ora文件(3) 如果没有spfile.ora文件就用init***.ora(4)如果没有init***.ora文件就用 pfile.ora

所以上面我们采取的解决方法是将破坏的SPFILE中的参数复制到init***.ora中,然后删除SPFILE文件,这样启动时就会用init***.ora文件启动,然后用create spfile from pfile 命令生成SPFIEL

以后如果要修改SPFILE中的参数绝对不能在手工修改SPFILE文件了,用下面命令:alter system set parameter=Value scope=spfile|both|memory 例如:alter system set db_cache_size=24M scope=both;来修改


c.停起数据库到nomount状态使spfile调整生效
SQL>shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL>startup nomount;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              96470416 bytes
Database Buffers          213909504 bytes
Redo Buffers                2973696 bytes


6.创建数据库
1)编写create database脚本
(1)获取create database的参考脚本
在Oracle文档中中有一个供参考的创建语句
(1)进入到Oracle官方文档的首页:http://www.oracle.com/pls/db102/homepage;
(2)点击“Books”;
(3)在列出来的参考书目中的找到第5本书“Administrator's Guide”,点击“HTML”进入;
(4)搜索关键字“create database statement”,位到“Step 7: Issue the CREATE DATABASE Statement”,点击进入便可以得到创建数据库的参考脚本;

2)调整参考脚本中的内容为我所用
(1)需要调整的内容
数据库名字
SYS和SYSTEM密码
路径名修改,注意一定要准确全面
表空间tbs_1后面给出具体数据文件信息

(2)调整后的脚本如下

CREATE DATABASE mynewdb

USER SYS IDENTIFIED BY liu123

USER SYSTEM IDENTIFIED BY manager

LOGFILE GROUP 1 ('/home/oracle/oracle/oradata/mynewdb/redo01.log') SIZE 100M,

GROUP 2 ('/home/oracle/oracle/oradata/mynewdb/redo02.log') SIZE 100M,

GROUP 3 ('/home/oracle/oracle/oradata/mynewdb/redo03.log') SIZE 100M

MAXLOGFILES 5

MAXLOGMEMBERS 5

MAXLOGHISTORY 1

MAXDATAFILES 100

MAXINSTANCES 1

CHARACTER SET US7ASCII

NATIONAL CHARACTER SET AL16UTF16

DATAFILE '/home/oracle/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE '/home/oracle/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE

DEFAULT TABLESPACE tbs_1 datafile '/home/oracle/oracle/oradata/mynewdb/tbs_1.dbf' size 50m

DEFAULT TEMPORARY TABLESPACE tempts1

TEMPFILE '/home/oracle/oracle/oradata/mynewdb/temp01.dbf'

SIZE 20M REUSE

UNDO TABLESPACE undotbs

DATAFILE '/home/oracle/oracle/oradata/mynewdb/undotbs01.dbf'

SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

(3)运行如下命令创建数据库:

SQL>@/home/oracle/liutemp/createnewdb.sql\

大约一分钟的沉默,然后跳出 database created。。创建完成。


3)使用上面的create database脚本创建数据库
脚本执行之后,此时数据库状态已经为OPEN状态。
SQL> select status from v$instance;

STATUS
------------
OPEN

4)设置数据文件和临时文件为自动扩展
(1)获得所有数据文件和临时文件信息
SQL>col name for a60
SQL> select file#,name from v$datafile union select file#,name from v$tempfile;

     FILE# NAME
---------- ------------------------------------------------------------
         1 /u01/app/oracle/oradata/secooler/dfile/system01.dbf
         1 /u01/app/oracle/oradata/secooler/dfile/temp01.dbf
         2 /u01/app/oracle/oradata/secooler/dfile/undotbs01.dbf
         3 /u01/app/oracle/oradata/secooler/dfile/sysaux01.dbf
         4 /u01/app/oracle/oradata/secooler/dfile/tbs_1.dbf

(2)将其调整为自动扩展
SQL> alter database datafile 1 autoextend on;
SQL> alter database datafile 2 autoextend on;
SQL> alter database datafile 3 autoextend on;
SQL> alter database datafile 4 autoextend on;
SQL> alter database tempfile 1 autoextend on;

7.执行catalog.sql和catproc.sql脚本创建数据字典视图并配置


注意这两个脚本需要以SYSDBA身份来执行
[oracle@secDB ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 7 22:17:18 2010

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> @?/rdbms/admin/catalog.sql
... ...
... 大约需要5分钟 ...
... ...


SQL> @?/rdbms/admin/catproc.sql  
... ...
... 大约需要10分钟 ...
... ...

8.小结
手工创建数据库相比dbca来说繁琐了很多,不过整个安装过程体现的是Oracle的运行原理,对于理解数据库细节来说有很大的裨益。

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

下面是另一个网友的后面几步,有时间可以练练:


创建额外的表空间:

CONNECT SYS/password AS SYSDBA
-- create a user tablespace to be assigned as the default tablespace for users
CREATE TABLESPACE users LOGGING
DATAFILE '/u01/oracle/oradata/mynewdb/users01.dbf'
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
-- create a tablespace for indexes, separate from user tablespace
CREATE TABLESPACE indx LOGGING
DATAFILE '/u01/oracle/oradata/mynewdb/indx01.dbf'
SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;


7. 运行数据字典脚本,其中catalog和catproc是必需的,其它可选:
SQL> spool /orahome/cat.log
SQL> @?/rdbms/admin/catalog.sql       (建数据字典视图)
SQL> @?/rdbms/admin/catproc.sql       (建存储过程包)
SQL> @?/rdbms/admin/catblock.sql   (建锁相关的几个视图)
SQL> @?/rdbms/admin/catoctk.sql       (建密码工具包dbms_crypto_toolkit)
SQL> @?/rdbms/admin/owminst.plb       (建工作空间管理相关对象,如dmbs_wm)
SQL> spool off
执行完后检查/orahome/cat.log看看有什么不可接受的错误没有。

8. 新建sqlplus属性和帮助、USERS表空间
SQL> connect system/iamwangnc
SQL> @?/sqlplus/admin/pupbld.sql
SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql
SQL> connect /as sysdba
SQL> CREATE TABLESPACE USERS LOGGING DATAFILE '/orahome/oradata/WENDING/users01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 10m MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
SQL> ALTER DATABASE DEFAULT TABLESPACE USERS;

9. 最后修改为归档模式并重启(查看当前的数据库归档模式命令:archive log list)
SQL> shutdown immediate;
SQL> connect /as sysdba
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
重新编译所有失效过程:
SQL> execute utl_recomp.recomp_serial();

10、建立和配置EM(可选):
SQL> @?/sysman/admin/emdrep/sql/emreposcre /u01/app/oracle/product/10.2.0/db_1 SYSMAN iamwangnc TEMP ON;
SQL> alter user SYSMAN identified by "iamwangnc" account unlock;
SQL> alter user DBSNMP identified by "iamwangnc" account unlock;
SQL> host emca -config dbcontrol db -silent -DB_UNIQUE_NAME WENDING -PORT 1521 -EM_HOME /u01/app/oracle/product/10.2.0/db_1 -LISTENER LISTENER -SERVICE_NAME WENDING.LK -SYS_PWD "iamwangnc" -SID WENDING -ORACLE_HOME /u01/app/oracle/product/10.2.0/db_1 -DBSNMP_PWD "iamwangnc" -HOST "vmone" -LISTENER_OH /u01/app/oracle/product/10.2.0/db_1 -LOG_FILE /orahome/emConfig.log -SYSMAN_PWD "iamwangnc";

到此建库完毕!



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle实例恢复机制
整理自《OCP/OCA认证考试指南》 001      实例恢复不仅可以重新构成在崩溃时未被保存至数据文件的任何已提交事务,而且可以回滚已被写至数据文件的任何未提交事务。
780 0
Mysql总结_02_mysql数据库忘记密码时如何修改
1.从cmd进入mysql的bin下,输入命令  mysqld --skip-grant-tables  回车      注:(输入命令前,确保在任务管理器中已没有mysql的进程在运行,可输入命令:net stop mysql  来关闭mysql服务,切忌此命令结尾没有分号) mysqld --skip-grant-tables的作用:跳过了mysql的用户验证   2.重开一个新的命令行,输入命令:mysql,连上数据库。
736 0
关于ora-02391问题的总结
关于ORA问题的分析和解决其实是一个很好的学习思路,抓住一个每一个ORA错误,然后进一步分析一些原因,总结,总会有不一样的收获,还是那句话,任何问题背后都是有原因的。
595 0
+关注
长烟慢慢
系统架构师
806
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载