数据库中如何设置禁用菜单项

数据库中如何设置禁用菜单项,第1张

ㄒ MB 为单位)。 当存储数据的大小达到指定上限 95% 时,系统会删除 10% 的使用数据,而保留 85% 的数据。程序包和应用程序使用数据将被删除。当数据库大到接近上限时,系统会向 SQL 服务器日志中发送一条警告消息,通知您已达到此限制。清理 *** 作会影响报告的输出,因此必须发送此警告。此警告还有助于您确定是要增大最大数据库大小、减少使用数据的保存月数,还是降低日志记录级别。注意 系统提供了“没有大小限制”和“保留所有使用情况”选项,以便您可以禁用使用情况报告和数据库清理功能。选择这两项还将清除数据库事务日志。(将从数据库日志中删除所有已提交的 Microsoft SQL Server 事务。)

设置数据库大小在左窗格中右键单击“Application Virtualization System”节点,然后选择“系统选项”。选择“数据库”选项卡。选择“最大数据库大小 (MB)”或“没有大小限制”单选按钮。如果选择指定数据库大小,则建议您最好输入一个介于 512 MB 和 4096 MB 之间的值。默认大小是 1024 MB,如果要增大数据库大小,则可以输入最大值 2,147,483,647。如果选择“没有大小限制”,则数据库将增大到磁盘空间限制。单击“应用”或“确定”。禁用数据库大小限制在“范围”窗格中右键单击“Application Virtualization System”节点,然后选择“系统选项”。选择“数据库”选项卡。选择“没有大小限制”和“保留所有使用情况”单选按钮。单击“应用”或“确定”。

对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的任何功能都集中到了SQLPlus中,也就是说从8i以后对于数据库的启动和关闭能够直接通过SQLPlus来完成,而不再另外需要Server Manager,但系统为了保持向下兼容,依旧保留了Server Manager工具。另外也可通过图像用户工具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图像用户界面Instance Manager很简单,这里不再详述。

要启动和关闭数据库,必须要以具备Oracle 管理员权限的用户登陆,通常也就是以具备SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是配置DBA用户具备SYSDBA权限。

二、数据库的启动(STARTUP)

启动一个数据库需要三个步骤:

1、 创建一个Oracle实例(非安装阶段)

2、 由实例安装数据库(安装阶段)

3、 打开数据库(打开阶段)

在Startup命令中,能够通过不同的选项来控制数据库的不同启动步骤。

1、STARTUP NOMOUNT

NONOUNT选项仅仅创建一个Oracle实例。读取initora初始化参数文档、启动后台进程、初始化系统全局区(SGA)。Initora文档定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID配置,不一定要和打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:

SQL> startup nomount

ORACLE 例程已启动。

Total System Global Area 35431692 bytes

Fixed Size 70924 bytes

Variable Size 18505728 bytes

Database Buffers 16777216 bytes

Redo Buffers 77824 bytes

2、STARTUP MOUNT

该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文档中关于数据文档和重作日志文档的内容,但并不打开该文档。这种打开方式常在数据库维护 *** 作中使用,如对数据文档的更名、改变重作日志连同打开归档方式等。在这种打开方式下,除了能够看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。

3、STARTUP

该命令完成创建实例、安装实例和打开数据库的任何三个步骤。此时数据库使数据文档和重作日志文档在线,通常还会请求一个或是多个回滚段。这时系统除了能够看到前面Startup Mount方式下的任何提示外,还会给出一个"数据库已打开"的提示。此时,数据库系统处于正常工作状态,能够接受用户请求。

假如采用STARTUP NOMOUNT或是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的 *** 作。例如,假如您以STARTUP NOMOUNT方式打开数据库,也就是说实例已创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

而假如以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即能够打开数据库:

ALTER DATABASE OPEN

4、其他打开方式

除了前面介绍的三种数据库打开方式选项外,更有另外其他的一些选项。

(1) STARTUP RESTRICT

这种方式下,数据库将被成功打开,但仅仅允许一些特权用户(具备DBA角色的用户)才能够使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出 *** 作时不希望有其他用户连接到数据库 *** 作数据。

(2) STARTUP FORCE

该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库碰到问题不能关闭数据库时采用。

(3) ALTER DATABASE OPEN READ ONLY;

该命令在创建实例连同安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库能够采用这种方式打开。

三、数据库的关闭(SHUTDOWN)

对于数据库的关闭,有四种不同的关闭选项,下面对其进行一一介绍。

1、SHUTDOWN NORMAL

这是数据库关闭SHUTDOWN命令的确省选项。也就是说假如您发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。

发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待现在连接的任何用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时无需进行任何的实例恢复。但需要注意一点的是,采用这种方式,也许关闭一个数据库需要几天时间,也许更长。

2、SHUTDOWN IMMEDIATE

这是我们常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。

当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。假如系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的任何用户退出系统,强行回滚当前任何的活动事务,然后断开任何的连接用户。

3、SHUTDOWN TRANSACTIONAL

该选项仅在Oracle 8i后才能够使用。该命令常用来计划关闭数据库,他使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在任何活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

4、SHUTDOWN ABORT

这是关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。假如下列情况出现时能够考虑采用这种方式关闭数据库。

1、 数据库处于一种非正常工作状态,不能用shutdown normal或shutdown immediate这样的命令关闭数据库;

2、 需要立即关闭数据库;

3、 在启动数据库实例时碰到问题;

任何正在运行的SQL语句都将立即中止。任何未提交的事务将不回滚。Oracle也不等待现在连接到数据库的用户退出系统。下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间。

在工作中,有时会需要把一个数据库中的数据导入到另外一个数据库,由于外键的影响,在执行insert语句时,需要确保先插入父表中的数据,然后插入子表中的数据,由于一个项目中,数据库表关系错综复杂,缕清主外键关系并排列好顺序实非易事,此时暂时禁用外键约束变得非常的必要,另外,笔者在日常的API测试时,需要向数据库中插入部分基础数据,经常碰到此问题,特总结了Oracle和DB2数据库下如何禁用外键约束的方法。一、Oracle数据库:禁用约束基本语法:alter table 数据库表名 disable constraint 约束名 假设现在需要关闭pub_organ的外键约束:1、 首先查询pub_organ存在哪些外键约束,此时需要用到oracle的字典表user_constraints。select from user_constraints where table_name='PUB_ORGAN'; 上图就是查询结果,其中各字段含义如下:OWNER: 表的所有者CONSTRAINT_NAME: 约束名称CONSTRAINT_TYPE: 约束类型(R代表外键,P代表主键,C代表check约束)TABLE_NAME: 表名称SEARCH_CONDITION: check约束的具体信息STATUS: ENABLED表示当前约束是启用的,DISABLED表示当前约束未启用。2、 查询出表存在哪些约束后,即可以通过alter语句启用或禁用指定的约束了。如禁用pub_organ表的外键PUBORGAN_FK1,则可以使用如下命令实现:alter table PUB_ORGAN disable constraint PUBORGAN_FK1;执行后,再次查询字典表user_constraints,如下: 此时往数据库表pub_organ中插入数据时就不再受外键约束的影响了。 启用约束基本语法:alter table 数据库表名 enable constraint 约束名 如现在需要重新启用pub_organ的外键约束,可以使用如下命令:alter table PUB_ORGAN enable constraint PUBORGAN_FK1;二、DB2数据库:禁用约束基本语法:ALTER TABLE 表名称 ALTER FOREIGN KEY 约束名称 NOT ENFORCED 启用约束基本语法:ALTER TABLE 表名称 ALTER FOREIGN KEY 约束名称 ENFORCED 相关字典表:SYSIBMSYSTABCONST如:select from SYSIBMSYSTABCONST where tbname='PUB_ORGAN'; 各字段含义如下:NAME: 约束名称DEFINER: 定义者CONSTRAINTTYP: 约束类型(P代表主键,F代表外键)TBNAME: 表名称ENFORCED: 是否启用(Y代表启用,N代表未启用)三、封装成java接口、批量执行在实际工作中,经常会将若干个表,或者所有数据库表的外键一起禁用,此时需要批量执行相关命令,笔者根据工作实际,使用java封装了相关接口,以方便使用。对外暴露接口如下:/ 启用当前用户指定tableName的所有外键约束 入参使用可变参数(jdk5新特性) 调用方式: 1、enableFK("pub_organ") 2、enableFK("pub_organ","pub_stru") 3、enableFK(new String[]{"pub_organ","pub_stru"}) / publicstaticvoidenableFK(StringtableNames){ disableORenbaleFK(true,tableNames); }/ 禁用当前用户指定tableName的所有外键约束 / publicstaticvoiddisableFK(StringtableNames){ disableORenbaleFK(false,tableNames); }/ 启用当前用户所有表的外键约束 / publicstaticvoid enableAllFK(){ disableORenableAllConstraint(true); } / 禁用当前用户所有表的外键约束 / publicstaticvoid disableAllFK(){ disableORenableAllConstraint(false); } 其中核心处理代码如下: if(tableNames==null||tableNameslength==0){ thrownew RuntimeException("入参tableNames不能为空!"); } //查询指定表的外键约束 String sql = null; String dbType = getDBType(); if(dbTypecontains("ORACLE")){ sql = "select 'alter table ' || table_name || ' disable constraint ' || constraint_name from user_constraints where constraint_type='R' and TABLE_NAME in("; if(isEnable){ sql = sqlreplace("disable", "enable"); } }elseif(dbTypecontains("DB2")){ sql = "select 'ALTER TABLE ' || TBNAME || ' ALTER FOREIGN KEY ' || NAME ||' NOT ENFORCED ' FROM SYSIBMSYSTABCONST WHERE CONSTRAINTYP='F' and TBNAME in("; if(isEnable){ sql = sqlreplace("NOT ENFORCED", "ENFORCED"); } }else{ thrownew RuntimeException("数据库类型无效(仅支持Oracle和DB2),dbType="+dbType); } StringBuffer generateSQL = new StringBuffer(sql); for(int i=0;i<tableNameslength;i++){ generateSQLappend(" '"); generateSQLappend(tableNames[i]toUpperCase());//注意须转换成大写 generateSQLappend("',"); } generateSQLdeleteCharAt(generateSQLlength()-1); generateSQLappend(")"); List<Map<String, Object>> dataSet = DBToolexecuteQuery(generateSQLtoString()); //启用or停止查询出的外键约束 for(int i=0;i<dataSetsize();i++){ Map<String, Object> record = dataSetget(i); Iterator<Entry<String, Object>> itor = recordentrySet()iterator(); while(itorhasNext()) { Entry<String, Object> e = itornext(); DBToolexecuteUpdate(egetValue()toString(),UpdateTypeALTER); } } 本文到此结束!

oraclev$session是Oracle数据库内部用于管理和识别客户端连接的一种内部结构,每个客户端连接都会对应一个唯一的session。如果在使用Oracle数据库时发现oraclev$session不存在,通常是因为以下几个原因:

1 该数据库实例尚未启动或者当前被禁用。如果数据库实例没有启动,那么无法进行任何连接和交互 *** 作。

2 或者该会话已经被删除或者过期。如果系统判断某个会话出现了异常,可能会动态地删除这个会话,此时oraclev$session也将不存在。

3 或者数据库中的相关表格或者视图发生了损坏或者丢失。如果Oracle数据库中用于管理会话的表格或者视图发生了严重的损坏,就会导致oraclev$session不存在。

当发现oraclev$session不存在的问题时,需要及时定位并修复错误。可以尝试重新启动数据库实例,或者使用Oracle提供的诊断工具进行检测和修复。同时,不要忽略了在数据库 *** 作中保证数据的完整性和稳定性,以免出现一些更加严重的问题。

建用户和授权要用DBA。

情况如下:1所在的地方网络信号不太好,移到别处看看。2如果手机能够打电话发短信正常使用的话,那就可能是网络公司原因,像这种情况打电话给人工服务看下。3查看电话卡是不是松了,重新关机再使用,电话卡也重新插下。4内存不足导致。5以上几率不大的话,估计就是手机出问题。

以上就是关于数据库中如何设置禁用菜单项全部的内容,包括:数据库中如何设置禁用菜单项、启动和关闭数据库以什么身份连接数据库、如何启用和禁用oracle&DB2数据库外键约束(转)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9425626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存