begin dbms_output.enable(1000000); for i in 0..10000 loop dbms_output.put_line(SQLERRM(0-i)); end loop; dbms_output.disable(); dbms_output.enable(1000000); for i in 10001..20000 loop dbms_output.put_line(SQLERRM(0-i)); end loop; end; /
ORACLE_BASE=/app/oracle ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1/ ORACLE_SID=snpdb export ORACLE_BASE export ORACLE_HOME export ORACLE_SID PATH=$PATH:$ORACLE_HOME/bin export PATH
SQL> select * from syn;
--序列
SQL> select * from seq;
SQL> select * from user_sequences;
--数据库链路
SQL> select * from user_db_links;
--约束限制
SQL> select * from user_constraints;
SQL> select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;
--本用户读取其它用户对象的权限
SQL> select * from user_tab_privs;
--本用户所拥有的系统权限
SQL> select * from user_sys_privs;
--Oracle系统中的所有用户
SQL> select * from all_users;
SQL> select username from all_users;
SQL> select * from all_users order by user_id;
--表空间剩余自由空间情况?
SQL> select tablespace_name,sum(bytes),max(bytes),count(*) from dba_free_space group by tablespace_name;
--数据字典
SQL> select table_name from dict order by table_name;
--锁及资源信息
SQL> select * from v$lock;
--不包括DDL锁数据库字符集?
SQL> select name,value$ from props$ where name='NLS_CHARACTERSET';
--inin.ora参数
SQL> select name,value from v$parameter order by name;
--SQL共享池
SQL> select * from v$sqlarea;
SQL> select sql_text from v$sqlarea;
--数据库
SQL> select * from v$database;
--控制文件
SQL> select * from V$controlfile;
--重做日志文件信息
SQL> select * from V$logfile;
--来自控制文件中的日志文件信息
SQL> select * from V$log;
--来自控制文件中的数据文件信息
SQL> select * from V$datafile;
--NLS参数当前值
SQL> select * from V$nls_parameters;
--ORACLE版本信息
SQL> select * from v$version;
--描述oracle后台进程
SQL> select * from v$bgprocess;
--查看oracle版本信息
SQL> select * from v$instance;
SQL> select * from product_component_version;
SQL> select name from v$database;
SQL> show parameter db;
SQL> select value from v$parameter where name='db_name';
----查看oracle 数据库实例名(Instance_name、ORACLE_SID)
SQL> select instance_name from v$instance;
SQL>show parameter instance;
SQL> select value from v$parameter where name='db_name';
方法三:在参数文件中查询
如:$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora
----查看oracle 数据库域名、全局数据库名、数据库服务名
三、数据库名与实例名之间的关系。
数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,
如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
但在8i、9i的并行服务器结构(即oracle实时应用集群)中,数据库与实例之间是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)
四、什么是数据库域名?
在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,
数据库域名主要用于oracle分布式环境中的复制。举例说明如:
全国交通运政系统的分布式数据库,其中:
福建节点: fj.jtyz
福建厦门节点: xm.fj.jtyz
江西: jx.jtyz
江西上饶:sr.jx.jtyz
这就是数据库域名。
数据库域名在存在于参数文件中,他的参数是db_domain.
查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
SQL> select value from v$parameter where name='db_domain';
VALUE
-----------------------------------------------------------
方法二:show parameter domain
SQL> show parameter domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------
db_domain string
方法三:在参数文件中查询。
五、全局数据库名
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
六、什么是数据库服务名?
从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAMES。
如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_names';
SQL> select value from v$parameter where name='service_names';
VALUE
--------------------------------------------------------------
orcl
方法二:show parameter service_name
SQL> show parameter service_name;
NAME TYPE VALUE
------------------------------------ ----------- ---------
service_names string orcl
方法三:在参数文件中查询。
数据库服务名与网络连接
从oracle8i开始的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名
Oracle DBA 学习与 成长
Oracle11g Data Guard新特點
http://space.itpub.net/304518/viewspace-348033
一、物理(Physical)standby新特点
下面是11g 物理standby数据库几个比较实用的特点。
1、Physical standby with Real Time Query
2、加快standby数据库备份的速度
3、Snapshot Standby
4、提高Redo Apply的性能
Oracle11g可以利用并行技术来进行Redo Apply ,提高恢复的速度。
二、逻辑(Logical)standby的新特点
1、支持的数据类型更多了。 XMLType data type (最为CLOB存储)
2、支持下面oracle包和数据加密 支持精细的审计功能和虚拟数据库功能
3、Fast-Start Failover 更快速执行失败切换,更精细控制触发Failover的事件,比如:可以具某ORA错误号。
(从Oracle 10g开始需要固定ip地址,利用微软自带内环网卡作固定ip支持)
体验在WINXP上安装ORACLE11g
http://www.lupaworld.com/viewthread_31337.html
http://www.lupaworld.com/bbs/attachment.php?aid=6390
Oracle_FAQ.chm
http://techbbs.enet.com.cn/attachment.php?aid=1172
http://www.oracle.com/technology/documentation/database11gR1.html
Oracle 启动和关闭
http://kingrank.iteye.com/blog/238385
常用的有:
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
2、startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机、
重新定位数据文件、重做日志文件。
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
但此时不对数据文件和日志文件进行校验检查。
3、startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
这种方式下可访问数据库中的数据。
4、startup,等于以下三个命令
startup nomount
alter database mount
alter database open
5、startup restrict
约束方式启动
这种方式能够启动数据库,但只允许具有一定特权的用户访问
非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: Oracle 只允许具有 RESTRICTED SESSION 权限的用户使用
6、startup force
强制启动方式
当不能关闭数据库时,可以用startup force来完成数据库的关闭
先关闭数据库,再执行正常启动数据库命令
7、startup pfile=参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora
8、startup EXCLUSIVE
有三种启动方式:
1)、shutdown normal
正常方式关闭数据库。
2)、shutdown immediate
立即方式关闭数据库。
在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
3)、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,
如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
Oracle安装完成后的初始口令
默认帐号应该是sysdba
internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp
Id:sys as sysdba Pwd:sys Id:sys as sysoper Pwd:sys
Oracle安装完成后的修改口令
internal/oracle sys/sys system/system scott/tiger sysman/orcl dbsnmp/orcl
自动重新安装,忘记密码解决方法:
开始----运行----打开 sqlplusw
用户名:sqlplus as sysdba
输入:ALTER USER DBSNMP ACCOUNT UNLOCK;
注:由于刚才解锁的用户名是DBSNMP,所以这里设置的用户名也是DBSNMP
Oracle 数据库 11g 中的 ASM 新特性
http://www.oracle.com/technology/global/cn/products/database/asm/index.html
http://www.oracle.com/technology/products/database/asm/pdf/11gr1%20asm%20new%20features%20wp%2005-2007.pdf
Oracle 11g 管理资料档案库已置于安全模式下, 在此模式下将对 Enterprise Manager 数据进行加密。加密密钥已放置在文件 E:\oracle\product\11.1.0\db_1\169.254.105.73_orcl\sysman\config \emkey.ora 中。请务必备份此文件, 因为如果此文件丢失, 则加密数据将不可用。
全局数据库名:orcl 系统表示符sid:orcl 服务器参数文件名:E:\oracle\product\11.1.0\db_1\database\spfileorcl.ora
查看数据库实例运行情况 : http://localhost:1158/em https://169.254.105.73:1158/em
web方式登录iSQL*Plus name:system pwd:system name:sys pwd:sys 固定虚拟ip:192.168.116.126
Enterprise Manager Database Control URL - (orcl) : https://Lindows-IBM-XP2:1158/em
http://localhost:5560/isqlplus http://localhost:5560/isqlplus/dba
http://LindowsXP:5560/isqlplus http://LindowsXP:5560/isqlplus/dba
Ultra Search URL: http://localhost:5620/ultrasearch
Ultra Search 管理工具 URL: http://localhost:5620/ultrasearch/admin
Enteprise Manager 10g Database Control URL: http://localhost:5500/em
查询oracle 10g下一些常用的端口
http://jackyrong.iteye.com/blog/764298
可以在 \oracle\product\10.2.0\db_1\install\下,它下有一个文件portlist.ini 里面有常见的端口,并可以设置:
Ultra Search HTTP 端口号 =5620
Enterprise Manager Agent Port =
iSQL*Plus HTTP 端口号 =5560
Enterprise Manager Console HTTP Port (oracle) = 5500
Enterprise Manager Agent Port (oracle) = 1830
Enterprise Manager Console HTTP Port (ORACLE) = 5501
Enterprise Manager Agent Port (ORACLE) = 1830
http://www.duote.com/soft/3156.html
http://www.allroundautomations.com
Oracle服务OracleDBConsoleorcl启动失败解决方案
http://oxidy.iteye.com/blog/237838
OracleDBConsole服务不能启动,访问“http://机器名:1158/em”不能进入EM界面,系统事件查看器里面记录“ Agent process exited abnormally during initialization. ”
网上解决Oracle服务不能启动最多的做法是修改host文件,即%ORACLE HOME%\db_1\NETWORK\ADMIN\listener.ora文件,修改其中的HOST=***,listener.ora文件中的HOST =***与 系统属性--》计算机名选项卡 中显示的“ 完整的计算机名称:dsideal-db ”保持一致,即将***更改为dsideal-db ,重启计算机,再尝试启动OralceDBConsole服务,发现服务能正常启动,故障排除。
listener.ora文件内容如下:
# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1 )
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = dsideal-db )(PORT = 1521 ))#完整的计算机名称;端口号
)
)
解决Oracle.exe占用内存过大的问题
开始----运行---打开cmd
输入 net start 察看服务运行列表
net stop OracleServiceORCL 停止ORACLE服务
net start OracleServiceORCL 开始ORACLE服务
启动Oracle 10g sqlplus 图形界面: 开始---- 运行----sqlplusw
启动Oracle 10g sqlplus dos 界面: 开始---- 运行----sqlplus
解决ServerDB(UTF-8)与ClientDB(GBK)之间的字符集不统一的问题:
开始----运行---打开regedit
查找 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1
数值名称(N) NLS_LANG
数值数据(V) SIMPLIFIED CHINESE_CHINA.ZHS16GBK
--查询nls的参数,获得数据库服务器端的字符编码
1。select * from v$nls_parameters
NLS_LANGUAGE
NLS_CHARACTERSET
2。修改本地环境变量,设置
NLS_LANG = SIMPLIFIED CHINESE.ZHS16GBK //这个是我们的数据库字符编码
NLS_LANG = language_territory.charset
有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。
territory 指定服务器的日期和数字格式。
charset 指定字符集
范例:
c:> set nls_lang=simplified chinese_china.zhs16gbk
oracle 10G 12154问题解决
http://blog.csdn.net/liuya1985liuya/archive/2007/09/25/1800188.aspx
Oracle 10 g .bat文件启动/关闭方法
文件:net start oracle.bat
内容:
net start OracleOraDb10g_home1TNSListener
net start OracleServiceMYORACLE
net start OracleDBConsolemyoracle
net start OracleJobSchedulerMYORACLE
net start OracleOraDb10g_home1iSQL*Plus
文件:net stop oracle.bat
内容:
net stop OracleOraDb10g_home1TNSListener
net stop OracleServiceMYORACLE
net stop OracleDBConsolemyoracle
net stop OracleJobSchedulerMYORACLE
net stop OracleOraDb10g_home1iSQL*Plus
Exception:
0RA-01034 : Oracle not available.
0RA-27101 : Shared memory realm does not exists.
表空间太小也可能造成数据库连不上,Oracle10g增加SGA_TARGET ,PGA_AGGREGATE_TARGET 语法对付表空间问题, 如果是Oracle8i运行sqlplus,用system登陆,然后键入:startup mount //启动数据库
Oracle 10g system && sysaux 姊妹表空间
system 数据库打开后,一定不能被offline,而sysaux表空间offline后则部分功能失效。
Oracle提供了缺省数据表空间的概念,即使用户不指定,Oracle也不会将用户数据存放在SYSTEM表空间,
Oracle还将一些无关紧要的系统数据分离到SYSAUX表空间,以使得SYSTEM表空间纯净化。。。。。。。
Oracle双机热备
http://windows2008.blog.51cto.com/
Oracle 11g 冷备份
开始----运行----sqlplus>>>>用户名:SQL>system as sysdba 密码:system
Oracle 导入导出功能
http://huihui2525.iteye.com/blog/128568
http://elstage.iteye.com/blog/262283
查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
exp system/manager@TEST file=d:daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。
数据的导入
1 将D:daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:daochu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:datanewsmgnt.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
1.导出:
$exp usename/password@orcl
Enter array fetch buffer size: 4096 > 回车
Export file: expdat.dmp >d:\ m.dmp 生成导出的文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 回车
Export table data (yes/no): yes > 回车
Compress extents (yes/no): yes > 回车
2.导入:
imp scott/tiger@ccf fromuser=username touser=username file=D:\m.dmp log=D:\yingji.log
导出:
-- 使用pl/sql developer工具导出用户数据表结构
tools->export user objects.
-- 将会导一个只有空表的DMP
exp user/pwd file=d:\xx.dmp rows=no;
-- 建表语句在a.log里面,sqlserver不支持varchar2数据类型
exp system/manager file=c:\a.dmp owner=scott log=c:\a.log
imp system/manager file=c:\a.dmp owner=scott log=c:\a.log
--
exp file=sapdb0417.dmp userid=euser/euser@sapdb full=y
导入:
imp file=suning2.dmp userid=suning_b2c_user/arvato@btcsu full=y
Oracle shutdown的幾種方式
http://blog.itpub.net/post/48/25561
1、shutdown normal
正常方式关闭数据库。
2、shutdown immediate
立即方式关闭数据库。
在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
3、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,
如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长時間
--------------------------------------------------------
shutdown abort 的时候,跟kill 进程是一样的效果
数据库立即关闭,这个时候文件状态可能不一致
因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢复
若检查点信息一致,则做崩溃恢复
若检查点信息不一致(正好在更新文件头)则需要做介质恢复
这些问题都好处理,最怕的问题是这个时候系统有大量IO,结果这样造成写的突然中断,碰巧造成文件块的逻辑坏块,那麻烦比较大一些,尤其是系统表空间的block损坏
虽然shutdown abort 出错的几率很小,1000个人可能只有一个人碰到,但是我们还是要小心。
正确的处理流程是,shutdown immediate ,若数据库迟迟不能down下来,在os上观察IO状况,几乎没有io的时候,另开一窗口shutdown abort ,几乎不会出问题了
--------------------------------------------------------
http://www.itpub.net/showthread.php?threadid=180315&pagenumber =
先用IMMEDIATE来DOWN,实在不行了,看一下数据库文件上没IO了,再用ABORT
------------------------------------------------------------------------------
你可以尝试先在系统级杀掉非后台Oracle进程,在连接shutdown immediate就安全多了
在Oracle8i里,当数据库失去响应以后,你在操作系统上杀掉用户进程后,一般数据库就可以恢复正常了
-------------------------------------------------------------------------------
先 shutdown immediate 应该是首选
然后不行再重新shutdown abort
其实起不来也是因为os的缘故,在文件正在写的时候出现问题导致文件不一致或者损坏……
--查询数据文件位置
select name from v$datafile;
select file_name,status from dba_data_files;
E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
--查询控制文件位置
select * from v$controlfile;
select name from v$controlfile;
E:\ORACLE\ORADATA\ORCL\CONTROL01.CTL
E:\ORACLE\ORADATA\ORCL\CONTROL02.CTL
E:\ORACLE\ORADATA\ORCL\CONTROL03.CTL
--查询重做日志文件位置
select * from v$log;
select * from v$logfile;
select member from v$logfile order by group#;
E:\ORACLE\ORADATA\ORCL\REDO01.LOG
E:\ORACLE\ORADATA\ORCL\REDO02.LOG
E:\ORACLE\ORADATA\ORCL\REDO03.LOG
--关闭数据库进行物理备份
--SQL>shutdown immediate;
--拷贝刚查询的数据文件、控制文件、重做日志文件到其他地方以备用
--拷贝E:\oracle\product\11.1.0\db_1\database里所有文件到其它盘
--拷贝完成
--SQL>startup
--ok
--查询系统参数
select * from v$parameter;
select tablespace_name, count(*) from dba_free_space group by tablespace_name;
SELECT tablespace_name,count(*)chunks,max(bytes/1024/1024) max_chunk
FROM dba_free_space
GROUP BY tablespace_name;
--查询当前会话
SELECT sid,serial#,username,program,machine,status FROM v$session;
--查询表空间状态
--http://www.51cto.com/specbook/301/47525.htm
select * from dba_tablespaces;
select tablespace_name,status from dba_tablespaces;
Oracle数据库日常维护
http://my.donews.com/oracle/2006/08/18/oracle%e6%95%b0%e6%8d%ae%e5%ba%93%e6%97%a5%e5%b8%b8%e7%bb%b4%e6%8a%a4-dba/
在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。
使系统暂时不产生Redo log
方法一:
>sqlplus /nolog
sql>connect sys/***** as sysdba;
(*****为sys密码,安装时若没修改默认的是change_on_install)
sql>shutdown immediate
sql>startup mount
sql>alter database noarchivelog
sql>alter database open
Oracle 常用SQL查询列表
http://www.weixiuwang.com/Article/server/tech/200610/22256.html
Oracle Warehouse Builder 11g 第 1 版使用
http://www.oracle.com/technology/global/cn/obe/11gr1_owb/owb11g_update_getting_started_intro/lesson1/less1_start.htm
OCP DBA1学习笔记
http://bbs.chinaunix.net/thread-852976-1-1.html
[04/11] [Oracle管理]9I 笔记 (ZT)
http://lyt5664681.blog.163.com/blog/
新一篇: Oracle数据库的导出和导入
http://blog.csdn.net/gonghb/archive/2007/10/31/1859868.aspx
oracle管理SQL查询.doc
http://www.itpub.net/attachment.php?aid=531311
----------------------------------------------------------------------------------------------------------------------------------
传智播客_ORACLE经典视频教程 学习记录
http://hi.baidu.com/vjame/blog/item/89130eb3c30c4fa1d9335a14.html
Oracle 创建用户
http://gaoran2008.iteye.com/blog/182798
create user 你的用户名identified by 密码; grant connect,resource,dba to 连接的数据库;commit;
sqlplus lanjh/lanjh
disconn lanjh;
conn lanjh;
如何做bat一个简单的自动循环备份的功能
http://www.itpub.net/viewthread.php?tid=1097384
----------------------------------------------------------------------------------------------------------------------------------
Oracle自动启动和关闭的方法 数据库关闭 dbshut 数据库启动 dbtart
http://hi.baidu.com/luckyang999/blog/item/832f0f238d418f4