当前位置:首页 > 百科 > 正文内容

Oracle 初学者教材-oracle vmware

2023-08-19 13:24:33TONY百科23

Oracle 初学者教材

1.安装:

在安装之前要检查好变量,各方面条件符合后在安装,在62%时出错说明有一个链接没找到,设置出错,在/usr/bin/下将一个文件进行链接 ln -s libstdc++.so.6 libstdc++so.5

2.连接数据库的方法:

sqlplus username/password (一般用户)

sqlplus username/password as sysdba (sys,system)

1.通过浏览器连接字符界面

首先在服务器端开启服务:isqlplusctl start

http://IP:5560/isqlplus (/dba)

2.通过看、浏览器图形界面

开启服务:emctl start dbconsole

http://IP:1158/em

3. windows 客户端连接

一般用户只需写用户名和密码,但SYS需要写标识符 ora10 as sysdba;

出现一系列问题:

1、 ORA-12541: TNS:没有监听器

显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确.启动监听器:

$ lsnrctl start

C:\lsnrctl start

2、 ORA-12500: TNS:监听程序无法启动专用服务器进程

对于Windows而言,没有启动Oracle实例服务.启动实例服务:

C:\oradim startup -sid myoracle

3、 ORA-12535: TNS:操作超时

出现这个问题的原因很多,但主要跟网络有关.解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接.

4、 ORA-12154: TNS:无法处理服务名

检查输入的服务名与配置的服务名是否一致.另外注意生成的本地服务名文件(Windows下如D:\oracle\ora92\network\admin\tnsnames.ora,Linux/Unix下$ORACLEHOME/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格.

5、 ORA-12514: TNS:监听进程不能解析在连接描述符中给出的 SERVICENAME

打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确.该服务名必须与服务器端监听器配置的全局数据库名一致.

6、 Windows下启动监听服务提示找不到路径

用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常.打开注册表,进入HKEYLOCALMACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener项,查看ImagePath字符串项是否存在,如果没有,设定值为D:\oracle\ora92\BIN\TNSLSNR,不同的安装路径设定值做相应的更改.这种方法同样适用于Oracle实例服务,同上,找到如同HKEYLOCALMACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE项,查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:\oracle\ora92\binORACLE.EXE MYORACLE.

主要是要修改服务器下$ORACLEHOME/network/admin/tnsnames.ora 将HOSTNAME从服务器名改为IP地址,listen.org也要修改,

安装过程称修改口令,登入到数据库的名称和密码,而网路服务名只是登录到服务器的密码和账户.

3.用户信息:

解锁 scott账户

alter user scott account unlock identified by tiger;

查看用户信息:

select username,password fron dbausers;

修改密码

alter user scott identified by redhat;

疑问: alter不是修给表的结构吗?为何可以修改表的数据?

创建用户:

create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;

用户授权

grant connect,resource,dba to business;

提交

commit;

3.用数据库脚本创建数据库

如上面所述利用sqlplus以username 用户登陆,输入:@创建数据库的脚本名称.sql回车,即可创建数据库中的表、视图、存储过程等.注:以上的创建用户过程可以使用户的表中没有了系统自动产生的n多临时表.

1、按顺序安装如下包:中文支持fonts-chinese-3.02-12.el5.noarch.rpmm17n-db-common-cjk-1.3.3-46.el5.noarch.rpmm17n-db-chinese-1.3.3-46.el5.noarch.rpm中文输入法scim-libs-1.4.4-39.el5.i386.rpmscim-1.4.4-39.el5.i386.rpmscim-chinese-standard-0.0.2-1.el5.i386.rpmscim-tables-0.5.6-7.i386.rpmscim-tables-chinese-0.5.6-7.i386.rpmscim-pinyin-0.5.91-15.el5.i386.rpm2、安装完成后点击“系统-管理-语言”选择“简体中文”,转换语言环境.3、重启系统验证,还可以直接 ctrl+alt+backspac

但是安装顺序是:

1, rpm -ivh scim-libs-1.4.4-39.el5.i386.rpm

2, rpm -ivh scim-1.4.4-39.el5.i386.rpm

3, rpm -ivh scim-pinyin-0.5.91-15.el5.i386.rpm

安装完重启就可以使用ctrl + space切换.

解压缩tar文件:

tar -zxvpf 文件名

Oracle10G可以采用下面的方法

修改数据库字符集的方法:

connect system as sysdba ;

shutdown immediate ;

startup mount ;

alter system enable restricted session ;

alter system set JOBQUEUEPROCESSES=0;

alter system set AQTMPROCESSES=0;

alter database open ;

alter database character set internaluse ZHS16GBK ;

shutdown immediate ;

startup ;

解决方法2:修改/etc/sysconfig/iptables文件.增加2行.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1158-j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5560-j ACCEPT

面以Linux下的Oracle 10g为例,列出Oracle说明常用目录及其位置

ORACLEBASE:

为Oracle目录结构的根,该环境变量为指定计算机上的所有Oracle产品目录如:$ORACLEBASE=/u01/app/oracle

ORACLEHOME:

当前Oralce软件安装的主目录,通常该环境变量为由ORACLEBASE指示的路径下的一个目录

如:$ORACLEHOME=$ORACLEBASE/10g 完整的路径即为:$ORACLEHOME=/u01/app/oracle/10g

ORACLEHOME包含与Oracle软件运行有关的子目录和网络文件以及选定的组件等

$ORACLEHOME目录中的常用子目录如下:

/bin --主要包含用于数据库管理的各种命令等,如impdb,expdp,emctl,emca等

/css --与Oracle Cluster Synchronization服务有关的文件

/dbs --存放数据库服务器端的参数文件Spfile,如spfileorcl.ora,init.ora,密码文件orapworcl等

/demo --存放数据库实例模式的脚本等如humanresources的相关脚本

/install --用于存储ORACLE安装后的端口号,iSQL*Plus以及Enterprise Manager Database Control启动并登录的方式等,如该路径下的portlist.ini

/network/admin --有关监听器listener.ora和sqlnet.ora以及tnsnames.ora等

/sysman/config --用于与Oracle Enterprise Management有关的端口管理等

/rdbms 是Oracle关系型数据库管理系统,管理Oracle数据库的数据管理访问等

admin目录

位于$ORACLEBASE目录下,即$ORACLEBASE/admin/$ORACLESID主要存储的为Oracle 后台进程产生的相关文件及数据库管理文件

以下是其下常用的子目录

/adump --存储审计文件的目录(需要首先设置auditfiledest参数)

/bdump --后台进程跟踪文件(使用backgrouddumpdest参数进行设置)

/cdump --存储核心堆积文件(使用coredumpdest参数进行设置)

/create --存储用于创建数据库的脚本.创建新的数据库时,DBCA将创建数据库的脚本放置在这个目录

/exp --建议存储使用Export使用程序或Oracle Data Pump创建的数据库导出文件的目录

/pfile --初始化参数文件

/udump --存储用户进程跟踪文件,使用userdumpdest参数设置

oradata目录

Oracle数据库文件缺省存储该目录下,即$ORACLEBASE/$ORACLESID/oradata,主要包括数据库的控制文件、数据文件、重做日志文件.

dbf文件对应数据库中每个表空间

ctl文件为控制文件

log文件对应重做日志文件组及其成员

flashrecoveryarea目录

flashrecoveryarea目录存储并管理与备份和恢复有关的文件.它包含系统中每个数据库的子目录.

该目录可用于存储与恢复有关的文件,如控制文件、联机重做日志副本、归档日志、闪回日志以及Oracle数据库恢复管理器(RMAN)备份等.

查看及设置相关路径

--使用parameter查看

SQL> show parameter dump

oracle 的参数存放在$ORACLEBASE/admin/pfile 修改配置文件,启动之后才会生效(静态的)

系统有参数存放在$ORACLEHOME/dba/spfile.ora 以二进制的形式存放,是动态的,通过sql命令可以修改并立即生效

Oracle10g默认是spfile先启动,若是修改了sga的参数或是什么的导致Oracle起不来,则可以

create spfile from pfile;

或是启动的时候 startup /home/u01/app/oracle/product/10.2.0/db1/dbs/initora10.ora

SPfile 优先于pfile

修改参数:

altet system set 参数名=值 scope=参数2;

参数2取值有如下三种:

1. scope=spfile:对参数的修改记录在服务器初始化参数文件中,修改后的参数在下次启动DB时生效.适用于动态和静态初始化参数.

2. scope=memory:对参数的修改记录在內存中,对于动态初始化参数的修改立即生效.在重启DB后会丟失,会复原为修改前的参数值.

3. scope=both:对参数的修改会同时记录在服务器参数文件和內存中,对于动态参数立即生效,对静态参数不能用这个选项.

如果使用了服务器参数文件,则在执行alter system语句时,scope=both是default的选项.

如果沒有使用服务器参数文件,而在执行alter system语句时指定scope=spfileboth都会出错.

Oracle中启动AutoTrace查看SQL执行计划,监控所执行的查询的性能:

通过以下方法可以把Autotrace的权限授予Everyone,

如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权.

进入$ORACLEHOME/rdbms/admin下以dba身份进入,执行@utlxplan脚本,然后SQL> create public synonym plantable for plantable;同义词已创建

SQL> grant all on plantable to public ;授权

然后退出进入$ORACLEHOME/sqlplus/admin 同样以dba身份进入,执行@plustrce脚本,

运行grant plustrace to public ;这样即可使用AutoTrace

SQL> set autotrace on

SQL> set timing on

SQL>

关于Autotrace几个常用选项的说明:

SET AUTOTRACE OFF ----------------不生成AUTOTRACE 报告,这是缺省模式

SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告

SET AUTOTRACE ON STATISTICS --只显示执行统计信息

SET AUTOTRACE ON -----------------包含执行计划和统计信息

SET AUTOTRACE TRACEONLY ------同set autotrace on,但是不显示查询输出

SQL> set autotrace traceonly

SQL> select tablename from usertables;

Autotrace执行计划的各列的涵义

IDPLUSEXP:每一步骤的行号

PARENTIDPLUSEXP:每一步的Parent的级别号

PLANPLUSEXP:实际的每步

OBJECTNODEPLUSEXP:Dblink或并行查询时才会用到

AUTOTRACE Statistics常用列解释

db block gets

从buffer cache中读取的block的数量

consistent gets

从buffer cache中读取的undo数据的block的数量

physical reads

从磁盘读取的block的数量

redo size

DML生成的redo的大小

sorts (memory)

在内存执行的排序量

sorts (disk)

在磁盘上执行的排序量

约束:

记住:在用的dba....的表时,在用where 语句时,where=;里面的要用大写字母表示,存在表格的东西都是大写的.

外键可以是空,

dbaconstraints 表记录了所有表约束的信息,dbaobjects 是记录了所有表,东西的有关信息,可以通过objectid来查询所建立的表格:select objectid from dbaobjects where tabletype=TABLE order by objectid;

dbatables中记录了表的控制信息

SGA

一:SGA重要参数:

1.prepagesga

2.locksga

3.sgamaxsize,sga的上限值

alter system set sgamaxsize=522m scope=spfile(只能静态生效)

4.sgatarget 该值在sgamaxsize范围内活动

二:SGA主要包含6种缓存

1)dbbuffercache

show parameter dbcachesize(下限,由ASMM自动管理)

select currentsize from v$bufferpool(查看当前实际大小)

如果通过alter system set dbcachesize=100m scope=both;这只是修改了dbcachesize 的下限(也就是dbcachesize 每次分配都要大于100m),其他的由ASMM自动管理的都一样!

如果要修改实际的sharedpoolsize 则应该怎么办?因该同时缩小dbcachesize 的大小然后扩大相应sharedpoolsize的大小.在pfile文件中用vi静态修改,然后用pfile文件启动!再生成spfile文件即可!

dbcachesize 实际的大小会通过sgatarget的改变而改变,.

dbbuffercache主要由三部分组成 select name,currentsize from v$bufferpool;

1.default pool:可以自定义的开启cache特性 alter table aa cache/nocache;

查看select tablename,cache,bufferpool from dbatables where tabalename=;

2.keep pool :没有cache 特性,FTS之后数据然存放在MRU端

增加keep pool 内存:alter system set dbkeepcachesize=10m scope=both;

指定使用keep pool:create table aaa(n number) storage(bufferpool keep) or alter table bbb storage(bufferpool keep);

3.recycle pool:分配较小的空间,永远丢弃.创建如keep pool

4.dbnkcachesize(分成不同的内存块,小的节省空间,大的加快速度)

alter system set db16kcachesize=10m ;但事实上会分配12m 因为sga内存按照颗粒度大小granulesize分配内存,若sga<1G granulesize=4M (分配时会按4M的整数倍分配)

SGA>1G granulesize=8M.查看:select bytes from v$sgainfo where name=Granule size;

2)share pool;

分为一种是librarycache(sql语句缓存的,第一次为hard parse,而如果librarycache中有则进行soft parse)

select pool,sum(bytes) from v$sgastat group by pool;

查看library cache 的大小:

select sum(sharablemem) from v$dbobjectcache;

测试librarycache:

set timing on;

alter system flush sharedpool;清空缓存

利用绑定变量的方法可以大大减少sql语句的执行时间. PL/SQL自动进行了变量的绑定.

sql>varlable i char(6);

sql>exec:i:=95001(对i进行绑定)

sql>select * from student where sno=:i;

另一种是:data Dictionary 数据字典缓存区,

select * from dict;

select sum(sharablemem) from v$sqlarea;查看data dictionary cache 大小!

3)largepool:大池是系统全局区中的一个可选内存区,但通常在系统中会进行配置,大池主要以下几种情况使用

1.共享服务器存储用户全局区(UGA)信息

2.启用并行进程

3.使用RMAN作备份恢复

大池由参数largepoolsize 设置,也可以由数据库自动管理

4)javapool:Java 池也是系统全局区中的一个可选内存区,主要用于数据库中存储的Java程序的解析和执行,通常如果不需要在数据库中运行java程序,可以不启用就个内存区,但是如果在数据库创建时选择了安装JVM组件,那么这个池必须配置

5)streamsbuffer 默认是没有分配的,show parameter streamspoolsize;

6)redologbuffer:重做日志缓冲区,(固定的,不能由ASMM自动分配)重做日志主要被用于提供数据的恢复功能,应用日志前滚(roll forward)就是数据库的基本恢复原理

使用重做日志缓冲区的目的是为了提高DML或者DDL语句的执行速度,减少日志产生带来的性能影响,减少系统日志I/O的频度.

通过select * from v$sga;可以看到四个结果:

fix size:(固定的),是dictionary cache 的一部分与其他部分附加内存信息会被实例的后台进程访问,在实例启动后被固定咋SGA中,是固定的!

variable size:是可变的,包含librarycache、javapool,large pool,curdor area,control file content 等缓存,还包括尚未分配的sgamaxsize -sgatarget;

“Oracle 初学者教材-oracle vmware” 的相关文章

新赛季中超赛程:申花海港首轮遇强敌 第四轮上演申城德比-中超申花今天比赛结果

新赛季中超赛程:申花海港首轮遇强敌 第四轮上演申城德比-中超申花今天比赛结果

申花新主场——上海体育场新民晚报记者李铭珅摄2023赛季中超联赛的详细对阵表今天出炉,揭幕战将在4月15日晚间打响。沪上双雄申花海港首轮遭遇严峻考验,吴金贵的球队将在上海体育场迎战山东泰山;哈维尔挂帅的海港第一场将客场挑战武汉三镇。备受球迷期待的首回合上海德比,将在第4轮上演。申花赛程根据足协公布的...

D-詹姆斯:欧洲杯的经历收获积极因素,威尔士更渴望能出战世界杯-欧洲杯詹姆斯在哪一个球队打球

D-詹姆斯:欧洲杯的经历收获积极因素,威尔士更渴望能出战世界杯-欧洲杯詹姆斯在哪一个球队打球

直播吧9月7日讯 威尔士边锋丹尼尔-詹姆斯表示,今年夏天欧洲杯的经历给予他们自信心,他们更加渴望出现在世界杯的舞台,除此之外,丹尼尔-詹姆斯希望能融入新俱乐部利兹联。 “我认为有了今夏欧洲杯的经历让...

NBA常规赛:76人VS雄鹿 无关排名备战季后-76人vs雄鹿分析

NBA常规赛:76人VS雄鹿 无关排名备战季后-76人vs雄鹿分析

费城76人(-1.5)VS密尔沃基雄鹿 比赛时间:2019-04-05 08:00 比赛分析:NBA常规...

曾经的追风少年要退役了,相比郭艾伦,巅峰时期张庆鹏更值得信赖-追风少年致远

曾经的追风少年要退役了,相比郭艾伦,巅峰时期张庆鹏更值得信赖-追风少年致远

中超、CBA等本土职业体育联赛的球员,尤其是大牌球员们,少有如郑智、易建联般自律的。 职业球员是否在乎状态保持和体能管理,这不仅反映出一个职业联盟的整体文化和大环境,更将球员自身的...

CBA喜讯频频!郭艾伦已准备训练!林书豪希望在退役前来中国打球-郭艾伦和林书豪单挑全过程

CBA喜讯频频!郭艾伦已准备训练!林书豪希望在退役前来中国打球-郭艾伦和林书豪单挑全过程

对于中国人来说,接下来最重要的比赛,自然就是篮球世界杯了。目前男篮的20名球员已经正式集结,准备展开集训。不过并不是所有的成员都已经到场,就好像郭艾伦和易建联两人,目前就因为伤病的问题向球队请了假,他们估计要等到...

从1-1到0-0!葡萄牙踢疯了,冲21年神迹,赢球=8强,C罗或爆发-葡萄牙足球2022年度Quinas

从1-1到0-0!葡萄牙踢疯了,冲21年神迹,赢球=8强,C罗或爆发-葡萄牙足球2022年度Quinas

欧洲杯1/8决赛,C罗领衔的葡萄牙,碰上世界排名第一的比利时,可以预见,这是一场绝对的硬仗。对于葡萄牙来说,欧洲杯的赛程确实艰难,他们刚刚在死亡之组突围出来,转眼间就遭遇另外的强敌。利好的一点在于,葡萄牙头号巨星C罗状态火热,在此前3场欧洲杯比赛,C罗均有进球,一共狂造6球。数据显示,葡萄...