手工创建/删除数据库的步骤

今天和大家分享下数据库的创建和删除的步骤,里面有很多细节需要大家考虑。创建数据库不只是一个create database语句。删除数据库 drop database也不是随时都能执行的。
--创建数据库的步骤。
1.用户,文件系统,挂载点和网络的配置,内核参数配置
这个需要提前准备好。

2.ORACLE_HOME的安装和PSU
oracle_home的安装,这个也可以静默安装,不过有条件还是图形界面装,也省事。
最好打上最新的psu。省去不少潜在的问题。

3.初始化参数的考虑
有4个必备的参数。
db_name
undo_management=auto
control_files
sga_target
在这个基础上,需要考虑到一些性能参数.隐含参数
在此贴一个示例,可以在这个基础上进行修改。
*._db_block_numa=1
*._enable_NUMA_optimization=FALSE
*._kghdsidx_count=1
*._ksmg_granule_size=16777216
*._optimizer_cost_based_transformation='OFF'
*._optimizer_cost_model='IO'
*._optimizer_skip_scan_enabled=FALSE
*.aq_tm_processes=0
*.audit_file_dest='/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/oradmp/audit/'
*.compatible='11.2.0.2'
*.control_file_record_keep_time=30
*.control_files='/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/control/cntrl_1.dbf','/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/control/cntrl_2.dbf','/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/control/cntrl_3.dbf'
*.core_dump_dest='/dbtestPT1/oracle/TEST/oradmp/cdump/'
*.db_block_size=8192
*.db_cache_size=4096M
*.db_domain=''
*.db_file_multiblock_read_count=128
*.db_name='TEST'
*.db_writer_processes=4
*.deferred_segment_creation=FALSE
*.diagnostic_dest='/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/oradmp'
*.java_pool_size=500M
*.job_queue_processes=10
*.large_pool_size=500M
*.log_archive_dest='/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/arc'
*.log_archive_format='archTEST_%s_%t_%r.dbf'
*.log_buffer=10485760
*.nls_length_semantics='BYTE'
*.nls_territory='AMERICA'
*.open_cursors=3000
*.optimizer_dynamic_sampling=0
*.optimizer_index_caching=90
*.optimizer_index_cost_adj=10
*.parallel_max_servers=64
*.pga_aggregate_target=2147483648
*.processes=5000
*.recyclebin='OFF'
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan=''
*.sec_case_sensitive_logon=FALSE
*.session_cached_cursors=150
*.session_max_open_files=20
*.sessions=1330
*.sga_max_size=8G
*.sga_target=0
*.shared_pool_size=2147483648
*.transactions=1500
*.undo_management='AUTO'
*.undo_retention=3600
*.undo_tablespace='UNDOTBS1'

4.创建数据库
可以使用如下的脚本来创建。
我这个因为环境限制,把文件都争取放在一个目录下,好做测试。

connect / as SYSDBA
set echo on
set timing on
spool create_db.log
startup nomount pfile=/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/initTEST.ora
create database TEST
    maxinstances 1
    maxlogfiles 20
    maxlogmembers 5
    maxdatafiles  999
    character set AL32UTF8
    noarchivelog
 DATAFILE
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/SYSTEM_001.dbf' SIZE 5000M
SYSAUX DATAFILE
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/SYSAUX_001.dbf' SIZE 5000M
DEFAULT TEMPORARY TABLESPACE TEMP
 TEMPFILE
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/TEMP_001.dbf' SIZE 5000M
UNDO TABLESPACE UNDOTBS1
 DATAFILE
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/UNDOTBS_001.dbf' SIZE 5000M
LOGFILE
group 1
('/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g1_m1.dbf',
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g1_m2.dbf') SIZE 2048M,
group 2
('/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g2_m1.dbf',
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g2_m2.dbf') SIZE 2048M,
group 3
('/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g3_m1.dbf',
 '/dbtestPT1/oracle/TEST/oratmp01/temp/temp_db/redo_g3_m2.dbf') SIZE 2048M
;
spool off

创建的时候,可以观察到,文件的建立顺序不是按照语句的顺序来的。
基本是按照下面的顺序创建的。

    1. control files
    2. redo log files
    3. system tablespace
    4. sysaux tablespace
    5. undo tablespace
    6. temp tablespace

创建的时候报了如下的错误。
create database TEST
*
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: 13885
Session ID: 3781 Serial number: 3

查找了半天才发现自己在initTEST.ora的undo_tablespace指定成了‘UNDOTBS',结果创建的时候就找不到了。

5.数据字典初始化
先说一下sys和system的默认密码,sys的默认密码是change_on_install,system的是manager

sqlplus sys/change_on_install as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Mar 7 17:09:01 2014
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> 

脚本如下。
前两个sql脚本是必须的,
dbmspool.sql在安装gc的时候也需要,平时也可以用。
catblock.sql是和锁相关的脚本可以查看锁的一些明细。
脚本内容如下:
connect / as SYSDBA
set echo off
spool create2.log
@?/rdbms/admin/catalog.sql;   
@?/rdbms/admin/catproc.sql;
@?/rdbms/admin/dbmspool.sql
@?/rdbms/admin/catblock.sql;
@?/rdbms/admin/caths.sql;
@?/rdbms/admin/owminst.plb;
@?/sqlplus/admin/plustrce.sql;
connect SYSTEM/manager  
@?/sqlplus/admin/pupbld.sql;
@?/sqlplus/admin/help/hlpbld.sql helpus.sql;
spool off

6.创建额外的组件
安装JVM,XDB,statspack

--Install JVM
@?/javavm/install/initjvm.sql;
@?/xdk/admin/initxml.sql;
@?/xdk/admin/xmlja.sql;
@?/rdbms/admin/catjava.sql;

--Install XMLDB
@?/rdbms/admin/catqm.sql XDB SYSAUX TEMP
@?/rdbms/admin/catxdbj.sql;

--Install statspack
define default_tablespace='USERS' --这个表空间可以根据需要来创建
define temporary_tablespace='temp'
define perfstat_password='perfstat'

@?/rdbms/admin/spcreate

7.创建相应的表空间和数据文件
这个部分,如果已经有类似的环境,需要和其他环境的配置保持一致,可以这样做。
select dbms_metadata.get_ddl('TABLESPACE', ts.tablespace_name) from dba_tablespaces ts;

直接生成创建语句,自己简单改一下路径就可以了。
生成的语句如下:
CREATE TABLESPACE "TEST_DATA" DATAFILE
  '/dbtestPT1/oracle/TEST/oracnt02/redolog_A2/redo/redo04A.log' SIZE 10737418
24,
  '/dbtestPT1/oracle/TEST/oracnt04/redolog_B2/redo/redo04B.log' SIZE 10737418
24,
  '/dbtestPT1/oracle/TEST/oradata01/ggs_data01.dbf' SIZE 1073741824
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS  SEGMENT SPACE MANAGEM
ENT AUTO

8.数据库用户的创建
这个部分也可以省事些,参考其他的环境,生成一些脚本。
select dbms_metadata.get_ddl('USER',u.username) from dba_users u WHERE USERNAME like '%TEST%';
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT',u.username) from dba_users u WHERE USERNAME like '%TEST%';
select dbms_metadata.get_granted_ddl('ROLE_GRANT',u.username) from dba_users u WHERE USERNAME like '%TEST%';

如果要得到比较完整的脚本,可以参考这个,也是别人分享的。贴在这。
set serveroutput on size 1000000
set verify off
undefine user_name
declare
v_name varchar2(30) := upper('&user_name');
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM, 'SQLTERMINATOR', TRUE);
dbms_output.enable(1000000);
dbms_output.put_line(dbms_metadata.get_ddl('USER',v_name));
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('SYSTEM_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('– No system privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('ROLE_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('– No role privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('OBJECT_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('– No object privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA',v_name));
exception
when no_grant then dbms_output.put_line('– No tablespace quota specified');
end;
dbms_output.put_line(dbms_metadata.get_granted_ddl('DEFAULT_ROLE', v_name ));
exception
when others then
if SQLCODE = -31603 then dbms_output.put_line('– User does not exists');
else raise;
end if;
end;
/

9.网络,tns配置
这个部分比较常规,可以使用netca,netmgr来创建,也可以参考文档修改tnsnames.ora listener.ora

10.检查

--删除数据库
可能创建数据库的大家都接触过,删除的工作其实也不是一帆风顺的。

drop database这个命令老是看到,就是没有环境敢这么干。测试一把。
ORACLE instance started.

Total System Global Area 8551575552 bytes
Fixed Size                  2243608 bytes
Variable Size            4227859432 bytes
Database Buffers         4294967296 bytes
Redo Buffers               26505216 bytes
Database mounted.
SQL> drop database TEST;
drop database TEST
              *
ERROR at line 1:
ORA-00933: SQL command not properly ended

重启到mount阶段。
SQL> alter database mount exclusive;
Database altered.

SQL> drop database TEST;
drop database TEST
              *
ERROR at line 1:
ORA-00933: SQL command not properly ended

SQL> drop database;--要执行还是不容易的。
drop database
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode

SQL> alter system enable restricted session;
System altered.

SQL> drop database;
Database dropped.

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> 
SQL> 
SQL> 
SQL> 
SQL> show parameter insta
SP2-0640: Not connected
SQL> exit

时间: 2024-11-01 07:02:56

手工创建/删除数据库的步骤的相关文章

mysql中创建/删除数据库方法

创建数据库 命令:  代码如下 复制代码 create database <数据库名> 例1: 建立一个名为xhkdb的数据库  代码如下 复制代码 1.CREATE DATABASE 数据库名; 2.GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码'; 3.SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASS

手工创建数据库的完整步骤

手工建立数据库具体步骤 一建立存放数据库文件的目录和日志相关的文件目录 分别在$ORACLE_BASE\oradata 和 $ORACLE_BASE\admin目录下建立NEWDB目录 使用命令查看目录结构 [oracle@wang NEWDB]$ pwd /u01/app/admin/NEWDB [oracle@wang NEWDB]$ pwd /u01/app/oradata/NEWDB 二 确定ORACLE实例名 [oracle@wang NEWDB]$ export ORACLE_SID

ORACLE手工删除数据库

很多人习惯用ORACLE的DBCA工具创建.删除数据库,这里总结一下手工删除数据库实验的步骤,文中大量参考了乐沙弥的手动删除ORACLE数据库这篇博客的内容,当然还有Oracle官方相关文档.此处实验环境为Oracle Linux Server release 5.7,数据库版本为10.2.0.5.0   Step 1: .获得控制文件.数据文件,日志文件等相关信息 获取这些信息,一方面是为了后面的建库做参考,另外一个是为了验证后面一些操作,如果这些都没有必要,其实是可以可以跳过这一步的. SQ

手工创建数据库的全部脚本及其说明

创建|脚本|数据|数据库 手工创建数据库的全部脚本及其说明 手工创建数据库的全部脚本及说明 系统环境: 1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3.安装路径:D:\ORACLE 建库步骤: 1.手工创建相关目录 D:\Oracle\admin\test D:\Oracle\admin\test\adhoc D:\Oracle\admin\test\bdump D:\Oracle\admi

手工创建数据库的全部脚本及说明

创建|脚本|数据|数据库  手工创建数据库的全部脚本及说明 系统环境:  1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: Oracle 8i R2 (8.1.6) for NT 企业版 3.安装路径:D:\ORACLE 建库步骤:  1.手工创建相关目录 D:\Oracle\admin\test D:\Oracle\admin\test\adhoc D:\Oracle\admin\test\bdump D:\Oracle\admin\test\cdump D

如何在oracle中手工创建数据库

oracle中手工创建数据库的步骤: 1. 创建必要的相关目录 2. 创建初始化参数文件 3. 设置环境变量Oracle_sid 4. 创建实例 5. 创建口令文件 6. 启动数据库到nomount(实例)状态 7. 执行建库脚本 8. 执行catalog脚本创建数据字典 9. 执行catproc创建package包 10.      执行pupbld 11.      由初始化参数文件创建spfile文件 12.      执行scott脚本创建scott模式 13.      用命令测试数据

oracl使用DataBase Configuration Assistant创建、删除数据库

原文:oracl使用DataBase Configuration Assistant创建.删除数据库可以使用DataBase Configuration Assistant来创建一个心得数据库.Database Configuration Assistant简称是DBCA,是创建.配置以及管理数据库的一个工具. 一.创建数据库的一个具体的步骤:   1. 点击"开始"-"所有程序"-"Oracle"-"配置和移植工具"-&qu

深入浅析Oracle数据库管理之创建和删除数据库_oracle

Oracle数据库的数据文件(扩展名为DBF的文件)是用于保存数据库中数据的文件,系统数据.数据字典数据.临时数据.索引数据.应用数据等都物理地存储在数据文件中.用户对数据库中数据的操作,例如数据的插入.删除.修改和查询等,其本质都是对数据文件进行操作.所有数据文件占据空间的大小决定了数据库容量的大小. 一.数据库管理概述 在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是: (1)启动和关闭数据库: (2)创建数据库: (3)删除数据库: (4)调整初始化参数:

手工重新创建8i数据库

创建|数据|数据库 手工重新创建8i数据库  作者:llmmysun 1.查看原来的数据库文件,保存其位置和大小 SYSTEM/home/ora817/oradata/clubcore/system01.dbf   800M TOOLS/home/ora817/oradata/clubcore/tools01.dbf  250M RBS/home/ora817/oradata/clubcore/rbs01.dbf   1024M TEMP/home/ora817/oradata/clubcore