Unix:
login: oracle
Password: xxxx
$
$ORACLE_HOME: /home/app/oracle/product/8.1.7
$ svrmgrl
SVRMGR>connect internal
SVRMGR> startup
SVRMGR> exit
[*]启动监听进程:
$lsnrctl start
如果在启动时报错,检查:/home/app/oracle/product/8.1.7/network/admin/listener.ora
$lsnrctl stop // 停止监听进程
$lsnrctl status // 显示监听进程状态
二、数据库启动过程:
1、启动数据库实例: ORACLE instance started
。读取参数文件
。分配SGA区
。启动后台进程
// 如果启动出现问题,有可能是因为参数文件有问题或者内存不足。
2、数据库安装:Database mounted
。读取控制文件
。打开控制文件
// 如果启动出现问题,可能是控制文件出现问题。
3、打开数据库:Database opened
。打开全部数据文件
。打开全部日志文件
// 如果有一个文件出现问题,则数据库不能启动。
数据库文件读取顺序:参数文件 ==> 控制文件 ==> 日志、数据文件,三类文件中不能有一个文件损坏,否则数据库不能启动。
SVRMGR> startup MOUNT --1、2 启动实例=> 安装数据库
SVRMGR> startup NOMOUNT -- 1 只启动数据库实例
(2) MOUNT的使用方式:
。用于修改数据库归档方式
。用于数据库恢复。Recovery命令在mount状态使用。
在mount状态,所有v$xxxx 数据字典可以使用,所有alter database命令可以使用。
。创建控制文件
。创建新的数据库
(4) 数据库在MOUNT下可以使用的选项:
SVRMGR> startup MOUNT
SVRMGR> Alter database ARCHIVELOG; // 将数据库由非归档方式修改为归档方式
[*] SVRMGR> Alter database NOARCHIVELOG; // 将数据库由归档方式修改为非归档方式
// SVRMGR> archive log list
// SVRMGR> select log_mode from v$database;
SVRMGR> Alter database OPEN; // 将数据库由MOUNT直接到OPEN状态。
SVRMGR> Alter database OPEN READ .LY; // 整个数据库以只读方式打开
SVRMGR> Alter database OPEN READ WRITE; // 整个数据库以读写方式打开(系统缺省方式,不需要写上READ WRITE)
//=====================================================================================================================
[A]
SVRMGR> startup PFILE=参数文件名称及路径
SVRMGR> startup PFILE=第一个数据库的参数文件名称及路径
SVRMGR> startup PFILE=第二个数据库的参数文件名称及路径
SVRMGR> startup RESTRICT // 限制性数据库启动命令,以这种方式启动数据库后,具有restricted session权限的用户可以连接数据库,其他用户不能连接。
SQL> grant restricted session to scott; // 指定权限
SQL> revoke restricted session from scott; // 收回权限
SQL> Alter system disable restricted session; // 解禁
SQL> alter system enable restricted session; // 禁止
SVRMGR> startup FORCE // 强制性数据库启动命令
SVRMGR> startup PFILE=c:\init.ora FORCE MOUNT
SVRMGR> startup force restrict pfile=c:\init.ora
在关闭服务器之前,必须使用shutdown命令先关闭数据库,再关闭操作系统。
SVRMGR> shutdown immediate // 立即关机。中断现在连接,回退未提交事务,不再接收用户的连接请求。(有的用户数据会丢失)
SVRMGR> shutdown abort // 异常关机。只关闭实例,释放内存,不保证数据完整性。尽量少用。
SVRMGR> shutdown transactional // 事务终结后关机。等待用户提交数据后关闭数据库。
四、数据库启动过程中失败恢复方法:
SVRMGR> startup mount
SVRMGR> alter database datafile '被删数据文件名及路径' OFFLINE;
// 在归档方式下,这个被删的文件可能通过归档日志恢复数据。
SVRMGR> alter database datafile '被删数据文件名及路径' OFFLINE DROP;
// 在非归档方式下,被删数据文件的内容绝对不可能恢复,所以只好DROP掉。
SVRMGR> startup mount
SVRMGR> Alter database drop logfile group n;
SVRMGR> Alter database add logfile group n('日志成员文件', '日志成员文件') size xxM;
创建控制文件的语法:
SVRMGR> startup nomount
Create controlfile database 数据库名称
logifle
group 1 (日志文件名及路径'', '日志文件名及路径') size xxM,
group 2 (日志文件名及路径'', '日志文件名及路径') size xxM,
...
noresetlogs
datafile
'第一个数据文件名称及路径' size xxM, // xxM中不能出现小数点儿,如果有小数,就使用K,如果仍然有小数,则使用字节。
'第二个数据文件名称及路径' size xxM,
...
character set zhs16gbk;
SVRMGR> startup nomount
Create controlfile database ora8i
logfile
group 1 ('d:\oracle\oradata\ora8i\redo01.dbf') size 1M,
group 2 ('d:\oracle\oradata\ora8i\redo02.dbf') size 1M,
group 3 ('d:\oracle\oradata\ora8i\redo03.dbf') size 1M,
noresetlogs
datafile
'd:\oracle\oradata\ora8i\system01.dbf' size 70M,
'd:\oracle\oradata\ora8i\rbs01.dbf' size 520M,
...
character set zhs16gbk;
// 通过这个命令来查询数据文件的大小,以Oracle中查询的数据为准,不要根据操作系统显示的文件大小来决定,建议事先做好备份。
SVRMGR> startup nomount
Create controlfile set database 新数据库名称 // 这一行有不同,注意:数据库的名称一般不要超过5个字符。
logifle
group 1 (日志文件名及路径'', '日志文件名及路径') size xxM,
group 2 (日志文件名及路径'', '日志文件名及路径') size xxM,
...
resetlogs // 这一行也有不同
datafile
'第一个数据文件名称及路径' size xxM, // xxM中不能出现小数点儿,如果有小数,就使用K,如果仍然有小数,则使用字节。
'第二个数据文件名称及路径' size xxM,
...
character set zhs16gbk;
五、检测数据库文件工具:DBVerify
C:\> dbv file=文件名及路径 logfile=输出结果文件名 blocksize=数据块大小(缺省是2K,否则指出) start=起始数据块 end=终止数据块
。Sun Solaris(Sun SPARC)(Solaris是Oracle目前运行最多的平台)
。HP-UX
。IBM-AIX
。COMPAQ Tru64-Unix(ALPHA)
。SCO UNIX(PC)
。Linux(PC)
。SGI
// 前三种平台上运行的最多
oinstall(Oracle8i, Oracle9i)
如果要加新组就在此文件中新加一行,如:
oinstall::20:oracle,oraweb
// gid < 1024,组号越大,权限越小。
oracle8i:x:30:20:Oracle8i for Unix:/u01/app/oracle/product/8.1.7:/bin/sh
用户名:x:用户号:组号:描述(可省略):文件系统名称:shell
//# sam HP-UX
//# scoadmin SCO UNIX
在Unix下安装数据库,最好使用Oracle建议设置的标准目录:
OFA(Optimal Flexible Architecture):将Oracle的系统文件与数据库文件分别存储。
$ORACLE_BASE
$ORACLE_HOME
则:$ORACLE_BASE = /u01/app/oracle // 这个目录下的各个子目录存放数据库文件
$ORACLE_HOME = /u01/app/oracle/product/8.1.7 // 这个目录存储系统文件
# cd app
# mkdir oracle
...
# mkdir 8.1.7
# chown -R oracle oracle // 将oracle(第二个)目录的属主改为oracle用户
ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export ORACLE_HOME
ORACLE_SID=ora8i // 数据库实例名
export ORACLE_SID
ORACLE_TERM=sun //终端类型,SCO为vt100,防止字符混乱
export ORACLE_TERM
NLS_LANG="simplified chinese"_china.zhs16gbk (oracle8.0以后)
.zhs16cgb231280(oracle 8以前,为保持数据兼容,如要导入oracle7的数据,建议选择这一个)
export NLS_LANG
LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORA_NLS33
TMPDIR=/var/tmp
export TMPDIR
PATH=/bin:$ORACLE_HOME/BIN:/usr/sbin;/opt/bin
export PATH
在安装光盘下运行:$./runInstall
[第四章 创建Oracle数据库、表空间管理、回退段管理]
1、确定数据库名、实例名、服务名
数据库名参数:db_name = prod
数据库实例名参数:instance_name = prod
域名:db_domain
数据库服务名参数:service_names = prod[.域名] //服务名等于:数据库名.域名,为了省事,一般不要域名。
db_name
instance_name
service_names
control_files : d:\oracle\oradata\prod\... 01 02 03
background_dump_dest: 后台信息跟踪文件的存储位置d:\oracle\oradata\prod\bdump
user_dump_dest: 用户信息跟踪文件的存储位置d:\Oracle\oradata\prod\udump
sql_trace = true
3、设置操作系统参数:主要是设置ORACLE_SID选择数据库实例
在Unix下设置实例的方法:
$ORACLE_SID=ora8i
$export ORACLE_SID
$ORACLE_SID=prod
$export ORACLE_SID
在Windows NT/2000下,有一个实例写在注册表中,如果要进入第二个数据库,设置方法如下:
C:\> set ORACLE_SID=ora8i
C:\> set ORACLE_SID=prod
语法:C:\>oradim -new -sid [实例名] -intpwd [口令] -startmode auto -pfile [数据库参数文件名称及路径]
。startmode: auto, manual
。参数文件名称及路径:
Unix:
/u01/app/oracle/admin/db_name/pfile/initSID.ora
/u01/app/oracle/product/8.1.7/dbs/initSID.ora // 这是oracle直接读取的参数文件
// 在Unix中上面的dbs目录是pfile目录的symbol link,即两上文件是同一个文件。
Windows:
d:\oracle\admin\db_name\pfile\init.ora
d:\oracle\ora81\database\initSID.ora // 这是oracle直接读取的参数文件
/*第二个文件指向第一个文件,上面这个文件可以随便放到什么位置,只要在第二个文件中通过IFILE指明了其位置,也可以直接用第一个文件的内容替换第二个文件的内容。*/
[*] 删除数据库实例方法:
D:\> oradim -delete -sid [实例名]
最后的命令格式为:
D:\> oradim -new -sid prod -intpwd prod -startmode auto -pfile d:\oracle\ora81\database\initprod.ora
SVRMGR> startup nomount
SVRMGR> create database prod
logfile group 1('d:\oracle\oradata\prod\log1a.log',
'd:\oracle\oradata\prod\log1b.log') size 2m,
group 2('d:\oracle\oradata\prod\log2a.log',
'd:\oracle\oradata\prod\log2b.log') size 2m
datafile 'd:\oracle\oradata\prod system01.dbf' size 200m
autoextend . next 10m maxsize 1000m
character set zhs16gbk;
//=====================================================================================================================
6、加载数据字典:
(1) 加载常用的数据字典:
SVRMGR>@d:\Oracle\ora81\rdbms\admin\catalog
SVRMGR>@/u01/app/oracle/product/8.1.7/rdbms/admin/catalog
SVRMGR>@d:\Oracle\ora81\rdbms\admin\catproc
SVRMGR> @d:\oracle\ora8i\javavm\install\initjvm
配置tnsnames.ora文件
d:\oracle]ora81\network\admin\tnsnames.ora
SQL> @d:\oracle\ora81\sqlplus\admin\pupbld.sql
D:\> lsnrctl status
查看相应的数据库是否已启动监听。如果没有启动监听,运行:
D:\> lsnrctl stop
D:\> lsnrctl start
重启监听程序。
程序组-> Database administration-> Database Configration Assistant
SVRMGR> show parameter license // 查看最大会话数,0表示没有限制
最大 缺省 说明
65534 254 最大数据库文件数
254 32 最大日志文件数
5 2 最大日志成员数
二、表空间管理
(1)语法:SQL> Create Tablespace tablespacename
Datafile 'filespec' Attributes
Default Storage
.line/offline;
(2)实例:
SQL> Create tablespace sales_2002
datafile
'D:\oracle\oradata\ora8i\sales_2002_01.dbf' size 100m,
'D:\Oracle\oradata\ora8i\sales_2002_02.dbf' size 100m
autoextend . next 100m maxsize unlimited, // 每个文件都可以加上这一行,表空间的扩展属性
'D:\oracle\oradata\ora8i\sales_2002_03.dbf' size 100m
default storage(initial 100k
next 100k
minextents 1
maxextents unlimited
pctincrease 0);
(3)查询表空间与数据文件对应关系:
SQL> select tablespace_name, bytes, blocks, autoextensible, file_name from dba_data_files;
default storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0)
TEMPORARY;
SQL> create table aa(c1 number(10)) tablespace sales_2002;
SQL> create table bb(c1 number(10)) tablespace temp_data;
C. 查询表空间类型:SQL> select tablespace_name, contents from dba_tablespaces;
SQL> Alter tablespace sales_2002 ADD
datafile
'd:\oracle\oradata\ora8i\sales_2002_04.dbf' size 10m,
'd:\oracle\oradata\ora8i\sales_2002_05.dbf' size 10m
autoextend . next 50m maxsize 1000m;
。将表空间脱机offline
SQL> Alter tablespace sales_2002 offline;
。物理移动:将要移动的表空间文件复制或移动到目的磁盘
。逻辑移动
SQL> alter tablespace sales_2002
rename datafile
'd:\oracle\oradata\ora8i\sales_2002_04.dbf',
'd:\oracle\oradata\ora8i\sales_2002_05.dbf'
to
'c:\sales_2002_04.dbf',
'c:\sales_2002.05.dbf';
。将表空间联机online
SQL> alter tablespace sales_2002 .line;
其中,system表空间数据文件不得移动。
default storage(
initial 1m
next 1m
minextents 2
maxextents 200
pctincrease 50);
3、删除表空间
SQL> Drop tablespace 表空间名; // 空的表空间。
SQL> Drop tablespace 表空间名 INCLUDING CONTENTS; // 如果表空间中已经建表,必须加Including contents参数。
表空间类型:数据字典管理表空间,本地化管理表空间
default storage(initial 40k next 40k minextents 1 maxextents 121 pctincrease 0);
SQL> Alter database datafile 'd:\oracle\oradata\ora8i\acc01.dbf' resize 50m;
SQL> Create tablespace account
datafile 'd:\oracle\oradata\ora8i\acc01.dbf' size 10m,
'd:\oracle\oradata\ora8i\acc02.dbf' size 10m
extent management local uniform size 50k;
// extent management local: 区本地化管理;uniform:每个区大小相同,如果不指定size,size默认是1m
SQL> select tablespace_name, extent_management, allocation_type from dba_tablespaces;
SQL> Create tablespace finance
datafile
'd:\oracle\oradata\ora8i\fina01.dbf' size 10m
extent management local autoallocate; // 缺省状况是autoallocate,如果只写extent management local。
SQL> Create tablespace finance
datafile
'd:\oracle\oradata\ora8i\fina01.dbf' size 10m
extent management local;
表大小 区大小
64K 64K
1m 1m
64m 8m
1000m 64m
SQL> Create temporary tablespace temp1
tempfile
'd:\oracle\oradata\ora8i\temp1_01.dbf' size 10m
extent management local uniform size 10k;
[临时表空间不得使用AutoAllocate选项,就算不写uniform,默认也是uniform]
SQL> select tablespace_name, extent_management, allocation_type from dba_tablespaces;
//=====================================================================================================================
四、回退段管理
1、创建回退段:rbs
SQL> create tablespace rbs
datafile 'd:\oracle\oradata\ora8i\rbs01.dbf' size 50m;
SQL> Create rollback segment rs01
tablespace rbs
storage(initial 40k next 40k
minextents 2 // 最少是2,不能是1
maxextents 121
optimal 120k); // optimal值的大小至少比2个区的大小要大才有意义,在本例中要大于80K。
回退段的工作过程:(80K不够用了)扩张->(使用结束)回缩到Optimal值 ->(120K不够用了)再扩张。
SQL> select segment_name, tablespace_name, status from dba_rollback_segs;
A. 使用create rollback segment 创建多个回退段,至少四个事务平均一个回退段
B. 修改参数文件,将创建的回退段写入下列参数:rollback_segments=(rs01,rs02,...)
C. 重新启动数据库
SQL> create public rollback segment rs10 tablespace rbs;
修改公共回退段,使公共回退段online:
SQL> alter rollback segment rs10 .line;
2、修改回退段
3、删除回退段
A. offline
B. SQL> drop rollback segment 段名;
C. 如果是私有回退段,需要将其从参数文件中去掉。