unix下手动创建与删除 oracle10g 实例
建库步骤如下:
========以下步骤在root账户下执行==========================
1、 操作系统相关的准备
- 创建组和用户
groupadd dba
groupadd oinstall
useradd –m –g oinstall –G dba oracle
- 检查安装目录剩余空间大小
du –sh /opt(linux) bdf(hp) df -g(ibm)
- 设置oracle账户的环境变量
vi ~oracle/.profile
1 export ORACLE_BASE=/opt/oracle
2 export ORACLE_HOME=$ORACLE_BASE/product/10.2
3 export ORACLE_SID=cl //sid和库名最好不超过8位
4 export PATH=$PATH:$ORACLE_HOME/bin
使修改立即生效. ~oracle/.profile (source ~oracle/.profile)
- 建立需要的目录
rm –rf $ORACLE_BASE/admin/$ORACLE_SID
1 mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump // audit_file_dest审计跟踪日志文件的存放目录
2 mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/bdump // background_dump_dest 后台进程跟踪日志,包括告警日志
3 mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump // core_dump_dest
4 mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/udump // user_dump_dest 用户进程跟踪日志
5 //mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/create
6 //mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile // 参数文件存放路径
7 //mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/scripts
8 mkdir -p $ORACLE_BASE/arch/$ORACLE_SID // log_archive_dest_1归档路径
9 mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID // 数据文件(undo、temp、sysaux、system)、重做日志(redo)、控制文件(ctl)存放路径
10 chown -R oracle:oinstall $ORACLE_BASE //修改目录的所有者
11 chmod -R 775 $ORACLE_BASE //修改ORACLE_BASE及其子目录的权限
2、 oracle软件以及脚本的准备
- oracle软件准备:从其他服务器上rcp oracle的压缩包到目标机,并进行解压
rcp 远程ip地址:文件路径 本地文件路径
打包并且压缩:tar -cvfz /tmp/root.tar.gz . 把当前目录文件打包并用gzip压缩
tar -cvfj /tmp/root.tar.bz2 . 把当前目录文件打包并用bzip2压缩
查看压缩包: tar -tvfz /tmp/ root.tar.gz
tar -tvfj /tmp/root.tar.bz2
解压缩包: tar -xvfz /tmp/root.tar.gz -C /tmp/ddd
tar -xvfj /tmp/root.tar.bz2 -C /tmp/ddd
- 相关建库脚本准备:从其他服务器上rcp建库脚本到对应目录,并将其权限修改为oracle用户和oinstall组。(若脚本模版建库需要此步骤)
=========以下步骤在oracle用户下执行=========================
3、 若oracle从其他服务器拷贝过来,需要重新link文件
- relink all
4、 创建密码文件
- orapwd file=orapw$ORACLE_SID password=xxxxx
//$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=xxxx
========利用脚本模版建库执行以下步骤=========
5、利用建库脚本模版,执行建库
- 修改建库脚本模版(包括路径名、库名、实例名等)
可批量修改替换文件中指定的字符
1 ls | while read $aa
2 do
3 sed s/替换前的内容/替换后的内容/g $aa > $$aa.temp
4 mv $aa.temp $aa
5 done
- 执行建库脚本
1 $ORACLE_HOME/bin/sqlplus /nolog @/opt/chenliang/CreateDB.sql
2 $ORACLE_HOME/bin/sqlplus /nolog @/opt/chenliang/CreateDBCatalog.sql
3 $ORACLE_HOME/bin/sqlplus /nolog @/opt/chenliang/postDBCreation.sql
========手动建库则在步4之后执行如下操作===========
5、建立初始化参数文件
vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora
*.audit_file_dest='$ORACLE_BASE/admin/$ORACLE_SID/adump'
*.background_dump_dest='$ORACLE_BASE/admin/$ORACLE_SID/bdump'
*.core_dump_dest='$ORACLE_BASE/admin/$ORACLE_SID/cdump'
*.user_dump_dest='$ORACLE_BASE/admin/$ORACLE_SID/udump'
*.control_files=('$ORACLE_BASE/oradata/$ORACLE_SID/control01.ctl','$ORACLE_BASE/oradata/$ORACLE_SID/control02.ctl','$ORACLE_BASE/oradata/$ORACLE_SID/control03.ctl')
*.db_name='chenl'
*.db_unique_name=‘chenl’
*.db_block_size=8192
*.open_cursors=300
*.processes=300
*.sga_max_size=900M
*.sga_target=900M
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
//*.job_queue_processes=10
//*.log_archive_dest_1='location=$ORACLE_BASE/arch/$ORACLE_SID'
//*.compatible='10.2.0.4.0'
//*.log_archive_format='%t_%s_%r.arc'
//*.log_buffer=24538752
//*.sort_area_size=655360
//*.star_transformation_enabled='TRUE'
//*.streams_pool_size=32M
//*.backup_tape_io_slaves=TRUE
//*.pga_aggregate_target=3221225472
//*.db_file_multiblock_read_count=32
//*.disk_asynch_io=true
6、建立spfile后启动实例并开始建库
- 建立spfile
sqlplus "/as sysdba"
//startup nomount pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora';
create spfile from pfile;(会自动读取$ORACLE_HOME/dbs/init$ORACLE_SID.ora)
startup nomount //使用spfile将数据库启动到nomount
- 执行create database
CREATE DATABASE chenl CONTROLFILE REUSE
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXIN·STANCES 2
CHARACTER SET UTF8
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY xxxxx
USER SYSTEM IDENTIFIED BY xxxxx
LOGFILE GROUP 1 (‘/opt/oracle/oradata/chenl/redo01.log’) SIZE 100M REUSE,
GROUP 2 (‘/opt/oracle/oradata/chenl/redo02.log’) SIZE 100M REUSE,
GROUP 3 (‘/opt/oracle/oradata/chenl/redo03.log’) SIZE 100M REUSE
DATAFILE ‘/opt/oracle/oradata/chenl/system01.dbf’ SIZE 325M REUSE autoextend on next 100M maxsize unlimited EXTENT MANAGEMENT LOCAL
sysaux datafile '/opt/oracle/oradata/chenl/sysaux.dbf' size 1024M autoextend on next 100M maxsize unlimited
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE ‘/opt/oracle/oradata/chenl/temp01.dbf’ SIZE 20M REUSE
UNDO TABLESPACE undotbs1 DATAFILE ‘/opt/oracle/oradata/chenl/undotbs01.dbf’
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
- 新建USERS表空间
SQL> CREATE TABLESPACE USERS LOGGING DATAFILE '/opt/oracle/oradata/chenl/users01.dbf' SIZE 1024M REUSE AUTOEXTEND ON NEXT 100m MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
SQL> ALTER DATABASE DEFAULT TABLESPACE USERS;
- 修改为归档模式并重启
SQL> shutdown immediate;
SQL> connect /as sysdba
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
//SQL> execute utl_recomp.recomp_serial(); //重新编译所有失效过程: - 运行相关的数据字典脚本,其中catalog和catproc是必需的,其它可选:
SQL> spool /oradata/cat_chenl.log
SQL> @?/sqlplus/admin/pupbld.sql (sqlplus属性)
SQL> @?/sqlplus/admin/help/hlpbld.sql helpus.sql(sqlplus帮助)
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看看有什么不可接受的错误没有。
- 配置服务器端监听listener.ora
vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_CHENL=
(SID_LIST =
(SID_DESC =
(SID_NAME = chenl)
(ORACLE_HOME = /opt/oracle/product/10.2.0)
)
)
--------以下内容为非默认静态注册(缺省端口为1521,协议为tcp,如果不使用缺省值则加入下面内容)
CHENL=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
// (ADDRESS = (PROTOCOL = TCP)(HOST = archidba-vip)(PORT = 1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.25)(PORT = 1521))
)
)
)
- 配置客户端tnsnames.ora
chenl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.8.25)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = chenl)
)
)
- 启动监听
lsnrctl start (在oracle账户下执行)
tnsping chenl
sqlplus sys/cl851019@chenl as sysdba
- 调整undo为自动管理,设置undo数据过期时间为90分钟
SQL>alter system set undo_retention=5400;
- 调整process为500
SQL>alter system set processes=500 scope=spfile;
- 建立和配置EM(可选):
SQL> @?/sysman/admin/emdrep/sql/emreposcre /oracle/product/10.2 SYSMAN oracle TEMP ON;
SQL> alter user SYSMAN identified by "sysman" account unlock;
SQL> alter user DBSNMP identified by "dbsnmp" account unlock;
SQL> host emca -config dbcontrol db -silent -DB_UNIQUE_NAME ypyhtb -PORT 1521 -EM_HOME /oracle/product/10.2/bin -LISTENER LISTENER -SERVICE_NAME ypythb.LK -SYS_PWD "oracle" -SID ypythb -ORACLE_HOME /oracle/product/10.2 -DBSNMP_PWD "dbsnmp" -HOST "172.19.201.184" -LISTENER_OH /oracle/product/10.2 -LOG_FILE /oradata/ypythb/emConfig.log -SYSMAN_PWD "sysman"
==========手动删除数据库实例====================
1.停止监听与OEM
$ lsnrctl stop listener_name
$ emctl stop dbconsole
2.获得数据文件,日志文件及控制文件的相关信息,包含归档
$ sqlplus / as sysdba
SQL> select status,name from v$controlfile; --获取控制文件的位置信息
SQL> select * from v$dbfile; --获取数据文件的位置信息
SQL> select * from v$logfile; --获取日志文件的位置信息
SQL> archive log list; --查看归档的sequence及位置信息
SQL> shutdown abort; --因数据不再需要,直接shutdown abort
3.启动到 mount 状态(使用exclusive restart)
SQL> startup mount exclusive restrict;
4.修改参数为允许受限的会话模式
SQL> alter system enable restricted session;
5.使用drop database命令来清除数据库
SQL> drop database;
SQL> exit
6.手动清除相关文件
$ echo $ORACLE_SID --确认当前的ORACLE_SID
$ rm -rf $ORACLE_BASE/admin/$ORACLE_SID --删除oracle base目录下的$ORACLE_SID的所有内容
$ rm -rf $ORACLE_BASE/oradata/$ORACLE_SID --oradata下的数据文件,根据前面的查询,注意要删除不同路径下的数据文件
$ rm -rf $ORACLE_BASE/arch/$ORACLE_SID --清除归档日志,注意归档路径的正确性
$ rm -rf $ORACLE_BASE/flash_recovery_area/$ORACLE_SID --清除闪回区的内容
$ rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID* --清除参数和密码文件
7.清除监听相关文件(建议)
$ rm $TNS_ADMIN/*.ora --如果设定了$TNS_ADMIN变量,否则删除默认路径下的监听文件 */
$ rm $ORACLE_HOME/network/admin/*.ora */
8.修改oratab文件以及.profile
$ vi /etc/oratab --去掉实例相关的设置
$ vi ~orcle/.profile --去掉实例相关的设置