在工作中常用的存储过程,在此做一个总结。全部都是我自己写的,如果有问题欢迎指正。
1.清空所有表的数据,谨慎使用。
在搭建开发环境的时候,时常需要清除所有表的数据,而只留表结构,所以写了一个存储过程,使用它的前提是没有外键约束。
--清空表数据 create or replace procedure pro_clean_all_table as v_sql varchar2(2000 char); cursor cur is select table_name from user_tables order by table_name; i integer; begin i:=0; for rows in cur loop v_sql:='truncate table "'||rows.table_name||'"'; i:=i+1; execute immediate v_sql; commit; end loop; dbms_output.put_line('cleaned '||i||' table(s).'); end pro_clean_all_table;
2.把所有的以字节定义的varchar2的长度改为以字符定义的varchar2长度。如果以字节定义会引起中文长度无法控制的问题。
create or replace procedure pro_fix_varchar as cursor fieldList is select T1.TABLE_NAME,T1.COLUMN_NAME,T1.DATA_LENGTH from USER_TAB_COLUMNS T1 left join user_tables T2 on T2.TABLE_NAME=T1.TABLE_NAME where T2.TABLE_NAME is not null and T2.TABLESPACE_NAME=(select DEFAULT_TABLESPACE from USER_USERS) and CHAR_USED='B'; tblName varchar2(2000); fieldName varchar2(2000); dataLen varchar2(10); sqlStr varchar2(2000); cnt integer; BEGIN dbms_output.put_line('begin'); cnt:=0; open fieldList; loop fetch fieldList into tblName,fieldName,dataLen; exit when fieldList%notfound; sqlStr:='alter table "'||tblName||'" modify ("'||fieldName||'" varchar2('||dataLen||' char))'; execute immediate sqlStr; commit; cnt:=cnt+1; end loop; close fieldList; dbms_output.put_line('fixed '||cnt||' field(s).'); end pro_fix_varchar;
3.【重要】给所有表增加table extend。在ORACLE 11g R2以上版本中,如果需要备份数据,请执行。
--ORACLE 11G R2 增加table extend create or replace procedure add_table_extend as v_sql varchar2(2000 char); cursor cur is select TABLE_NAME from user_tables where table_name not in (select segment_name from user_segments where segment_type = 'TABLE'); i integer; begin i:=0; for rows in cur loop v_sql:='alter table '||rows.TABLE_NAME||' allocate extent (size 64k);'; execute immediate v_sql; i:=i+1; end loop; commit; dbms_output.put_line('fixed '||i||' table(s).'); end add_table_extend;
相关推荐
1. **oci.dll**:Oracle Call Interface,是Oracle客户端的核心库,提供了与Oracle数据库交互的API,使得应用程序可以执行SQL语句、调用存储过程等操作。 2. **sqlplus**:这是一个命令行工具,允许用户直接输入SQL...
主要包括以下几个方面: - **创建用户**: 使用`CREATE USER 用户名 IDENTIFIED BY 密码`命令来创建新的数据库用户。 - **授予权限**: 使用`GRANT 权限 TO 用户名`命令来授予用户特定的权限。 - **撤销权限**: 使用`...
Oracle 10g是一款历史悠久的关系型数据库管理系统,广泛应用于企业级的数据存储与管理。Windows版的Oracle 10g客户端是专为在Windows操作系统上运行而设计的,它提供了连接到Oracle服务器、执行SQL查询、数据导入...
数据库启动的几个阶段 数据库启动经历以下三个主要阶段: - `STARTUP NOMOUNT`:仅实例启动。 - `STARTUP MOUNT`:数据库装载但未打开。 - `STARTUP OPEN`:数据库完全打开,可供用户访问。 ### 16. V$视图与GV$...
标题中的“tom的几个常用工具10g”指的是Thomas Kyte(通常被简称为Tom)推荐的一些在数据库管理和开发中常用的工具,这里的“10g”可能是指Oracle 10g版本,因为Thomas Kyte是Oracle数据库领域的知名专家。...
这个驱动不需要中间层如Oracle的oci库,因此适用于跨平台的环境。描述中的“只需一个简单的jar即可连接Oracle数据库”很可能指的是Thin驱动的jar包,例如`ojdbc.jar`或`ojdbc6.jar`等。 要使用这个jar包,首先需要...
本文将详细介绍几种常用的在Oracle中对比两张表数据一致性的方式。 #### 方法一:利用Oracle 11g中的`dbms_comparison`包 当两张表的数据结构完全相同,并且其中一张表所在数据库版本为Oracle 11g及以上时,可以...
- **特点**:支持变量声明、流程控制语句(如 IF-THEN-ELSE、LOOP)等,适用于编写存储过程、触发器等。 **2. 存储过程** - **定义**:存储过程是一组预先编写的 SQL 语句和过程性语句的集合,它们被存储在数据库...
Oracle数据库实践主要围绕以下几个核心概念展开: 1. **数据库实例与服务**:数据库实例是Oracle在内存中创建的一组进程和数据结构,用于管理数据库。服务是用户连接到数据库的方式,可以通过企业管理器(EM)或SQL...
本压缩包集合包含了几个常用数据库的JDBC驱动jar文件,包括MySQL、Oracle、SQL Server和Access,这些都是开发人员进行数据库操作的必备组件。 1. **MySQL**:MySQL是一款开源、免费的关系型数据库管理系统,广泛...
### 华为SAN存储在Oracle_VM系统下的主机连通性指南_V5 #### 操作系统介绍 ##### OVM简介 Oracle VM (OVM) 是一款基于开源 Xen hypervisor 的企业级虚拟化平台,旨在为企业提供高可用性、高性能以及易于管理的...
2. **NoSQL**:非关系型数据库,如Redis等,它们通常采用键值对的形式存储数据,适用于大数据处理场景。 #### 三、数据库语言分类 数据库语言主要包括以下几种: 1. **DDL(Data Definition Language)**:数据...
它提供了丰富的功能,包括数据存储、事务处理、备份恢复、性能优化等,适用于各种规模的企业级应用。 该CHM文件很可能包含了以下几方面的Oracle知识: 1. **基础概念**:介绍Oracle数据库的基本结构,如表、索引、...
Oracle数据库的体系结构主要包括以下几个组成部分: 1. **数据文件(datafiles)**:用于存储表空间中的数据,每个表空间至少包含一个数据文件。 2. **重做日志文件(redolog files)**:记录对数据库所做的更改,用于...
- **Oracle 10g安装步骤**:首先从Oracle官方网站下载适用于Windows系统的Oracle应用服务器10g软件。安装完成后,需确保两个关键服务已启动,分别是OracleOraDb10g_home1TNSListener(监听服务)和OracleServiceXSCJ...
32位Oracle客户端适用于32位Windows操作系统。以下是一些关键组件: 1. **Oracle Net Services (formerly known as SQL*Net)**:这是Oracle客户端的核心部分,负责在网络间传输数据,支持各种网络协议如TCP/IP、 ...
在实际开发过程中,有几个触发器是非常常用的: - **WHEN-VALIDATE-ITEM**:用于验证表单项的有效性。 - **WHEN-NEW-FORM-INSTANCE**:在新实例化Form时执行。 - **BEFORE-QUERY-BLOCK**:在查询数据块之前执行。 ...
而Oracle数据库则是由甲骨文公司提供的一个强大的、企业级的关系型数据库管理系统,它支持SQL标准并提供许多高级特性,如分布式数据库、物质化视图、存储过程等。 在JSP项目中,开发者通常需要与数据库进行交互,...
数据库连接是软件开发中至关重要的一个环节,尤其是在处理数据存储和检索时。本文将详细介绍如何连接到几种常见的数据库系统:SQL Server 2000、Oracle、Sybase 和 MySQL。 1. **连接 SQL Server 2000**: SQL ...
这种直接访问方式可以提高性能,适用于大型数据库系统。 2. **区分64-bit 和 32-bit 版本**:可以通过SQL*Plus命令行工具执行`select * from v$version;`来查看Oracle版本信息。如果是64位版本,通常会在返回的结果...