type=page
status=published
title=restart-instance
next=restart-local-instance.html
prev=restart-domain.html
~~~~~~
restart-instance
================

[[restart-instance-1]][[GSRFM00219]][[restart-instance]]

restart-instance
----------------

restarts a running \{product---name} instance

[[sthref1986]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] restart-instance [--help] 
[--debug={false|true}] instance-name
----

[[sthref1987]]

Description

The `restart-instance` subcommand restarts a running \{product---name}
instance. This subcommand requires secure shell (SSH) to be configured
on the machine where the domain administration server (DAS) is running
and on the machine where the instance resides.


[NOTE]
=======================================================================

SSH is not required if the instance resides on a node of type `CONFIG`
that represents the local host. A node of type `CONFIG` is not enabled
for communication over SSH.

=======================================================================


You may run this subcommand from any machine that can contact the DAS.

The subcommand can restart any \{product---name} instance, regardless of
how the instance was created. For example, this subcommand can restart
an instance that was created by using the
link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
subcommand.

When this subcommand restarts an instance, the DAS synchronizes the
instance with changes since the last synchronization as follows:

* For the `config` directory, the DAS synchronizes the instance with all
changes.
* For the `applications` directory and `docroot` directory, only a
change to a top-level subdirectory causes the DAS to synchronize all
files under that subdirectory. +
If a file below a top level subdirectory is changed without a change to
a file in the top level subdirectory, full synchronization is required.
In normal operation, files below the top level subdirectories of these
directories are not changed. If an application is deployed and
undeployed, full synchronization is not necessary to update the instance
with the change.

If different synchronization behavior is required, the instance must be
stopped and restarted by using following sequence of subcommands:

1.  link:stop-instance.html#stop-instance-1[`stop-instance`(1)]
2.  link:start-instance.html#start-instance-1[`start-instance`(1)]

This subcommand is supported in remote mode only.

[[sthref1988]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--debug`::
  Specifies whether the instance is restarted with
  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
  Platform Debugger Architecture
  (JPDA)](http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
  debugging enabled. +
  Possible values are as follows: +
  `true`;;
    The instance is restarted with JPDA debugging enabled and the port
    number for JPDA debugging is displayed.
  `false`;;
    The instance is restarted with JPDA debugging disabled. +
  The default is the current setting of this option for the instance
  that is being restarted.

[[sthref1989]]

Operands

instance-name::
  The name of the \{product---name} instance to restart. If the instance
  is not running, the subcommand displays a warning message and attempts
  to start the instance.

[[sthref1990]]

Examples

[[GSRFM739]][[sthref1991]]

Example 1   Restarting a \{product---name} Instance

This example restarts the \{product---name} instance `pmdsa1`.

[source,oac_no_warn]
----
asadmin> restart-instance pmdsa1
Instance pmdsa1 was restarted. 

Command restart-instance executed successfully.
----

[[sthref1992]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1993]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-instance.html#create-instance-1[`create-instance`(1)],
link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
link:restart-local-instance.html#restart-local-instance-1[`restart-local-instance`(1)],
link:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
link:start-instance.html#start-instance-1[`start-instance`(1)],
link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]

Java Platform Debugger Architecture (JPDA)
(http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)


