每天一点点oracle
每天一点点oracle
sqlplus / as sysdba
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sun Sep 23 19:52:26 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> exit
显示当前用户名
SQL> show user
USER is "SYS"
oralce的一些工具
工具位置:
[oracle@oracle bin]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/bin
[oracle@oracle ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
HISTTIMEFORMAT='[%F %T]'
ORACLE_BASE=/u01/app //oracle安装目录
ORACLE_SID=orcl //数据库实例名
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0.3/db_1 //oracle家目录
NLS_LANG=AMERICAN_CHINA.ZHS16GBK
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH
[oracle@oracle ~]$ orabase
/u01/app
Usage: oerr facility error
Facility is identified by the prefix string in the error message.
For example, if you get ORA-7300, "ora" is the facility and "7300"
is the error. So you should type "oerr ora 7300".
If you get LCD-111, type "oerr lcd 111", and so on.
[oracle@oracle bin]$ oerr ora 7300 查看一定的报错信息
sqlplus文件的位置
[oracle@oracle admin]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/sqlplus/admin
#查看当前数据库名
SQL> select name from v$database;
NAME
------------------
ORCL
SQL> show parameter db;
#查看当前数据库实例名
SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
orcl
SQL> show parameter instance;
#查询当前数据名
oracle体系结构
oracle错误日志的记录位置
[oracle@oracle trace]$ pwd
/u01/app/diag/rdbms/orcl/orcl/trace
SQL> show parameter db_cache_size;
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_cache_size big integer
0
SQL> show sga
Total System Global Area 776646656 bytes
Fixed Size 2232392 bytes
Variable Size 583012280 bytes
Database Buffers 188743680 bytes 数据缓冲区
Redo Buffers 2658304 bytes 重做日志缓冲区
SQL> select username from dba_users;
创建用户
SQL> create user nod identified by nod;
User created.
下班的时候提醒领导拿走螃蟹 在冰箱
显示哪些后台进程
SQL> select * from v$BGPROCESS;
SQL> select name from v$BGPROCESS;
PADDR PSERIAL# NAME
---------------- ---------- ----------
DESCRIPTION
--------------------------------------------------------------------------------
ERROR
----------
000000008DC86A58 1 PMON
process cleanup
LGWR 日志写入进程
redo log buffer àredo log file
database buffer cache àdata file
LGWR 1/3 或者多余1M 每隔3s 执行commit
DBWR
先写日志 后写数据
oracle总是先记录变化,再修改数据缓存
DBWR 脏缓冲区个数达到指定阈值 checkpoint
CKPT
在oracle当中 / 斜杠表示重复执行上一条语句
SQL> select current_scn from v$database;
SQL> /
CURRENT_SCN
-----------
3297183
SMON 系统监控进程 system monitor
PMON 进程监控进程
ARCn 归档进程
数据库四种形态
关闭 shutdown
非装载 nomount启动
装载 mount
打开 open
SQL> select status from v$instance;
STATUS
------------------------
OPEN
关闭数据库
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> connect scott/tiger
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
Warning: You are no longer connected to ORACLE.
SQL> startup nomount;
ORA-01031: insufficient privileges
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 776646656 bytes
Fixed Size 2232392 bytes
Variable Size 583012280 bytes
Database Buffers 188743680 bytes
Redo Buffers 2658304 bytes
SQL> select status from v$instance;
STATUS
------------------------
STARTED
SQL> alter database mount;
Database altered.
SQL> select status from v$instance;
STATUS
------------------------
MOUNTED
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------------------
OPEN
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 24 15:18:19 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
instance表示数据库实例处于关闭状态
SQL> conn scott/tiger
ERROR:
ORA-28000: the account is locked
Warning: You are no longer connected to ORACLE.
这个账户被锁定了
处理方法 修改用户密码
SQL> conn / as sysdba
Connected.
SQL> alter user scott account unlock identified by oracle;
User altered.
SQL> conn scott/oracle
Connected.
查看当前用户下有几张表
SQL> select * from tab;
参数文件:
参数文件中的参数值: 非默认值的参数
默认值查看方法通过官当文档进行查
静态initsid.ora
动态spfilesid.ora
SQL> show parameter name
[oracle@oracle dbs]$ ls
hc_orcl.dat init.ora lkORCL orapworcl spfileorcl.ora
[oracle@oracle dbs]$ pwd
/u01/app/oracle/product/11.2.0.3/db_1/dbs
spfileorcl.ora
就是关于orcl这个实例的动态初始化参数文件
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------
spfile string /u01/app/oracle/product/11.2.0.3/db_1/dbs/spfileorcl.ora
通过动态初始化参数文件创建静态初始化参数文件
SQL> create pfile from spfile;
File created.
[oracle@oracle dbs]$ ls
hc_orcl.dat init.ora initorcl.ora lkORCL orapworcl spfileorcl.ora
SQL> select * from v$log;
进行修改
SQL> alter system switch logfile;
System altered.
#查看当前日志
SQL> select * from v$log;
current表示当前
sequence是一直在累加的
警告日志路径
[oracle@oracle trace]$ pwd
/u01/app/diag/rdbms/orcl/orcl/trace
[oracle@oracle trace]$ tail -200f alert_orcl.log
#查看有没有开归档
SQL> select log_mode from v$database;
LOG_MODE
------------------------
NOARCHIVELOG 没有开
归档可以做备份和恢复
如果数据库是归档模式,可以在数据库open状态下进行备份,热备份
[oracle@oracle trace]$ tail -200f alert_orcl.log
#创建表语句
SQL> create table t1 as select * from dba_objects;
Table created.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
75584
SQL> select count(*) from t1;
COUNT(*)
----------
75584
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.3/db_1/dbs/spfileorcl.ora
查看监听状态
[oracle@oracle ~]$ lsnrctl stauts
SQL> show user
USER is "SCOTT"
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------------------------------------ -----------
BONUS TABLE
DEPT TABLE
EMP TABLE
SALGRADE TABLE
这段话表示
在scott下可以看到四张表
scott用户
解决ora-01031insufficient privileges错误
解决system用户不能登录的问题
alter user system account unlock identified by orcl;
grant sysdba to system;
#查询用户默认表空间
SQL> select username,default_tablespace from dba_users where username='SCOTT';
Oracle备份恢复
1 系统最新SCN
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
3428264
SQL> /
CURRENT_SCN
-----------
3428308
SQL> /
CURRENT_SCN
-----------
3428309
经过检查发现SCN号是一直在变化的
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
3419021
斜杠的作用就是类似分号
进行2个语句的分割
--根据结果集创建表 表结构+表数据
create table information_schema as select * from tab;
--创建表只包含表结构,不包含数据
create table information_schema_new as select * from tab where 1=2;
select
sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select to_char(current_timestamp(5),'YYYY-MM-DD HH24:MI:SSxFF') as 当前时间 from dual;
--TRUNCATE 将表中数据一次性全部删除
truncate
table information_schema;
TRUNCATE 和 DELETE 都能把表中的数据全部删除
他们的区别是:
1. TRUNCATE 是 DDL 命令,删除的数据不能恢复; DELETE 命令是 DML 命令,
的数据可以通过日志文件恢复。
2. 如果一个表中数据记录很多, TRUNCATE 相对 DELETE 速度快。
由于 TRUNCATE 命令比较危险,因此在实际开发中, TRUNCATE 命令慎用。
逻辑运算符三个 AND OR NOT
--查询中的算术运算
select ename,sal,(sal*12+2000) from emp where sal>2000;
-- 字符串的连接工作
select (ename ||' is a '|| job) as "job detail" from emp where sal>2000;
字符串连接
NUll操作
如果某条记录中有缺少的数据值,就是空值(NULL值)。空值不等于0或者空格,空值是指未赋值、未知或不可用的值。任何数据类型的列都可以包括NULL 值,除非该列被定义为非空或者主键
select ename ,comm from emp where sal<2000
and comm is
null;
select ename ,comm from emp where sal<2000
and comm is
not
null
Between…and操作
between操作指定的范围也包含边界
select ename,sal from emp where sal between
1000
and
2000;
select ename,sal from emp where sal>=1000
and sal<=2000;
使用desc
使用内连接处理问题
--请查询出工资大于 2000 元的,员工姓名,部门,工作,工资。
内连接方式1
select a.ename,a.job,a.sal,b.dname from emp a,dept b where sal>2000
and a.deptno=b.deptno
内连接方式2
select a.ename,a.job,a.sal,b.dname from emp a inner
子查询
子查询在 SELECT、 UPDATE、 DELETE 语句内部可以出现 SELECT 语句。内部的 SELECT 语
句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表。子查询的类
型有:
1. 单行子查询:不向外部返回结果,或者只返回一行结果。
2. 多行子查询:向外部返回零行、一行或者多行结果。
--请查询出每个部门下的员工姓名,工资
select ename,job,sal,deptno from emp where deptno in (select deptno from dept where dname='SALES')
select ename,job,sal,deptno from emp where deptno=(select deptno from dept where dname='SALES')
在Oracle当中 不区分列名的大小写
Any Any放在比较运算符后面 表示任意的意思
--查询出 Emp 表中比任意一个销售员("SALESMAN" )工资低的员工姓名、工作、工资
select ename,job,sal from emp where sal<any (select sal from emp where job='SALESMAN')
ALL 子查询
ANY 可以表示任意的,但本案例中要求比所有销售员工资都高,那么就要使用另外一个
关键字 ALL。 ALL 与关系操作符一起使用,表示与子查询中所有元素比较
--查询出比所有销售员的工资都高的员工姓名,工作,工资。
select ename,job,sal from emp where sal>all(select sal from emp where job='SALESMAN')
Oracle中的伪列
在 Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中
的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。rowid & rownum
rowid
表中的每一行在数据文件中都有一个物理地址, ROWID 伪列返回的就是该行的物理地
址。使用 ROWID 可以快速的定位表中的某一行。 ROWID 值可以唯一的标识表中的一行。由
于 ROWID 返回的是该行的物理地址,因此使用 ROWID 可以显示行是如何存储的。
rownum
在查询的结果集中, ROWNUM 为结果集中每一行标识一个行号,第一行返回 1,第二
行返回 2,以此类推。通过 ROWNUM 伪列可以限制查询结果集中返回的行数。
区别
ROWNUM 与 ROWID 不同, ROWID 是插入记录时生成, ROWNUM 是查询数据时生成。 |
select
rowid,ename from emp where sal>2000;
--查询出员工表中前 5 名员工的姓名,工作,工资。
select * from emp where
rownum<=5;
Oracle函数
字符函数
数字函数
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "date" from dual
select to_char(sysdate,'YYYY-MM-DD') "date" from dual;
删除用户 如果用户下有对象必须要用cascade
SQL> drop user nod cascade;
User dropped
创建用户
SQL> create user nod identified by nod;
User created
SQL> grant connect to nod;
Grant succeeded
SQL> grant resource to nod;
Grant succeeded
SQL> grant create synonym to nod;
Grant succeeded
在plsql当中使用
SQL> conn sys/orcl@test as sysdba
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
Connected as SYS
SQL> conn nod/nod@test as normal;
创建synonym
SQL> create synonym myEmp for scott.emp;
Synonym created
select * from myEmp
ORA-00942: 表或视图不存在
SQL> conn scott/orcl@test
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
Connected as scott
SQL> grant all on emp to nod;
Grant succeeded
SQL> conn nod/nod@test
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
Connected as nod
SQL> select * from myEmp;
序列 sequence
创建序列
CREATE
SEQUENCE MYSEQ
MINVALUE
1
START
WITH
1
NOMAXVALUE
INCREMENT
BY
1
NOCYCLE
CACHE
使用序列
select MYSEQ.nextval from dual
表空间
在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能。 Oracle 可以存放海量数据,所有数据都在数据文件中存储。而数据文件大小受操作系统限制,并且过大的数据文件对数据的存取性能影响非常大。同时Oracle 是跨平台的数据库, Oracle 数据可以轻松的在不同平台上移植,那么如何才能提供统一存取格式的大容量呢? Oracle 采用表空间来解决。
表空间只是一个逻辑概念,若干操作系统文件(文件可以不是很大)可以组成一个表空间。表空间统一管理空间中的数据文件,一个数据文件只能属于一个表空间。一个数据库空间由若干个表空间组成。如图所示:
每天一点点oracle的更多相关文章
- Oracle每天自学一点点 常用Oracle
创建表空间:create tablespace crmtb datafile 'F:\Oracle\oradata\crmtb.dbf' size 100M;删除表空间:DROP TABLESPACE ...
- 将oracle冷备份恢复到另外一个数据库实例中
因更换服务器需要将Oracle数据库转移到另外台Oracle中.说明: 1.测试环境为:windows server2003 和 oracle 10g. 2.2台服务器安装的程序目录一样,数据目录不一 ...
- Linux下oracle环境变量无效问题
今天在维护oracle数据库时,查看监听的状态,执行 #lsnrctl status 报错: -bash:lsnrctl:command not found.以前并不会这样,仔细想了一下,问题找到了, ...
- oracle xmltype导入并解析Excel数据--前言
通常,很多的时候,我们需要导入Excel数据到系统中,但是Excel数据需要我们去各种校验,比如身份证校验,手机号码校验等等. 校验失败的数据,提供Excel导出错误原因,提示给用户. 如此,如果校验 ...
- 转载:oracle null处理
(1)NULL的基础概念,NULL的操作的基本特点NULL是数据库中特有的数据类型,当一条记录的某个列为NULL,则表示这个列的值是未知的.是不确定的.既然是未知的,就有无数种的可能性.因此,NULL ...
- Oracle备份及备份策略
第二章. 了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内 ...
- Oracle 【IT实验室】数据库备份与恢复之一:exp/imp(导出与导入&装库与卸库)
1.1 基本命令 1. 获取帮助 $ exp help=y $ imp help=y 2. 三种工作方式 (1)交互式方式 $ exp // 然后按提示输入所需要的参数 ...
- 在silverlight中通过WCF连接ORACLE DB数据库(转)
转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...
- ORACLE恢复数据
ORACLE恢复删除表或表记录 一:表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: 1.从flash back里查询 ...
随机推荐
- url参数和字典的相互转化
目标url:https://www.baidu.com/s?&wd=python&ie=utf-8 将字典转成url参数 使用urllib.parse的urlencode方法,将字典对 ...
- hdu4553 约会安排 线段树
寒假来了,又到了小明和女神们约会的季节. 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑,由于数量实 ...
- SQL Server 排序的时候使 null 值排在最后
https://www.cnblogs.com/Brambling/p/7046148.html 最近遇到一个 SQL Server 排序的问题,以前也没了解过,然后这次碰到了. 才发现 SQL Se ...
- POI事件模型处理execl导入功能(只支持07版本的execl)
由于通过new XSSFWorkbook 这种方式导入导致生产环境端口宕机.通过dump文件和javacore文件分析是导入功能导致的.解决办法:自己通过网上写的工具类,不知道是否存在bug. pac ...
- C# 获取机器码
using System.Runtime.InteropServices; using System.Management; using System; public class HardwareIn ...
- Windows平台上使用Github搭建Git服务器的图文教程
Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到通信协议,例如SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以 ...
- SelectDataTable
项目地址 : https://github.com/kelin-xycs/SelectDataTable SelectDataTable 一个 用 C# 实现的 用 Sql select DataT ...
- re正则匹配使用
print(result.span()) #输入字符串的范围 如果在匹配语句中有括号,group(1)就是提取第一个括号的内容,以此类推. 扩展思考:如果要从文本中匹配出目标字符串可以使用括号加gro ...
- Anaconda详细安装使用教程
版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址. https://blog.csdn.net/program_developer/article/details/79677557 ...
- Centos系统下Docker的安装
一.检查内核版本 安装Docker,需要linux内核大于3.10 使用uname -r 来检查 二. Centos系统下Docker的安装 1. 安装需要的软件包 yum install -y yu ...