ORACLE
数据库使用技巧
目录
查看ORACLE下面有多少个实例
desc v$instace
select instance_number,instance_name from v$instance;
desc v$database
select name from v$database;
select instance_number,instance_name from v$instance;
desc v$database
select name from v$database;
SQLPLUS连接数据库
Sqlplus / as dba
1, 方法一(危险)
SQL>; update props$ set value$=' 新字符集 ' where name='NLS_CHARACTERSET';
SQL>; update props$ set value$=' 新字符集 ' where name='nls_nchar_characterset';
重起数据库
查看符集类型 : select * from v$nls_parameters;
us7ascii , WE8ISO8859P1 ,zhs16gbk ,zhs16cgb231280
then it is possible to use the :
2, 方法二
$ sqlplus ‘/ as sysdba’
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
Oracle 在Linux下面的安装方法
安装好RedHat9.0操作系统,确保安装了以下的RPM开发包
gcc
cpp
glibc-devel
compat-libstdc++
glibc-kernheaders
binutils
可以使用命令来查看是否已安装了这些包
[root@pkulinuxbosun root]# rpm -q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
gcc-3.2.2-5
cpp-3.2.2-5
compat-libstdc++-7.3-2.96.118
glibc-devel-2.3.2-11.9
glibc-kernheaders-2.4-8.10
binutils-2.13.90.0.18-9
[root@pkulinuxbosun root]#
2. 创建安装Oracle的用户和用户组
[root@pkulinuxbosun root]# groupadd dba
[root@pkulinuxbosun root]# groupadd oinstall
[root@pkulinuxbosun root]# useradd -g oinstall -G dba oracle
[root@pkulinuxbosun root]# passwd oracle
Changing password for user oracle.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[root@pkulinuxbosun root]#
3. 从Oracle官方网站下载Oracle9i安装文件并使用如下命令解包
zcat lnx_920_disk1.cpio.gz | cpio –idmv
zcat lnx_920_disk2.cpio.gz | cpio –idmv
zcat lnx_920_disk3.cpio.gz | cpio –idmv
然后会在当前目录下创建名为“disk1”、“ disk2”、“ disk3”三个子目录。
4. 设置内核参数,调节信号灯及共享内存
Oracle9i使用Linux的共享内存、交换区等资源进行工作,如果系统的的内核参数设置不能满足Oracle的需求,那么在安装或使用过程就会出现各种问题,因此建议配置或修改这些系统内核的参数。
打开/etc/sysctl.conf 文件,将下列数据写入到sysctl.conf的末尾并保存:
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
其中,kernel.shmmax是共享内存段最大尺寸,计算方法为:kernel.shmmax = 1024*1024*RAM(M)/2 (至少),kernel.shmmni是共享内存段最小尺寸。进入目录/proc/sys/kernel,可分别用命令:
#cat shmmax
#cat shmmni
#cat shmall
查看 kernel.shmmax 、kernel.shmmni、kernel.shmall的数值。
用命令:
#cat sem
可以查看kernel.sem的数值。其中, 250 是参数SEMMSL的值,32000是参数SEMMNS的值, 100是参数SEMOPM的值,而128则是参数SEMMNI的值。
接下来,打开/etc/security/limits.conf文件,将下列数据添加到 limits.conf的末尾并保存:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
这是设置Oracle对文件的要求。
当对/etc/sysctl.conf 文件和/etc/security/limits.conf文件修改并保存完毕后,请重新启动(reboot)redhat Linux9系统,这样设置的这些参数才能生效。
如果此时进入到/proc/sys/kernel路径,用上述的命令再次查看,就会看到设置的参数已经生效。
5. 设置环境变量
以oracle用户身份登录,打开编辑/home/oracle/.bash_profile文件,在文件末尾添加如下数据行并保存:
export LD_ASSUME_KERNEL=2.4.2
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/9.2.0
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin:/sbin
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
#DISPLAY=127.0.0.1:0.0
TMPDIR=/tmp
umask 022
这样oracle用户每次登录时都带有这些环境变量。
其中:ORACLE_HOME为系统软件的安装目录,本例子中的Oracle数据库安装在/oracle分区下,ORACLE_SID 为数据库的SID,这里可以自行设置。其中一句“export DISPLAY=hostIP:0.0”,在网上一些介绍安装Oracle的文章中提到过,但在登录时会报错,所以在环境变量中将其注释掉。
注意:
1) 此处的环境变量的配置工作尤其重要。很多在Linux下安装Oracle失败的原因都是因为环境变量没有配置正确,环境变量的配置直接影响到下面Oracle9i的安装和配置。所以提醒您在设置环境变量的时候多留神。
2) 编辑并保存/home/oracle/.bash_profile文件后,建议先注销退出oracle用户,然后再以oracle用户身份重新登录,这样可以测试一下配置的环境变量是否出错(例如在上面提到的hostIP的错误)。
6. 创建Oracle安装目录
在root用户下运行如下命令:
mkdir /oracle/product
mkdir /oracle/product/9.2.0
chown –R oracle:oinstall /oracle
mkdir /var/opt/oracle
chown oracle:dba /var/opt/oracle
chmod 755 /var/opt/oracle
7. 安装过程
接下来就可以进行Oracle9.2.0 for Linux 的安装工作了。
以oracle用户登录,启动X-window进行安装。
运行等一会后,就会出现Oracle Universal Installer(OUI)的图形界面,按照提示一步步点击“Next”安装即可。
前几步保持默认设置,当遇到输入“Unix Group Name”的时候,输入组名“dba”,点击“下一步”。
此时Oracle Universal Installer会生成一个建立Oracle Inventory所用的orainstRoot.sh文件,弹出一个提示框,需要用root身份来执行这个/orainstRoot.sh文件,此时可以再开启一个新的终端窗口(Terminal),按照提示窗口所写的目录路径来以root用户来执行orainstRoot.sh。等执行完毕后再回到提示窗口,按下“Continue”按钮继续安装。
当遇到要输入“全局数据库名(Global Database Name)和数据库SID”的窗口时,会发现数据库的SID已经按照环境变量中的设置的ORACLE_SID=YOUR_SID显示出来了。只需要把全局数据库名输入即可。
接下来的安装均按照默认设置来进行。
当遇到设置数据库的字符集的窗体时,不要选择默认的数据库字符类型。字符集(Character Set)是建立Oracle数据库时最重要的一项设定,如果设定的不正确,很可能造成在使用中无法正常存取中文数据。在这里我们最好选择第三个选项的下拉框,选择Simplifiled Chinese ZHS16GBK,按Next进入下一步。
在Oracle Universal Installer开始复制安装文件之前,会显示要安装的Oracle9i产品摘要,在确认无误后按下“Install”按钮就会开始安装了,这将是一个较长时间的过程,当然了,这和你机器的配置、运算速度和内存空间大小等都有关系。
在接下来的安装过程中会出现2个错误,我所看到的网上的文章中也都说到了,我在这里也描述一下:
第一个错误是Linking阶段的,当安装进度到69%的时候出现的,Oracle Universal Installer提示关于这个文件“/soft/oracle/network/lib/ins_oemagent.mk”有问题,这时我们可以暂时不要去管它,选择“ignore”,将其忽略,等整个安装过程完成以后,再来解决这个问题。
第二错误也是Linking阶段,当安装进度到84%的时候出现的,Oracle Universal Installer提示“Error in invoking target install of makefile $ORACLE_HOME/ctx/lib/ins_ctx.mk”出现错误。
这个时候就不要选择忽略了,可以修复这个错误,打开$ORACLE_HOME/ctx/lib/env_ctx.mk文件进行如下编辑,将光标定位到第1365行,也就是“INSO_LINK =”这一行,然后把“$(LDLIBFLAG)dl”这句加入到“INSO_LINK=-L$(CTXLIB)$ (LDLIBFLAG)m”的后面,修改后成为这个样子:
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl
$(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex
$(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch
$(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c
-Wl,-rpath,$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS)
然后保存$ORACLE_HOME/ctx/lib/env_ctx.mk文件,回到错误提示窗口,按“retry”按钮即可继续安装。
当数据库建立完毕,等安装程序将所有文件复制到系统之后,Oracle Universal Installer还会弹出一个提示信息窗口要求以root身分执行运行root.sh程序 ,root.sh位于 ORACLE_HOME 所指向的目录下。
等这里执行完毕后,如果一切正常,OUI会出现“The Installation Of Oracle9i Database Was successful.”的提示信息,此时说明Oracle920数据库在redhat Linux9上安装成功了!
如果此时还需要进行其它内容的安装,按下“Next Install”按钮可进行安装,否则,请按下“Exit”按钮退出OUI安装。
最后一步是修复一下刚才的那个错误,即Linking阶段安装到69%的时候出现的“/soft/oracle/network/lib/ins_oemagent.mk”这个错误。
以Oracle用户执行如下命令:
#cd $ORACLE_HOME/network/lib
#make -f ins_net_client.mk install
然后编辑$ORACLE_HOME/ctx/lib/ins_ctx.mk 文件的第13-14行,由:
ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)
改为:
ctxhx: $(CTXHXOBJ)
$(LINK) -ldl $(CTXHXOBJ) $(INSO_LINK)
保存$ORACLE_HOME/ctx/lib/ins_ctx.mk文件。
然后执行如下命令:
#make -f $ORACLE_HOME/ctx/lib/ins_ctx.mk install
将错误修复完成。
到此为止,Oracle920数据库在redhat Linux9上已经完全安装成功了。
Sqlplus的设置方法
set colsep' ';
//##--
域输出分隔符
set echo off; //##-- 显示 start 启动的脚本中的每个 sql 命令,缺省为 on
set feedback off; //##-- 回显本次 sql 命令处理的记录条数,缺省为 on
set heading off; //##-- 输出域标题,缺省为 on
set pagesize 0; //##-- 输出每页行数,缺省为 24, 为了避免分页,可设定为 0 。
set linesize 80; //##-- 输出一行字符个数,缺省为 80
set numwidth 12; //##-- 输出 number 类型域长度,缺省为 10
set termout off; //##-- 显示脚本中的命令的执行结果,缺省为 on
set timing off; //##-- 显示每条 sql 命令的耗时,缺省为 off
set trimout on; //##-- 去除标准输出每行的拖尾空格,缺省为 off
set trimspool on; //##-- 去除重定向( spool )输出每行的拖尾空格,缺省为 off
set echo off; //##-- 显示 start 启动的脚本中的每个 sql 命令,缺省为 on
set feedback off; //##-- 回显本次 sql 命令处理的记录条数,缺省为 on
set heading off; //##-- 输出域标题,缺省为 on
set pagesize 0; //##-- 输出每页行数,缺省为 24, 为了避免分页,可设定为 0 。
set linesize 80; //##-- 输出一行字符个数,缺省为 80
set numwidth 12; //##-- 输出 number 类型域长度,缺省为 10
set termout off; //##-- 显示脚本中的命令的执行结果,缺省为 on
set timing off; //##-- 显示每条 sql 命令的耗时,缺省为 off
set trimout on; //##-- 去除标准输出每行的拖尾空格,缺省为 off
set trimspool on; //##-- 去除重定向( spool )输出每行的拖尾空格,缺省为 off
建库步骤:
1 、手工创建相关目录
D:/Oracle/admin/test
D:/Oracle/admin/test/adhoc
D:/Oracle/admin/test/bdump
D:/Oracle/admin/test/cdump
D:/Oracle/admin/test/create
D:/Oracle/admin/test/exp
D:/Oracle/admin/test/pfile
D:/Oracle/admin/test/udump
D:/Oracle/oradata/test
D:/Oracle/oradata/test/archive
2 、手工创建初始化启动参数文件: D:/Oracle/admin/test/pfile/inittest.ora ,内容:
3 、手工创建 D:/Oracle/Ora81/DATABASE/inittest.ora 文件,
内容: IFILE='D:/Oracle/admin/test/pfile/inittest.ora'
4 、使用 orapwd.exe 命令,创建 D:/Oracle/Ora81/DATABASE/PWDtest.ora
命令: D:/Oracle/Ora81/bin/orapwd file=D:/Oracle/Ora81/DATABASE/PWDtest.ora password=ORACLE entries=5
5 、通过 oradim.exe 命令,在服务里生成一个新的实例管理服务,启动方式为手工
set ORACLE_SID=test
D:/Oracle/Ora81/bin/oradim -new -sid test -startmode manual -pfile "D:/Oracle/admin/test/pfile/inittest.ora"
6 、生成各种数据库对象
D:/>svrmgrl
-- 创建数据库
connect INTERNAL/oracle
startup nomount pfile="D:/Oracle/admin/test/pfile/inittest.ora"
CREATE DATABASE test
LOGFILE 'D:/Oracle/oradata/test/redo01.log' SIZE 2048K,
'D:/Oracle/oradata/test/redo02.log' SIZE 2048K,
'D:/Oracle/oradata/test/redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:/Oracle/oradata/test/system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
控制文件、日志文件在上面语句执行时生成
connect INTERNAL/oracle
-- 修改系统表空间
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
-- 创建回滚表空间
CREATE TABLESPACE RBS DATAFILE 'D:/Oracle/oradata/test/rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
-- 创建用户表空间
CREATE TABLESPACE USERS DATAFILE 'D:/Oracle/oradata/test/users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建临时表空间
CREATE TABLESPACE TEMP DATAFILE 'D:/Oracle/oradata/test/temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;
-- 创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE 'D:/Oracle/oradata/test/tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建索引表空间
CREATE TABLESPACE INDX DATAFILE 'D:/Oracle/oradata/test/indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
-- 使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
-- 修改 sys 用户的临时表空间为 TEMP
alter user sys temporary tablespace TEMP;
-- 创建数据字典表
@D:/Oracle/Ora81/Rdbms/admin/catalog.sql;
@D:/Oracle/Ora81/Rdbms/admin/catexp7.sql
@D:/Oracle/Ora81/Rdbms/admin/catproc.sql
@D:/Oracle/Ora81/Rdbms/admin/caths.sql
connect system/manager
@D:/Oracle/Ora81/sqlplus/admin/pupbld.sql
connect internal/oracle
@D:/Oracle/Ora81/Rdbms/admin/catrep.sql
exit
-- 生成 SQL*Plus 帮助系统
sqlplus SYSTEM/manager
@D:/Oracle/Ora81/sqlplus/admin/help/helpbld.sql helpus.sql
exit
-- 修改 system 用户默认表空间和临时表空间
svrmgrl
connect internal/oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit
7 、将 test 实例启动服务设置成自动启动方式
D:/Oracle/Ora81/bin/oradim -edit -sid test -startmode auto
1 、手工创建相关目录
D:/Oracle/admin/test
D:/Oracle/admin/test/adhoc
D:/Oracle/admin/test/bdump
D:/Oracle/admin/test/cdump
D:/Oracle/admin/test/create
D:/Oracle/admin/test/exp
D:/Oracle/admin/test/pfile
D:/Oracle/admin/test/udump
D:/Oracle/oradata/test
D:/Oracle/oradata/test/archive
2 、手工创建初始化启动参数文件: D:/Oracle/admin/test/pfile/inittest.ora ,内容:
3 、手工创建 D:/Oracle/Ora81/DATABASE/inittest.ora 文件,
内容: IFILE='D:/Oracle/admin/test/pfile/inittest.ora'
4 、使用 orapwd.exe 命令,创建 D:/Oracle/Ora81/DATABASE/PWDtest.ora
命令: D:/Oracle/Ora81/bin/orapwd file=D:/Oracle/Ora81/DATABASE/PWDtest.ora password=ORACLE entries=5
5 、通过 oradim.exe 命令,在服务里生成一个新的实例管理服务,启动方式为手工
set ORACLE_SID=test
D:/Oracle/Ora81/bin/oradim -new -sid test -startmode manual -pfile "D:/Oracle/admin/test/pfile/inittest.ora"
6 、生成各种数据库对象
D:/>svrmgrl
-- 创建数据库
connect INTERNAL/oracle
startup nomount pfile="D:/Oracle/admin/test/pfile/inittest.ora"
CREATE DATABASE test
LOGFILE 'D:/Oracle/oradata/test/redo01.log' SIZE 2048K,
'D:/Oracle/oradata/test/redo02.log' SIZE 2048K,
'D:/Oracle/oradata/test/redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:/Oracle/oradata/test/system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
控制文件、日志文件在上面语句执行时生成
connect INTERNAL/oracle
-- 修改系统表空间
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
-- 创建回滚表空间
CREATE TABLESPACE RBS DATAFILE 'D:/Oracle/oradata/test/rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
-- 创建用户表空间
CREATE TABLESPACE USERS DATAFILE 'D:/Oracle/oradata/test/users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建临时表空间
CREATE TABLESPACE TEMP DATAFILE 'D:/Oracle/oradata/test/temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;
-- 创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE 'D:/Oracle/oradata/test/tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建索引表空间
CREATE TABLESPACE INDX DATAFILE 'D:/Oracle/oradata/test/indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
-- 创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
-- 使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
-- 修改 sys 用户的临时表空间为 TEMP
alter user sys temporary tablespace TEMP;
-- 创建数据字典表
@D:/Oracle/Ora81/Rdbms/admin/catalog.sql;
@D:/Oracle/Ora81/Rdbms/admin/catexp7.sql
@D:/Oracle/Ora81/Rdbms/admin/catproc.sql
@D:/Oracle/Ora81/Rdbms/admin/caths.sql
connect system/manager
@D:/Oracle/Ora81/sqlplus/admin/pupbld.sql
connect internal/oracle
@D:/Oracle/Ora81/Rdbms/admin/catrep.sql
exit
-- 生成 SQL*Plus 帮助系统
sqlplus SYSTEM/manager
@D:/Oracle/Ora81/sqlplus/admin/help/helpbld.sql helpus.sql
exit
-- 修改 system 用户默认表空间和临时表空间
svrmgrl
connect internal/oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit
7 、将 test 实例启动服务设置成自动启动方式
D:/Oracle/Ora81/bin/oradim -edit -sid test -startmode auto
ORACLE创建实例!
第一步:创建用户
create user wsl
identified by kmust.net
default tablespace wsl
temporary tablespace temp;
第二步:赋予用户相应的权限
grant connect,resource to aa;
第三步:以该用户登录
connect wsl/kmust.net@oracle第四步:创建schema
create schema authorization wsl--创建名为wsl的方案
create table tab1(a number)
create table tab2(b number,c varchar2(10));
create user wsl
identified by kmust.net
default tablespace wsl
temporary tablespace temp;
第二步:赋予用户相应的权限
grant connect,resource to aa;
第三步:以该用户登录
connect wsl/kmust.net@oracle第四步:创建schema
create schema authorization wsl--创建名为wsl的方案
create table tab1(a number)
create table tab2(b number,c varchar2(10));
Oracle系统表查询
数据字典
dict
总是属于
Oracle
用户
sys
的。
1
、用户:
select username from dba_users;
改口令
alter user spgroup identified by spgtest;
2
、表空间:
select * from dba_data_files;
select * from dba_tablespaces;//
表空间
select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//
空闲表空间
select * from dba_data_files where tablespace_name='RBS';
//
表空间
对应的数据文件
select * from dba_segments where tables
SELECT A.TABLE_NAME,A.COMMENTS,B.COLUMN_NAME,B.COMMENTS FROM USER_TAB_COMMENTS A,USER_COL_COMMENTS B WHERE A.TABLE_NAME=B.TABLE_NAME
SELECT A.TABLE_NAME FROM USER_TAB_COMMENTS A,USER_COL_COMMENTS B WHERE A.TABLE_NAME=B.TABLE_NAME
ORACLE:创建表空间、回滚段、用户、表的详细语法
oracle
安装完后,可以这样登陆管理:
一、$sqlplus /nolog
$SQL>connect sys/manger as sysdba;
$SQL>startup;
二、在使用的时候要创建表空间,在9i后,好象回滚段默认是自动管理的,不需要干预,下面就是创建表空间,用户和授权(我们可以把表空间理解为一个数据库实例),在表空间上可以再创建表。
1:创建表空间
CREATE TABLESPACE ts_ggmail DATAFILE '/dev/name1' SIZE 2000M, '/dev/name2' SIZE 2000M
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MAXEXTENTS UNLIMITED PCTINCREASE 50 );
2:修改表空间
alter TABLESPACE ts_name add DATAFILE '/dev/name3' SIZE 2000M;
3:回滚段
CREATE ROLLBACK SEGMENT "RS01" TABLESPACE "TS_name"
STORAGE ( INITIAL 8M NEXT 8M MAXEXTENTS UNLIMITED);
4:创建用户和授权
CREATE USER tempuser IDENTIFIED BY tempuser
DEFAULT TABLESPACE TS_name1 TEMPORARY TABLESPACE TS_name2;
GRANT CONNECT TO tempuser;
GRANT DBA TO tempuser;
GRANT resource TO tempuser;
5:创建表
create table tablename
(
f1 NUMBER(10) not null,
f2 NUMBER(10) null ,
f3 NUMBER(3) defalut 0,
pt number(3) not null ,
constraint PK_tablename primary key (f1)
using index
tablespace ts_name
storage
(
initial 1m
next 1m
pctincrease 0
)
)
pctfree 10
tablespace ts_name
storage
(
initial 1m
next 1m
pctincrease 0
)
partition by range(pt)
(partition part000 values less than (1) tablespace ts_name,
partition part001 values less than (2) tablespace ts_name,
)
/
6:创建索引
create index i_tablename1 on tablename(f2)
tablespace ts_name
storage
(
initial 500k
next 500k
pctincrease 0
)
$SQL>connect sys/manger as sysdba;
$SQL>startup;
二、在使用的时候要创建表空间,在9i后,好象回滚段默认是自动管理的,不需要干预,下面就是创建表空间,用户和授权(我们可以把表空间理解为一个数据库实例),在表空间上可以再创建表。
1:创建表空间
CREATE TABLESPACE ts_ggmail DATAFILE '/dev/name1' SIZE 2000M, '/dev/name2' SIZE 2000M
DEFAULT STORAGE ( INITIAL 64K NEXT 64K MAXEXTENTS UNLIMITED PCTINCREASE 50 );
2:修改表空间
alter TABLESPACE ts_name add DATAFILE '/dev/name3' SIZE 2000M;
3:回滚段
CREATE ROLLBACK SEGMENT "RS01" TABLESPACE "TS_name"
STORAGE ( INITIAL 8M NEXT 8M MAXEXTENTS UNLIMITED);
4:创建用户和授权
CREATE USER tempuser IDENTIFIED BY tempuser
DEFAULT TABLESPACE TS_name1 TEMPORARY TABLESPACE TS_name2;
GRANT CONNECT TO tempuser;
GRANT DBA TO tempuser;
GRANT resource TO tempuser;
5:创建表
create table tablename
(
f1 NUMBER(10) not null,
f2 NUMBER(10) null ,
f3 NUMBER(3) defalut 0,
pt number(3) not null ,
constraint PK_tablename primary key (f1)
using index
tablespace ts_name
storage
(
initial 1m
next 1m
pctincrease 0
)
)
pctfree 10
tablespace ts_name
storage
(
initial 1m
next 1m
pctincrease 0
)
partition by range(pt)
(partition part000 values less than (1) tablespace ts_name,
partition part001 values less than (2) tablespace ts_name,
)
/
6:创建索引
create index i_tablename1 on tablename(f2)
tablespace ts_name
storage
(
initial 500k
next 500k
pctincrease 0
)
oracle数据库如何查询表的相关信息
在ORACLE中.每个用户都有USER_CONS_COLUMNS ,USER_TAB_COLUMNS,USER_CONSTRAINTS
这是查找主键的SQL
SELECT A.COLUMN_NAME FROM USER_CONS_COLUMNS A,USER_CONSTRAINTS B
WHERE A.TABLE_NAME=B.TABLE_NAME AND B.CONSTRAINT_TYPE='P'
AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.TABLE_NAME = ''
这是查找表的域的SQL
select * from USER_CONS_COLUMNS where table_name='SP_USER_INFO'
WHERE A.TABLE_NAME=B.TABLE_NAME AND B.CONSTRAINT_TYPE='P'
AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.TABLE_NAME = ''
这是查找表的域的SQL
select * from USER_CONS_COLUMNS where table_name='SP_USER_INFO'
哪些初始化参数最影响Oracle系统性能
分类:
ORACLE技术
什么是
SGA(系统全局区)
系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。主要包括:
数据库高速缓存(the database buffer cache),
重演日志缓存(the redo log buffer),
共享池(the shared pool),
数据字典缓存(the data dictionary cache)以及其它各方面的信息。
db_block_buffers
重演日志缓存(the redo log buffer),
共享池(the shared pool),
数据字典缓存(the data dictionary cache)以及其它各方面的信息。
db_block_buffers
1、 数据高速缓冲区
2、 访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。
3、 db_block_buffers以块为单位,假如DB_BLOCK_SIZE=2K,db_block_buffers=3200,则占用内存=3200*2K=6400K。
share_pool_size
1、 SQL共享缓冲池
2、 该参数是库高速缓存和数据字典的高速缓存。
Log_buffer
1、重演日志缓冲区
sort_area_size
sort_area_size
1、排序区
processes
processes
1、同时连接的进程数
global_names
global_names
1、如果“数据库链路名”和它所要连接的“数据库”拥有相同的名字,则设置global_names = TRUE,否则,设置global_names = FALSE
db_block_size
1、数据库块大小
2、Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。
3、数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。
2、Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。
3、数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。
open_links
1、同时打开的链接数
dml_locks
1、用户一次可对表设定锁的最大数目
2、如果有三个用户修改6个表,则需18个DML锁来实现并行操作,如果设定DML_LOCKS不够大,操作时执行将中断,你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的DML_LOCKS的值,但该值的大小对数据库的其他性能没有影响,所以一般都把它设得很大,远超过实际中可能达到的值,如果在系统运行中经常发生表锁死的现象,就应该考虑加大该值。
2、如果有三个用户修改6个表,则需18个DML锁来实现并行操作,如果设定DML_LOCKS不够大,操作时执行将中断,你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的DML_LOCKS的值,但该值的大小对数据库的其他性能没有影响,所以一般都把它设得很大,远超过实际中可能达到的值,如果在系统运行中经常发生表锁死的现象,就应该考虑加大该值。
open_cursors
1、打开光标数
这个参数可以同时被每个用户进程拥有,这个参数的最大值依操作系统不同而不同。在创建一个包含很多表的合成视图时,如果此参数很小,则视图创建会不成功。
dbwr_io_slaves
1、后台写进程数
Oracle入门基本知识一点通
分类:
ORACLE技术
1.一个表空间只能属于一个数据库。
2.每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)。
3.每个数据库最少有一个表空间(SYSTEM表空间)。
4.建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典。
5.每个数据库最少有两个联机日志组,每组最少一个联机日志文件。
6.一个数据文件只能属于一个表空间。
7.一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中。
8.建立新的表空间需要建立新的数据文件。
9.数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的。
10.并且以后不能改变,要想改变,只能重建数据库。
11.一个段segment只能属于一个表空间,但可以属于多个数据文件。
12.一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件。
13.PCTFREE和PCTUSED总和不能大于等于100。
14.单独一个事务不能跨越多个回滚段。
15.索引表不含ROWID值。
16.拥有不同大小的回滚段没有任何益处。
17.COMMIT后,数据不一定立即写盘(数据文件)。
18.一个事务即使不被提交,也会被写入到重做日志中。
19.Oracle 8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL 。
20.一个块的最大长度为16KB(有2K、4K、8K、16K)。
每个数据库最大文件数(按块大小)
2K块 20000个文件
4K块 40000个文件
8K块或以上 65536个文件
21.oracle server可以同时启动多个数据库 。
22.一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以,NT不可以)。
23.一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例 。
24.每个ORACLE数据库拥有一个数据库实例(INSTANCE)(OPS除外)。
25.所以,一套操作系统上同时可以有多个oracle数据库实例启动。
SQL> create sequence s_userinfo_id
start with 1 increment by 1
maxvalue 99999999
;
序列已创建。
SQL> select seq_id.nextval from dual;
NEXTVAL
----------
1
SQL> select seq_id.currval from dual;
CURRVAL
----------
1
SQL> drop sequence seq_id;
序列已丢弃。
序列已创建。
SQL> select seq_id.nextval from dual;
NEXTVAL
----------
1
SQL> select seq_id.currval from dual;
CURRVAL
----------
1
SQL> drop sequence seq_id;
序列已丢弃。