oracle日常操作记录

这篇具有很好参考价值的文章主要介绍了oracle日常操作记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

oracle日常操作记录

SQL中上下按键错误
  • rlwrap下载
SQL> ^[[A^[[A^[[D^[[C^[[D^[

需要安装 rlwrap-0.42.tar.gz 这个软件包
直接解压./configure && make  && make  install      #需要使用root用户执行

在到oracle用户环境变量中添加以下数据:
[oracle@ccod ~]$ vim .bash_profile 
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'   
创建用户和表空间
  • 创建用户
create user 用户名 identified   by "密码";
  • 授权
grant create session to 用户名;     # 授权允许用户登录
grant create table  to  用户名;        # 创建表的权限
gant create tablespace to  用户名;   # 创建回滚表空间
garnt create view  to 用户名;     # 创建视图权限
  • 创建表空间
create tablespace demps[ace datafile '路径以.bdf结尾'    size 1500M autoextend on ext 5M maxsize 3000M;
SQL行中的技巧
  • 调用系统命令
SQL> !ls -htr 
oracle_database_linux32.zip  db_home  database oracle10g  db_files  rlwrap-0.42  rlwrap-0.42.tar.gz
按照用户导出和导入
[oracle@iZ25clyc8k3Z ~]$ exp   ccod/ccod  file=test.dmp         #导出

[oracle@ccod ~]$ imp ccod/ccod file=test.dmp   fromuser=ccod touser=ccod   #导入
表空间扩容

一、查询使用率:

SELECT Upper(F.TABLESPACE_NAME)      "表空间名",
     Round(D.TOT_GROOTTE_MB/1024,2)  "表空间大小(GB)",
     Round(F.TOTAL_BYTES/1024,2)    "空闲空间(GB)",
     To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
     || '%'                         "使用比",
     Round((D.TOT_GROOTTE_MB - F.TOTAL_BYTES)/1024,2) "已使用空间(GB)",
     F.MAX_BYTES/1024               "最大块(MB)"
FROM   (SELECT TABLESPACE_NAME,
              Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
              Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
       FROM   SYS.DBA_FREE_SPACE
       GROUP  BY TABLESPACE_NAME) F,
      (SELECT DD.TABLESPACE_NAME,
              Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
       FROM   SYS.DBA_DATA_FILES DD
       GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY 1;
  • 新版查询表空间使用率
select a.tablespace_name,a.bytes/1024/1024/1024 "Sum GB",(a.bytes-b.bytes)/1024/1024/1024 "used GB",b.bytes/1024/1024/1024 "free GB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" 
from 
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, 
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b 
where a.tablespace_name=b.tablespace_name 
order by ((a.bytes-b.bytes)/a.bytes) desc

二、查看使用数据文件扩容到哪一步:

select name from v$datafile; 
select file_name,tablespace_name from dba_data_files; 
select username,default_tablespace from dba_users where default_tablespace='USERS'; 查询USERS表空间哪个用户在使用。 

三、添加数据文件:

alter tablespace users add datafile'/home/oracle/oracle10g/oradata/DATAONE/users11.dbf' size 1000M autoextend on next 100M MAXSIZE 32000M; 
列:alter tablespace CCOD_TABLE_0211270012#表空间名 add datafile'/home/oracle/oracle10g/oradata/CCOD_TABLE_0211270012_01.dbf'#路径 size 1000M autoextend on next 100M MAXSIZE 32000M;
Oracle启动关闭
  • 停止监听
关掉oracle的监听进程:命令为“lsnrctl stop”并回车,这时外部没法连接到数据库了
命令行:lsnrctl stop”

  • 强制重启数据
SHUTDOWN ABORT;
  • 关闭数据库
SQL>shutdown immediate
  • 启动数据库
SQL>startup; 
  • 启动监听
命令行lsnrctl start
  • 启停止汇总命令
SQL> shutdown normal--普通关闭
SQL> shutdown immediate --立即关闭
SQL> shutdown transactional --事务保证关闭
SQL> shutdown abort --强制终止/强制关闭
SQL> shutdown 就相当于使用了shutdown normal

SQL> startup; 
# lsnrctl start
Orcle连接数
SQL> show parameter process  #查看当前oracle设置的连接数

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes              integer     0
db_writer_processes             integer     1
gcs_server_processes             integer     0
job_queue_processes             integer     10
log_archive_max_processes         integer     2
processes                 integer     300

修改processes和sessions值必须重启oracle服务器才能生效
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
  sessions=(1.1*process+5)
  
SQL> alter system set sessions=555 scope=spfile;   #设置连接数
SQL> alter system set processes=500 scope=spfile;  #设置连接数


SQL> select count(*) from v$process;     #查看当前的oracle数据的连接数

  COUNT(*)
----------
    55
删除oracle归档文件
  • 在主库和备份执行分别执行看值
set linesize 160 pagesize 999;
col name for a60;
col member for a60;
select dbid,database_role from v$database;
select max(sequence#) from v$archived_log; 
select max(sequence#) from v$archived_log where applied='YES';

#执行过程,在主库执行表示
SQL> set linesize 160 pagesize 999;
col name for a60;
col member for a60;
select dbid,database_role from v$database;
select max(sequence#) from v$archived_log; 
select max(sequence#) from v$archived_log where applied='YES';SQL> SQL> SQL> 
      DBID DATABASE_ROLE
---------- ----------------
2388749677 PHYSICAL STANDBY

SQL> 
MAX(SEQUENCE#)   #目前归档文件最大值是253
--------------
       253

SQL> 
MAX(SEQUENCE#)      #表示备库,已经应用归档文件
--------------
       253
SQL> 
  • 查询归档文件路径
set linesize 160 pagesize 999
col destination for a30;
col error for a60;
select status,destination, error from v$archive_dest;

#在主库中查询
SQL> select status,destination, error from v$archive_dest;

STATUS      DESTINATION             ERROR
--------- ------------------------------ ------------------------------------------------------------
VALID      /home/oracle/oracle10g/arch1/WENDING   #本地归档文件
VALID      db_phystdby      #备库的路径
INACTIVE
INACTIVE
INACTIVE
INACTIVE
INACTIVE
INACTIVE
INACTIVE
INACTIVE
10 rows selected.
  • 查询归档进程是否存在
elect process,status from v$managed_standby; 
基本查询
  • 按照时间查询数据
# 查询from campaign_base_info表中ENDTIME字段小于2017-05-01 00:00:00中的数据
select * from campaign_base_info  where  ENDTIME <  to_date('2017-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss');
Oracle数据导出
#!/usr/bin/perl
##perl script used to connect to Oracle
use strict;
use DBI;
use Encode;
#autoflush
$| = 1;
my $tnsname="ora198";
my $username="xxxxx";
my $password="xxxxx";
my $dbh=DBI->connect("dbi:Oracle:$tnsname", $username, $password) or die "Cannot conenct db: $DBI::errstr\n";
print "I have connected to the Oracle database!\n";
$dbh->{AutoCommit}    = 0;
$dbh->{RaiseError}    = 1;
$dbh->{ora_check_sql} = 0;
$dbh->{RowCacheSize}  = 16;
$dbh->{LongReadLen} = 66000;
$dbh->{LongTruncOk} = 1;
my $sql=qq(select "FEED_ID","PRODUCT_CODE","PRODUCT_OBJECT_ID",replace("FEED_DATA",'![](index_files/_25W@GJ_24ACOF_28TYDYECOKVDYB.png)\\u','\\\\u'),"USER_ID_EN","USER_NICK",to_char("CREATE_TIME",'YYYY-MM-DD HH2
4:MI:SS'),to_char("NEXT_DISPATCH_TIME",'YYYY-MM-DD HH24:MI:SS'),"DISPATCH_STATUS","RANGE_STATUS","SPREAD_STATUS","FEED_ACCEPTORS","FEED_STATE","FEED_TYPE" from 
"CENTER"."T_WIKI_FEED") ;
open FH,">/home/zhangguangnan/T_WIKI_FEED.txt" or die "open file faile";
my $sth=$dbh->prepare($sql);
$sth->execute();
while (my @row = $sth->fetchrow_array()) {
        my $data=join('|#|',@row);
 print FH "$data\t\n";
 }
close FH;
$dbh->disconnect or warn "DB disconnect failed: $DBI::errstr\n";
print "Disconnected from Oracle databae!\n";
Mysql导入
load data local infile 'T_WIKI_FEED.500000ae' IGNORE into table t_wiki_feed character set gbk fields terminated by '|#|' ENCLOSED BY '\\' lines terminated byy '\t\n';
oracle基本操作
  • 清空表中数据
truncate table abc;
delete from abc;
  • 查询结果插入另张表中
select * into 表A form 表B where条件
  • 查询结果创建另张新表中
create table campaign_clean_info_bak0202 as select * from campaign_clean_info

insert into 表A select * from 表B where 条件
  • 查询数据多字段,插入另张少字段表中
insert into DXBD2016111803.ENT_RECORD_BX_TABLE_H_201805(RECORD_NAME, SESSION_ID, REMOTE_URI, LOCAL_URI, AGENT_ID, CMS_NAME, CALL_TYPE, DEVICE_NUMBER, START_TIME, END_TIME) select RECORD_NAME, SESSION_ID, REMOTE_URI, LOCAL_URI, AGENT_ID, CMS_NAME, CALL_TYPE, DEVICE_NUMBER, START_TIME, END_TIME from DXBD2016111803.ENT_RECORD_BX_TABLE  where  START_TIME <  to_date('2018-05-27 00:00:00','yyyy-mm-dd hh24:mi:ss') and START_TIME >  to_date('2018-05-1 00:00:00','yyyy-mm-dd hh24:mi:ss')
Oracle优化
  • 增加游标是数
增大游标的值:alter system set open_cursors = 加大的值;
  • Oracle 调整SGA、PGA大小

来源

SQL> show parameter sga;

SQL> alter system set sga_max_size=4096M scope=spfile;
System altered.
SQL> alter system set sga_target=4096M scope=spfile;
System altered.

如果是RAC环境,需要这样增加sid='*':

> alter system set sga_target=20G scope=spfile sid='*';

SQL> shutdown immediate;
SQL> startup
SQL> show parameter sga;

SQL> alter system set workarea_size_policy=auto scope=both;
SQL> alter system set pga_aggregate_target=512m scope=both;
  • oracle在线添加日志组和日志组成员

来源文章来源地址https://www.toymoban.com/news/detail-807480.html

SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo01a.log';  

 SQL> alter database add logfile member '/u01/app/oracle/fast_recovery_area/orcl/redo01a.log' to group 1;  

 SQL> alter database add logfile member '/u01/app/oracle/fast_recovery_area/orcl/redo02a.log' to group 2;  

 SQL> alter database add logfile member '/u01/app/oracle/fast_recovery_area/orcl/redo03a.log' to group 3;  

 SQL> alter database add logfile group 4 ('/u01/app/oracle/oradata/orcl/redo04.log','/u01/app/oracle/fast_recovery_area/orcl/redo04a.log') size 100m;  

SQL> alter database add logfile group 5 ('/u01/app/oracle/oradata/orcl/redo05.log','/u01/app/oracle/fast_recovery_area/orcl/redo05a.log') size 100m;  

23.  Database altered.

SQL> alter system switch logfile;
SQL> select * from v$log;
  • 添加redo 日志太小 500M
alter database add logfile group 4 ('/home/oracle/db_files/ccod/redo04.log') size 512M;
alter database add logfile group 5 ('/home/oracle/db_files/ccod/redo05.log') size 512M;
alter database add logfile group 6 ('/home/oracle/db_files/ccod/redo06.log') size 512M;
Oracle技巧
  • oracle技巧
#查看sql执行次数
select SQL_TEXT,EXECUTIONS,PARSE_CALLS   FROM v$sqlarea
  • oracle命令行调整宽度
set linesize 220
set pagesize 300
col datas for a100
col nu for 99999999
select substr(a.record_name, 1, instr(a.record_name, '/', 1) - 1) datas,
       count(1) nu
  from ccod.c_record_bx a where a.MATCHED_STATUS = 0
 group by substr(a.record_name, 1, instr(a.record_name, '/', 1) - 1);

到了这里,关于oracle日常操作记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库问题记录(粗略版)oracle、mysql等主流数据库通用

    1. ORA-00918:未明确定义列 该问题情况大致为:select 所取列名错误、重复等问题。 2. “select * from temp where 1=0; ”的含义 布尔值为FALSE,只返回表结构,不返回数据。 举一反三: select * from temp where 10 , 布尔值为TRUE,返回所有数据记录; select * from temp where 1=0, 暂不清楚是何

    2024年02月07日
    浏览(50)
  • 用SQL语句操作Oracle数据库——数据更新

    数据库中的数据更新操作有3种:1)向表中添加若干行数据(增);2)删除表中的若干行数据(删);3)修改表中的数据(改)。对于这3种操作,SQL语言中有3种相应的语句与之对应。接下来让我们逐一详细地了解一下。 本文我们依然使用以下三个表来进行数据更新操作:

    2024年01月19日
    浏览(67)
  • Python优雅地操作Oracle数据库

    方案一: 直接套用脚本,需可以看懂一些脚本逻辑 改代码中 类名为 OracleConnector,它可以同时连接多个 Oracle 数据库,并提供执行增删改查操作的方法。 以下是代码解释: 这个封装类使得可以同时连接多个 Oracle 数据库,并在它们上执行增删改查操作。而在执行非查询操作时

    2024年02月03日
    浏览(39)
  • Linux系统下操作Oracle数据库

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种

    2023年04月08日
    浏览(54)
  • C# Dapper 操作Oracle数据库

    nuget安装内容   1.配置连接字符串 OracleConnectionString这个可用  2.读取配置文件类 3.Dapper数据库操作类  4.操作数据实例 

    2024年02月10日
    浏览(49)
  • Oracle、MySQL数据库常规命令语法-简易记录(非常规持续更新)

    前言:呈现的是非常基础必备命令以及常规关联语法,因涉及到不同数据库其表达都会有所区别,此篇纯属做个仓库记录更非常规持续更新,专业人士可忽略,且看且珍惜… MySQL: 关系型数据库、重点开源、支持大型规模、标准SQL数据语言、多平台多架构、高可用集群、可定

    2024年01月25日
    浏览(58)
  • Linux链接oracle数据库启动——操作步骤

    原本的画面会变为 接着请输入 输入 另外停止数据库的指令如下:   回到终端机模式,输入:ps -ef|grep ora_ (作用是:查看是否有Oracle的进程,如果有,大多数情况说明启动了。) 输入:$ lsnrctl status (作用是:检查监听是否启动。) 以下为没有启动。 如果没有启动,可以输入:$

    2024年02月04日
    浏览(71)
  • Oracle/PL/SQL数据库基础操作(持续更新)

            PL/SQL不是一个独立的编程语言;它是Oracle编程环境中的工具。 SQL* Plus是一个互动的工具,它可以在命令提示符下键入SQL和PL/SQL语句。这些命令发送到数据库进行处理。语句处理之后将结果发回,并在屏幕上显示出来。 分类 命令 DDL create:创建;drop:删除;alter:

    2024年02月09日
    浏览(63)
  • Linux下连接Oracle数据库并进行一系列操作

    操作Oracle要确保服务器上已经安装了Oracle数据库 1.连接到有Oracle数据库的服务器 ssh 172.16.100.201 (服务器IP)如图 2.根据提示,输入服务器root密码,输入无误即可连接。 切换到Oracle数据库 su - oracle 3.切换成功后会显示Oracle用户,如:[oracle@cicro201 ~]$ 4.切换到sqlplus操作 切换成功

    2024年02月08日
    浏览(68)
  • java serverlets使用数据源连接oracle数据库,并执行查询操作代码

    package chap03; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.PreparedStatement; import java.sql.Statement; import java.util.*; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.Namin

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包