分类目录归档:ORACLE

sqlplus / as sysdba问题

在oracle自启动设置中,我们能够开机自启动oracle软件,实例,监听。
那么平时我们是用sqlplus sys/****** as sysdba命令来登录,启动脚本并不知道sys用户的密码,它是如何登录上去的呢?

经过查看脚本中是用sqlplus / as sysdba命令,它使用的是操作系统认证。使用这个命令登录,不需要sys用户密码,且登录后就是sys用户。

当oracle数据库的sys用户密码忘记的时候,可以通过操作系方式sqlplus / as sysdba进入数据库,然后执行alter user sys identified by xxx来修改sys用户密码。

对于执行sqlplus / as sysdba,要求操作用户在DBA用户组,如oracle用户可以执行此命令,而其他普通用户执行此命令时,会报权限不足的错误。

另外使用:
sqlplus /nolog;
conn / as sysdba;
也有和sqlplus / as sysdba同样的效果。

Linux下oracle自启动设置

以oracle 10g为例,oracle软件安装完后已经提供了数据库的启动脚本,我们只要自己写一个脚本调用它的脚本就可以了。

涉及的文件有:
/etc/oratab
$ORACLE_HOME/bin下的两个脚本,dbstart和dbshut

编辑配置文件:

vim /etc/oratab

将:

orcl:/u01/oracle/product/10.2.0/db_1:N

改为:

orcl:/u01/oracle/product/10.2.0/db_1:Y

随后最简单的方法,在/etc/rc.local中加入:

su - oracle -c "/u01/oracle/product/10.2.0/db_1/bin/dbstart"
su - oracle -c "/u01/oracle/product/10.2.0/db_1/bin/lsnrctl start"

在/var/log/boot.log里可以看到两个命令的执行结果。
在/u01/oracle/product/10.2.0/db_1/startup.log里可以看到dbstart的执行日志。
继续阅读Linux下oracle自启动设置

oracle入门(3)

oracle归档模式和非归档模式切换
oracle启动顺序简述

上一篇说到oracle的日志文件有联机重做日志和归档重做日志,只有在归档模式下,系统才会去写归档重做日志。

使用archive log list查看是否在归档模式下:

SQL> archive log list
Database log mode	       No Archive Mode
Automatic archival	       Disabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     176
Current log sequence	       177


一、非归档模式改为归档模式
1、命令:

shutdown;
startup mount;
alter database archivelog;
alter database open;
archive log list;

2、执行过程:

SQL> shutdown;  
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  835104768 bytes
Fixed Size		    2231096 bytes
Variable Size		  624952520 bytes
Database Buffers	  205520896 bytes
Redo Buffers		    2400256 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list;
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     176
Next log sequence to archive   177
Current log sequence	       177

继续阅读oracle入门(3)

oracle入门(2)

oracle文件系统简述

在上一篇讲表空间中说到,在启动实例时,需要加载数据库,而这个数据库是由datafile、redo log file、control file、archive log file、parameter file等一堆文件组成的,那么这些文件分别有什么作用呢?

1、oracle的启动文件
启动文件的位置在$ORACLE_HOME/dbs下,有两个文件init.ora和spfile<inst_name>.ora,inst_name是当前实例名称。
这两个文件定义了启动的参数。init.ora是文本文件,spfile<inst_name>.ora是二进制文件。

注意:spfile<inst_name>.ora不能用文本编辑器修改,打开也不行,可能会造成实例无法启动。需要用alter命令修改。

2、oracle的控制文件
控制文件是*.ctl,10g在/u01/oracle/oradata/<inst_name> 目录下。形如:control01.ctl、control02.ctl、control03.ctl。
11xe版在/u01/app/oracle/oradata/<inst_name> 目录下,但是文件名变为了control.dbf,本质都是数据文件(二进制格式),只是文件后缀不一样。

3、oracle的数据文件
数据文件是*.dbf,10g也在/u01/oracle/oradata/<inst_name> 目录下。在创建表空间时需要指定的数据文件就是.dbf。数据库中的表是存储在数据文件中的。
11xe版在/u01/app/oracle/oradata/<inst_name> 目录下。

4、oracle的其它参数文件
监听程序的参数文件:
10g在
/u01/oracle/product/10.2.0/db_1/network/admin/listener.ora
/u01/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
11xe版在
/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
/u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora
继续阅读oracle入门(2)

oracle入门(1)

oracle创建表空间及用户

oracle的学习对于像我这样的新手,还是要一步一步来,先把基本概念搞清楚。

我觉得oracle学习可以分为几个部分:
系统基本使用
系统调优
sql语句编写
sql调优
PL/SQL程序开发

以下讨论都是在单主机模式下进行。欢迎讨论指正。

问题1:什么是实例?
一个oracle软件安装完之后,它有一个默认的实例(instance),同时用户还可以在oracle中增加实例。
实例是一个内存结构(SGA+后台进程),每个实例有一组自己的进程组,用来管理运行实例。实例中包含了表空间、用户账户。

实例和实例之间是相互独立的。在逻辑上每个实例有自己的表空间、自己的用户。在物理上表空间内表的结构、数据和用户信息,存储在磁盘的数据文件和用户文件中。

一个实例只能打开一个数据库。
继续阅读oracle入门(1)

oracle中em与isqlplus按钮中文乱码问题

装好oracle后,登录em和isqlplus发现按键中文都是方块,以下是解决方法。

网上查了下,可能是font.properties中的字体系统不存在,所以显示乱码,替换这个文件即可。有两个地方需要替换。

cd $ORACLE_HOME/jdk/jre/lib
cp font.properties font.properties.bak
cp font.properties.zh_CN.Redhat font.properties

cd $ORACLE_HOME/jre/1.4.2/lib/
cp font.properties font.properties.bak
cp font.properties.zh_CN.Redhat font.properties


vim font.properties

查找filename,标识了字体文件的路径:

filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf

查看系统是否有中文字体文件:

cd /usr/share/fonts/

是否有zh_CN/TrueType目录,没有就创建。
将windows下的复制一个华文宋体的字体文件,到/usr/share/fonts/zh_CN/TrueType目录,改名为zysong.ttf。
继续阅读oracle中em与isqlplus按钮中文乱码问题

oracle开发工具

1、oracle SQL Developer
oracle官方出的开发工具,免费,可升级。
比较推荐,不是特别专注于数据库开发的人员使用。
需要安装:
1)JDK
2)SQL Developer软件

oracle SQL Developer 4.0.3 网盘下载地址:http://pan.baidu.com/s/1kT1LLpP

2、PL/SQL Developer
一家荷兰公司出的Oracle数据库开发工具,收费软件。
需要安装:
1)即时客户端instantclient-basic
2)plsqldev软件
3)注册机(或破解补丁)
4)汉化程序

DBA们用的很多,大多数是破解版。

3、TOAD
是一家专门做Oracle开发工具的公司做的,收费软件。
需要安装:
1)Toad软件
2)注册机(或注册码)

适合专业的数据库开发人员使用。

oracle生成测试数据

网上找了一个sql可以大批量生成测试数据:

create table myTestTable as 
  select 
    rownum as id, 
    to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, 
    trunc(dbms_random.value(0, 100)) as random_id, 
    dbms_random.string('x', 20) random_string 
  from dual 
    connect by level <= 1200000; 


执行时报错:
ORA-01536: 超出表空间 'USERS' 的空间限额

增加表空间:

alter user liu quota unlimited on users;

再执行时又报错:
ORA-30009: CONNECT BY 操作内存不足
or
ORA-30009: Not enough memory for CONNECT BY operation
继续阅读oracle生成测试数据

oracle rownum使用

rownum是oracle中神奇的列,它是一个伪列,是在sql查询出结果之后加在表上的。

oracle中rownum只能:
1)大于0,
2)等于1,
3)小于任何值。

1、大于0
比较:

select * from emp where rownum > 0;
select * from emp where rownum > 1;

rownum大于0,结果记录都返回。
rownum大于1,结果为空。

在执行过程中,rownum是从1开始的,判断rownum > 1时,第一条不满足会去掉,第二条又变成了1,所以最后结果会空。

2、等于1
比较:

select * from emp where rownum = 1;
select * from emp where rownum = 2;

rownum等于1,结果记录返回。
rownum等于2,结果为空。
继续阅读oracle rownum使用