创建/删除数据库
方法1:DBCA图形建库(推荐)
如果在ORACLE安装环节,选择了第一项【创建并配置一个数据库】,那么在安装产品后(第八步)会自动进入DBCA图形建库的步骤,可以参考以上流程。
如果选择了第二项【仅安装数据库软件】,那么可以在oracle用户下,执行dbca,弹出以下界面,配置过程和oracle安装过程第八步之后的流程类似,在此不再赘述。
[oracle@bogon ~]$ dbca
方法2:手工建库
手工建库是创建数据库的一种快捷方式,能够不依赖图形工具轻松创建数据库实例,这种创建方式会创建最基础的数据库;如果需要额外的组件,可以在这个基础上进行添加。oracle建议利用DBCA建库。
主要创建过程:
1创建目录
根据具体的实际情况创建,db01为实例名
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/admin/db01/adump
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/admin/db01/dpdump
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/admin/db01/pfile
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/cfgtoollogs/dbca/db01
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/flash_recovery_area/db01
[oracle@bogon ~]$ mkdir -p /u01/app/oracle/oradata/db01
[oracle@bogon ~]$
2创建pfile
先复制一份原始pflie,从/U01/app/oracle/11.2.0/db1/dbs路径下获取init.ora,重命名为initdb01.ora,再打开编辑,命令行或可视化打开工具均可。
命令行打开方式:
[oracle@ bogon ~]$ vim product/11.2.0/dbhome_1/dbs/initdb01.ora
---->设置以下3个即可,其他保持默认值
name='db01'
memory_target=1G
control_files='/u01/app/oracle/oradata/db01/control01.ctl','/u01/app/oracle/oradata/db01/control02.ctl'
----init.ora原始文件关键片段截取
# Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at
# install time)
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
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'
3创建密码文件
[oracle@bogon~]$orapwd file=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwdb01 entries=10
Enter password for SYS:
[oracle@sz oracle]$
4连接实例
[oracle@sz oracle]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 5 05:42:59 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved
Connected to an idle instance.
5创建spfile
SQL> create spfile from pfile;
File created.
6启动到NoMount状态
SQL> startup nomount
ORACLE instance started.
Total System Global Area 521936896 bytes
Fixed Size 2254824 bytes
Variable Size 314574872 bytes
Database Buffers 201326592 bytes
Redo Buffers 3780608 bytes
SQL>
7创建数据库
SQL> create database db01
2 user SYS identified by oracle
3 user SYSTEM identified by oracle
4 logfile group 1 ('/u01/app/oracle/oradata/db01/redo01a.log') size 100M blocksize 512,
5 group 2 ('/u01/app/oracle/oradata/db01/redo02a.log') size 100M blocksize 512,
6 group 3 ('/u01/app/oracle/oradata/db01/redo03a.log') size 100M blocksize 512
7 maxlogfiles 5
8 maxlogmembers 5
9 maxloghistory 1
10 maxdatafiles 100
11 character set AL32UTF8
12 national character set AL16UTF16
13 extent management local
14 datafile '/u01/app/oracle/oradata/db01/system01.dbf' size 325M reuse
15 SYSAUX datafile '/u01/app/oracle/oradata/db01/sysaux01.dbf' size 325M reuse
16 default tablespace users
17 datafile '/u01/app/oracle/oradata/db01/users01.dbf' size 500M reuse autoextend on maxsize unlimited
18 default temporary tablespace tempts1
19 tempfile '/u01/app/oracle/oradata/db01/temp01.dbf'
20 size 50M reuse autoextend on maxsize unlimited --这里如果不加自动增长,使用一段时间将会报错,临时表存储空间不足
21 undo tablespace undotbs1
22 datafile '/u01/app/oracle/oradata/db01/undotbs01.dbf'
23 size 100M reuse autoextend on maxsize unlimited;
Database created.
SQL> select instance_name,status from v$instance;--->创建完数据库,数据库自动打开
INSTANCE_NAME STATUS
---------------- ------------
db01 OPEN
SQL>
8运行脚本建立数据字典视图
以SYSDBA管理权限运行下面的脚本:
SQL> @?/rdbms/admin/catalog.sql --->创建数据字典视图、动态性能视图和同义词
SQL> @?/rdbms/admin/catproc.sql --->运行所有PL/SQL需要或使用的脚本
SQL> @?/rdbms/admin/utlrp.sql --->重新编译失效状态的PL/SQL模块,包括包、过程或类型
以SYSTEM用户执行下面的脚本:
SQL> conn system/oracle
Connected.
SQL> @?/sqlplus/admin/pupbld.sql --->SQL*Plus相关的
9配置监听
方法1:利用Netmgr配置监听器和服务
[oracle@bogon ~]$ netmgr
方法2:直接修改配置文件listener.ora
标准格式示例:
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = test)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(GLOBAL_DBNAME = test)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(GLOBAL_DBNAME = orcl)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
10创建额外的表空间和数据文件
如果已经有类似的参考环境,可以使用DBMS_METADATA得到表空间的定义信息。
select dbms_metadata.get_ddl('TABLESPACE',ts.tablespace_name) from dba_tablespaces ts;
直接生成创建语句,简单修改一下路径即可。
SQL>select dbms_metadata.get_ddl('TABLESPACE',ts.tablespace_name) from dba_tablespaces ts;
DBMS_METADATA.GET_DDL('TABLESPACE',TS.TABLESPACE_NAME)
--------------------------------------------------------------------------------
CREATE TABLESPACE "SYSTEM" DATAFILE
'/U01/app/oracle/oradata/orcl/system01
CREATE TABLESPACE "SYSAUX" DATAFILE
'/U01/app/oracle/oradata/orcl/sysaux01
CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE
'/U01/app/oracle/oradata/orcl/u
DBMS_METADATA.GET_DDL('TABLESPACE',TS.TABLESPACE_NAME)
--------------------------------------------------------------------------------
CREATE TEMPORARY TABLESPACE "TEMP" TEMPFILE
'/U01/app/oracle/oradata/orcl/
CREATE TABLESPACE "USERS" DATAFILE
'/U01/app/oracle/oradata/orcl/users01.d
CREATE TABLESPACE "EXAMPLE" DATAFILE
'/U01/app/oracle/oradata/orcl/example
6 rows selected.
以上出现了显示不全的情况,需要设置一下sqlplus的显示参数,利用set long 1000和set pagesize 50一般即可解决。
11创建数据用户/权限
创建用户也可以通过DBMS_META_DATA来生成DDL语句,该方式高效简捷,例如,想得到用户名scott的创建用户语句和权限信息,可以实用如下方式:
select dbms_metadata.get_ddl('USER',u.username) from dba_users u where username='SCOTT'; --用户名区分大小写
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT',u.username) from dba_users u where username='SCOTT';
select dbms_metadata.get_granted_ddl('ROLE_GRANT',u.username) from dba_users u where username='SCOTT';
示例:
SQL> select dbms_metadata.get_ddl('USER',u.username) from dba_users u where username='SCOTT';
DBMS_METADATA.GET_DDL('USER',U.USERNAME)
--------------------------------------------------------------------------------
CREATE USER "SCOTT" IDENTIFIED BY VALUES 'S:0B59371D4FABAAAD18D50202881E5B
081185759B33BCE66E5EFBBA94AFE3;F894844C34402B67'
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
SQL> select dbms_metadata.get_granted_ddl('SYSTEM_GRANT',u.username) from dba_users u where username='SCOTT';
DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT',U.USERNAME)
--------------------------------------------------------------------------------
GRANT UNLIMITED TABLESPACE TO "SCOTT"
SQL> select dbms_metadata.get_granted_ddl('ROLE_GRANT',u.username) from dba_users u where username='SCOTT';
DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT',U.USERNAME)
--------------------------------------------------------------------------------
GRANT "CONNECT" TO "SCOTT"
GRANT "RESOURCE" TO "SCOTT"
12删除数据库(慎用)
删除数据库需要以下几步:
1将数据库重启至mount状态
alter database mount exclusive;
2更改会话模式
alter system enable restricted session;
3执行删库操作
drop database;
操作成功后,会将所有数据文件、控制文件、日志文件等物理文件删除。
--------------------本节末尾--------------------