今年上半年,由于工作调整,开始接手DBA的工作,负责ERP、数据库、服务器等的管理和维 护工作。在粗略看完Oracle Database 2 Day DBA的官方文档后,结合一些中文书目以及工 作中遇到的问题,对Oracle数据库有了初步的了解。但发现单看中文数目以及解决一个个突 发问题,还远远不够,于是开始阅读2 Day DBA的升级版文档Administrator’s Guide,并进 行一些尝试和实践,希望能够有进一步的理解。

在Adminstartor’s Guide的第二章,讲到了如何使用CREATE DATABASE语句手工创建数据 库。这个语句比MySQL的复杂多了,涵盖了Oracle数据库最核心的概念,需要有一定的基础 知识。按照参考文档的提示进行操作时,还是出现过一些错误,最后参考CSDN上的一篇 博客进行调整,成 功创建了数据库,这里记录如下。

测试环境

  • 操作系统 CentOS 6.0 x86 64bit
  • 数据库 Oracle 10.2

创建步骤

1. 规划sid,oracle home

export ORACLE_SID=MANUAL
export ORACLE_BASE=/db/oracle
export ORACLE_HOME=/db/oracle/product/10.2.0/db_1

2. 系统规划

ORACLE_SID=manual
DB_NAME=MANUAL
DB_DOMAIN=egolife.com

3. 手工创建必须的目录

dump目录

mkdir /db/oracle/admin/MANUAL/adump
mkdir /db/oracle/admin/MANUAL/bdump
mkdir /db/oracle/admin/MANUAL/cdump
mkdir /db/oracle/admin/MANUAL/udump
mkdir /db/oracle/admin/MANUAL/pfile

数据文件目录

mkdir /db/oracle/oradata/MANUAL

恢复目录

mkdir /db/oracle/flash_recovery_area/MANUAL

4. 建立密码文件

orapwd file=/db/oracle/product/10.2.0/db_1/dbs/orapwMANUAL password=oracle

5. 修改参数文件

编辑init.ora文件,更改主要配置:

MANUAL.__db_cache_size=331350016
MANUAL.__java_pool_size=4194304
MANUAL.__large_pool_size=8388608
MANUAL.__shared_pool_size=138412032
MANUAL.__streams_pool_size=0
*._kgl_large_heap_warning_threshold=8388608
*.audit_file_dest='/db/oracle/admin/MANUAL/adump'
*.background_dump_dest='/db/oracle/admin/MANUAL/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/db/oracle/oradata/MANUAL/control01.ctl',
'/db/oracle/oradata/MANUAL/control02.ctl',
'/db/oracle/oradata/MANUAL/control03.ctl'
*.core_dump_dest='/db/oracle/admin/MANUAL/cdump'
*.db_2k_cache_size=33554432
*.db_block_size=8192
*.db_domain='egolife.com'
*.db_file_multiblock_read_count=128
*.db_files=4000
*.db_name='MANUAL'
*.db_recovery_file_dest_size=4294967296
*.db_recovery_file_dest='/db/oracle/flash_recovery_area'
*.log_checkpoints_to_alert=FALSE
*.open_cursors=300
*.parallel_execution_message_size=65535
*.parallel_max_servers=128
*.pga_aggregate_target=209715200
*.processes=150
*.recyclebin='OFF'
*.remote_login_passwordfile='EXCLUSIVE'
*.replication_dependency_tracking=FALSE
*.session_cached_cursors=100
*.sga_target=500m
*.shared_pool_size=100m
*.undo_management='AUTO'
*.undo_retention=0
*.undo_tablespace='UNDOTS'
*.user_dump_dest='/db/oracle/admin/MANUAL/udump'
*.workarea_size_policy='AUTO'
_allow_resetlogs_corruption=true

6. 启动数据库

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup nomount pfile=/db/oracle/product/10.2.0/db_1/dbs/initMANUAL.ora;

ORACLE instance started.

Total System Global Area  524288000 bytes
Fixed Size     1220336 bytes
Variable Size   150995216 bytes
Database Buffers   364904448 bytes
Redo Buffers     7168000 bytes

7. 运行创建数据库脚本

CREATE DATABASE MANUAL
LOGFILE
GROUP 1 ('/db/oracle/oradata/MANUAL/redo01.log',
'/db/oracle/oradata/MANUAL/redo01_1.log') size 100m reuse,
GROUP 2 ('/db/oracle/oradata/MANUAL/redo02.log',
'/db/oracle/oradata/MANUAL/redo02_1.log') size 100m reuse,
GROUP 3 ('/db/oracle/oradata/MANUAL/redo03.log',
'/db/oracle/oradata/MANUAL/redo03_1.log') size 100m reuse
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 500
MAXINSTANCES 5
ARCHIVELOG
CHARACTER SET UTF8
NATIONAL CHARACTER SET UTF8
DATAFILE '/db/oracle/oradata/MANUAL/system01.dbf' SIZE 1000M EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/db/oracle/oradata/MANUAL/sysaux01.dbf' SIZE 1000M
UNDO TABLESPACE UNDOTS DATAFILE '/db/oracle/oradata/MANUAL/undo.dbf' SIZE 500M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/db/oracle/oradata/MANUAL/temp.dbf' SIZE 500M;

8. 运行必要的sql脚本(注意按以下顺序)

/db/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql
/db/oracle/product/10.2.0/db_1/rdbms/admin/catproc.sql

9. 创建相关表空间和用户

create tablespace users datafile '/db/oracle/oradata/MANUAL/users01.dbf' size 500M;
create tablespace indexes datafile '/db/oracle/oradata/MANUAL/index01.dbf' size 500M;

建立测试用户

create user dylan identified by 000000 default tablespace users;
grant connect,resource to dylan;

10. 改为spfile启动

create spfile from pfile;

重启数据库,并运行show parameter spfile,确认启动的参数文件类型。

11. Windows客户端测试

tnsnames.ora配置:

MANUAL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dev.egolife.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MANUAL.egolife.com )
    )
  )

运行tnsping MANUAL命令,并使用sqlplus进行连接测试。

参考



blog comments powered by Disqus

Published

01 October 2012

Categories

Tags

Github